Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file
Package Dependencies
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged franka_ros2 at Robotics Stack Exchange
Package Summary
| Version | 2.7.1 |
| License | Apache 2.0 |
| Build type | AMENT_CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/frankaemika/franka_ros2.git |
| VCS Type | git |
| VCS Version | humble |
| Last Updated | 2026-09-01 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Maintainers
- Franka Robotics GmbH
Authors
Changelog for package franka_ros2
v2.7.1 (2026-09-01) ----------
- fix: spine
~/haltandmove_absolutecancel did not stop the carriage.halt_motion()posted to/spine/api/motion:halt, which the device does not implement (404). It now usesmotion:quick-stop, re-arms toSwitchedOnafter the DS402 stop, overlaps halt and feedback with the blockingmotion-mm:starton one HTTP client, and does not report a goal canceled when halt fails. - fix: spine
http_timeout(default 3 s) is only the connect timeout and the budget for short REST.motion-mm:startuses(http_timeout, 600 s)so a long move is not aborted by the short read; the motion lock stays held until that POST returns. - refactor: spine REST wire strings live in
SpineStatus(DS402 states) andSpineMotion(Finished). - fix:
move_absoluteno longer surfaces HTTP 424 when the spine is notSwitchedOn. It checks state first and reports e.g.Cannot start motion: spine is SwitchedOff (expected SwitchedOn).
v2.7.0 (2026-08-14) ----------
-
feat: add TMR battery ROS 2 support in
franka_mobile(sensor_msgs/BatteryStatetopic at 1 Hz andstd_srvs/Triggerservices for wireless charging), with an internalfranka_desk_apiHTTPS helper used by the spine and battery clients. -
fix: franka_hardware tests now run in isolated ROS domains to avoid possible collisions.
-
- fix: fixed franka_hardware stop motion test to check for stopping_joint_positions matching the last
-
commanded target instead of zero positions.
v2.6.0 (2026-08-10)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.1 requires ROS 2 Humble
- fix: tune mobile teleop velocity/acceleration limits to stay within
the RCU 2-norm bounds. Raise swerve translational limits to 0.35 m/s
/ 0.4 m/s\^2 and rotational to 0.5 rad/s / 0.3 rad/s\^2 in
controllers.yaml, rescale the xbox normal/turbo axes inxbox.config.yamlto matchmax_velocity, and reduce the joystick deadzone (0.1) with a higher autorepeat rate (50 Hz) inmobile_teleop.launch.pyfor smoother teleop. - test: add a no-hardware integration test suite: a fake-hardware FR3
controller-lifecycle test, a Joy→cmd_vel teleop test, a launch-file
parsing test, a MoveIt planning smoke test with a gripper
name-consistency check, and a single GTest that loads every example
controller.
moveit.launch.pygains ause_rvizargument so the smoke test can run headless. The CI test stage now selectsfranka_bringup, which the package filter had excluded, so its tests are executed rather than only built. - fix: align MoveIt gripper controller name with actual gripper node
name.
fr3_controllers.yamlandmoveit.launch.pyreferencedfr3_gripperbut the node is launched asfranka_gripper, breaking gripper action commands and joint state aggregation in MoveIt. (GitHub PR #206) - fix: add missing dependencies in package.xml for isolated builds
(
rclcpp_componentsin franka_hardware;rclcpp_lifecycle,urdf,eigenin franka_semantic_components). Fixes rosdep-based fresh-environment builds. (community contribution: GitHub PRs #96, #169) - refactor: BREAKING CHANGE decouple the simulation backend
(real/mock/gazebo) from the franka_hardware ros2_control macros
(
franka_armandtmrv0_2). The hardware<plugin>block and the gz_ros2_control<gazebo>system element are now injected by the owning package (franka_bringupfor real/mock,franka_gazebo_bringupfor gazebo) instead of being selected byxacro:ifinside franka_hardware. Mode/interface selection moved to the entry-point URDFs as capability flags (include_effort_command,include_finger_joint,include_passive_base), replacing the formergazebo/gazebo_effortflags. URDF expansions remain behavior-equivalent. - fix: collapse five duplicate top-level
/**:keys in franka_gazebo_bringup'sfranka_gazebo_controllers.yamlinto one. YAML last-key-wins was silently dropping the controller_manager type declarations, blocking the tmr gazebo launch.
v2.5.1 (2026-07-07)
Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
* feat: add tmr launch file in franka bringup and use it for the mobile teleop launch file Requires libfranka >= 0.20.4 and franka_description >= 2.8.0 requires ROS 2 Humble
- feat: franka_gazebo: add robot model, full
franka::RobotStateand estimated external-wrench (tcp force/torque) state interfaces to the gz_ros2_control system plugin, so model-based and force/torque controllers activate in simulation like on hardware. The plugin is renamedfranka_gazebo_hardware/FrankaGazeboHardwareInterface. - fix: franka_hardware: set the gz_ros2_control plugin
<ros><namespace>for the mobile robot (tmrv0_2) so the controller_manager comes up in the/mobile_basenamespace and
File truncated at 100 lines see the full file