-
Notifications
You must be signed in to change notification settings - Fork 10
Add free-floating joint at the root of metapodfromudf-generated models #65
Comments
Dear Thomas, Best, |
Yes, I have seen this option but it cannot be used to actually "add" a joint, right? |
FYI, the PR2, HRP-2 and Romeo URDF files do not have a free-flyer joint in On Wed, Apr 24, 2013 at 10:04 AM, Thomas Moulard
|
@thomas: no you cannot add a joint using this option. Regarding your motivations, the first one does not convince me much since the urdf already forces you to choose a particular kinematic tree (a opposed to an undirected kinematic graph) which rules the problem parametrization. But anyway, relying on deprecated feature is not wise, I'm very favourable to adding this option. I wonder, if there is a way in urdf to tell apart a model with a free floating base from a fixed one without resorting to the (urdf) floating joint? In such a case, maybe the option is not necessary and we can properly detect when adding the (metapod) floating joint is needed. Note also that metapod supports simulating several robot (nobody ever tested it though), potentially with and without a floating joint. The --add-root-floating-joint option could take an argument to name which root joint is targeted. As a side note, I have a urdf_filter.py script (based on xml.sax) which I use for these sort of things (adding and removing joints and links, etc.). I can share it. |
it turns out the floating joints are not deprecated in the end. Ioan Sucan clarified that yesterday. I'm still not aware of any way to guess when a floating joint is needed if the original urdf file lacks one. This is probably not possible. So, let go for an option. |
Well I guess it really depends on your use case and the kind of robot you consider. But AFAIK I have never seen a free-floating joint as a root joint for any model from Willow so I would consider this as a mistake to add one directly in the URDF file. Actually I think if you do so, many nodes that are making assumption on the root body being the base link will fail. The idea is, if you do IK you probably don't want a FF, if you do dynamics computation you probably want one to get forces on your root body. The fact that that you exclude it from your model has two advantages, it does not force the user to consider the FF and it is consistent with the robot "real" hardware. |
I've been told MoveIt uses (requires?) the floating/planar joint. I do not know if they add it on the fly or not.
Not with a melding arm robot fixed on the ground. We have three choices:
I do not think option 1 is possible. Option 2 looks like misinterpreting the input file to me, so I'd go with 3, as you first suggested. ok? |
I strongly agree with your point. However, should we make the free-floating free to specify to any joint or used directly the root of the kinematic tree ? |
(beware: longest post ever)
just to be clear: the root of the metapod robot is not necessarily a free-floating joint. It can handle models containing both a fixed robot and a free-floating one. For example a world with a scara and an (headless) humanoid would be modelled with
The URDF can follow this representation (with a massless link for the Galilean frame). But the URDF can also be written with two disjoints tree like this
In this second case we need a way to tell metapodfromurdf to prepend a floating joint to torso and not to Galilean frame.
Reorganizing the tree would be out of the scope of metapodfromurdf I think. Such a kinematic library could be implemented as a preprocessing tool which takes an urdf/collada/wathever file as an input and produces another one as an output. I would probably be useful beyond the metapod case. I was willing to let the user choose which link will be the free-floating joint child among the urdf roots and not among all the links. It is much easier to implement and can be done directly in metapodfromurdf. Something like
where link-name is an existing root link in the urdf and floating-joint-name is the name of the new floating joint. In the above case, it would be --add-root-floating-joint torso MyFreeFlyerJoint --add-root-floating-joint "left leg" MyFreeFlyerJoint would lead to an error. But now I realize that most users won't use such mutli-robots models. And the one who do will probably assemble them from several URDF files anyway, they can add the floating joint explicitly at this step. So we could restrict the option to URDF files with a single root. It would then be
Thoughts? |
On Fri, Apr 26, 2013 at 12:22 PM, Sébastien BARTHÉLÉMY <
|
if your URDF has several trees and already has the necessary floating joints, you won't use the option and it will work. if your URDF has several trees but not the floating joints, you cannot use the option, so it won't work. You should provide a proper urdf file. Note that a single option
(note the s) would not allow us to name the newly created joints. |
Sorry I just realized that I did not answer to this. In the context of multi-robot, I think you need multiple URDF files and you should not try to combine them into one model. The natural way to handle this in ROS is to push topics and parameters into a namespace (/robot1/model_description, /model2/robot_description, etc.). On the metapod side then, if I were to support multirobot then the first thing I would do would be to extend metapodfromurdf to accept several URDF files as input. |
Under control of the --add-root-floating-joint option. This commit also enables the --joint option to work when there are several root joints. Fixes github issue laas#65. Change-Id: I8e76974f68591c4f37d4341b2013894d021df4c5
Well it turns out that URDF does not support having several trees. I'll send a pull request with the fix quite soon. |
Dear all,
I tried to use metapodfromurdf with the HRP-4 model and so far it works quite well.
One slight addition that would have helped me is the possibility to add the root free-floating joint automatically.
I see two main reasons to this:
Sorry, I am a bit lacking time to directly open a pull request right now, but something like an additional optional argument called
--add-root-floating-joint
tometapodfromurdf
would be IMHO a nice addition.The text was updated successfully, but these errors were encountered: