Pyrosim uses ODE to simulate rigid bodies. Rigid bodies cannot bend or deform and make hard contacts when they collide. Currently there are three types of rigid bodies in pyrosim:
This demo provides a quick introduction on the different bodies and how they are used in pyrosim.
The following code sends the default of each body shape at different x-coordinate positions.
sim = pyrosim.Simulator(play_paused=True) sim.send_cylinder(x=-1) sim.send_box(x=0) sim.send_sphere(x=1) sim.start()
Note that when you play the simulation, because the bodies are embedded in the ground initially, they will shoot up. To rectify this we must change the objects z-coordinate.
We can also easily send multiple objects by using loops.
sim = pyrosim.Simulator(play_paused=True) for i in range(3): sim.send_cylinder(x=-1, y=i, z=.6,length=i) sim.send_box(x=0, y=i, z=0.05) sim.send_sphere(x=1, y=i, z=0.1) sim.start()
Object dimensions can be set using the natural dimension parameters of each body.
sim = pyrosim.Simulator(play_paused=True) for i in range(3): size = (i+1)/6.0 z = size/2.0+0.1 sim.send_cylinder(x=-1, y=i, z=z,length=size) sim.send_box(x=0, y=i, z=z, height=size) sim.send_sphere(x=1, y=i, z=z, radius=size/2.0) sim.start()
A more complete list of the different body parameters can be found in the Simulator Documentation
Every time a body is sent to the simulator, an integeger ID tag is returned. This ID is used as a handle for the body when connecting joints and sensors which are covered in later demos.