Walking robots are one of my favorites. There was a brave Korean gentleman that designed a simplified version of Boston Dynamics’ Spot mini, called the spot micro. I needed to build that:
When working on my version of the spotmicro, I noticed that the community is developing the gait patterns and inverse kinematics using simulators, here’s an example:
I’ve also read about pyBullet, Gazebo, MoJuCo but never was sure what they actually do and how deep they go, not only in terms of physics simulation but also for sensors / cameras as well as the learning of motor patterns or visual processing.
So I decided to take a little dive into that matter especially into pyBullet since it is a python wrappter / front end to Bullet. So you have a python script that loads the GUI as well as objects that are defined via links. These links can have motor functions. The motor functions can be controlled in the python script and thus also be computed by neural networks, state engines etc. Finally, you also have access to simulated sensors.
The nice thing is that you can really define the size and orientation as well as weight and other physical properties of the elements of the robot. The physics engine will then take care of computing the orientation and also collisions with other objects.
One way of defining the elements is using URDF, the Universal Robot Definition Format as defined by ROS, the Robot Operating System.
However, it was hard for me to find a simple example that was interesting enough to play with. Either the robots / objects were complex in definition or the python scripts were complex. This is why I collected some scripts and URDF files, simplified them to a very simple scenario that is interesting but also understandable in every file.
And I did my first publish on github! Clone the repository here:
The files / scripts / examples were found at:
- https://github.com/erwincoumans/pybullet_robots/blob/master/turtlebot.py (turtle keyboard movement)
- https://industrial-training-master.readthedocs.io/en/melodic/_source/session3/Intro-to-URDF.html (URDF definition of a box)
- https://www.theconstructsim.com/exploring-ros-2-wheeled-robot-part-01/ (URDF definition of a two wheeled robot, I further simplified)