My custom usd is converted from URDF using URDF Importer. However, compared with UR10_basic.usd in Samples/Isaac_SDK/Scenario/, the REB_JointControl cannot be created in my usd. Also, the physical material also cannot be imported.
Hello, i haven’t used URDF importer, but used STEP.
It should work pretty similar - after picking file and finishing processing it - there should appear window with button finish import. It saves your converted scene into folder. You also can save it the through “Save as” it makes easier to use it as separate file.
Your new scene should appear as Root component and should be editable, cause i had issues editing prim after putting robot model USD into another scene, it was saying something like: “can’t move/edit ancestral prim”.
Also if you want to use some Isaacs scene - you need to “Save as” to some place where you can edit it. In omniverse you can see lock icon near the folder which doesn’t allow to change.
If it’s not helpful - check at the bottom is there any error messages, also check Console tab also might have something helpful.
@newuhe can you describe what issue you run into when creating the REB_JointControl component?
Can you create it using the create menu using: Create->Isaac->Robot Engine->Joint Control?
Once you have that you can use the Window->Isaac->Relationship Editor to modify the path to the articulation imported from the urdf importer.
Thanks for replying, @Hammad_M @asakhon-AITHEON. I have created the REB_jointcontrol and set the articulation path as shown below:
However, once I want to set joint value, I got the following problem
Hello, it looks like you need to define your parts same way it’s done in /simple_joint_control-pkg/apps/assets/kinematic_trees/ur10.kinematic.json
Look at this part in Jupiter Notebook
@asakhon-AITHEON, I’ve already define them as following:
{
"links": [
{
"name" : "axis1",
"motor": {
"type": "constant",
"properties": {
"pose": [0, 0, 0, 1, 0.0, 0.0, 0.0]
}
}
},
{
"name" : "joint1",
"parent": "axis1",
"motor": {
"type": "revolute",
"properties": {
"axis": [0, 0, 1],
"limits": [-2.79, 2.79]
}
}
},
{
"name" : "axis2",
"parent": "joint1",
"motor": {
"type": "constant",
"properties": {
"pose": [1, 0, 0, 0, 0.0, 0.0, 0.135]
}
}
},
{
"name" : "joint2",
"parent": "axis2",
"motor": {
"type": "revolute",
"properties": {
"axis": [0, 1, 0],
"limits": [-2.09, 2.09]
}
}
},
{
"name" : "axis3",
"parent": "joint2",
"motor": {
"type": "constant",
"properties": {
"pose": [1, 0, 0, 0, 0.0, 0.03, 0.21]
}
}
},
{
"name" : "joint3",
"parent": "axis3",
"motor": {
"type": "revolute",
"properties": {
"axis": [0, 0, 1],
"limits": [-2.97, 2.97]
}
}
},
{
"name" : "axis4",
"parent": "joint3",
"motor": {
"type": "constant",
"properties": {
"pose": [1, 0, 0, 0, 0.0, 0.035, 0.205]
}
}
},
{
"name" : "joint4",
"parent": "axis4",
"motor": {
"type": "revolute",
"properties": {
"axis": [0, 1, 0],
"limits": [-2.688, 1.867]
}
}
},
{
"name" : "axis5",
"parent": "joint4",
"motor": {
"type": "constant",
"properties": {
"pose": [1, 0, 0, 0, -0.02, -0.03, 0.19]
}
}
},
{
"name" : "joint5",
"parent": "axis5",
"motor": {
"type": "revolute",
"properties": {
"axis": [0, 0, 1],
"limits": [-2.967, 2.967]
}
}
},
{
"name" : "axis6",
"parent": "joint5",
"motor": {
"type": "constant",
"properties": {
"pose": [1, 0, 0, 0, 0.02, -0.025, 0.195]
}
}
},
{
"name" : "joint6",
"parent": "axis6",
"motor": {
"type": "revolute",
"properties": {
"axis": [0, 1, 0],
"limits": [-1.396, 4.538]
}
}
},
{
"name" : "axis7",
"parent": "joint6",
"motor": {
"type": "constant",
"properties": {
"pose": [1, 0, 0, 0, 0.0, 0.03, 0.19]
}
}
},
{
"name" : "joint7",
"parent": "axis7",
"motor": {
"type": "revolute",
"properties": {
"axis": [0, 0, 1],
"limits": [-2.967, 2.967]
}
}
},
{
"name" : "axis8",
"parent": "joint7",
"motor": {
"type": "constant",
"properties": {
"pose": [0.7071, 0, -0.7071, 0, -0.055, 0.07, 0.11]
}
}
}
]
}
and the robot urdf is as following:
In Jupiter Notebook you replaced file with yours in python code? Did output correctly listed all the joints?
Also you could just replace data in ur10.kinematic.json with yours in order to do less changes, but don’t forget to do backup first.
Also if you take a look at ur10.kinematic.json - after running through all joints that you can see on stage they apply positions for
{ "name" : "end_effector", "parent": "wrist_3_joint", "motor": { "type": "constant", "properties": { "pose": [0.7071, 0, 0, 0.7071, 0.0, 0.0922, 0.0] } } }, { "name" : "vacuum", "parent": "end_effector", "motor": { "type": "constant", "properties": { "pose": [1, 0, 0, 0, 0.0, 0.0, 0.0] } } }