ROS 2 workspace for controlling AgileX Piper arms from ROS 2 or DLS controllers.
The repository is based on AgileX's new driver stack:
pyAgxArmfor the Python CAN driveragx_arm_rosfor the official ROS 2 control, message, description, and MoveIt packages
The local ROS package named piper_sdk is kept as a thin wrapper around pyAgxArm, so the SDK is installed by colcon build without using pip install --break-system-packages.
This workspace contains the following packages:
- piper_sdk: ROS 2 wrapper around the
pyAgxArmgit submodule, automatically installed bycolcon build - agx_arm_ros: Official AgileX ROS 2 packages for control, messages, description, and MoveIt
- dls2_interface: Standard messages definition for DLS2
- dls2_piper_bridge: DLS2 hardware-abstraction-layer using the
pyAgxArmAPI
-
Install ROS 2 Jazzy and initialize
rosdep. -
Clone this repository including submodules:
git clone --recurse-submodules git@github.com:iit-DLSLab/piper-ros2-dls.git
cd piper-ros2-dls- Install rosdep dependencies:
source /opt/ros/jazzy/setup.bash
rosdep install -y --ignore-src --from-paths ros2_ws/src- Install any system dependencies required by the official AgileX packages:
sudo apt install can-utils ethtoolBuild the ROS 2 workspace with:
cd ros2_ws
colcon build
source install/setup.bashActivate CAN-bus communication for the arm:
./ros2_ws/src/agx_arm_ros/scripts/can_activate.shRun the official AgileX ROS 2 arm controller:
source ros2_ws/install/setup.bash
ros2 launch agx_arm_ctrl start_single_agx_arm.launch.py can_port:=can0 arm_type:=piper_l effector_type:=agx_gripper tcp_offset:='[0.0, 0.0, 0.0, 0.0, 0.0, 0.0]'Run the DLS2 hardware-abstraction-layer node:
source ros2_ws/install/setup.bash
ros2 run dls2_piper_bridge piper_halThe DLS2 bridge accepts the CAN interface as a ROS parameter:
ros2 run dls2_piper_bridge piper_hal --ros-args -p can_port:=can0This repository is maintained by Giulio Turrisi.