Requires libfranka >= 0.20.4 and franka_description >= 2.9.0 requires ROS 2 Jazzy
- fix:
tmrv0_2.launch.pyreadrobot_ipanduse_rvizonly from the
config file. Both are now launch arguments that override the config file
when given. - fix:
franka_mobile_sensorsstarted therobot_state_publisherfor the
sensor frames only together with RViz, sostart_rviz:=falsedropped the
lidar and camera frames from TF. With RViz off, arobot_state_publisher
in thesensorsnamespace now publishes them (publish_sensor_tf,
defaulttrue). Its tree starts atbase_link, its URDF stays off
/robot_descriptionand it does not read/joint_states, so with
start_rviz:=falseit can run next totmrv0_2.launch.py. - fix:
tmrv0_2_with_sensors.urdf.xacroand
mobile_fr3_duo_v0_2_with_sensors.urdf.xacrono longer add the fixed
base->base_linkroot. The tree starts atbase_link, which
leavesbase->base_linkto the swerve odometry. The description and
the Gazebo wrapper never added it, and the sensor RViz config already uses
base_linkas its fixed frame. - fix:
franka_mobile_sensorsdeclaresjoint_state_publisher_gui, which
its RViz launch file starts. - fix:
franka_semantic_components::FrankaRobotStatenow sizes and labels the joint arrays of
FrankaRobotStatefrom the arm the component is bound to, instead of from every revolute
joint in the globalrobot_description. With more than seven revolute joints in the
description the arrays came out longer than seven, and the trailing entries were filled by
reading past the end of libfranka's seven-element arrays, so they carried a different quantity
than their joint name promised and each broadcaster labelled its own arm's data with another
arm's joint names. The arm's seven joints are looked up by name, so single-arm descriptions
with extra revolute end-effector joints are fixed as well. The message frame IDs are now
resolved from the same arm by name. Base-frame fields (joint states,o_*) use
<arm>_link0; on a stock single-arm launch they previously usedbase.f_t_eeand
inertia_loaduse the flange<arm>_link8, and without a gripper so doee_t_k,
k_f_ext_hat_k,inertia_eeandinertia_total; these previously used<arm>_link2
on single-arm descriptions. This reaches~/current_poseand the other convenience topics. The
joint copy is additionally bounded by libfranka's seven-element arrays. A description missing
the arm's joints,link0orlink8is rejected when the component is constructed; a
description missing an accelerometer frame is rejected when the message is initialized during
configure. - fix:
FrankaHardwareInterface::read()/write()skip the cycle instead of blocking while a
command mode switch holds the robot (tens of milliseconds) (GitHub Issue #243). - fix: the first
write()after a command mode switch is skipped until a freshread(). - fix:
write()returns ERROR instead of a warning when no robot control is active. - fix:
move_to_start_example_controllerperforms noset_parameteron the
realtime thread:update()flips an atomic flag and a 20 ms wall timer publishes
theprocess_finishedparameter off the thread. Setting the parameter every
1 kHz cycle stalled the controller for ~337 ms when aros2CLI participant
joined and tripped acommunication_constraints_violationreflex.
on_configureresets the parameter to false synchronously; after a
deactivate/activate without reconfigure, the previous value may remain visible for
up to one publish period (~20 ms). - fix:
cartesian_impedance_example_controllerresolves its interface names from the
robot_type(+arm_prefix) parameters like all other examples, instead of the
leftoverarm_idparameter. Renamearm_idtorobot_typein custom configs
(the defaultfr3behaviour is unchanged); a stalearm_idoverride logs a
warning inon_configure. - fix:
cartesian_impedance_example_controllerperforms no controller-side heap
allocation on the realtime thread: the Jacobian damped pseudo-inverse uses a
fixed-size LDLT formulation instead of a dynamic-matrix SVD, and the demo motion
target lives in a realtime-side member. Behaviour is numerically unchanged. - feat:
move_group.launch.pytakes arobot_typelaunch argument (defaultfr3)
and builds the URDF/SRDF and the joint/group names in the MoveIt configs from it, so
other robot types (e.g.fr3v2, whose model andfr3v2_armgroup ship in
franka_description) get a working MoveIt model instead of a hardcodedfr3one.
joint_impedance_with_ik_example_controller.launch.pyforwardsrobot_typefrom
the robot config file tomove_group.launch.py.