Floating Joints in Moveit2

Hello ROS people,

Has anyone successfully used floating joints with MoveIt 2?

I’m trying to describe a UAV in URDF format to leverage MoveIt 2’s libraries for planning.I am mostly concerned with 3D translation, not orientation.

In theory, a floating joint + position_only_ik:True would do the trick. However, in practice, I can’t get the Joint State Publisher to recognize the joint, even though MoveIt 2’s documentation claims support for floating joints.

While I understand that other methods may be simpler for UAV planning and that the purpose of Moveit2 and URDF is not to plan for UAVs, I want to explore whether something like this is possible. I find it hard to believe that the best solution would be to stack three prismatic joints with intermediate links to achieve 3D translation.

1 Like

For what it’s worth, I tried planar or floating joints in MoveIt back in kinetic. In addition to the joint publisher thing I think some planners adapters, such as the one that compute the speed, expect one-DoF joints. Looking at TimeOptimalTrajectoryGeneration, it seems it doesn’t anymore, but that’s the kind of things to keep an eye for.

Our robot (running noetic) still uses two prismatic and a continuous joint. I’d be glad to use a planar joint :confused:

1 Like

Maybe to add my 2 cents. The information propagates:

joint_state_broadcasterrobot_state_publishertf_consumer

You can manually publish a pose on the /tf topic instead of having joint_state_broadcaster do that. This makes sense because the floating joint isn’t really actuated and thus not ros2_control’s concern.

That said, by default / user error? MoveIt, being a tf_consumer, doesn’t seem to update the base so to say frame. Maybe by describing your robot in an egocentric frame, you might be able to achieve it.

2 Likes

A couple thoughts here

Floating joint state publisher configuration

I would check the joint_state_publisher docs for examples of setting one up (the joint state publisher is not part of MoveIt). If you pursue a floating joint getting the publisher working would be the first step.

Planning for a mobile base

If you are mostly interested in position and not orientation, a planar joint is likely a better choice than a float joint, since it will simplify the planner search space and configuration. There is a MoveIt tutorial here about using planar joints (in the context of mobile bases).

In MoveIt OSS, we recommend integrating Nav2 for long range movement (again, in the context of a mobile base). We have since built a commercially supported behavior tree based integration with Nav2 in MoveIt Pro, so there may be additional useful information in those docs.

2 Likes