ROS 2 driver of the AR4 robot arm from Annin Robotics. Tested with ROS 2 Iron on Ubuntu 22.04.
Supports:
Features:
This is a refresh of ar3_core.
Motion Planning using RViz and Moveit:
Startup, Calibration, and Servo Gripper Demo
git clone https://github.com/ycheng517/ar4_ros_driver
rosdep install --from-paths . --ignore-src -r -y
colcon build
source install/setup.bash
sudo addgroup $USER dialout
You will need to log out and back in for changes to take effect.
The Teensy and Arduino Nano sketches provided in ar_microcontrollers are compatible with the default hardware. To flash it, follow the same procedure as specified in AR4 Robot Setup.
A docker container and run script has been provided that can be used to run the robot and any GUI programs. It requires an NVIDIA GPU, and the NVIDIA Container Toolkit to be installed. Then you can start the docker container with:
docker build -t ar4_ros_driver .
./run_in_docker.sh
There are two modules that you will always need to run:
Arm module - this can be for either a real-world or simulated arm
ar_hardware_interface
modulear_gazebo
moduleMoveIt module - the ar_moveit_config
module provides the MoveIt interface and RViz GUI.
The various use cases of the modules and instructions to run them are described below:
If you are unfamiliar with MoveIt, it is recommended to start with this to explore planning with MoveIt in RViz. This contains neither a real-world nor a simulated arm but just a model loaded within RViz for visualisation.
The robot description, moveit interface and RViz will all be loaded in the single demo launch file
ros2 launch ar_moveit_config demo.launch.py
Start the ar_hardware_interface
module, which will load configs and the robot description:
ros2 launch ar_hardware_interface ar_hardware.launch.py \
calibrate:=True
Available Launch Arguments:
ar_model
: The model of the AR4. Options are mk1
, mk2
, or mk3
. Defaults to mk3
.calibrate
: Whether to calibrate the robot arm (determine the absolute position
of each joint).include_gripper
: Whether to include the servo gripper. Defaults to: include_gripper:=True
.serial_port
: Serial port of the Teensy board. Defaults to: serial_port:=/dev/ttyACM0
.arduino_serial_port
: Serial port of the Arduino Nano board. Defaults to arduino_serial_port:=/dev/ttyUSB0
.⚠️📏 Note: Calibration is required after flashing firmware to the Teensy board, and
power cycling the robot and/or the Teensy board. It can be skipped in subsequent
runs with calibrate:=False
.
Start MoveIt and RViz:
ros2 launch ar_moveit_config ar_moveit.launch.py
Available Launch Arguments:
ar_model
: The model of the AR4. Options are ar4
(which includes MK2) or ar4_mk3
. Defaults to ar4
.include_gripper
: Whether to include the servo gripper. Defaults to:
include_gripper:=True
.use_sim_time
: Make Moveit use simulation time. Should only be enabled when
running with Gazebo. Defaults to: use_sim_time:=False
.You can now plan in RViz and control the real-world arm. Joint commands and joint states will be updated through the hardware interface.
Start the ar_gazebo
module, which will start the Gazebo simulator and load the robot description.
ros2 launch ar_gazebo ar_gazebo.launch.py
Start Moveit and RViz:
ros2 launch ar_moveit_config ar_moveit.launch.py use_sim_time:=true include_gripper:=True
You can now plan in RViz and control the simulated arm.