{ "name": "NAO6 Movement Control", "version": "1.0.0", "description": "Complete movement control for NAO6 robot including walking, turning, and joint manipulation", "platform": "NAO6", "category": "movement", "manufacturer": { "name": "SoftBank Robotics", "website": "https://www.softbankrobotics.com" }, "documentation": { "mainUrl": "https://docs.hristudio.com/robots/nao6/movement", "quickStart": "https://docs.hristudio.com/robots/nao6/movement/quickstart" }, "ros2Config": { "namespace": "/naoqi_driver", "topics": { "cmd_vel": { "type": "geometry_msgs/Twist", "description": "Velocity commands for robot base movement" }, "joint_angles": { "type": "naoqi_bridge_msgs/JointAnglesWithSpeed", "description": "Individual joint angle control with speed" }, "joint_states": { "type": "sensor_msgs/JointState", "description": "Current joint positions and velocities" } } }, "actions": [ { "id": "walk_forward", "name": "Walk Forward", "description": "Make the robot walk forward at specified speed", "category": "movement", "parameters": [ { "name": "speed", "type": "number", "description": "Walking speed in m/s", "required": true, "min": 0.01, "max": 0.3, "default": 0.1, "step": 0.01 }, { "name": "duration", "type": "number", "description": "Duration to walk in seconds (0 = indefinite)", "required": false, "min": 0, "max": 30, "default": 0, "step": 0.1 } ], "implementation": { "topic": "/naoqi_driver/cmd_vel", "messageType": "geometry_msgs/Twist", "messageTemplate": { "linear": { "x": "{{speed}}", "y": 0, "z": 0 }, "angular": { "x": 0, "y": 0, "z": 0 } } } }, { "id": "walk_backward", "name": "Walk Backward", "description": "Make the robot walk backward at specified speed", "category": "movement", "parameters": [ { "name": "speed", "type": "number", "description": "Walking speed in m/s", "required": true, "min": 0.01, "max": 0.3, "default": 0.1, "step": 0.01 }, { "name": "duration", "type": "number", "description": "Duration to walk in seconds (0 = indefinite)", "required": false, "min": 0, "max": 30, "default": 0, "step": 0.1 } ], "implementation": { "topic": "/naoqi_driver/cmd_vel", "messageType": "geometry_msgs/Twist", "messageTemplate": { "linear": { "x": "-{{speed}}", "y": 0, "z": 0 }, "angular": { "x": 0, "y": 0, "z": 0 } } } }, { "id": "turn_left", "name": "Turn Left", "description": "Make the robot turn left at specified angular speed", "category": "movement", "parameters": [ { "name": "speed", "type": "number", "description": "Angular speed in rad/s", "required": true, "min": 0.1, "max": 1.0, "default": 0.3, "step": 0.1 }, { "name": "duration", "type": "number", "description": "Duration to turn in seconds (0 = indefinite)", "required": false, "min": 0, "max": 30, "default": 0, "step": 0.1 } ], "implementation": { "topic": "/naoqi_driver/cmd_vel", "messageType": "geometry_msgs/Twist", "messageTemplate": { "linear": { "x": 0, "y": 0, "z": 0 }, "angular": { "x": 0, "y": 0, "z": "{{speed}}" } } } }, { "id": "turn_right", "name": "Turn Right", "description": "Make the robot turn right at specified angular speed", "category": "movement", "parameters": [ { "name": "speed", "type": "number", "description": "Angular speed in rad/s", "required": true, "min": 0.1, "max": 1.0, "default": 0.3, "step": 0.1 }, { "name": "duration", "type": "number", "description": "Duration to turn in seconds (0 = indefinite)", "required": false, "min": 0, "max": 30, "default": 0, "step": 0.1 } ], "implementation": { "topic": "/naoqi_driver/cmd_vel", "messageType": "geometry_msgs/Twist", "messageTemplate": { "linear": { "x": 0, "y": 0, "z": 0 }, "angular": { "x": 0, "y": 0, "z": "-{{speed}}" } } } }, { "id": "stop_movement", "name": "Stop Movement", "description": "Immediately stop all robot movement", "category": "movement", "parameters": [], "implementation": { "topic": "/naoqi_driver/cmd_vel", "messageType": "geometry_msgs/Twist", "messageTemplate": { "linear": { "x": 0, "y": 0, "z": 0 }, "angular": { "x": 0, "y": 0, "z": 0 } } } }, { "id": "move_head", "name": "Move Head", "description": "Control head orientation (yaw and pitch)", "category": "movement", "parameters": [ { "name": "yaw", "type": "number", "description": "Head yaw angle in radians", "required": true, "min": -2.09, "max": 2.09, "default": 0, "step": 0.1 }, { "name": "pitch", "type": "number", "description": "Head pitch angle in radians", "required": true, "min": -0.67, "max": 0.51, "default": 0, "step": 0.1 }, { "name": "speed", "type": "number", "description": "Movement speed (0.1 = slow, 1.0 = fast)", "required": false, "min": 0.1, "max": 1.0, "default": 0.3, "step": 0.1 } ], "implementation": { "topic": "/naoqi_driver/joint_angles", "messageType": "naoqi_bridge_msgs/JointAnglesWithSpeed", "messageTemplate": { "joint_names": ["HeadYaw", "HeadPitch"], "joint_angles": ["{{yaw}}", "{{pitch}}"], "speed": "{{speed}}" } } }, { "id": "move_arm", "name": "Move Arm", "description": "Control arm joint positions", "category": "movement", "parameters": [ { "name": "arm", "type": "select", "description": "Which arm to control", "required": true, "options": [ { "value": "left", "label": "Left Arm" }, { "value": "right", "label": "Right Arm" } ], "default": "right" }, { "name": "shoulder_pitch", "type": "number", "description": "Shoulder pitch angle in radians", "required": true, "min": -2.09, "max": 2.09, "default": 1.4, "step": 0.1 }, { "name": "shoulder_roll", "type": "number", "description": "Shoulder roll angle in radians", "required": true, "min": -0.31, "max": 1.33, "default": 0.2, "step": 0.1 }, { "name": "elbow_yaw", "type": "number", "description": "Elbow yaw angle in radians", "required": true, "min": -2.09, "max": 2.09, "default": 0, "step": 0.1 }, { "name": "elbow_roll", "type": "number", "description": "Elbow roll angle in radians", "required": true, "min": -1.54, "max": -0.03, "default": -0.5, "step": 0.1 }, { "name": "speed", "type": "number", "description": "Movement speed (0.1 = slow, 1.0 = fast)", "required": false, "min": 0.1, "max": 1.0, "default": 0.3, "step": 0.1 } ], "implementation": { "topic": "/naoqi_driver/joint_angles", "messageType": "naoqi_bridge_msgs/JointAnglesWithSpeed", "messageTemplate": { "joint_names": [ "{{arm === 'left' ? 'L' : 'R'}}ShoulderPitch", "{{arm === 'left' ? 'L' : 'R'}}ShoulderRoll", "{{arm === 'left' ? 'L' : 'R'}}ElbowYaw", "{{arm === 'left' ? 'L' : 'R'}}ElbowRoll" ], "joint_angles": ["{{shoulder_pitch}}", "{{shoulder_roll}}", "{{elbow_yaw}}", "{{elbow_roll}}"], "speed": "{{speed}}" } } } ], "safety": { "maxSpeed": 0.3, "emergencyStop": { "action": "stop_movement", "description": "Immediately stops all movement" }, "jointLimits": { "HeadYaw": { "min": -2.09, "max": 2.09 }, "HeadPitch": { "min": -0.67, "max": 0.51 }, "LShoulderPitch": { "min": -2.09, "max": 2.09 }, "RShoulderPitch": { "min": -2.09, "max": 2.09 }, "LShoulderRoll": { "min": -0.31, "max": 1.33 }, "RShoulderRoll": { "min": -1.33, "max": 0.31 }, "LElbowYaw": { "min": -2.09, "max": 2.09 }, "RElbowYaw": { "min": -2.09, "max": 2.09 }, "LElbowRoll": { "min": 0.03, "max": 1.54 }, "RElbowRoll": { "min": -1.54, "max": -0.03 } } } }