Are you sure you want to delete this task? Once this task is deleted, it cannot be recovered.
|
|
10 months ago | |
|---|---|---|
| .. | ||
| config | 10 months ago | |
| README.md | 10 months ago | |
| dataflow.yml | 10 months ago | |
| setup_ros2.sh | 10 months ago | |
| teleop.py | 10 months ago | |
dora-rs powered ALOHAdocker run --privileged --name ros2-aloha --network=host -e DISPLAY=${DISPLAY} -v /dev:/dev -v $(pwd):/dora-aloha -it osrf/ros:humble-desktop
## In the container
./dora-aloha/setup_ros2.sh # Run it once
## In the container
ros2 launch ~/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control/launch/xsarm_control.launch.py robot_name:=robot_model_master robot_model:=aloha_wx250s mode_configs:=/dora-aloha/benchmark/ros2/config/master_modes_right.yaml &
ros2 launch ~/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control/launch/xsarm_control.launch.py robot_name:=robot_model_puppet robot_model:=vx300s mode_configs:=/dora-aloha/benchmark/ros2/config/puppet_modes_right.yaml &
## In case you want to restart the controller, just do:
pkill -f robot
Outside of the controller docker:
## Setup
git clone https://github.com/haixuanTao/ament_prefix_path.git $HOME/ros2-ament-prefix-path
export AMENT_PREFIX_PATH=$HOME/ros2-ament-prefix-path # <- holding ros2 message deserialization
## Start
dora up
dora start dataflow.yml --attach
I'm able to get about 100 Hz for teleoperation.
The improvement probably comes from the ros2 read/write written in C++.
To check if the robot is connected, install dynamixel wizard here
Dynamixel wizard is a very helpful debugging tool that connects to individual motors of the robot. It allows
things such as rebooting the motor (very useful!), torque on/off, and sending commands.
However, it has no knowledge about the kinematics of the robot, so be careful about collisions.
The robot will collapse if motors are torque off i.e. there is no automatically engaged brakes in joints.
Open Dynamixel wizard, go into options and select:
Note: repeat above everytime before you scan.
Then hit Scan. There should be 4 devices showing up, each with 9 motors.
One issue that arises is the port each robot binds to can change over time, e.g. a robot that
is initially ttyUSB0 might suddenly become ttyUSB5. To resolve this, we bind each robot to a fixed symlink
port with the following mapping:
ttyDXL_master_right: right master robot (master: the robot that the operator would be holding)ttyDXL_puppet_right: right puppet robot (puppet: the robot that performs the task)ttyDXL_master_left: left master robotttyDXL_puppet_left: left puppet robotTake ttyDXL_master_right: right master robot as an example:
Find the port that the right master robot is currently binding to, e.g. ttyUSB0
run udevadm info --name=/dev/ttyUSB0 --attribute-walk | grep serial to obtain the serial number. Use the first one that shows up, the format should look similar to FT6S4DSP.
sudo vim /etc/udev/rules.d/99-fixed-interbotix-udev.rules and add the following line:
SUBSYSTEM=="tty", ATTRS{serial}=="", ENV{ID_MM_DEVICE_IGNORE}="1", ATTR{device/latency_timer}="1", SYMLINK+="ttyDXL_master_right"
This will make sure the right master robot is always binding to ttyDXL_master_right
Repeat with the rest of 3 arms.
To apply the changes, run sudo udevadm control --reload && sudo udevadm trigger
If successful, you should be able to find ttyDXL* in your /dev
xsarm_control.launch.py that is not launching for the reason: Can't find Dynamixel ID 'X', one of the issue I faced in my demo was Overload Error(OL). The fix was to go on Dynamixel Wizard, click on the motor ID X and clicking the reboot button the right side of the window. This error happens when the torque is too high. I had the issue when I try to set a closing position for the gripper that did not take into account the fingers.| dora-aloha | |
|---|---|
| Supported Platforms (x86) | Windows, macOS, Linux |
| Supported Platforms (ARM) | Linux(RPI4) |
https://github.com/Interbotix/interbotix_ros_toolboxes/blob/humble/interbotix_xs_toolbox/interbotix_xs_modules/interbotix_xs_modules/xs_robot/core.py
c187bcea89/interbotix_xs_toolbox/interbotix_xs_modules/interbotix_xs_modules/xs_robot/core.py (L380-L398)
This work is heavily inspired from tonyzhaozh/aloha and we're trying to bring perfornance improvement.
DORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed datafl
Rust Python TOML Markdown C other