Akabot, a 6 degree of freedom (DOF) robot arm, is controlled using the ROS2 robotic manipulation platform, MoveIt 2. The ROS2 Humble version of MoveIt 2 is used, which runs in a Docker container on an Nvidia Jetson Nano board. The robot arm is equipped with an Intel Realsense D415 depth camera used to detect ArUco markers on objects to be picked up.
(Work in Progress)
akabot_aruco
: Contains configuration, launch and node files to use ArUco markers with akabot.akabot_bringup
: Containsros2_control
hardware component for PCA985 servo driver, launch files to bring up the depth camera and the real akabot.akabot_description
: Contains the URDF description files for akabot, sensors andros2_control
.akabot_gazebo
: Contains configuration, launch and world files needed to simulate akabot in Gazebo Fortress.akabot_moveit_config
: Contains configuration files for MoveIt2.
The following components were used in this project:
Part | |
---|---|
1 | Robot arm kit |
2 | Nvidia Jetson Nano 4GB |
3 | Nvidia Jetson Nano case (optional) |
4 | SanDisk 64 GB SD Card |
5 | PCA9685 16 channel PWM Servo Driver |
5 | 5V 5A (minimum) regulated power supply |
6 | Toggle switch |
Note: The robot arm kit does not include a 5V regulated power supply, thus 18650 batteries were initially used as seen in the pictures above and the media in the calibration section. However, this was replaced with a 5V regulated power supply to make regulated power available to the servo motors.
Some other tools or parts used in the project are as follows:
Tool/Part | |
---|---|
1 | Wooden plank / base |
2 | Drill and a 3mm drill bit |
3 | M4 screws (length dependent on plank thickness) |
4 | 4x M3 standoffs (minimum 10mm in length) |
5 | Duck tape |
5 | Double-sided tape |
There are different choices available for the servo motors when purchasing the robot arm kit. This project uses 4 M996R servos and 2 YF6125MG servo motors.
The servo motors will need to be calibrated to ensure that servos move in the expected range when rotating. For calibration, the electronic components are connected as shown in the wiring digram below.
The PWM Servo driver board pins are connected to the Jetson Nano GPIO pins to use the i2c interface as follows:
PWM servo driver board | Jetson Nano pins |
---|---|
VCC | 5V |
GND | GND |
SCL | 5 |
SDA | 3 |
The servo motors are plugged into channels 1 to 6 on the PWM servo motor driver board.
The following image shows the components connected for servo calibration - the first two servo motors are YF6125MG type servo motors, while the remaining 4 are M996R type servo motors.
The electronic connections for Akabot are the same as detailed in the calibration process, apart from using the 18650 batteries to power the servo motors. The robot arm is assembled according to this guide; some patience is required to complete the assembly.
The assembled robot arm is shown again below.
The PWM servo driver board is stuck to the robot arm base with double-sided tape and the robot arm base is attached to a wooden plank with M4 screws, for stability when Akabot is in motion.
Four M3 10mm brass standoffs were screwed into the ones provided in the robot arm kit. This is done to create an allowance to mount the D415 depth camera to the base with double-sided tape.
Finally, the D415 depth camera is plugged into one of the USB ports of the Jetson Nano.
TODO:
- Upload docker image to DockerHub
In the Nvidia Jetson Nano, navigate to the source folder in the ROS2 workspace, akabot_ws
in this case:
cd akabot_ws/src
Then run the following command to spin up a Docker container in detached mode:
docker-compose up -d
Run this command to attach to the container:
docker attach src-akabot-container-1
Inside the container, navigate to the source directory to start development:
cd /home/akabot_ws/src
Launch MoveIt2 and RViz:
ros2 launch akabot_moveit_config moveit_rviz.launch.py use_sim_time:=True
Launch Gazebo Fortress:
ros2 launch akabot_gazebo gz_launch.py