Organization: Ignition
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
Hi everyone!
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 Claire and Steven 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:
- User tutorials:
- 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.
- Developer tutorials:
- 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.
"Ignition Physics library is an interface between physics engines and Ignition Gazebo simulation, offering flexibility and abstraction."
"[Feature plugins](link to how to write a feature plugin tutorial) 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 Ignition Physics library."
About this part, it'd be nice to talk about how we design the tutorial, like how we decided to create different sections for users and developers, what content and depth are covered in the tutorial, and an index of tutorial titles with sections (a very brief version of this gazebosim/gz-physics#114), with each title link to the github source for now.
With the API documentation, we can just supply a link to the website page https://ignitionrobotics.org/api/physics/3.1/annotated.html# saying all important classes and member functions are now documented, and feel free to contribute changes/new documentation to (link to ign-physics repo)
Instead of this, maybe talk about your experience working on this project, like what are the challenges and how you overcome them and reflect in your work?
It'd also be helpful to link to issues that tracked your pull requests since those include important discussions about how you design the tutorials, see Google's requirements here https://developers.google.com/season-of-docs/docs/work-product