Mentor: Claire Wang, Steven Peters
Student: An Thai Le (github.com/anindex)
Link to GSoD project: https://developers.google.com/season-of-docs/docs/participants/project-ignitionrobotics-anthaile
I was so excited to have the opportunity to work on the Ignition Physics tutorial and API documentation under the Google Season of Docs 2020 program with Ignition. I enjoyed working on the project and I have learned a lot about how to write comprehensive tutorials introducing new users/developers to the project. I would like to thank my mentors @claireyywang and @scpeters for their support and guidance throughout the project. It has been a great experience for me.
Ignition Physics library is an interface between physics engines and Ignition Gazebo simulation, offering flexibility and abstraction. Feature plugins for different physics engines can be created to power Ignition Gazebo simulation based on user needs.
The lack of tutorials and API documentation presents a significant barrier for users and developers to use and contribute to the Ignition Physics library. This motivates the project to achieve:
- creating comprehensive tutorials on how to use and how to develop new physics plugins in Ignition Physics.
- writing API documentation for the most important features/classes and functionalities of Ignition Physics.
We divide the tutorials into the user section and developer section with an increasingly advanced level. The tutorial set consists of:
- Introduction: describes Ignition Physics motivation and overview.
- Installation: gives detail installation instruction on many platforms.
- Understanding the Physics Plugin: introduces Ignition Physics design concepts and its available physics plugins’ features.
- Switching physics engines: guides how to switch physics engines at Ignition Gazebo launch time.
- Plugin Loading: shows an example of implementing a simple loader for physics plugins.
- Implement a physics plugin: shows an example of implementing a simple physics plugin for understanding the plugin structure.
- Implement a custom feature: guides on defining and implementing a custom feature in an existing physics plugin. This also states the design requirements for a custom feature.
- Use custom engine with Ignition Physics: guides developers on implementing a physics plugin interfacing with any physics engines to power simulation.
We expect this tutorial design makes it easier for the simulation community to incorporate Ignition Physics into their project while drawing an intuitive big picture of Ignition Physics for newcomers. This eases out starting points and enhances its visibility in the simulation community.
The API documentation guides the new developers on how to use/include the most important and common features/classes of Ignition Physics in their downstream code developments. Of course, there is some API documentation that we leave behind due to time constraint, please feel free to contribute changes/new documentation to ign-physics.
The link to the API documentation: https://ignitionrobotics.org/api/physics/3.1/annotated.html#
Overall, I think most of the project goals are met and it does help me a lot in learning the proper documentation in engineering. I also feel fortunate that the project goes surprisingly smoothly for me. There is a saying that “nothing is more practical than good documentation” (maybe I make it up ), which I completely agree with in engineering because otherwise, we cannot work together in complex coordination scenarios. So I hope our work could benefit Ignition and the simulation community in general.
My name is An Thai Le. I am currently a Master student at the University of Stuttgart. I am also a research intern at the Bosch Center of Artificial Intelligence in Germany. My research is mainly in robotics control and modeling. Before this year GSoD, I was a student taking part in GSoD 2019, GSoC 2018, and GSoC 2017. You can find my personal website here.