This project is for porting over the various functionalities from franka_ros into ROS2 for Panda robots. Franka Emika has dropped software support for robots older than FR3, which leaves a lot of older hardware outdated and unable to migrate to ROS2.
This repository attempts to remedy that somewhat, by bringing existing features from franka_ros over to ROS2 specifically for the Panda robots.
MoveIt and simple position control work well on the real robot, but tests of torque control interface have revealed some issues. WIP:
- porting cartesian impedance controller.
- gazebo simulation port.
Note: fork from port by [yilmazabdurrah][yilmazabdurrah/franka_arm_ros2]. The original version is forked from mcbed's port of franka_ros2 for humble.
- Single arm:
- FrankaState broadcaster
- All control interfaces (torque, position, velocity, Cartesian).
- Example controllers for all interfaces
- Controllers are swappable using rqt_controller_manager
- Runtime franka::ControlException error recovery via
~/service_server/error_recovery
- Upon recovery, the previously executed control loop will be executed again, so no reloading necessary.
- Runtime internal parameter setter services much like what is offered in the updated
franka_ros2
- Multi arm:
- initialization and joint state broadcaster
- Read/write interfaces
- FrankaState broadcaster
- Swappable controllers
- Error recovery and parameter setters
- Dual joint impedance & velocity example controllers
- Joint position controller might cause some bad motor behaviors. Suggest using torque or velocity for now.
(Tested on Ubuntu 22.04, ROS2 Humble, Panda 4.2.2 & 4.2.1, and Libfranka 0.9.2)
- Build libfranka 0.9.2 from source by following the instructions.
- Clone this repository into your workspace's
src
folder. - Install dependencies:
sudo rosdep init && rosdep update && rosdep install --from-paths src -y --ignore-src
- Source the workspace, then in your workspace root, call:
colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DFranka_DIR:PATH=/path/to/libfranka/build
- Add the build path to your
LD_LIBRARY_PATH
:LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/libfranka/build"
- To test on the real robot, source the workspace, and run
ros2 launch franka_bringup franka.launch.py robot_ip:=<fci-ip>
. - To test in simulation, run
ros2 launch franka_moveit_config moveit_gazebo.launch.py
All packages of panda_ros2
are licensed under the Apache 2.0 license, following franka_ros2
.