Support for floating base? #68
-
Does Curobo have support for a floating base? If not, is it theoretically compatible to extending it to support planning with a floating base? Thanks, |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 1 reply
-
Floating base is supported. cuRobo does this by adding translation (x,y) and rotation (z) joints at the base of a robot. You can add kinematic joints to the base to also support z translation. Here is an example configuration file: https://github.com/NVlabs/curobo/blob/main/src/curobo/content/configs/robot/franka_mobile.yml |
Beta Was this translation helpful? Give feedback.
-
Thanks. That is not quite what I meant by floating base. I meant in a similar way to how pinocchio implements it, i.e the 6-DoF state of the robot is recorded in the robot state, but not via joints in the URDF. it has a "floating joint" at the bottom of the page. For example, could curobo create plans for humanoids, quadrupeds or segway type robots with the method you suggest? It would need to plan without being able to explicitly control the "fake" joints. Could that be partially achieved by removing the fake joints from the cspace parameter in the RobotConfig? |
Beta Was this translation helpful? Give feedback.
-
Is there a plan to add official support to floating base systems? I agree option 1 seems to be a more suitable solution, but adding 6 additional joints to the URDF of the robot does not sound ideal and can cause issues when loading in other simulators etc. Wouldn't it be cleaner to provide the option for adding a floating joint to the curobo robot state representation? |
Beta Was this translation helpful? Give feedback.
I think this can be done in two ways in cuRobo.
Option 1: Use lock joints
cuRobo has lock joints which will lock specified actuated joints at a fixed value and optimize only the other joints. We do this in the Franka to lock the gripper here:
curobo/src/curobo/content/configs/robot/franka.yml
Line 102 in d85ae41
You can use this to lock any joint. So adding 6 joints at the base of the robot (1 for each axis) and then locking them by reading the pose from a robot_state is possible. You can also choose to optimize over them by not locking them.
One caveat is that currently we rebuild the kinematic tre…