Bringup & Shutdown
Bringup
To bring up a Mobile or Stationary ALOHA, you will need to run the following commands in a terminal:
$ export INTERBOTIX_ALOHA_IS_MOBILE=true/false # true for Mobile, false for Stationary
$ source /opt/ros/humble/setup.bash # configure ROS system install environment
$ source ~/interbotix_ws/install/setup.bash # configure ROS workspace environment
$ ros2 launch aloha aloha_bringup.launch.py # launch hardware drivers and control software
Warning
Terminating bringup while the arms are not in their sleep configurations will cause them to collapse! Be sure to run through the Shutdown procedure before doing so.
Tip
The ALOHA can be brought up with different configurations and additional arguments to customize the behavior. Please refer to the Configurations section below for details.
Shutdown
To shutdown the ALOHA, you will need to first send the arms to their sleep configurations. While the ALOHA bringup is running in another terminal, open a new one and run the following commands:
$ export INTERBOTIX_ALOHA_IS_MOBILE=true/false # true for Mobile, false for Stationary
$ source /opt/ros/humble/setup.bash # configure ROS system install environment
$ source ~/interbotix_ws/install/setup.bash # configure ROS workspace environment
$ cd ~/interbotix_ws/src/aloha/scripts/
$ python3 sleep.py
The follower arms will move to their “staged” configurations and then place themselves into their sleep configurations.
Tip
You can optionally append the -a|--all
flag to the sleep script command to send all arms to their sleep configurations:
$ python3 sleep.py -a
# or
$ python3 sleep.py --all
Now that the arms are in their sleep configurations, you can terminate the ALOHA bringup by pressing Ctrl + C in the terminal where the bringup was launched.
What’s Next?
Now that you know how to bringup and shutdown the ALOHA, teleoperation will be a good starting point to explore its features.
Configurations
The configuration yaml files provided in the ~/interbotix_ws/src/aloha/config
directory can be used to customize the behavior of the ALOHA.
Please follow the links below to see the details of each configuration file:
- SLATE Robot Base (only for Mobile ALOHA)
- teleop_twist_joy Parameters:
base_joystick_teleop.yaml
- teleop_twist_joy Parameters:
- Interbotix Arms
- Mode Configs:
leader_modes_left.yaml
leader_modes_right.yaml
follower_modes_left.yaml
follower_modes_right.yaml
- Motor Specs:
leader_motor_specs_left.yaml
leader_motor_specs_right.yaml
- Mode Configs:
- Intel RealSense Cameras
- realsense2_camera Parameters:
rs_cam.yaml
- realsense2_camera Parameters:
Besides the default configuration files, the launch file aloha_bringup.launch.py
provides additional arguments for further customization.
Please refer to the following table for details:
Argument | Description | Default | Choices |
---|---|---|---|
robot_model_leader | model type of the leader arms. | aloha_wx250s |
|
robot_model_follower | model type of the follower arms. | aloha_vx300s |
|
robot_name_leader_left | name of the left leader arm | leader_left |
|
robot_name_leader_right | name of the right leader arm | leader_right |
|
robot_name_follower_left | name of the left follower arm | follower_left |
|
robot_name_follower_right | name of the right follower arm | follower_right |
|
leader_modes_left | the file path to the ‘mode config’ YAML file for the left leader arm. | LocalVar(‘FindPackageShare(pkg= aloha ) + ‘config’ + ‘leader_modes_left.yaml’’) |
|
leader_modes_right | the file path to the ‘mode config’ YAML file for the right leader arm. | LocalVar(‘FindPackageShare(pkg= aloha ) + ‘config’ + ‘leader_modes_right.yaml’’) |
|
follower_modes_left | the file path to the ‘mode config’ YAML file for the left follower arm. | LocalVar(‘FindPackageShare(pkg= aloha ) + ‘config’ + ‘follower_modes_left.yaml’’) |
|
follower_modes_right | the file path to the ‘mode config’ YAML file for the right follower arm. | LocalVar(‘FindPackageShare(pkg= aloha ) + ‘config’ + ‘follower_modes_right.yaml’’) |
|
launch_leaders | if true , launches both the leader and follower arms; if ``false, just the followers are launched. |
true |
true , false |
use_cameras | if true , launches the camera drivers. |
true |
true , false |
cam_high_name | cam_high |
||
cam_low_name | cam_low |
||
cam_left_wrist_name | cam_left_wrist |
||
cam_right_wrist_name | cam_right_wrist |
||
is_mobile | EnvVar(INTERBOTIX_ALOHA_IS_MOBILE ) |
true , false |
|
use_base | if true , launches the driver for the SLATE base. |
LaunchConfig(is_mobile ) |
true , false |
use_joystick_teleop | if true , launches a joystick teleop node for the base. |
LaunchConfig(use_base ) |
true , false |
use_aloha_rviz | One of: (‘true’, ‘false’) | false |
|
aloha_rvizconfig | LocalVar(‘FindPackageShare(pkg= aloha ) + ‘rviz’ + ‘aloha.rviz’’) |
||
base_link_frame | name of the ‘root’ link on the arm; typically base_link , but can be changed if attaching the arm to a mobile base that already has a base_link frame. |
base_link |
|
use_gripper | if true , the default gripper is included in the robot_description ; if false , it is left out; set to false if not using the default gripper. |
true |
true , false |
show_ar_tag | if true , the AR tag mount is included in the robot_description ; if false , it is left out; set to true if using the AR tag mount in your project. |
false |
true , false |
show_gripper_bar | if true , the gripper_bar link is included in the robot_description ; if false , the gripper_bar and finger links are not loaded. Set to false if you have a custom gripper attachment. |
true |
true , false |
show_gripper_fingers | if true , the gripper fingers are included in the robot_description ; if false , the gripper finger links are not loaded. Set to false if you have custom gripper fingers. |
true |
true , false |
use_world_frame | set this to true if you would like to load a ‘world’ frame to the robot_description which is located exactly at the ‘base_link’ frame of the robot; if using multiple robots or if you would like to attach the ‘base_link’ frame of the robot to a different frame, set this to false . |
false |
true , false |
external_urdf_loc | the file path to the custom urdf.xacro file that you would like to include in the Interbotix robot’s urdf.xacro file. | ‘’ | |
hardware_type | configures the robot_description to use the actual hardware, fake hardware, or hardware simulated in Gazebo. |
actual |
actual , fake , gz_classic |
robot_description_leader_left | URDF of the robot; this is typically generated by the xacro command. | Command(FindExec(xacro ) + ‘ ‘ + LocalVar(‘FindPackageShare(pkg= interbotix_xsarm_descriptions ) + ‘urdf’ + LaunchConfig(robot_model_leader )’) + ‘.urdf.xacro ‘ + ‘robot_name:=’ + LaunchConfig(robot_name_leader_left ) + ‘ ‘ + ‘base_link_frame:=’ + LaunchConfig(base_link_frame ) + ‘ ‘ + ‘use_gripper:=’ + LaunchConfig(use_gripper ) + ‘ ‘ + ‘show_ar_tag:=’ + LaunchConfig(show_ar_tag ) + ‘ ‘ + ‘show_gripper_bar:=’ + LaunchConfig(show_gripper_bar ) + ‘ ‘ + ‘show_gripper_fingers:=’ + LaunchConfig(show_gripper_fingers ) + ‘ ‘ + ‘use_world_frame:=’ + LaunchConfig(use_world_frame ) + ‘ ‘ + ‘external_urdf_loc:=’ + LaunchConfig(external_urdf_loc ) + ‘ ‘ + ‘hardware_type:=’ + LaunchConfig(hardware_type ) + ‘ ‘) |
|
robot_description_leader_right | URDF of the robot; this is typically generated by the xacro command. | Command(FindExec(xacro ) + ‘ ‘ + LocalVar(‘FindPackageShare(pkg= interbotix_xsarm_descriptions ) + ‘urdf’ + LaunchConfig(robot_model_leader )’) + ‘.urdf.xacro ‘ + ‘robot_name:=’ + LaunchConfig(robot_name_leader_right ) + ‘ ‘ + ‘base_link_frame:=’ + LaunchConfig(base_link_frame ) + ‘ ‘ + ‘use_gripper:=’ + LaunchConfig(use_gripper ) + ‘ ‘ + ‘show_ar_tag:=’ + LaunchConfig(show_ar_tag ) + ‘ ‘ + ‘show_gripper_bar:=’ + LaunchConfig(show_gripper_bar ) + ‘ ‘ + ‘show_gripper_fingers:=’ + LaunchConfig(show_gripper_fingers ) + ‘ ‘ + ‘use_world_frame:=’ + LaunchConfig(use_world_frame ) + ‘ ‘ + ‘external_urdf_loc:=’ + LaunchConfig(external_urdf_loc ) + ‘ ‘ + ‘hardware_type:=’ + LaunchConfig(hardware_type ) + ‘ ‘) |
|
robot_description_follower_left | URDF of the robot; this is typically generated by the xacro command. | Command(FindExec(xacro ) + ‘ ‘ + LocalVar(‘FindPackageShare(pkg= interbotix_xsarm_descriptions ) + ‘urdf’ + LaunchConfig(robot_model_follower )’) + ‘.urdf.xacro ‘ + ‘robot_name:=’ + LaunchConfig(robot_name_follower_left ) + ‘ ‘ + ‘base_link_frame:=’ + LaunchConfig(base_link_frame ) + ‘ ‘ + ‘use_gripper:=’ + LaunchConfig(use_gripper ) + ‘ ‘ + ‘show_ar_tag:=’ + LaunchConfig(show_ar_tag ) + ‘ ‘ + ‘show_gripper_bar:=’ + LaunchConfig(show_gripper_bar ) + ‘ ‘ + ‘show_gripper_fingers:=’ + LaunchConfig(show_gripper_fingers ) + ‘ ‘ + ‘use_world_frame:=’ + LaunchConfig(use_world_frame ) + ‘ ‘ + ‘external_urdf_loc:=’ + LaunchConfig(external_urdf_loc ) + ‘ ‘ + ‘hardware_type:=’ + LaunchConfig(hardware_type ) + ‘ ‘) |
|
robot_description_follower_right | URDF of the robot; this is typically generated by the xacro command. | Command(FindExec(xacro ) + ‘ ‘ + LocalVar(‘FindPackageShare(pkg= interbotix_xsarm_descriptions ) + ‘urdf’ + LaunchConfig(robot_model_follower )’) + ‘.urdf.xacro ‘ + ‘robot_name:=’ + LaunchConfig(robot_name_follower_right ) + ‘ ‘ + ‘base_link_frame:=’ + LaunchConfig(base_link_frame ) + ‘ ‘ + ‘use_gripper:=’ + LaunchConfig(use_gripper ) + ‘ ‘ + ‘show_ar_tag:=’ + LaunchConfig(show_ar_tag ) + ‘ ‘ + ‘show_gripper_bar:=’ + LaunchConfig(show_gripper_bar ) + ‘ ‘ + ‘show_gripper_fingers:=’ + LaunchConfig(show_gripper_fingers ) + ‘ ‘ + ‘use_world_frame:=’ + LaunchConfig(use_world_frame ) + ‘ ‘ + ‘external_urdf_loc:=’ + LaunchConfig(external_urdf_loc ) + ‘ ‘ + ‘hardware_type:=’ + LaunchConfig(hardware_type ) + ‘ ‘) |
|
use_gravity_compensation | if true , launches the gravity compensation node. |
true |
true , false |
leader_motor_specs_left | the file path to the ‘motor specs’ YAML file for the left leader arm. | LocalVar(‘FindPackageShare(pkg= aloha ) + ‘config’ + ‘leader_motor_specs_left.yaml’’) |
|
leader_motor_specs_right | the file path to the ‘motor specs’ YAML file for the right leader arm. | LocalVar(‘FindPackageShare(pkg= aloha ) + ‘config’ + ‘leader_motor_specs_right.yaml’’) |