Before I tell you what am doing, you should understand what I am working on. What IS Gazebo?
Well, Gazebo is a robot simluator. Whenever you design a robot, you need to to check it’s behaviour with other objects and its surrounding environment. That is exactly what a simulator helps you do! You can program how your robot moves while you design it and simply run it in Gazebo to check its movements.. Gazebo provides various examplary models to try about and a vast number of features to test your robot.
But what am I doing though?
My work is majorly based on what are termed as collision shapes. Whenever a robot collides with something, you expect it not to pass through but to bounce back! But how does the robot know when it has collided? Here is where collision shapes come into the picture, well , literally. They encase your model forming a sort of periphery around it, so that no outside object can pass through this boundary thus leading to a barrier during collision.
Let’s assume your design to be a chair. When a person sits on the chair, he should not fall through the seat! Hence, a collision shape for the seat and likewise, for the rest of the chair is essential. Collision shapes can be of different types. For the first chair, the shape is pretty simple. But as the man tries to sit on the chair he will not reach the seat but slide down the slope part of the shape. Hence, though this is simple, it is very inaccurate. On the other hand, you can see that for the second chair the shape is a net like structure. It is quite complex made out of triangles, very accurately fitting and is termed as a “mesh”.
So then, why don’t we always used meshes if they are so accurate? Well, due to their complex nature and high number of triangles, the processing times of various functions for meshes can reach quite large values which is highly undesirable.
So what if instead of one continuous mesh, the boundary of the chair was made up of simple shapes combined together? A thin box enclosing the seat, one for the backrest, a few more for the arms and for the legs. That would be “almost” as accurate as the mesh and the processing time would be much much less.
That’s exactly my goal for the intern! To create an interface for the user to add a mix of various primitive or simple collision shapes (in case of Gazebo, a box, a sphere or a cylinder) to his model to replace the complicated mesh. The aim is to ensure good accuracy as well as a hassle-free way to do so.
How did we begin though? We will be coming to that next.