[Question] Question about getting multi rigid contact data to simulate robot skin #1630
Unanswered
ZhangYi1999
asked this question in
Q&A
Replies: 2 comments
-
Hi @ZhangYi1999 , I also encountered this issue and would like to kindly ask if you have solved it? Thank your so much for your time~ |
Beta Was this translation helpful? Give feedback.
0 replies
-
Thanks for posting this. Our apologies we haven't been able to reply earlier. I'll move this to a discussion for the team to follow up upon. |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hello, everyone. I am currently investigate how to simulate a robot skin module in isaac lab. The robot skin module is consist of multi small contact sensor cell and connected with each other to become a grid or hive shape. Like this,
In this case, each contact cell will have its own force sensor data. According to my understand about isaac sim and isaac lab, I think there are following possible way to simulate it properly:
RigidContactView
Create a
omni.isaac.core.prims.RigidBody
for every cell, connected them withUsdPhysics.FixedJoint
, and use aomni.isaac.core.prims.RigidContactView
to query all cell in all environment at the same time. This is the same idea asContactSensor
fromomni.isaac.lab
.However, this method doesn't work because when the amount is getting higher, it gives this error message.
I think it could be the issue of creating too many rigid body in an inefficient way.
Callback function
Instead of creat a
RigidBody
for each cell, we can also create only oneRigidBody
for the whole group and consider each cell as an individualCollider
under the overall rigid body.Use a customed callback function, which can get the detailed collider information like the following code. This code comes from the example in
ContactReportDemo
andContactReportDirectAPIDemo
fromomni.physx.demos
However, this way doesn't make much sense since it should query the information one by one, which means if you have 10 env and each env has 100 cell, you need to run this call function 1000 times. What's more, I am not sure if this call function runs on cpu or gpu, and will it effect the preformance of RL or not.
Calculate the cell assignment manually
Since
RigidContactView
can also report contact position, it will be possible to use the contact position to determine which cell is collided. However, this could increase the computation complexity.Question
My question is, is there a better way to do this or can we use any of the above idea but do it efficiently. Btw, is it possible that the
get_contact_force_data
function inRigidContactView
return collider information as well?If anyone could give same advice, I will be super grateful. Thanks in advance!
Beta Was this translation helpful? Give feedback.
All reactions