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:

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’’)