
This is technical information about the robot "ALOHA", which is used by the overseas product procurement and consultation service "Unipos" (operated by Tegara Corporation) to perform complex and detailed tasks with two-handed remote control.
When testing this product, we installed the software on a PC, but there were some parts that did not work properly.
In this article, we will introduce precautions based on our installation examples along with the installation procedure.
table of contents
- What is ALOHA?
- Machine setup procedure overview
- ROS Interface installation instructions
- Operation check of each servo motor
- Confirm ROS operation of each arm
- Setting and updating USB association for each robot arm and camera
- Problems when connecting devices
- Remote control test
- camera test
- Other notes
- About custom scripts
- Summary
What is ALOHA?
The stationary Aloha Stationary (formerly ALOHA Bimanual Teleoperation Kit), which is operated on a dedicated desk, stands for "A Low-cost Open-source Hardware System for Bimanual Teleoperation" and is a low-cost open source system for two-handed remote control. It's a hardware system.
Please refer to the article below for the ALOHA concept and previous model information.
Machine setup procedure overview
OS selection
I chose the Ubuntu 18.04 LTS version since GitHub lists 20.04 or 20.04.
*As of the verification in May 2024, the long-term support (LTS) version of Ubuntu is 5 LTS, but library-related items could not be installed correctly with 22.04 LTS.
The usage environment is ubuntu20.04 / ros noetic.
ROS Interface installation instructions
a. Install ROS Interface
First, install ROS Interface from Ubuntu Terminal.
*For detailed instructions, please see the official documentation below.
ROS Standard Software Setup(Interbotix ROS Interface – Trossen Robotics)
b. Clone the repository
next,~/interbotix_ws/src
Go to the directory and clone the repository below:
cd ~/interbotix_ws/src sudo git clone https://github.com/tonyzhaozh/aloha.git
c. Build the package
Finally, build the package by running the following command:
i. Run the following command to setup the ROS environment:
source /opt/ros/noetic/setup.sh && source ~/interbotix_ws/devel/setup.sh
ii. Install the required dependent packages:
sudo apt-get install ros-noetic-usb-cam ros-noetic-cv-bridge
iii. Go to ~/interbotix_ws and run catkin_make:
~/interbotix_ws
catkin_make
iv. Modify the arm.py file:
Change to the following directory:
cd ~/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules/src/interbotix_xs_modules/
Open the arm.py file and find the function publish_positions. Find the line below:
self.T_sb = mr.FKinSpace(self.robot_des.M, self.robot_des.Slist, self.joint_commands)
Change this line to:
self.T_sb = None
This change prevents delays in remote control due to the code calculating the FK each time.
Change to the following directory:
cd ~/interbotix_ws/src/interbotix_ros_toolboxes/interbotix_xs_toolbox/interbotix_xs_modules/src/interbotix_xs_modules/
This completes the ROS Interface installation procedure.
Verify that the following libraries are installed correctly.
da create -n aloha python=3.8.10
conda activate aloha
pip install torchvision
pip install torch
pip install pyquaternion
pip install pyyaml
pip install rospkg
pip install pexpect
pip install mujoco==2.3.7
pip install dm_control==1.0.14
pip install opencv-python
pip install matplotlib
pip install einops
pip install packaging
pip install h5py
Operation check of each servo motor
After installing the software, use DINAMIXEL Wizard 2.0 to check whether the motors of each arm are working properly. Please refer to the following site for installation of this tool.
Download Dynamixel Wizard2.0
Dynamixel Wizard 2.0 Manual (Official Robotis Documentation)
https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/
Confirm ROS operation of each arm
Use the command below to check whether there are any problems with ROS operation for each arm.
-
at terminal 1
roscore
Start.roscore
-
Run the following command in terminal 2
roslaunch interbotix_xsarm_control xsarm_control.launch robot_model:=wx250
-
To ensure safety, make sure there are no obstacles around the robot when executing it.
-
Then navigate to the path below:
cd ~/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/examples/python_demos
-
Run the sample program:
python bartender.py
Setting and updating USB association for each robot arm and camera
ALOHA kit consists of four robot arms and four cameras.
All devices are connected to the computer via USB, but we recommend using a separate USB port for the robotic arm instead of using a USB hub.
The breakdown of devices is as follows.
Item | Message |
---|---|
ttyDXL_master_right | right master robot |
ttyDXL_puppet_right | right puppet robot (Puppet: robot that performs tasks) |
ttyDXL_master_left | left master robot |
ttyDXL_puppet_left | left puppet robot |
CAM_RIGHT_WRIST CAM_LEFT_WRIST CAM_LOW CAM_HIGH |
camera for right arm camera for left arm low camera high camera |
*Master robot = arm held by a human
Puppet robot = arm remotely controlled by master robot
Problems when connecting devices
Since the arm assignment is determined by the physical connection order of the USB ports, the arm assignment may be swapped each time the USB is connected. I made the following settings to resolve the issue.
Obtain the serial number of each robot arm
In Ubuntu, USB ports are accessed via device files.
The standard USB port name is /dev/ttyUSB0.
If there are multiple ports, the numbers at the end will change: ttyUSB0, ttyUSB1, ttyUSB2, ttyUSB3.
udevadm info --name=/dev/ttyUSB0 --attribute-walk | grep serial
We recommend storing names in a table in the format shown below. This will be useful for reference.
USB Index | Position | Serial |
0 | master_right | |
1 | puppet_right | |
2 | master_left | |
3 | puppet_left |
Get the camera serial number
The standard USB port name is /dev/video0.
If there are multiple devices, the numbers at the end will change: video0, video1, video2, video3.
udevadm info --name=/dev/video0 --attribute-walk | grep serial
We recommend storing names in a table in the format shown below. This will be useful for reference.
Rules file for loading
Record the serial number of each arm and set up the rule file as shown below.
SUBSYSTEM=="tty", ATTRS{serial}=="FT89FCIC", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_master_right"
SUBSYSTEM=="tty", ATTRS{serial}=="FT89FIYY", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_puppet_right"
SUBSYSTEM=="tty", ATTRS{serial}=="FT88YTAF", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_master_left"
SUBSYSTEM=="tty", ATTRS{serial}=="FT891K9Y", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_puppet_left"
SUBSYSTEM=="video4linux", ATTRS{serial}=="7A2A241F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1",SYMLINK+="CAM_RIGHT_WRIST"
SUBSYSTEM=="video4linux", ATTRS{serial}=="C0D4525F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1", SYMLINK+="CAM_LEFT_WRIST"
SUBSYSTEM=="video4linux", ATTRS{serial}=="E453325F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1", SYMLINK+="CAM_LOW"
SUBSYSTEM=="video4linux", ATTRS{serial}=="DC79025F", ATTR{index}=="0", ATTRS{idProduct}=="085c", ATTR{device/latency_timer}="1", SYMLINK+="CAM_HIGH"
After updating the rule file, run the following command.
sudo nano /etc/udev/rules.d/99-fixed-interbotix-udev.rules
sudo udevadm control --reload && sudo udevadm trigger
Remote control test
To test remote control, execute the command as follows.
-
at terminal 1
roscore
Start.roscore
-
Run the following command in your ROS terminal:
conda deactivate
source /opt/ros/noetic/setup.sh && source ~/interbotix_ws/devel/setup.sh
roslaunch aloha 4arms_teleop.launch -
Run the command in the right-hand terminal:
conda activate aloha
cd ~/interbotix_ws/src/aloha/aloha_scripts
python3 one_side_teleop.py left -
Run the command in the left-hand terminal:
conda activate aloha
source /opt/ros/noetic/setup.sh && source ~/interbotix_ws/devel/setup.sh
python3 one_side_teleop.py right
At this point, if you have already prepared your own script, you can run it as shown below.
conda activate aloha
cd ~/interbotix_ws/src/aloha/aloha_scripts
python3.py
camera test
Visualization tools to facilitate situational understanding and debugging associated with ROS Rviz Use the.
- On terminal1, run roslaunch aloha 4arms_teleop.launch
- In terminal1, type and run rviz
- When the rviz window opens, click "add" -> "By topic" to add all four cameras.
(usb_cam_high, usb_cam_low, usb_cam_left_wrist, usb_cam_right_wrist)
If the cameras are recognized correctly, a display similar to the image below will appear, allowing you to check the images from each camera.
Other notes
As a reference for troubleshooting when an error occurs during installation, we will introduce some points to note that may be the cause.
problem | Tips for solving the problem |
---|---|
Conda's Path | Check if relative path is exported as path in your environment |
Permissions of the new file generated | Grant permissions if necessary with chmod + x |
DYNAMIXEL motor LED flashes red | The LED will flash in case of an error. First, try restarting from the DYNAMIXEL Wizard If that doesn't help, try a factory reset |
USB connection | If you experience connectivity issues with your camera or robotic arm, reconnecting all USBs may help |
USB port serial mapping | Updating the rule file is effective when arm or camera assignments are changed, etc. Please check the serial number of the USB device and update the rule file below. ~/interbotix_ws/src/aloha/aloha_scripts# sudo nano /etc/udev/rules.d/99-fixed-interbotix-udev.rules |
Library installation | I installed the following libraries separately.
|
Checking Board Rate settings | Some robot arms may have different Board Rate settings than other robot arms. This may cause the arm or motor to not be recognized correctly. Please check the Board rate setting of each servo motor. |
Motor Board Rate setting | Some robot arms may have different Board Rate settings than other robot arms. This may cause the arm or motor to not be recognized correctly. Please check the Board rate setting of each servo motor. |
DYNAMIXEL motor ID | If the motor is not recognized, check the DYNAMIXEL ID settings |
Interbotix ROS Interface (Trossen Robotics official documentation)
https://docs.trossenrobotics.com/interbotix_xsarms_docs/ros_interface/ros1
About custom scripts
We have created a custom script for operation confirmation. I will publish the script at the link below, so please use it if you like.
Tegara Corporation Official GitHub Aloha
https://github.com/TegaraCorporation/aloha
Summary
We have introduced various checkpoints according to the steps we actually set up ALOHA. We hope this helps you set up ALOHA yourself.
We also have a support plan in which we carry out these setups and deliver them to the customer in a "ready-to-use" state.
ALOHA is delivered by the manufacturer with various frames and robot arms in separate pieces. We will assemble and set up these hardware in your usage environment (laboratory, etc.), verify its operation, and then deliver it to you (we can also make arrangements from overseas manufacturers).
In addition, it is recommended to use a high-spec computer suitable for machine learning to operate ALOHA. Please leave it to us to prepare the best computer for running ALOHA. We will propose a machine with a configuration tailored to suit your usage.
Tegara Corporation's TKS Division provides a service that provides a complete set of equipment necessary for research and development and experiments (TKS = TurnKey System). Please feel free to contact us.
Reference: Robot system assembly and on-site installation (ALOHA)
Please feel free to contact us regarding the installation and configuration of ALOHA Kit. |