franka_selfcollision
This package contains the library and the node for self-collision checking of the FR3 Duo and Mobile FR3 Duo robots.
Important
Minimum necessary franka_description version is 2.3.2. You can clone franka_description package from https://github.com/frankarobotics/franka_description.
Functionality
This monitoring node is spawned by fr3_duo.launch.py or mobile_fr3_duo.launch.py in franka_bringup if the check_selfcollision argument is enabled.
The node continuously monitors the robot’s joint states to check for self-collisions between the robot links. It handles both fr3_duo and mobile_fr3_duo configurations.
It performs two main actions upon detecting a collision (or violation of the security margin):
Publishes Status: Sends a boolean to the topic
~/<node_name>/collision_detected(where<node_name>is set via thenameparameter in the launch file, default:self_collision_node). The topic uses best effort QoS (rclcpp::SensorDataQoS). Subscribers must use a compatible QoS profile (e.g.rclcpp::SensorDataQoS()in C++ orqos_profile_sensor_datain Python) to receive messages.Logs Warning: Prints the specific colliding link pairs to the console if enabled (throttled to 1Hz to prevent spam).
Configuration
Parameters are defined in config/self_collision_node.yaml:
security_margin: Safety buffer around the robot links in meters (default:0.045).print_collisions: Iftrue, logs the names of the colliding links to the console.robot_description_semantic: SRDF XML used to exclude allowable collision pairs.
Usage
Both nodes are automatically started when the robot is launched with check_selfcollision set
to true:
# FR3 Duo
ros2 launch franka_bringup fr3_duo.launch.py \
check_selfcollision:=true
# Mobile FR3 Duo
ros2 launch franka_bringup mobile_fr3_duo.launch.py \
check_selfcollision:=true