                                     jsonb_pretty                                      
---------------------------------------------------------------------------------------
 [                                                                                    +
     {                                                                                +
         "id": "walk_velocity",                                                       +
         "icon": "navigation",                                                        +
         "name": "Walk with Velocity",                                                +
         "ros2": {                                                                    +
             "qos": {                                                                 +
                 "depth": 1,                                                          +
                 "history": "keep_last",                                              +
                 "durability": "volatile",                                            +
                 "reliability": "reliable"                                            +
             },                                                                       +
             "topic": "/cmd_vel",                                                     +
             "messageType": "geometry_msgs/msg/Twist",                                +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "transformToTwist"                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 5000,                                                             +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Control robot walking with linear and angular velocities",   +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "linear",                                                            +
                 "angular"                                                            +
             ],                                                                       +
             "properties": {                                                          +
                 "linear": {                                                          +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 0.55,                                                 +
                     "minimum": -0.55,                                                +
                     "description": "Forward velocity in m/s"                         +
                 },                                                                   +
                 "angular": {                                                         +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 2,                                                    +
                     "minimum": -2,                                                   +
                     "description": "Angular velocity in rad/s"                       +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "walk_forward",                                                        +
         "icon": "arrow-up",                                                          +
         "name": "Walk Forward",                                                      +
         "ros2": {                                                                    +
             "topic": "/cmd_vel",                                                     +
             "messageType": "geometry_msgs/msg/Twist",                                +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "linear": {                                                      +
                         "x": "{{speed}}",                                            +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     },                                                               +
                     "angular": {                                                     +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     }                                                                +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 30000,                                                            +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Make the robot walk forward at specified speed",             +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "speed"                                                              +
             ],                                                                       +
             "properties": {                                                          +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.1,                                                  +
                     "maximum": 0.3,                                                  +
                     "minimum": 0.01,                                                 +
                     "description": "Walking speed in m/s"                            +
                 },                                                                   +
                 "duration": {                                                        +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 30,                                                   +
                     "minimum": 0,                                                    +
                     "description": "Duration to walk in seconds (0 = indefinite)"    +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "walk_backward",                                                       +
         "icon": "arrow-down",                                                        +
         "name": "Walk Backward",                                                     +
         "ros2": {                                                                    +
             "topic": "/cmd_vel",                                                     +
             "messageType": "geometry_msgs/msg/Twist",                                +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "linear": {                                                      +
                         "x": "-{{speed}}",                                           +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     },                                                               +
                     "angular": {                                                     +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     }                                                                +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 30000,                                                            +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Make the robot walk backward at specified speed",            +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "speed"                                                              +
             ],                                                                       +
             "properties": {                                                          +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.1,                                                  +
                     "maximum": 0.3,                                                  +
                     "minimum": 0.01,                                                 +
                     "description": "Walking speed in m/s"                            +
                 },                                                                   +
                 "duration": {                                                        +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 30,                                                   +
                     "minimum": 0,                                                    +
                     "description": "Duration to walk in seconds (0 = indefinite)"    +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "turn_left",                                                           +
         "icon": "rotate-ccw",                                                        +
         "name": "Turn Left",                                                         +
         "ros2": {                                                                    +
             "topic": "/cmd_vel",                                                     +
             "messageType": "geometry_msgs/msg/Twist",                                +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "linear": {                                                      +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     },                                                               +
                     "angular": {                                                     +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": "{{speed}}"                                             +
                     }                                                                +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 30000,                                                            +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Make the robot turn left at specified angular speed",        +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "speed"                                                              +
             ],                                                                       +
             "properties": {                                                          +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.3,                                                  +
                     "maximum": 1,                                                    +
                     "minimum": 0.1,                                                  +
                     "description": "Angular speed in rad/s"                          +
                 },                                                                   +
                 "duration": {                                                        +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 30,                                                   +
                     "minimum": 0,                                                    +
                     "description": "Duration to turn in seconds (0 = indefinite)"    +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "turn_right",                                                          +
         "icon": "rotate-cw",                                                         +
         "name": "Turn Right",                                                        +
         "ros2": {                                                                    +
             "topic": "/cmd_vel",                                                     +
             "messageType": "geometry_msgs/msg/Twist",                                +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "linear": {                                                      +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     },                                                               +
                     "angular": {                                                     +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": "-{{speed}}"                                            +
                     }                                                                +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 30000,                                                            +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Make the robot turn right at specified angular speed",       +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "speed"                                                              +
             ],                                                                       +
             "properties": {                                                          +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.3,                                                  +
                     "maximum": 1,                                                    +
                     "minimum": 0.1,                                                  +
                     "description": "Angular speed in rad/s"                          +
                 },                                                                   +
                 "duration": {                                                        +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 30,                                                   +
                     "minimum": 0,                                                    +
                     "description": "Duration to turn in seconds (0 = indefinite)"    +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "stop_walking",                                                        +
         "icon": "square",                                                            +
         "name": "Stop Walking",                                                      +
         "ros2": {                                                                    +
             "qos": {                                                                 +
                 "depth": 1,                                                          +
                 "history": "keep_last",                                              +
                 "durability": "volatile",                                            +
                 "reliability": "reliable"                                            +
             },                                                                       +
             "topic": "/cmd_vel",                                                     +
             "messageType": "geometry_msgs/msg/Twist",                                +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "linear": {                                                      +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     },                                                               +
                     "angular": {                                                     +
                         "x": 0,                                                      +
                         "y": 0,                                                      +
                         "z": 0                                                       +
                     }                                                                +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 3000,                                                             +
         "category": "movement",                                                      +
         "retryable": false,                                                          +
         "description": "Immediately stop robot movement",                            +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
             ],                                                                       +
             "properties": {                                                          +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "say_text",                                                            +
         "icon": "volume-2",                                                          +
         "name": "Say Text",                                                          +
         "ros2": {                                                                    +
             "qos": {                                                                 +
                 "durability": "volatile",                                            +
                 "reliability": "reliable"                                            +
             },                                                                       +
             "topic": "/speech",                                                      +
             "messageType": "std_msgs/msg/String",                                    +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "transformToStringMessage"                            +
             }                                                                        +
         },                                                                           +
         "timeout": 15000,                                                            +
         "category": "interaction",                                                   +
         "retryable": true,                                                           +
         "description": "Make the robot speak using text-to-speech",                  +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "text"                                                               +
             ],                                                                       +
             "properties": {                                                          +
                 "text": {                                                            +
                     "type": "string",                                                +
                     "default": "Hello from NAO!",                                    +
                     "description": "Text to speak"                                   +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "say_with_emotion",                                                    +
         "icon": "heart",                                                             +
         "name": "Say Text with Emotion",                                             +
         "ros2": {                                                                    +
             "topic": "/speech",                                                      +
             "messageType": "std_msgs/msg/String",                                    +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "data": "\\rspd={{speed}}\\\\rst={{emotion}}\\{{text}}"          +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 15000,                                                            +
         "category": "interaction",                                                   +
         "retryable": true,                                                           +
         "description": "Speak text with emotional expression using SSML-like markup",+
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "text"                                                               +
             ],                                                                       +
             "properties": {                                                          +
                 "text": {                                                            +
                     "type": "string",                                                +
                     "default": "Hello! I'm feeling great today!",                    +
                     "description": "Text for the robot to speak"                     +
                 },                                                                   +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 1,                                                    +
                     "maximum": 2,                                                    +
                     "minimum": 0.5,                                                  +
                     "description": "Speech speed multiplier"                         +
                 },                                                                   +
                 "emotion": {                                                         +
                     "enum": [                                                        +
                         "neutral",                                                   +
                         "happy",                                                     +
                         "sad",                                                       +
                         "excited",                                                   +
                         "calm"                                                       +
                     ],                                                               +
                     "type": "string",                                                +
                     "default": "neutral",                                            +
                     "description": "Emotional tone for speech"                       +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "set_volume",                                                          +
         "icon": "volume-x",                                                          +
         "name": "Set Volume",                                                        +
         "ros2": {                                                                    +
             "topic": "/audio_volume",                                                +
             "messageType": "std_msgs/msg/Float32",                                   +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "data": "{{volume}}"                                             +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 5000,                                                             +
         "category": "interaction",                                                   +
         "retryable": true,                                                           +
         "description": "Adjust the robot's audio volume level",                      +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "volume"                                                             +
             ],                                                                       +
             "properties": {                                                          +
                 "volume": {                                                          +
                     "type": "number",                                                +
                     "default": 0.5,                                                  +
                     "maximum": 1,                                                    +
                     "minimum": 0,                                                    +
                     "description": "Volume level (0.0 = silent, 1.0 = maximum)"      +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "set_language",                                                        +
         "icon": "globe",                                                             +
         "name": "Set Language",                                                      +
         "ros2": {                                                                    +
             "topic": "/set_language",                                                +
             "messageType": "std_msgs/msg/String",                                    +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "data": "{{language}}"                                           +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 5000,                                                             +
         "category": "interaction",                                                   +
         "retryable": true,                                                           +
         "description": "Change the robot's speech language",                         +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "language"                                                           +
             ],                                                                       +
             "properties": {                                                          +
                 "language": {                                                        +
                     "enum": [                                                        +
                         "en-US",                                                     +
                         "en-GB",                                                     +
                         "fr-FR",                                                     +
                         "de-DE",                                                     +
                         "es-ES",                                                     +
                         "it-IT",                                                     +
                         "ja-JP",                                                     +
                         "ko-KR",                                                     +
                         "zh-CN"                                                      +
                     ],                                                               +
                     "type": "string",                                                +
                     "default": "en-US",                                              +
                     "description": "Speech language"                                 +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "move_head",                                                           +
         "icon": "eye",                                                               +
         "name": "Move Head",                                                         +
         "ros2": {                                                                    +
             "topic": "/joint_angles",                                                +
             "messageType": "naoqi_bridge_msgs/msg/JointAnglesWithSpeed",             +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "speed": "{{speed}}",                                            +
                     "joint_names": [                                                 +
                         "HeadYaw",                                                   +
                         "HeadPitch"                                                  +
                     ],                                                               +
                     "joint_angles": [                                                +
                         "{{yaw}}",                                                   +
                         "{{pitch}}"                                                  +
                     ]                                                                +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 10000,                                                            +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Control head orientation (yaw and pitch)",                   +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "yaw",                                                               +
                 "pitch"                                                              +
             ],                                                                       +
             "properties": {                                                          +
                 "yaw": {                                                             +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 2.09,                                                 +
                     "minimum": -2.09,                                                +
                     "description": "Head yaw angle in radians"                       +
                 },                                                                   +
                 "pitch": {                                                           +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 0.51,                                                 +
                     "minimum": -0.67,                                                +
                     "description": "Head pitch angle in radians"                     +
                 },                                                                   +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.3,                                                  +
                     "maximum": 1,                                                    +
                     "minimum": 0.1,                                                  +
                     "description": "Movement speed (0.1 = slow, 1.0 = fast)"         +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "move_arm",                                                            +
         "icon": "hand",                                                              +
         "name": "Move Arm",                                                          +
         "ros2": {                                                                    +
             "topic": "/joint_angles",                                                +
             "messageType": "naoqi_bridge_msgs/msg/JointAnglesWithSpeed",             +
             "payloadMapping": {                                                      +
                 "type": "static",                                                    +
                 "payload": {                                                         +
                     "speed": "{{speed}}",                                            +
                     "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}}"                                             +
                     ]                                                                +
                 }                                                                    +
             }                                                                        +
         },                                                                           +
         "timeout": 10000,                                                            +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Control arm joint positions",                                +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "arm",                                                               +
                 "shoulder_pitch",                                                    +
                 "shoulder_roll",                                                     +
                 "elbow_yaw",                                                         +
                 "elbow_roll"                                                         +
             ],                                                                       +
             "properties": {                                                          +
                 "arm": {                                                             +
                     "enum": [                                                        +
                         "left",                                                      +
                         "right"                                                      +
                     ],                                                               +
                     "type": "string",                                                +
                     "default": "right",                                              +
                     "description": "Which arm to control"                            +
                 },                                                                   +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.3,                                                  +
                     "maximum": 1,                                                    +
                     "minimum": 0.1,                                                  +
                     "description": "Movement speed (0.1 = slow, 1.0 = fast)"         +
                 },                                                                   +
                 "elbow_yaw": {                                                       +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 2.09,                                                 +
                     "minimum": -2.09,                                                +
                     "description": "Elbow yaw angle in radians"                      +
                 },                                                                   +
                 "elbow_roll": {                                                      +
                     "type": "number",                                                +
                     "default": -0.5,                                                 +
                     "maximum": -0.03,                                                +
                     "minimum": -1.54,                                                +
                     "description": "Elbow roll angle in radians"                     +
                 },                                                                   +
                 "shoulder_roll": {                                                   +
                     "type": "number",                                                +
                     "default": 0.2,                                                  +
                     "maximum": 1.33,                                                 +
                     "minimum": -0.31,                                                +
                     "description": "Shoulder roll angle in radians"                  +
                 },                                                                   +
                 "shoulder_pitch": {                                                  +
                     "type": "number",                                                +
                     "default": 1.4,                                                  +
                     "maximum": 2.09,                                                 +
                     "minimum": -2.09,                                                +
                     "description": "Shoulder pitch angle in radians"                 +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "set_joint_angle",                                                     +
         "icon": "settings",                                                          +
         "name": "Set Joint Angle",                                                   +
         "ros2": {                                                                    +
             "topic": "/joint_angles",                                                +
             "messageType": "naoqi_bridge_msgs/msg/JointAnglesWithSpeed",             +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "transformToJointAngles"                              +
             }                                                                        +
         },                                                                           +
         "timeout": 10000,                                                            +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Control individual joint angles",                            +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "joint_name",                                                        +
                 "angle"                                                              +
             ],                                                                       +
             "properties": {                                                          +
                 "angle": {                                                           +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 3.14159,                                              +
                     "minimum": -3.14159,                                             +
                     "description": "Target angle in radians"                         +
                 },                                                                   +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.2,                                                  +
                     "maximum": 1,                                                    +
                     "minimum": 0.01,                                                 +
                     "description": "Movement speed (fraction of max)"                +
                 },                                                                   +
                 "joint_name": {                                                      +
                     "enum": [                                                        +
                         "HeadYaw",                                                   +
                         "HeadPitch",                                                 +
                         "LShoulderPitch",                                            +
                         "LShoulderRoll",                                             +
                         "LElbowYaw",                                                 +
                         "LElbowRoll",                                                +
                         "LWristYaw",                                                 +
                         "RShoulderPitch",                                            +
                         "RShoulderRoll",                                             +
                         "RElbowYaw",                                                 +
                         "RElbowRoll",                                                +
                         "RWristYaw",                                                 +
                         "LHipYawPitch",                                              +
                         "LHipRoll",                                                  +
                         "LHipPitch",                                                 +
                         "LKneePitch",                                                +
                         "LAnklePitch",                                               +
                         "LAnkleRoll",                                                +
                         "RHipRoll",                                                  +
                         "RHipPitch",                                                 +
                         "RKneePitch",                                                +
                         "RAnklePitch",                                               +
                         "RAnkleRoll"                                                 +
                     ],                                                               +
                     "type": "string",                                                +
                     "default": "HeadYaw",                                            +
                     "description": "Joint to control"                                +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "turn_head",                                                           +
         "icon": "rotate-ccw",                                                        +
         "name": "Turn Head",                                                         +
         "ros2": {                                                                    +
             "topic": "/joint_angles",                                                +
             "messageType": "naoqi_bridge_msgs/msg/JointAnglesWithSpeed",             +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "transformToHeadMovement"                             +
             }                                                                        +
         },                                                                           +
         "timeout": 8000,                                                             +
         "category": "movement",                                                      +
         "retryable": true,                                                           +
         "description": "Control head orientation",                                   +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "yaw",                                                               +
                 "pitch"                                                              +
             ],                                                                       +
             "properties": {                                                          +
                 "yaw": {                                                             +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 2.0857,                                               +
                     "minimum": -2.0857,                                              +
                     "description": "Head yaw angle in radians (left-right)"          +
                 },                                                                   +
                 "pitch": {                                                           +
                     "type": "number",                                                +
                     "default": 0,                                                    +
                     "maximum": 0.5149,                                               +
                     "minimum": -0.672,                                               +
                     "description": "Head pitch angle in radians (up-down)"           +
                 },                                                                   +
                 "speed": {                                                           +
                     "type": "number",                                                +
                     "default": 0.3,                                                  +
                     "maximum": 1,                                                    +
                     "minimum": 0.1,                                                  +
                     "description": "Movement speed fraction"                         +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "get_camera_image",                                                    +
         "icon": "camera",                                                            +
         "name": "Get Camera Image",                                                  +
         "ros2": {                                                                    +
             "qos": {                                                                 +
                 "durability": "volatile",                                            +
                 "reliability": "reliable"                                            +
             },                                                                       +
             "topic": "/camera/{camera}/image_raw",                                   +
             "messageType": "sensor_msgs/msg/Image",                                  +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "getCameraImage"                                      +
             }                                                                        +
         },                                                                           +
         "timeout": 5000,                                                             +
         "category": "sensors",                                                       +
         "retryable": true,                                                           +
         "description": "Capture image from front or bottom camera",                  +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "camera"                                                             +
             ],                                                                       +
             "properties": {                                                          +
                 "camera": {                                                          +
                     "enum": [                                                        +
                         "front",                                                     +
                         "bottom"                                                     +
                     ],                                                               +
                     "type": "string",                                                +
                     "default": "front",                                              +
                     "description": "Camera to use"                                   +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "get_joint_states",                                                    +
         "icon": "activity",                                                          +
         "name": "Get Joint States",                                                  +
         "ros2": {                                                                    +
             "qos": {                                                                 +
                 "durability": "volatile",                                            +
                 "reliability": "reliable"                                            +
             },                                                                       +
             "topic": "/joint_states",                                                +
             "messageType": "sensor_msgs/msg/JointState",                             +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "getJointStates"                                      +
             }                                                                        +
         },                                                                           +
         "timeout": 3000,                                                             +
         "category": "sensors",                                                       +
         "retryable": true,                                                           +
         "description": "Read current joint positions and velocities",                +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
             ],                                                                       +
             "properties": {                                                          +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "get_imu_data",                                                        +
         "icon": "compass",                                                           +
         "name": "Get IMU Data",                                                      +
         "ros2": {                                                                    +
             "qos": {                                                                 +
                 "durability": "volatile",                                            +
                 "reliability": "reliable"                                            +
             },                                                                       +
             "topic": "/imu/torso",                                                   +
             "messageType": "sensor_msgs/msg/Imu",                                    +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "getImuData"                                          +
             }                                                                        +
         },                                                                           +
         "timeout": 3000,                                                             +
         "category": "sensors",                                                       +
         "retryable": true,                                                           +
         "description": "Read inertial measurement unit data from torso",             +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
             ],                                                                       +
             "properties": {                                                          +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "get_bumper_status",                                                   +
         "icon": "zap",                                                               +
         "name": "Get Bumper Status",                                                 +
         "ros2": {                                                                    +
             "topic": "/bumper",                                                      +
             "messageType": "naoqi_bridge_msgs/msg/Bumper",                           +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "getBumperStatus"                                     +
             }                                                                        +
         },                                                                           +
         "timeout": 3000,                                                             +
         "category": "sensors",                                                       +
         "retryable": true,                                                           +
         "description": "Read foot bumper contact sensors",                           +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
             ],                                                                       +
             "properties": {                                                          +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "get_touch_sensors",                                                   +
         "icon": "hand",                                                              +
         "name": "Get Touch Sensors",                                                 +
         "ros2": {                                                                    +
             "topic": "/{sensor_type}_touch",                                         +
             "messageType": "naoqi_bridge_msgs/msg/HandTouch",                        +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "getTouchSensors"                                     +
             }                                                                        +
         },                                                                           +
         "timeout": 3000,                                                             +
         "category": "sensors",                                                       +
         "retryable": true,                                                           +
         "description": "Read hand and head touch sensor states",                     +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "sensor_type"                                                        +
             ],                                                                       +
             "properties": {                                                          +
                 "sensor_type": {                                                     +
                     "enum": [                                                        +
                         "hand",                                                      +
                         "head"                                                       +
                     ],                                                               +
                     "type": "string",                                                +
                     "default": "hand",                                               +
                     "description": "Touch sensor type to read"                       +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "get_sonar_range",                                                     +
         "icon": "radio",                                                             +
         "name": "Get Sonar Range",                                                   +
         "ros2": {                                                                    +
             "topic": "/sonar/{sensor}",                                              +
             "messageType": "sensor_msgs/msg/Range",                                  +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "getSonarRange"                                       +
             }                                                                        +
         },                                                                           +
         "timeout": 3000,                                                             +
         "category": "sensors",                                                       +
         "retryable": true,                                                           +
         "description": "Read ultrasonic range sensor data",                          +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
                 "sensor"                                                             +
             ],                                                                       +
             "properties": {                                                          +
                 "sensor": {                                                          +
                     "enum": [                                                        +
                         "left",                                                      +
                         "right",                                                     +
                         "both"                                                       +
                     ],                                                               +
                     "type": "string",                                                +
                     "default": "both",                                               +
                     "description": "Sonar sensor to read"                            +
                 }                                                                    +
             }                                                                        +
         }                                                                            +
     },                                                                               +
     {                                                                                +
         "id": "get_robot_info",                                                      +
         "icon": "info",                                                              +
         "name": "Get Robot Info",                                                    +
         "ros2": {                                                                    +
             "topic": "/info",                                                        +
             "messageType": "naoqi_bridge_msgs/msg/RobotInfo",                        +
             "payloadMapping": {                                                      +
                 "type": "transform",                                                 +
                 "transformFn": "getRobotInfo"                                        +
             }                                                                        +
         },                                                                           +
         "timeout": 3000,                                                             +
         "category": "sensors",                                                       +
         "retryable": true,                                                           +
         "description": "Read general robot information and status",                  +
         "parameterSchema": {                                                         +
             "type": "object",                                                        +
             "required": [                                                            +
             ],                                                                       +
             "properties": {                                                          +
             }                                                                        +
         }                                                                            +
     }                                                                                +
 ]
(1 row)

