How to define SphericalRobotShapeComponent for a custom robot


I am trying to use a custom robot with isaac SDK, but am pretty confused about the SphericalRobotShapeComponent definitions. I did download the CAD files for KAYA and try to evaluate the settings below but as long as I dont know the cirles those settings confused me. It would be great if I could get more information about the below settings and how it was made for Kaya. Then hopefully I can manage to do it for my robot as well.

“config”: {
“shared_robot_model”: {
“SphericalRobotShapeComponent”: {
“circles”: [
{ “center”: [0.0 ,0.0], “radius”: 0.075},
{ “center”: [0.02 ,0.03464], “radius”: 0.055},
{ “center”: [0.02 ,-0.03464], “radius”: 0.055},
{ “center”: [-0.04 ,0.0], “radius”: 0.055},
{ “center”: [0.0525 ,0.09093], “radius”: 0.035},
{ “center”: [0.0525 ,-0.09093], “radius”: 0.035},
{ “center”: [-0.105 ,0.0], “radius”: 0.035}

it’s seems like : center[x,y],radius:z so just some balls,
Here is the documentation :

## isaac.planner.SphericalRobotShapeComponent


> Model of a robot composed of a union of circles. The distance function is approximated by the function -ln(sum(exp(-alpha * dist_i))/alpha where alpha = ln(1 + #circles) * smooth_minimum controls how well the min function is approximated. If the real distance is D, then we have: D - 1/smooth_minimum <= distance <= D;

**Type:**  Component - This component does not tick and only provides certain helper functions.

**Incoming messages**


**Outgoing messages**



* circles [ *std::vector<geometry::Circled>* ] [default={}]: List of circles that compose the robot
* smooth_minimum [ *double* ] [default=20.0]: Parameters to control how well the minimum function is approximated. The error will be in the range: D-1/smooth_minimum <= distance <= D where D = the real distance

What do you find confusing in the documentation ?

Actually with the help of @andrei.ciobanu1984 I managed to define a new spherical robot from scratch and it works pretty well. Isaac needs more documentation.

1 Like

@gkobas great to hear that you managed to solve the issue. Could you please let us know what needs to be added to improve the Isaac documentation? Also, what type of robot are you using? We would really appreciate your feedback. Thanks!

1 Like

@Swapnesh @hemals @Hammad_M @ltorabi @AastaLLL @dusty_nv I am experiencing the same problem. How does one create a custom robot model as a union of circles using SphericalRobotShapeComponent? There is no documentation available apart from this. How are the shared_robot_model created from the carter robot?

My custom robot is essentially a rectangle - and I need to create a new robot model as a union of circles to be able to run the navsim app with my custom robot.

SphericalRobotShapeComponent models the robot as the union of spheres as specified earlier in this post where the origin is the robot frame (center of the robot). Spheres are a simple approximation of the robot shape which streamlines distance calculations. For a rectangle, you will need to work out the set of circles that covers the rectangle completely. The fewer spheres you use, the fast the collision checks can run, but the more false positives you will have.