Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro jazzy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro kilted showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro lyrical showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro rolling showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro iron showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

Package Summary

Version 0.6.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_ros.git
VCS Type git
VCS Version lunar-devel
Last Updated 2018-08-08
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka Emika robots

Additional Links

Maintainers

  • Franka Emika GmbH

Authors

  • Franka Emika GmbH
README
No README found. See repository README.
CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Package symbol

franka_description package from franka_description repo

franka_description

ROS Distro
humble

Package Summary

Version 2.9.0
License Apache 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_description.git
VCS Type git
VCS Version main
Last Updated 2026-08-17
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka robots

Maintainers

  • Franka Robotics GmbH

Authors

  • Franka Robotics GmbH

franka_description

image

Overview

The Franka Description repository offers all Franka Robotics models. It includes detailed 3D models and essential robot parameters, crucial for simulating these robots in various environments. Additionally, the repository provides a feature to create URDFs (Unified Robot Description Format) for the selected Franka robot model.

Robot model support

The fer model (Franka Emika Robot, formerly Panda) is not supported. It is still shipped and can still be generated, but issues reported against it will not be fixed. Use fr3 or fp3 instead.

Features

  • Comprehensive 3D Models: Detailed 3D models of all Franka Robotics models for accurate simulation and visualization.
  • Robot Parameters: All necessary robot parameters for realistic and reliable simulations.
  • URDF Creation: Ability to create URDF files for any selected Franka robot model, essential for robot simulations in ROS and other robotic middleware.

Prerequisites

  • Docker

URDF Creation

To start the generation, execute the start.sh script. The arguments passed to the sh script will be used from the create_urdf.py.

# Start the generation of the urdf model
./scripts/create_urdf.sh <robot_type>

The urdf generation is performed by the create_urdf.py script which offers several parameters to customize the output urdf model:

usage: create_urdf.py [-h] [--robot-ee] [--no-ee] [--with-sc] [--abs-path] [--host-dir HOST_DIR] [--only-ee] [--no-prefix] robot_model

Generate franka robots urdf models. Script to be executed from franka_description root folder!

positional arguments:
  robot_model          id of the robot model (accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2, none)

optional arguments:
  -h, --help           show this help message and exit
  --robot-ee           id of the robot end effector (accepted values are: franka_hand, cobot_pump)
  --no-ee              Disable loading of end-effector (robot-ee would be ingnored if set) [WARNING: this argument will be removed in future releases, introducing "none" as ee id].
  --with-sc            Include self-collision volumes in the urdf model.
  --abs-path           Use absolute paths.
  --host-dir HOST_DIR  Provide a host directory for the absolute path.
  --only-ee            Get URDF with solely end-effector data
  --no-prefix          Override the robot prefix of links, joints and visuals in the urdf file.

Visualize via ROS2

franka_description is offered as a ROS2 package. The urdf file can be visualized via RViz with the following command:

# visualize_franka.sh launches the visualize_franka.launch.py in a ros2 instance running in the docker container
# The arguments given to the .sh script are forwarded as launch arguments
# Accepted launch arguments are:
#     robot_type - accepted values are: fr3v2_1, fr3v2, fr3, fp3, fer, fr3_duo, tmrv0_2, mobile_fr3_duo_v0_2
#     load_gripper - accepted values are: true (default ee_id is franka_hand), false (ee_id will be ignored) [WARNING: this argument will be removed in future releases, introducing "none" as ee id]
#     ee_id - accepted values are: franka_hand, cobot_pump

./scripts/visualize_franka.sh robot_type:=<robot_type>

If you want to visualize the fr3 duo designed for multiple controller managers, the following command must be used:

./scripts/visualize_franka_duo.sh robot_type:=<robot_type>

Troubleshooting

Figuring out your arm type

Identifying which arm type you have purchased is not always obvious, especially for fr3, fr3v2 and fr3v2_1, as the differences are subtle. The easiest way is to check the arm type in Desk->Settings->Dashboard:


franka_description Desk ———————————– ———————————– fp3 Arm3P

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package franka_description

2.9.0 (2026-08-17)

  • fix: the MoveIt planning chain of an arm carrying a cobot pump now ends at <prefix>cobot_pump_tcp instead of <prefix>link8, so a pose goal names the pump's suction point rather than the flange, the same way the franka hand already tips at <prefix>hand_tcp. MIGRATION: pose goals sent with ee_id:=cobot_pump shift by 105 mm along the flange z axis; setups that applied that offset themselves must drop it, or every goal will overshoot by that much. Descriptions using the franka hand or no end effector are unchanged.
  • fix: the tcp offset now defaults to the mounted end effector's own value instead of being silently zeroed by the franka_robot macro or hardcoded to the franka hand's value by the robot entry points. MIGRATION: a robot generated with ee_id:=cobot_pump now places <prefix>cobot_pump_tcp at 0 0 0.105 (the pump's documented offset) rather than at the franka hand's 0 0 0.1034, a change of 1.6 mm along z; pass tcp_xyz explicitly to keep the previous value. Descriptions using the franka hand or no end effector are unchanged.
  • fix: no_prefix:=true now also strips the prefix from the end effector and attaches it to the unprefixed arm link. Previously every no_prefix:=true description that carried an end effector named a parent link (<robot_type>_link8) that the URDF itself did not define, so all of them were rejected by the URDF parser, and the SRDF named end effector links the URDF did not have. MIGRATION: end effector links in no_prefix descriptions are now called hand, hand_tcp, cobot_pump and so on instead of <robot_type>_hand; descriptions generated without no_prefix are unchanged.
  • fix: emit disable_collisions rules for the cobot pump in the arm SRDF so MoveIt no longer reports the pump in permanent collision with link7/link8
  • fix: the development container now builds when the host UID/GID is already taken inside the base image (osrf/ros:jazzy-desktop ships an ubuntu user at 1000:1000), which previously broke create_urdf.sh/visualize_franka.sh for most Linux users
  • chore: use #!/usr/bin/env bash in the helper scripts so they run on systems without /bin/bash (NixOS, FreeBSD)
  • docu: state in the README that the fer model is not supported; it is still shipped and generatable, but issues reported against it will not be fixed
  • refactor: removed all Gazebo tags, macros, and arguments from franka_description (now simulator-agnostic); the Gazebo SDF/transmission machinery, world anchor, and self-collision suppression moved to franka_gazebo. MIGRATION: the public gazebo xacro argument was removed — consumers that passed gazebo:=true to franka_description URDFs must instead use the franka_gazebo bringup entry points; passing the old arg now has no effect.

2.8.1 (2026-07-07)

  • fix: define modified_prefix in tmrv0_2 description so mobile_teleop (robot_type tmrv0_2) renders

2.8.0 (2026-06-23)

  • refactor: move ros2_control xacro content out of franka_description into franka_hardware (description is now distro-agnostic, free of ros2_control coupling)
  • fix: corrected FR3 Duo mount angles in kinematics.yaml to match CAD values [51.18507533 deg, -10.00159382 deg, 26.54771649 deg]

2.7.1 (2026-05-04)

  • fix: trigger workflow on X.Y.Z tags instead of v* prefix

2.7.0 (2026-05-04)

  • feat: add GitHub Actions workflow to generate and release URDFs for fr3_duo, mobile_fr3_duo_v0_2, and fr3v2_1
  • docu: Added the docu to FCI docs
  • chore: Split the franka head, spine and mount out of fr3_duo/mobile_fr3_duo and adapted srdf
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • chore: refactored franka_arm.xacro configs
  • fix: arm_prefixes index fixed for mfr3duo
  • fix: corrected fr3_duo base mount for gazebo
  • fix: tmr inertials updated
  • feat: ros2 control file added for fr3 duo
  • fix: mobile_fr3_duo.urdf.xacro forwards is_async and thead_priority to ros2_control parts
  • feat: added mobile_fr3_duo_v0_2.srdf.xacro for moveit support and collision checking

2.6.0 (2026-03-02)

  • feat: adaptations for gazebo
  • fix: corrected accelerometer frames for fr3v1, fr3v2, fr3v2.1
  • fix: properly handle arm_prefixes in srdf

2.5.0 (2026-02-17)

  • chore: tmrv0_2 replace lidar with mounting point and add imu mounting point
  • fix: mounting point typo in tmrv0_2.xacro
  • feat: add the motor inertia and gear ratio to the urdfs of arms
  • fix: adaptations for async control

File truncated at 100 lines see the full file

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

Package Summary

Version 0.8.0
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_ros.git
VCS Type git
VCS Version kinetic-devel
Last Updated 2021-08-06
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka Emika robots

Additional Links

Maintainers

  • Franka Emika GmbH

Authors

  • Franka Emika GmbH
README
No README found. See repository README.
CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

Package Summary

Version 0.10.1
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_ros.git
VCS Type git
VCS Version melodic-devel
Last Updated 2022-09-16
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka Emika robots

Additional Links

Maintainers

  • Franka Emika GmbH

Authors

  • Franka Emika GmbH
README
No README found. See repository README.
CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange

Package Summary

Version 0.10.1
License Apache 2.0
Build type CATKIN
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/frankaemika/franka_ros.git
VCS Type git
VCS Version noetic-devel
Last Updated 2022-09-16
Dev Status UNMAINTAINED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Package Description

franka_description contains URDF files and meshes of Franka Emika robots

Additional Links

Maintainers

  • Franka Emika GmbH

Authors

  • Franka Emika GmbH
README
No README found. See repository README.
CHANGELOG
No CHANGELOG found.

Package Dependencies

System Dependencies

No direct system dependencies.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged franka_description at Robotics Stack Exchange