mirror of
https://github.com/soconnor0919/hristudio.git
synced 2026-02-05 07:56:30 -05:00
feat: Redesign Landing, Auth, and Dashboard Pages
Also fixed schema type exports and seed script errors.
This commit is contained in:
30
docs/README.md
Normal file → Executable file
30
docs/README.md
Normal file → Executable file
@@ -112,10 +112,16 @@ This documentation suite provides everything needed to understand, build, deploy
|
||||
- Technical debt resolution
|
||||
- UI/UX enhancements
|
||||
|
||||
### **🤖 Robot Integration Guides**
|
||||
|
||||
14. **[NAO6 Complete Integration Guide](./nao6-integration-complete-guide.md)** - Comprehensive NAO6 setup, troubleshooting, and production deployment
|
||||
15. **[NAO6 Quick Reference](./nao6-quick-reference.md)** - Essential commands and troubleshooting for NAO6 integration
|
||||
16. **[NAO6 ROS2 Setup](./nao6-ros2-setup.md)** - Basic NAO6 ROS2 driver installation guide
|
||||
|
||||
### **📖 Academic References**
|
||||
|
||||
14. **[Research Paper](./root.tex)** - Academic LaTeX document
|
||||
15. **[Bibliography](./refs.bib)** - Research references
|
||||
17. **[Research Paper](./root.tex)** - Academic LaTeX document
|
||||
18. **[Bibliography](./refs.bib)** - Research references
|
||||
|
||||
---
|
||||
|
||||
@@ -152,8 +158,14 @@ This documentation suite provides everything needed to understand, build, deploy
|
||||
### **For Researchers**
|
||||
1. **[Project Overview](./project-overview.md)** - Research platform capabilities
|
||||
2. **[Feature Requirements](./feature-requirements.md)** - User workflows and features
|
||||
3. **[ROS2 Integration](./ros2-integration.md)** - Robot platform integration
|
||||
4. **[Research Paper](./root.tex)** - Academic context and methodology
|
||||
3. **[NAO6 Quick Reference](./nao6-quick-reference.md)** - Essential NAO6 robot control commands
|
||||
4. **[ROS2 Integration](./ros2-integration.md)** - Robot platform integration
|
||||
5. **[Research Paper](./root.tex)** - Academic context and methodology
|
||||
|
||||
### **For Robot Integration**
|
||||
1. **[NAO6 Complete Integration Guide](./nao6-integration-complete-guide.md)** - Full NAO6 setup and troubleshooting
|
||||
2. **[NAO6 Quick Reference](./nao6-quick-reference.md)** - Essential commands and quick fixes
|
||||
3. **[ROS2 Integration](./ros2-integration.md)** - General robot integration patterns
|
||||
|
||||
---
|
||||
|
||||
@@ -219,6 +231,13 @@ bun dev
|
||||
- **Comprehensive Testing**: Realistic seed data with complete scenarios
|
||||
- **Developer Friendly**: Clear patterns and extensive documentation
|
||||
|
||||
### **Robot Integration**
|
||||
- **NAO6 Full Support**: Complete ROS2 integration with movement, speech, and sensor control
|
||||
- **Real-time Control**: WebSocket-based robot control through web interface
|
||||
- **Safety Features**: Emergency stops, movement limits, and comprehensive monitoring
|
||||
- **Production Ready**: Tested with NAO V6.0 / NAOqi 2.8.7.4 / ROS2 Humble
|
||||
- **Troubleshooting Guides**: Complete documentation for setup and problem resolution
|
||||
|
||||
---
|
||||
|
||||
## 🎊 **Project Status: Production Ready**
|
||||
@@ -238,6 +257,7 @@ bun dev
|
||||
- ✅ **Core Blocks System** - 26 blocks across events, wizard, control, observation
|
||||
- ✅ **Plugin Architecture** - Unified system for core blocks and robot actions
|
||||
- ✅ **Development Environment** - Realistic test data and scenarios
|
||||
- ✅ **NAO6 Robot Integration** - Full ROS2 integration with comprehensive control and monitoring
|
||||
|
||||
---
|
||||
|
||||
@@ -271,7 +291,7 @@ The platform is considered production-ready when:
|
||||
- ✅ Performance targets are achieved
|
||||
- ✅ Type safety is complete throughout
|
||||
|
||||
**All success criteria have been met. HRIStudio is ready for production deployment.**
|
||||
**All success criteria have been met. HRIStudio is ready for production deployment with full NAO6 robot integration support.**
|
||||
|
||||
---
|
||||
|
||||
|
||||
0
docs/api-routes.md
Normal file → Executable file
0
docs/api-routes.md
Normal file → Executable file
0
docs/block-designer-implementation.md
Normal file → Executable file
0
docs/block-designer-implementation.md
Normal file → Executable file
0
docs/block-designer.md
Normal file → Executable file
0
docs/block-designer.md
Normal file → Executable file
0
docs/cleanup-summary.md
Normal file → Executable file
0
docs/cleanup-summary.md
Normal file → Executable file
0
docs/core-blocks-system.md
Normal file → Executable file
0
docs/core-blocks-system.md
Normal file → Executable file
0
docs/database-schema.md
Normal file → Executable file
0
docs/database-schema.md
Normal file → Executable file
0
docs/deployment-operations.md
Normal file → Executable file
0
docs/deployment-operations.md
Normal file → Executable file
0
docs/experiment-designer-redesign.md
Normal file → Executable file
0
docs/experiment-designer-redesign.md
Normal file → Executable file
0
docs/experiment-designer-step-integration.md
Normal file → Executable file
0
docs/experiment-designer-step-integration.md
Normal file → Executable file
0
docs/feature-requirements.md
Normal file → Executable file
0
docs/feature-requirements.md
Normal file → Executable file
0
docs/flow-designer-connections.md
Normal file → Executable file
0
docs/flow-designer-connections.md
Normal file → Executable file
0
docs/implementation-details.md
Normal file → Executable file
0
docs/implementation-details.md
Normal file → Executable file
0
docs/implementation-guide.md
Normal file → Executable file
0
docs/implementation-guide.md
Normal file → Executable file
@@ -1,233 +0,0 @@
|
||||
# NAO6 ROS2 Integration Summary for HRIStudio
|
||||
|
||||
## Overview
|
||||
|
||||
This document summarizes the complete NAO6 ROS2 integration that has been implemented for HRIStudio, providing researchers with full access to NAO6 capabilities through the visual experiment designer and real-time wizard interface.
|
||||
|
||||
## What's Been Implemented
|
||||
|
||||
### 1. NAO6 ROS2 Plugin (`nao6-ros2.json`)
|
||||
|
||||
A comprehensive robot plugin that exposes all NAO6 capabilities through standard ROS2 topics:
|
||||
|
||||
**Location**: `robot-plugins/plugins/nao6-ros2.json`
|
||||
|
||||
**Key Features**:
|
||||
- Full ROS2 integration via `naoqi_driver2`
|
||||
- 10 robot actions across movement, interaction, and sensors
|
||||
- Proper HRIStudio plugin schema compliance
|
||||
- Safety limits and parameter validation
|
||||
- Transform functions for message conversion
|
||||
|
||||
### 2. Robot Actions Available
|
||||
|
||||
#### Movement Actions
|
||||
- **Walk with Velocity**: Control linear/angular walking velocities
|
||||
- **Stop Walking**: Emergency stop for immediate movement cessation
|
||||
- **Set Joint Angle**: Control individual joint positions (25 DOF)
|
||||
- **Turn Head**: Dedicated head orientation control
|
||||
|
||||
#### Interaction Actions
|
||||
- **Say Text**: Text-to-speech via ROS2 `/speech` topic
|
||||
|
||||
#### Sensor Actions
|
||||
- **Get Camera Image**: Capture from front or bottom cameras
|
||||
- **Get Joint States**: Read current joint positions and velocities
|
||||
- **Get IMU Data**: Inertial measurement from torso sensor
|
||||
- **Get Bumper Status**: Foot contact sensor readings
|
||||
- **Get Touch Sensors**: Hand and head tactile sensor states
|
||||
- **Get Sonar Range**: Ultrasonic distance measurements
|
||||
- **Get Robot Info**: General robot status and information
|
||||
|
||||
### 3. ROS2 Topic Mapping
|
||||
|
||||
The plugin maps to these standard NAO6 ROS2 topics:
|
||||
|
||||
```
|
||||
/cmd_vel → Robot velocity commands (Twist)
|
||||
/odom → Odometry data (Odometry)
|
||||
/joint_states → Joint positions/velocities (JointState)
|
||||
/joint_angles → NAO-specific joint control (JointAnglesWithSpeed)
|
||||
/camera/front/image_raw → Front camera stream (Image)
|
||||
/camera/bottom/image_raw → Bottom camera stream (Image)
|
||||
/imu/torso → Inertial measurement (Imu)
|
||||
/speech → Text-to-speech commands (String)
|
||||
/bumper → Foot bumper sensors (Bumper)
|
||||
/hand_touch → Hand touch sensors (HandTouch)
|
||||
/head_touch → Head touch sensors (HeadTouch)
|
||||
/sonar/left → Left ultrasonic sensor (Range)
|
||||
/sonar/right → Right ultrasonic sensor (Range)
|
||||
/info → Robot information (RobotInfo)
|
||||
```
|
||||
|
||||
### 4. Transform Functions (`nao6-transforms.ts`)
|
||||
|
||||
**Location**: `src/lib/nao6-transforms.ts`
|
||||
|
||||
Comprehensive message conversion functions:
|
||||
- Parameter validation and safety limits
|
||||
- ROS2 message format compliance
|
||||
- Joint limit enforcement (25 DOF with proper ranges)
|
||||
- Velocity clamping for safe operation
|
||||
- Helper functions for UI integration
|
||||
|
||||
### 5. Setup Documentation (`nao6-ros2-setup.md`)
|
||||
|
||||
**Location**: `docs/nao6-ros2-setup.md`
|
||||
|
||||
Complete setup guide covering:
|
||||
- ROS2 Humble installation on Ubuntu 22.04
|
||||
- NAO6 network configuration
|
||||
- naoqi_driver2 and rosbridge setup
|
||||
- Custom launch file creation
|
||||
- Testing and validation procedures
|
||||
- HRIStudio plugin configuration
|
||||
- Troubleshooting and safety guidelines
|
||||
|
||||
## Technical Architecture
|
||||
|
||||
### ROS2 Integration Stack
|
||||
|
||||
```
|
||||
HRIStudio (Web Interface)
|
||||
↓ WebSocket
|
||||
rosbridge_server (Port 9090)
|
||||
↓ ROS2 Topics/Services
|
||||
naoqi_driver2
|
||||
↓ NAOqi Protocol (Port 9559)
|
||||
NAO6 Robot
|
||||
```
|
||||
|
||||
### Message Flow
|
||||
|
||||
1. **Command Execution**:
|
||||
- HRIStudio wizard interface → WebSocket → rosbridge → ROS2 topic → naoqi_driver2 → NAO6
|
||||
|
||||
2. **Sensor Data**:
|
||||
- NAO6 → naoqi_driver2 → ROS2 topic → rosbridge → WebSocket → HRIStudio
|
||||
|
||||
3. **Real-time Feedback**:
|
||||
- Continuous sensor streams for live monitoring
|
||||
- Event logging for research data capture
|
||||
|
||||
## Safety Features
|
||||
|
||||
### Joint Limits Enforcement
|
||||
- All 25 NAO6 joints have proper min/max limits defined
|
||||
- Automatic clamping prevents damage from invalid commands
|
||||
- Parameter validation before message transmission
|
||||
|
||||
### Velocity Limits
|
||||
- Linear velocity: -0.55 to 0.55 m/s
|
||||
- Angular velocity: -2.0 to 2.0 rad/s
|
||||
- Automatic clamping for safe operation
|
||||
|
||||
### Emergency Stops
|
||||
- Dedicated stop action for immediate movement cessation
|
||||
- Timeout protection on all actions
|
||||
- Connection monitoring and error handling
|
||||
|
||||
## Integration Status
|
||||
|
||||
### ✅ Completed Components
|
||||
|
||||
1. **Plugin Definition**: Full NAO6 plugin with proper schema
|
||||
2. **Action Library**: 10 comprehensive robot actions
|
||||
3. **Transform Functions**: Complete message conversion system
|
||||
4. **Documentation**: Setup guide and integration instructions
|
||||
5. **Safety Systems**: Joint limits, velocity clamping, emergency stops
|
||||
6. **Repository Integration**: Plugin added to official repository
|
||||
|
||||
### 🔄 Usage Workflow
|
||||
|
||||
1. **Setup Phase**:
|
||||
- Install ROS2 Humble on companion computer
|
||||
- Configure NAO6 network connection
|
||||
- Launch naoqi_driver2 and rosbridge
|
||||
|
||||
2. **HRIStudio Configuration**:
|
||||
- Install NAO6 plugin in study
|
||||
- Configure ROS bridge URL
|
||||
- Design experiments using NAO6 actions
|
||||
|
||||
3. **Experiment Execution**:
|
||||
- Real-time robot control through wizard interface
|
||||
- Live sensor data monitoring
|
||||
- Comprehensive event logging
|
||||
|
||||
## Research Capabilities
|
||||
|
||||
### Experiment Design
|
||||
- Visual programming with NAO6-specific actions
|
||||
- Parameter configuration with safety validation
|
||||
- Multi-modal data collection coordination
|
||||
|
||||
### Data Capture
|
||||
- Synchronized robot commands and sensor data
|
||||
- Video streams from dual cameras
|
||||
- Inertial, tactile, and proximity sensor logs
|
||||
- Speech synthesis and timing records
|
||||
|
||||
### Reproducibility
|
||||
- Standardized action definitions
|
||||
- Consistent parameter schemas
|
||||
- Version-controlled plugin specifications
|
||||
- Complete experiment protocol documentation
|
||||
|
||||
## Next Steps for Researchers
|
||||
|
||||
### Immediate Use
|
||||
1. Follow setup guide in `docs/nao6-ros2-setup.md`
|
||||
2. Install NAO6 plugin in HRIStudio study
|
||||
3. Create experiments using available actions
|
||||
4. Run trials with real-time robot control
|
||||
|
||||
### Advanced Integration
|
||||
1. **Custom Actions**: Extend plugin with study-specific behaviors
|
||||
2. **Multi-Robot**: Scale to multiple NAO6 robots
|
||||
3. **Navigation**: Add SLAM and path planning capabilities
|
||||
4. **Manipulation**: Implement object interaction behaviors
|
||||
|
||||
### Research Applications
|
||||
- Human-robot interaction studies
|
||||
- Social robotics experiments
|
||||
- Gesture and speech coordination research
|
||||
- Sensor fusion and behavior analysis
|
||||
- Wizard-of-Oz methodology validation
|
||||
|
||||
## Support and Resources
|
||||
|
||||
### Documentation
|
||||
- **Setup Guide**: `docs/nao6-ros2-setup.md`
|
||||
- **Plugin Schema**: `robot-plugins/docs/schema.md`
|
||||
- **ROS2 Integration**: `docs/ros2-integration.md`
|
||||
- **Transform Functions**: `src/lib/nao6-transforms.ts`
|
||||
|
||||
### External Resources
|
||||
- **NAO6 Documentation**: https://developer.softbankrobotics.com/nao6
|
||||
- **naoqi_driver2**: https://github.com/ros-naoqi/naoqi_driver2
|
||||
- **ROS2 Humble**: https://docs.ros.org/en/humble/
|
||||
- **rosbridge**: http://wiki.ros.org/rosbridge_suite
|
||||
|
||||
### Technical Support
|
||||
- **HRIStudio Issues**: GitHub repository
|
||||
- **ROS2 Community**: ROS Discourse forum
|
||||
- **NAO6 Support**: SoftBank Robotics developer portal
|
||||
|
||||
## Conclusion
|
||||
|
||||
The NAO6 ROS2 integration provides researchers with a complete, production-ready system for conducting Human-Robot Interaction studies. The integration leverages:
|
||||
|
||||
- **Standard ROS2 protocols** for reliable communication
|
||||
- **Comprehensive safety systems** for secure operation
|
||||
- **Visual experiment design** for accessible research tools
|
||||
- **Real-time control interfaces** for dynamic experiment execution
|
||||
- **Complete data capture** for rigorous analysis
|
||||
|
||||
This implementation enables researchers to focus on their studies rather than technical integration, while maintaining the flexibility and control needed for cutting-edge HRI research.
|
||||
|
||||
---
|
||||
|
||||
**Status**: ✅ Production Ready
|
||||
**Last Updated**: December 2024
|
||||
**Compatibility**: HRIStudio v1.0+, ROS2 Humble, NAO6 with NAOqi 2.8.7+
|
||||
177
docs/nao6-quick-reference.md
Executable file
177
docs/nao6-quick-reference.md
Executable file
@@ -0,0 +1,177 @@
|
||||
# NAO6 Quick Reference
|
||||
|
||||
Essential commands for using NAO6 robots with HRIStudio.
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Start NAO Integration
|
||||
```bash
|
||||
cd ~/naoqi_ros2_ws
|
||||
source install/setup.bash
|
||||
ros2 launch nao_launch nao6_hristudio.launch.py nao_ip:=nao.local password:=robolab
|
||||
```
|
||||
|
||||
### 2. Wake Robot
|
||||
Press chest button for 3 seconds, or use:
|
||||
```bash
|
||||
# Via SSH (institution-specific password)
|
||||
ssh nao@nao.local
|
||||
# Then run wake-up command (see integration repo docs)
|
||||
```
|
||||
|
||||
### 3. Start HRIStudio
|
||||
```bash
|
||||
cd ~/Documents/Projects/hristudio
|
||||
bun dev
|
||||
```
|
||||
|
||||
### 4. Test Connection
|
||||
- Open: `http://localhost:3000/nao-test`
|
||||
- Click "Connect"
|
||||
- Test robot commands
|
||||
|
||||
## Essential Commands
|
||||
|
||||
### Test Connectivity
|
||||
```bash
|
||||
ping nao.local # Test network
|
||||
ros2 topic list | grep naoqi # Check ROS topics
|
||||
```
|
||||
|
||||
### Manual Control
|
||||
```bash
|
||||
# Speech
|
||||
ros2 topic pub --once /speech std_msgs/String "data: 'Hello world'"
|
||||
|
||||
# Movement (robot must be awake!)
|
||||
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist '{linear: {x: 0.1}}'
|
||||
|
||||
# Stop
|
||||
ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist '{linear: {x: 0.0}}'
|
||||
```
|
||||
|
||||
### Monitor Status
|
||||
```bash
|
||||
ros2 topic echo /naoqi_driver/battery # Battery level
|
||||
ros2 topic echo /naoqi_driver/joint_states # Joint positions
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
**Robot not moving:** Press chest button for 3 seconds to wake up
|
||||
|
||||
**WebSocket fails:** Check rosbridge is running on port 9090
|
||||
```bash
|
||||
ss -an | grep 9090
|
||||
```
|
||||
|
||||
**Connection lost:** Restart rosbridge
|
||||
```bash
|
||||
pkill -f rosbridge
|
||||
ros2 run rosbridge_server rosbridge_websocket
|
||||
```
|
||||
|
||||
## ROS Topics
|
||||
|
||||
**Commands (Input):**
|
||||
- `/speech` - Text-to-speech
|
||||
- `/cmd_vel` - Movement
|
||||
- `/joint_angles` - Joint control
|
||||
|
||||
**Sensors (Output):**
|
||||
- `/naoqi_driver/joint_states` - Joint data
|
||||
- `/naoqi_driver/battery` - Battery level
|
||||
- `/naoqi_driver/bumper` - Foot sensors
|
||||
- `/naoqi_driver/sonar/*` - Distance sensors
|
||||
- `/naoqi_driver/camera/*` - Camera feeds
|
||||
|
||||
## WebSocket
|
||||
|
||||
**URL:** `ws://localhost:9090`
|
||||
|
||||
**Example message:**
|
||||
```javascript
|
||||
{
|
||||
"op": "publish",
|
||||
"topic": "/speech",
|
||||
"type": "std_msgs/String",
|
||||
"msg": {"data": "Hello world"}
|
||||
}
|
||||
```
|
||||
|
||||
## More Information
|
||||
|
||||
See **[nao6-hristudio-integration](../../nao6-hristudio-integration/)** repository for:
|
||||
- Complete installation guide
|
||||
- Detailed usage instructions
|
||||
- Full troubleshooting guide
|
||||
- Plugin definitions
|
||||
- Launch file configurations
|
||||
|
||||
## Common Use Cases
|
||||
|
||||
### Make Robot Speak
|
||||
```bash
|
||||
ros2 topic pub --once /speech std_msgs/String "data: 'Welcome to the experiment'"
|
||||
```
|
||||
|
||||
### Walk Forward 3 Steps
|
||||
```bash
|
||||
ros2 topic pub --times 3 /cmd_vel geometry_msgs/msg/Twist '{linear: {x: 0.1, y: 0.0, z: 0.0}, angular: {x: 0.0, y: 0.0, z: 0.0}}'
|
||||
```
|
||||
|
||||
### Turn Head Left
|
||||
```bash
|
||||
ros2 topic pub --once /joint_angles naoqi_bridge_msgs/msg/JointAnglesWithSpeed '{joint_names: ["HeadYaw"], joint_angles: [0.8], speed: 0.2}'
|
||||
```
|
||||
|
||||
### Emergency Stop
|
||||
```bash
|
||||
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}}'
|
||||
```
|
||||
|
||||
## 🚨 Safety Notes
|
||||
|
||||
- **Always wake up robot before movement commands**
|
||||
- **Keep emergency stop accessible**
|
||||
- **Start with small movements (0.05 m/s)**
|
||||
- **Monitor battery level during experiments**
|
||||
- **Ensure clear space around robot**
|
||||
|
||||
## 📝 Credentials
|
||||
|
||||
**Default NAO Login:**
|
||||
- Username: `nao`
|
||||
- Password: `robolab` (institution-specific)
|
||||
|
||||
**HRIStudio Login:**
|
||||
- Email: `sean@soconnor.dev`
|
||||
- Password: `password123`
|
||||
|
||||
## 🔄 Complete Restart Procedure
|
||||
|
||||
```bash
|
||||
# 1. Kill all processes
|
||||
sudo fuser -k 9090/tcp
|
||||
pkill -f "rosbridge\|naoqi\|ros2"
|
||||
|
||||
# 2. Restart database
|
||||
sudo docker compose down && sudo docker compose up -d
|
||||
|
||||
# 3. Start ROS integration
|
||||
cd ~/naoqi_ros2_ws && source install/setup.bash
|
||||
ros2 launch install/nao_launch/share/nao_launch/launch/nao6_hristudio.launch.py nao_ip:=nao.local password:=robolab
|
||||
|
||||
# 4. Wake up robot (in another terminal)
|
||||
sshpass -p "robolab" ssh nao@nao.local "python2 -c \"import sys; sys.path.append('/opt/aldebaran/lib/python2.7/site-packages'); import naoqi; naoqi.ALProxy('ALMotion', '127.0.0.1', 9559).wakeUp()\""
|
||||
|
||||
# 5. Start HRIStudio (in another terminal)
|
||||
cd /home/robolab/Documents/Projects/hristudio && bun dev
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**📖 For detailed setup instructions, see:** [NAO6 Complete Integration Guide](./nao6-integration-complete-guide.md)
|
||||
|
||||
**✅ Integration Status:** Production Ready
|
||||
**🤖 Tested With:** NAO V6.0 / NAOqi 2.8.7.4 / ROS2 Humble
|
||||
@@ -1,372 +0,0 @@
|
||||
# NAO6 ROS2 Setup Guide for HRIStudio
|
||||
|
||||
This guide walks you through setting up your NAO6 robot with ROS2 integration for use with HRIStudio's experiment platform.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- NAO6 robot with NAOqi OS 2.8.7+
|
||||
- Ubuntu 22.04.5 LTS computer (x86_64)
|
||||
- Network connectivity between computer and NAO6
|
||||
- Administrative access to both systems
|
||||
|
||||
## Overview
|
||||
|
||||
The integration uses the `naoqi_driver2` package to bridge NAOqi with ROS2, exposing all robot capabilities through standard ROS2 topics and services. HRIStudio connects via WebSocket using `rosbridge_server`.
|
||||
|
||||
## Step 1: NAO6 Network Configuration
|
||||
|
||||
1. **Power on your NAO6** and wait for boot completion
|
||||
2. **Connect NAO6 to your network**:
|
||||
- Press chest button to get IP address
|
||||
- Or use Choregraphe to configure WiFi
|
||||
3. **Verify connectivity**:
|
||||
```bash
|
||||
ping nao.local # or robot IP address
|
||||
```
|
||||
|
||||
## Step 2: ROS2 Humble Installation
|
||||
|
||||
Install ROS2 Humble on your Ubuntu 22.04 system:
|
||||
|
||||
```bash
|
||||
# Update system
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
|
||||
# Install ROS2 Humble
|
||||
sudo apt install software-properties-common
|
||||
sudo add-apt-repository universe
|
||||
sudo apt update && sudo apt install curl -y
|
||||
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
|
||||
sudo sh -c 'echo "deb http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
|
||||
|
||||
sudo apt update
|
||||
sudo apt install ros-humble-desktop
|
||||
sudo apt install ros-dev-tools
|
||||
|
||||
# Source ROS2
|
||||
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
|
||||
source ~/.bashrc
|
||||
```
|
||||
|
||||
## Step 3: Install NAO ROS2 Packages
|
||||
|
||||
Install the required ROS2 packages for NAO6 integration:
|
||||
|
||||
```bash
|
||||
# Install naoqi_driver2 and dependencies
|
||||
sudo apt install ros-humble-naoqi-driver2
|
||||
sudo apt install ros-humble-naoqi-bridge-msgs
|
||||
sudo apt install ros-humble-geometry-msgs
|
||||
sudo apt install ros-humble-sensor-msgs
|
||||
sudo apt install ros-humble-nav-msgs
|
||||
sudo apt install ros-humble-std-msgs
|
||||
|
||||
# Install rosbridge for HRIStudio communication
|
||||
sudo apt install ros-humble-rosbridge-suite
|
||||
|
||||
# Install additional useful packages
|
||||
sudo apt install ros-humble-rqt
|
||||
sudo apt install ros-humble-rqt-common-plugins
|
||||
```
|
||||
|
||||
## Step 4: Configure NAO Connection
|
||||
|
||||
Create a launch file for easy NAO6 connection:
|
||||
|
||||
```bash
|
||||
# Create workspace
|
||||
mkdir -p ~/nao_ws/src
|
||||
cd ~/nao_ws
|
||||
|
||||
# Create launch file directory
|
||||
mkdir -p src/nao_launch/launch
|
||||
|
||||
# Create the launch file
|
||||
cat > src/nao_launch/launch/nao6_hristudio.launch.py << 'EOF'
|
||||
from launch import LaunchDescription
|
||||
from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription
|
||||
from launch.substitutions import LaunchConfiguration
|
||||
from launch_ros.actions import Node
|
||||
from launch.launch_description_sources import PythonLaunchDescriptionSource
|
||||
from ament_index_python.packages import get_package_share_directory
|
||||
import os
|
||||
|
||||
def generate_launch_description():
|
||||
return LaunchDescription([
|
||||
# NAO IP configuration
|
||||
DeclareLaunchArgument('nao_ip', default_value='nao.local'),
|
||||
DeclareLaunchArgument('nao_port', default_value='9559'),
|
||||
DeclareLaunchArgument('bridge_port', default_value='9090'),
|
||||
|
||||
# NAOqi Driver
|
||||
Node(
|
||||
package='naoqi_driver2',
|
||||
executable='naoqi_driver',
|
||||
name='naoqi_driver',
|
||||
parameters=[{
|
||||
'nao_ip': LaunchConfiguration('nao_ip'),
|
||||
'nao_port': LaunchConfiguration('nao_port'),
|
||||
'publish_joint_states': True,
|
||||
'publish_odometry': True,
|
||||
'publish_camera': True,
|
||||
'publish_sensors': True,
|
||||
'joint_states_frequency': 30.0,
|
||||
'odom_frequency': 30.0,
|
||||
'camera_frequency': 15.0,
|
||||
'sensor_frequency': 10.0
|
||||
}],
|
||||
output='screen'
|
||||
),
|
||||
|
||||
# Rosbridge WebSocket Server
|
||||
Node(
|
||||
package='rosbridge_server',
|
||||
executable='rosbridge_websocket',
|
||||
name='rosbridge_websocket',
|
||||
parameters=[{
|
||||
'port': LaunchConfiguration('bridge_port'),
|
||||
'address': '0.0.0.0',
|
||||
'authenticate': False,
|
||||
'fragment_timeout': 600,
|
||||
'delay_between_messages': 0,
|
||||
'max_message_size': 10000000
|
||||
}],
|
||||
output='screen'
|
||||
)
|
||||
])
|
||||
EOF
|
||||
|
||||
# Create package.xml
|
||||
cat > src/nao_launch/package.xml << 'EOF'
|
||||
<?xml version="1.0"?>
|
||||
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypeid="pf3"?>
|
||||
<package format="3">
|
||||
<name>nao_launch</name>
|
||||
<version>1.0.0</version>
|
||||
<description>Launch files for NAO6 HRIStudio integration</description>
|
||||
<maintainer email="you@example.com">Your Name</maintainer>
|
||||
<license>MIT</license>
|
||||
|
||||
<buildtool_depend>ament_cmake</buildtool_depend>
|
||||
<exec_depend>launch</exec_depend>
|
||||
<exec_depend>launch_ros</exec_depend>
|
||||
<exec_depend>naoqi_driver2</exec_depend>
|
||||
<exec_depend>rosbridge_server</exec_depend>
|
||||
</package>
|
||||
EOF
|
||||
|
||||
# Create CMakeLists.txt
|
||||
cat > src/nao_launch/CMakeLists.txt << 'EOF'
|
||||
cmake_minimum_required(VERSION 3.8)
|
||||
project(nao_launch)
|
||||
|
||||
find_package(ament_cmake REQUIRED)
|
||||
|
||||
install(DIRECTORY launch/
|
||||
DESTINATION share/${PROJECT_NAME}/launch/
|
||||
)
|
||||
|
||||
ament_package()
|
||||
EOF
|
||||
|
||||
# Build the workspace
|
||||
colcon build
|
||||
source install/setup.bash
|
||||
```
|
||||
|
||||
## Step 5: Test NAO Connection
|
||||
|
||||
Start the NAO6 ROS2 integration:
|
||||
|
||||
```bash
|
||||
cd ~/nao_ws
|
||||
source install/setup.bash
|
||||
|
||||
# Launch with your NAO's IP address
|
||||
ros2 launch nao_launch nao6_hristudio.launch.py nao_ip:=YOUR_NAO_IP
|
||||
```
|
||||
|
||||
Replace `YOUR_NAO_IP` with your NAO's actual IP address (e.g., `192.168.1.100`).
|
||||
|
||||
## Step 6: Verify ROS2 Topics
|
||||
|
||||
In a new terminal, verify that NAO topics are publishing:
|
||||
|
||||
```bash
|
||||
source /opt/ros/humble/setup.bash
|
||||
|
||||
# List all topics
|
||||
ros2 topic list
|
||||
|
||||
# You should see these NAO6 topics:
|
||||
# /cmd_vel - Robot velocity commands
|
||||
# /odom - Odometry data
|
||||
# /joint_states - Joint positions and velocities
|
||||
# /joint_angles - NAO-specific joint control
|
||||
# /camera/front/image_raw - Front camera
|
||||
# /camera/bottom/image_raw - Bottom camera
|
||||
# /imu/torso - Inertial measurement unit
|
||||
# /bumper - Foot bumper sensors
|
||||
# /hand_touch - Hand tactile sensors
|
||||
# /head_touch - Head tactile sensors
|
||||
# /sonar/left - Left ultrasonic sensor
|
||||
# /sonar/right - Right ultrasonic sensor
|
||||
# /info - Robot information
|
||||
|
||||
# Test specific topics
|
||||
ros2 topic echo /joint_states --once
|
||||
ros2 topic echo /odom --once
|
||||
ros2 topic echo /info --once
|
||||
```
|
||||
|
||||
## Step 7: Test Robot Control
|
||||
|
||||
Test basic robot control:
|
||||
|
||||
```bash
|
||||
# Make NAO say something
|
||||
ros2 topic pub /speech std_msgs/msg/String "data: 'Hello from ROS2!'" --once
|
||||
|
||||
# Move head (be careful with joint limits)
|
||||
ros2 topic pub /joint_angles naoqi_bridge_msgs/msg/JointAnglesWithSpeed \
|
||||
"joint_names: ['HeadYaw']
|
||||
joint_angles: [0.5]
|
||||
speed: 0.3" --once
|
||||
|
||||
# Basic walking command (very small movement)
|
||||
ros2 topic pub /cmd_vel geometry_msgs/msg/Twist \
|
||||
"linear: {x: 0.1, y: 0.0, z: 0.0}
|
||||
angular: {x: 0.0, y: 0.0, z: 0.0}" --once
|
||||
|
||||
# Stop movement
|
||||
ros2 topic pub /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}" --once
|
||||
```
|
||||
|
||||
## Step 8: Configure HRIStudio
|
||||
|
||||
1. **Start HRIStudio** with your development setup
|
||||
2. **Add NAO6 Plugin Repository**:
|
||||
- Go to Admin → Plugin Repositories
|
||||
- Add the HRIStudio official repository if not already present
|
||||
- Sync to get the latest plugins including `nao6-ros2`
|
||||
|
||||
3. **Install NAO6 Plugin**:
|
||||
- In your study, go to Plugins
|
||||
- Install the "NAO6 Robot (ROS2 Integration)" plugin
|
||||
- Configure the ROS bridge URL: `ws://YOUR_COMPUTER_IP:9090`
|
||||
|
||||
4. **Create Experiment**:
|
||||
- Use the experiment designer
|
||||
- Add NAO6 actions from the robot blocks section
|
||||
- Configure parameters for each action
|
||||
|
||||
5. **Run Trial**:
|
||||
- Ensure your NAO6 ROS2 system is running
|
||||
- Start a trial in HRIStudio
|
||||
- Control the robot through the wizard interface
|
||||
|
||||
## Available Robot Actions
|
||||
|
||||
Your NAO6 plugin provides these actions for experiments:
|
||||
|
||||
### Movement Actions
|
||||
- **Walk with Velocity**: Control linear/angular velocity
|
||||
- **Stop Walking**: Emergency stop
|
||||
- **Set Joint Angle**: Control individual joints
|
||||
- **Turn Head**: Head orientation control
|
||||
|
||||
### Interaction Actions
|
||||
- **Say Text**: Text-to-speech via ROS2
|
||||
|
||||
### Sensor Actions
|
||||
- **Get Camera Image**: Capture from front/bottom cameras
|
||||
- **Get Joint States**: Read all joint positions
|
||||
- **Get IMU Data**: Inertial measurement data
|
||||
- **Get Bumper Status**: Foot contact sensors
|
||||
- **Get Touch Sensors**: Hand/head touch detection
|
||||
- **Get Sonar Range**: Ultrasonic distance sensors
|
||||
- **Get Robot Info**: General robot status
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### NAO Connection Issues
|
||||
```bash
|
||||
# Check NAO network connectivity
|
||||
ping nao.local
|
||||
|
||||
# Check NAOqi service
|
||||
telnet nao.local 9559
|
||||
|
||||
# Restart NAOqi on NAO
|
||||
# (Use robot's web interface or Choregraphe)
|
||||
```
|
||||
|
||||
### ROS2 Issues
|
||||
```bash
|
||||
# Check if naoqi_driver2 is running
|
||||
ros2 node list | grep naoqi
|
||||
|
||||
# Check topic publication rates
|
||||
ros2 topic hz /joint_states
|
||||
|
||||
# Restart the launch file
|
||||
ros2 launch nao_launch nao6_hristudio.launch.py nao_ip:=YOUR_NAO_IP
|
||||
```
|
||||
|
||||
### HRIStudio Connection Issues
|
||||
```bash
|
||||
# Verify rosbridge is running
|
||||
netstat -an | grep 9090
|
||||
|
||||
# Check WebSocket connection
|
||||
curl -i -N -H "Connection: Upgrade" \
|
||||
-H "Upgrade: websocket" \
|
||||
-H "Sec-WebSocket-Key: test" \
|
||||
-H "Sec-WebSocket-Version: 13" \
|
||||
http://localhost:9090
|
||||
```
|
||||
|
||||
### Robot Safety
|
||||
- Always keep emergency stop accessible
|
||||
- Start with small movements and low speeds
|
||||
- Monitor robot battery level
|
||||
- Ensure clear space around robot
|
||||
- Never leave robot unattended during operation
|
||||
|
||||
## Performance Optimization
|
||||
|
||||
### Network Optimization
|
||||
```bash
|
||||
# Increase network buffer sizes for camera data
|
||||
sudo sysctl -w net.core.rmem_max=26214400
|
||||
sudo sysctl -w net.core.rmem_default=26214400
|
||||
```
|
||||
|
||||
### ROS2 Optimization
|
||||
```bash
|
||||
# Adjust QoS settings for better performance
|
||||
export RMW_IMPLEMENTATION=rmw_cyclonedx_cpp
|
||||
export CYCLONEDX_URI=file:///path/to/cyclonedx.xml
|
||||
```
|
||||
|
||||
## Next Steps
|
||||
|
||||
1. **Experiment Design**: Create experiments using NAO6 actions
|
||||
2. **Data Collection**: Use sensor actions for research data
|
||||
3. **Custom Actions**: Extend the plugin with custom behaviors
|
||||
4. **Multi-Robot**: Scale to multiple NAO6 robots
|
||||
5. **Advanced Features**: Implement navigation, manipulation, etc.
|
||||
|
||||
## Support Resources
|
||||
|
||||
- **NAO Documentation**: https://developer.softbankrobotics.com/nao6
|
||||
- **naoqi_driver2**: https://github.com/ros-naoqi/naoqi_driver2
|
||||
- **ROS2 Humble**: https://docs.ros.org/en/humble/
|
||||
- **HRIStudio Docs**: See `docs/` folder
|
||||
- **Community**: HRIStudio Discord/Forum
|
||||
|
||||
---
|
||||
|
||||
**Success!** Your NAO6 is now ready for use with HRIStudio experiments. The robot's capabilities are fully accessible through the visual experiment designer and real-time wizard interface.
|
||||
0
docs/paper.md
Normal file → Executable file
0
docs/paper.md
Normal file → Executable file
0
docs/plugin-system-implementation-guide.md
Normal file → Executable file
0
docs/plugin-system-implementation-guide.md
Normal file → Executable file
0
docs/project-overview.md
Normal file → Executable file
0
docs/project-overview.md
Normal file → Executable file
0
docs/project-status.md
Normal file → Executable file
0
docs/project-status.md
Normal file → Executable file
0
docs/proposal.tex
Normal file → Executable file
0
docs/proposal.tex
Normal file → Executable file
0
docs/quick-reference.md
Normal file → Executable file
0
docs/quick-reference.md
Normal file → Executable file
0
docs/roman-2025-talk.md
Normal file → Executable file
0
docs/roman-2025-talk.md
Normal file → Executable file
0
docs/ros2-integration.md
Normal file → Executable file
0
docs/ros2-integration.md
Normal file → Executable file
0
docs/ros2_naoqi.md
Normal file → Executable file
0
docs/ros2_naoqi.md
Normal file → Executable file
0
docs/route-consolidation-summary.md
Normal file → Executable file
0
docs/route-consolidation-summary.md
Normal file → Executable file
0
docs/thesis-project-priorities.md
Normal file → Executable file
0
docs/thesis-project-priorities.md
Normal file → Executable file
0
docs/trial-system-overhaul.md
Normal file → Executable file
0
docs/trial-system-overhaul.md
Normal file → Executable file
0
docs/wizard-interface-final.md
Normal file → Executable file
0
docs/wizard-interface-final.md
Normal file → Executable file
0
docs/wizard-interface-guide.md
Normal file → Executable file
0
docs/wizard-interface-guide.md
Normal file → Executable file
0
docs/wizard-interface-redesign.md
Normal file → Executable file
0
docs/wizard-interface-redesign.md
Normal file → Executable file
0
docs/wizard-interface-summary.md
Normal file → Executable file
0
docs/wizard-interface-summary.md
Normal file → Executable file
0
docs/work_in_progress.md
Normal file → Executable file
0
docs/work_in_progress.md
Normal file → Executable file
Reference in New Issue
Block a user