# NAO6 HRIStudio Plugin Repository **Official NAO6 robot integration plugins for the HRIStudio platform** ## Overview This repository contains production-ready plugins for integrating NAO6 robots with HRIStudio experiments. The plugins provide comprehensive robot control capabilities including movement, speech synthesis, sensor monitoring, and safety features optimized for human-robot interaction research. ## Available Plugins ### 🤖 NAO6 Enhanced ROS2 Integration (`nao6-ros2-enhanced.json`) **Complete NAO6 robot control for HRIStudio experiments** **Features:** - ✅ **Speech Synthesis** - Text-to-speech with volume and speed control - ✅ **Movement Control** - Walking, turning, and precise positioning - ✅ **Posture Management** - Stand, sit, crouch, and custom poses - ✅ **Head Movement** - Gaze control and attention direction - ✅ **Gesture Library** - Wave, point, applause, and custom animations - ✅ **LED Control** - Visual feedback with colors and patterns - ✅ **Sensor Monitoring** - Touch, bumper, sonar, and camera sensors - ✅ **Safety Features** - Emergency stop and velocity limits - ✅ **System Control** - Wake/rest and status monitoring **Requirements:** - NAO6 robot with NAOqi 2.8.7.4+ - ROS2 Humble or compatible - Network connectivity to robot - `nao_launch` package for ROS integration **Installation:** 1. Install in HRIStudio study via Plugin Management 2. Configure robot IP and WebSocket URL 3. Launch ROS integration: `ros2 launch nao_launch nao6_production.launch.py` 4. Test connection in HRIStudio experiment designer ## Plugin Actions Reference ### Speech & Communication | Action | Description | Parameters | |--------|-------------|------------| | **Speak Text** | Text-to-speech synthesis | text, volume, speed, wait | | **LED Control** | Visual feedback with colors | ledGroup, color, intensity, pattern | ### Movement & Posture | Action | Description | Parameters | |--------|-------------|------------| | **Move Robot** | Linear and angular movement | direction, distance, speed, duration | | **Set Posture** | Predefined poses | posture, speed, waitForCompletion | | **Move Head** | Gaze and attention control | yaw, pitch, speed, presetDirection | | **Perform Gesture** | Animations and gestures | gesture, intensity, speed, repeatCount | ### Sensors & Monitoring | Action | Description | Parameters | |--------|-------------|------------| | **Monitor Sensors** | Touch, bumper, sonar detection | sensorType, duration, sensitivity | | **Check Robot Status** | Battery, joints, system health | statusType, logToExperiment | ### Safety & System | Action | Description | Parameters | |--------|-------------|------------| | **Emergency Stop** | Immediate motion termination | stopType, safePosture | | **Wake Up / Rest** | Power management | action, waitForCompletion | ## Quick Start Examples ### 1. Basic Greeting ```json { "sequence": [ {"action": "nao_wake_rest", "parameters": {"action": "wake"}}, {"action": "nao_speak", "parameters": {"text": "Hello! Welcome to our experiment."}}, {"action": "nao_gesture", "parameters": {"gesture": "wave"}} ] } ``` ### 2. Interactive Task ```json { "sequence": [ {"action": "nao_speak", "parameters": {"text": "Please touch my head when ready."}}, {"action": "nao_sensor_monitor", "parameters": {"sensorType": "touch", "duration": 30}}, {"action": "nao_speak", "parameters": {"text": "Thank you! Let's begin."}} ] } ``` ### 3. Attention Direction ```json { "sequence": [ {"action": "nao_head_movement", "parameters": {"presetDirection": "left"}}, {"action": "nao_speak", "parameters": {"text": "Look over there please."}}, {"action": "nao_gesture", "parameters": {"gesture": "point_left"}} ] } ``` ## Installation & Setup ### Prerequisites - **HRIStudio Platform** - Web-based WoZ research platform - **NAO6 Robot** - With NAOqi 2.8.7.4 or compatible - **ROS2 Humble** - Robot Operating System 2 - **Network Setup** - Robot and computer on same network ### Step 1: Install NAO ROS2 Packages ```bash # Clone and build NAO ROS2 workspace cd ~/naoqi_ros2_ws colcon build --packages-select nao_launch source install/setup.bash ``` ### Step 2: Start Robot Integration ```bash # Launch comprehensive NAO integration ros2 launch nao_launch nao6_production.launch.py \ nao_ip:=nao.local \ password:=robolab \ bridge_port:=9090 ``` ### Step 3: Install Plugin in HRIStudio 1. **Access HRIStudio** - Open your study in HRIStudio 2. **Plugin Management** - Go to Study → Plugins 3. **Browse Store** - Find "NAO6 Robot (Enhanced ROS2 Integration)" 4. **Install Plugin** - Click install and configure settings 5. **Configure WebSocket** - Set URL to `ws://localhost:9090` ### Step 4: Test Integration 1. **Open Experiment Designer** - Create or edit an experiment 2. **Add Robot Action** - Drag NAO6 action from plugin section 3. **Configure Parameters** - Set speech text, movement, etc. 4. **Test Connection** - Use "Check Robot Status" action 5. **Run Trial** - Execute experiment and verify robot responds ## Configuration Options ### Robot Connection - **Robot IP** - IP address or hostname (default: `nao.local`) - **Password** - Robot authentication password - **WebSocket URL** - ROS bridge connection (default: `ws://localhost:9090`) ### Safety Settings - **Max Linear Velocity** - Maximum movement speed (default: 0.2 m/s) - **Max Angular Velocity** - Maximum rotation speed (default: 0.8 rad/s) - **Safety Monitoring** - Enable automatic safety checks - **Auto Wake-up** - Automatically wake robot when experiment starts ### Performance Tuning - **Speech Volume** - Default volume level (default: 0.7) - **Movement Speed** - Default movement speed factor (default: 0.5) - **Battery Monitoring** - Track battery level during experiments ## Troubleshooting ### ❌ Robot Not Responding **Problem:** Commands sent but robot doesn't react **Solution:** - Check robot is awake: Press chest button for 3 seconds - Verify network connectivity: `ping nao.local` - Use "Wake Up / Rest Robot" action in experiment ### ❌ WebSocket Connection Failed **Problem:** HRIStudio cannot connect to robot **Solution:** - Verify rosbridge is running: `ros2 node list | grep rosbridge` - Check port availability: `ss -an | grep 9090` - Restart integration: Kill processes and relaunch ### ❌ Movements Too Fast/Unsafe **Problem:** Robot moves too quickly or unpredictably **Solution:** - Reduce max velocities in plugin configuration - Lower movement speed parameters in actions - Use "Emergency Stop" action if needed ### ❌ Speech Not Working **Problem:** Robot doesn't speak or audio issues **Solution:** - Check robot volume settings - Verify text-to-speech service: `ros2 topic echo /speech` - Ensure speakers are functioning ## Safety Guidelines ### ⚠️ Important Safety Notes - **Clear Space** - Ensure 2m clearance around robot during movement - **Emergency Stop** - Keep emergency stop action easily accessible - **Supervision** - Never leave robot unattended during experiments - **Battery Monitoring** - Check battery level for long sessions - **Stable Surface** - Keep robot on level, stable flooring ### Emergency Procedures ```bash # Immediate stop via CLI ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist '{linear: {x: 0.0, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}' # Or use HRIStudio emergency stop action # Add "Emergency Stop" action to experiment for quick access ``` ## Technical Details ### ROS2 Topics Used - **Input Topics** (Robot Control): - `/speech` - Text-to-speech commands - `/cmd_vel` - Movement commands - `/joint_angles` - Joint position control - `/led_control` - LED color control - **Output Topics** (Sensor Data): - `/naoqi_driver/joint_states` - Joint positions - `/naoqi_driver/bumper` - Foot sensors - `/naoqi_driver/hand_touch` - Hand sensors - `/naoqi_driver/head_touch` - Head sensors - `/naoqi_driver/sonar/*` - Ultrasonic sensors ### WebSocket Communication - **Protocol** - rosbridge v2.0 WebSocket - **Default Port** - 9090 - **Message Format** - JSON-based ROS message serialization - **Authentication** - None (local network) ## Development & Contributing ### Plugin Development 1. **Follow Schema** - Use provided JSON schema for action definitions 2. **Test Thoroughly** - Verify with real NAO6 hardware 3. **Document Actions** - Provide clear parameter descriptions 4. **Safety First** - Include appropriate safety measures ### Testing Checklist - [ ] Robot connectivity and wake-up - [ ] All movement actions with safety limits - [ ] Speech synthesis with various texts - [ ] Sensor monitoring and event detection - [ ] Emergency stop functionality - [ ] WebSocket communication stability ## Support & Resources ### Documentation - **HRIStudio Docs** - [Platform documentation](../../docs/) - **NAO6 Integration Guide** - [Complete setup guide](../../docs/nao6-integration-complete-guide.md) - **Quick Reference** - [Essential commands](../../docs/nao6-quick-reference.md) ### Community & Support - **GitHub Repository** - [hristudio/nao6-ros2-plugins](https://github.com/hristudio/nao6-ros2-plugins) - **Issue Tracker** - Report bugs and request features - **Email Support** - robolab@hristudio.com ### Version Information - **Plugin Version** - 2.0.0 (Enhanced Integration) - **HRIStudio Compatibility** - v1.0+ - **ROS2 Distro** - Humble (recommended) - **NAO6 Compatibility** - NAOqi 2.8.7.4+ - **Last Updated** - December 2024 --- ## License **MIT License** - See [LICENSE](LICENSE) file for details ## Citation If you use these plugins in your research, please cite: ```bibtex @software{nao6_hristudio_plugins, title={NAO6 HRIStudio Integration Plugins}, author={HRIStudio RoboLab Team}, year={2024}, url={https://github.com/hristudio/nao6-ros2-plugins}, version={2.0.0} } ``` --- **Maintained by:** HRIStudio RoboLab Team **Contact:** robolab@hristudio.com **Repository:** [hristudio/nao6-ros2-plugins](https://github.com/hristudio/nao6-ros2-plugins) *Part of the HRIStudio platform for advancing Human-Robot Interaction research*