robot_behavior
Control robot behaviors including animation, camera, navigation, and manipulation operations through a unified interface for physical and virtual robots.
Instructions
Robot behavior control portmanteau - Animation, camera, navigation, and manipulation.
PORTMANTEAU PATTERN: Consolidates animation, camera, navigation, and manipulation operations into a single unified tool. This reduces tool explosion while maintaining full functionality across all behavior categories.
CATEGORIES:
animation: Animation and pose control
camera: Camera feed and visual control
navigation: Path planning and navigation
manipulation: Arm and gripper control
ANIMATION ACTIONS:
animate_wheels: Rotate wheels during movement (Scout mecanum wheels)
animate_movement: Play movement animations (walk, turn, etc.)
set_pose: Set robot pose (sitting, standing, etc. for Unitree)
play_animation: Play custom animations
stop_animation: Stop current animation
get_animation_state: Get current animation state
CAMERA ACTIONS:
get_camera_feed: Get live camera feed (physical Scout camera)
get_virtual_camera: Get Unity camera view from robot perspective
set_camera_angle: Adjust camera angle
capture_image: Capture still image
start_streaming: Start video stream
stop_streaming: Stop video stream
get_camera_status: Get camera status and settings
NAVIGATION ACTIONS:
plan_path: Plan path from A to B (A* or RRT)
follow_path: Execute planned path
set_waypoint: Set navigation waypoint
clear_waypoints: Clear waypoint list
get_path_status: Check path execution status
avoid_obstacle: Dynamic obstacle avoidance
get_current_path: Get current path being followed
MANIPULATION ACTIONS:
move_arm: Move arm to target joint positions or end-effector pose
set_joint_positions: Set individual joint positions (dict of joint_name: angle)
set_end_effector_pose: Move end-effector to target pose (position + orientation)
get_arm_state: Get current arm joint positions and end-effector pose
open_gripper: Open gripper fully
close_gripper: Close gripper fully
set_gripper_position: Set gripper position (0.0 = open, 1.0 = closed)
get_gripper_state: Get current gripper position and force feedback
move_to_pose: Move arm to target pose with IK (inverse kinematics)
home_arm: Return arm to home/rest position
Args: robot_id: Robot identifier (e.g., "scout_01", "vbot_scout_01"). category: Behavior category: "animation", "camera", or "navigation". action: Action to perform (see category-specific actions above). # Animation parameters (used when category="animation") wheel_speeds: Wheel speeds for animate_wheels. animation_name: Animation name for play_animation. pose: Pose name for set_pose. animation_speed: Animation speed multiplier. loop: Whether to loop animation. # Camera parameters (used when category="camera") angle_x: Camera angle X (pitch) in degrees. angle_y: Camera angle Y (yaw) in degrees. output_path: Output file path for capture_image. stream_url: Stream URL for start_streaming. # Navigation parameters (used when category="navigation") start_position: Start position (x, y, z) for plan_path. goal_position: Goal position (x, y, z) for plan_path. waypoint: Waypoint position (x, y, z) for set_waypoint. obstacle_position: Obstacle position (x, y, z) for avoid_obstacle. path_id: Path identifier for follow_path or get_path_status. # Manipulation parameters (used when category="manipulation") joint_positions: Joint positions dict (e.g., {"shoulder": 45.0, "elbow": 90.0}). end_effector_pose: End-effector pose dict with position and orientation. gripper_position: Gripper position (0.0 = open, 1.0 = closed). arm_id: Arm identifier for multi-arm robots (e.g., "left", "right"). force_limit: Maximum force/torque limit for movement. manipulation_speed: Movement speed (0.0-1.0) for arm/gripper motion.
Returns: Dictionary containing operation result.
Examples: # Animation result = await robot_behavior( robot_id="scout_01", category="animation", action="play_animation", animation_name="walk", animation_speed=1.0, loop=True )
# Camera
result = await robot_behavior(
robot_id="scout_01",
category="camera",
action="capture_image",
output_path="C:/Images/capture.jpg"
)
# Navigation
result = await robot_behavior(
robot_id="scout_01",
category="navigation",
action="plan_path",
start_position={"x": 0, "y": 0, "z": 0},
goal_position={"x": 5, "y": 0, "z": 0}
)
# Manipulation - Move arm
result = await robot_behavior(
robot_id="g1_01",
category="manipulation",
action="move_arm",
joint_positions={"shoulder": 45.0, "elbow": 90.0, "wrist": 0.0}
)
# Manipulation - Open gripper
result = await robot_behavior(
robot_id="g1_01",
category="manipulation",
action="open_gripper"
)Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| robot_id | Yes | ||
| category | Yes | ||
| action | Yes | ||
| wheel_speeds | No | ||
| animation_name | No | ||
| pose | No | ||
| animation_speed | No | ||
| loop | No | ||
| angle_x | No | ||
| angle_y | No | ||
| output_path | No | ||
| stream_url | No | ||
| start_position | No | ||
| goal_position | No | ||
| waypoint | No | ||
| obstacle_position | No | ||
| path_id | No | ||
| joint_positions | No | ||
| end_effector_pose | No | ||
| gripper_position | No | ||
| arm_id | No | ||
| force_limit | No | ||
| manipulation_speed | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||