Hi,
I am trying to set up a holonomic robot (specifically a mecanum wheel robot) in Isaac Sim. I have created all the joints for the mecanum wheels and the rollers correctly. All the colliders are correctly set.
I am trying to use ROS 2 for controlling the robot and I have created the action graph for it. But the “USD setup holonomic robot” node in the action graph is not generating the outputs required for setting the “Holonomic Controller” node
Hi @rthaker
Yes, I tried the correct steps for setting up the Holonomic controller. The “USD setup holonomic robot” Omnigraph node is not generating the correct output which needs to be fed to the “Holonomic controller” node.
I have shared the USD file for the holonomic robot model I created. Can you please check it out once.
so, the setup node takes the robot prim and traverses the articulation tree to extract relevant settings, and some of these need to go to the Holonomic Controller Node. This node does all the math to convert your desired command (the const double 3 in the image) into joint drive targets. You then need to pipe those into the actual articulation controller along with the joint names to actually apply those drive targets to the appropriate joints.
I included a sample USD file using our O3dyn asset. you should be able to press play and then adjust the values in the const double 3 to move the robot around.
Hi @mgussert ,
I have already tried working with the O3dyn model and I have taken reference for building the action graphs and the robot model from it.
The "USD setup holonomic robot” node in the action graph is not generating the output values it needs to generate in my model.
This is where I am stuck.
I am not able to figure out why the "USD setup holonomic robot” node is generating the values. I have provided the correct Inputs
Can you please look into the USD file I provided and help me figure out where I am going wrong with the model structure due to which the "USD setup holonomic robot” won’t generate any values.
Yes, of course I will help you! I know I have a bad habit of leaving these hanging but I am trying to fix that.
I haven’t been able to fully debug your asset and part of the reason why I haven’t responded yet is I don’t have a good answer for you :(
There are many possibilities because there are some problems with the stage, and one big issue that we (Isaac-Sim) need to address.
there are two articulation roots, one on /Root and another on /Root/Robot. A single articulation can only have one root (no nested articulations).
I think there might be some structure issues with how you have setup the asset but I can’t pin down exactly what yet (other than 3)
This is the issue we need to address. There are missing attributes on your mecanumwheel drives that need to be custom added to your asset. these are present on the o3dyn but not on yours
specifically isaacmecanumwheel:angle and isaacmecanumwheel:radius need to be added to each of your mecanumwheel drives.
To do this, select a drive, click the add button in the properties pane, and select Attribute. in the window that pops up, set the type to Float and the name to isaacmecanumwheel:angleand click the button to add the custom attribute to the prim. Repeat this with the other 3 wheels, and then repeat it a second time for isaacmecanumwheel:radius (the wizard remembers your settings so this order of operations works well).
I haven’t tracked down where we tell the user to do this, and I thought it was handled by this USD setup node, so I have some investigating to do. However, these steps above get the joint names to appear in the setup node. I hope this helps and sorry again for the delay!
Regarding the complete controller, I used ROS’s cmd_vel to control Kaya’s forward and backward movements and found that there was also a problem with its movement. It would deviate from the straight line after driving for a period of time. Look at the output of the controller to see the numerical values of Kaya’s left and right wheels when moving forward and backward. The last few differences lead to deviations. Is this a bug? @mgussert
This may be a consequence of how the joints are being driven. Are using effort controls or velocity controls?
Also, please respond by starting a new thread with your original question and my requested details, and just @ me in the that thread. It will help us with tracking :)
Checkout this post for details on the holonomic controller
the TlDr is the COM offset is the “target” being used by the optimizer for how to move the robot around. It is any xform in the articulation that is then passed as the “COM offset” to the holonomic controller. you can create one just by right clicking → create → xform. the name doesn’t need to be com_offset (I think).