Donkey Car in 2019
2019 has been one of the most important years for the Donkey project, maybe the most important since the original open sourcing of the project in 2016. Coming into this year, the project was decaying. Will and Myself (Adam), the original maintainers were busy — our jobs and home lives were preventing us from moving the project forward meaningfully. Also the community was tiring of the docs being out of date and at one point the master branch didn't even work and you had to use the dev branch.
Flash forward to the end of this year and the community is stronger than ever. The software works well, has been modernized and is properly documented. Thousands of users have built donkey cars. How did this happen? Well there are several big changes that happened and this email is a reflection upon this year!
#1 New Maintainers
In early 2019 we brought on 3 new Maintainers: Tawn Kramer, Rahul Ravikumar and Ed Murphy. The three of them brought a huge amount of new energy to the project and tackled long standing maintenance issues — much of it unrewarding (like updating TensorFlow and Tornado and improving the joystick support as well as making tubclean substantially better). Tawn in particular deserves a special call out — he is the #1 contributor for the year and took it upon himself to merge his fork of the donkey car project into master.
This turn around started with the 3.0 Release which came out last spring. This release was well documented, offered easy configuration and simplified use of things like Joysticks and other options. But we didn’t stop there. In 3.1 we added support for TensorRT and TFLite (led by Rahul and Tawn) both of which dramatically speed up inference times — which in turn allows the car to go faster.
#2 Stronger Community
The Donkey community has grown substantially in the last year, by some measures 2000 people! much of this is because of the hard work of the maintainers above, but also because of the success of the DIYRobocars that Chris Anderson puts on.
We get invited to many Speaking events every year and this really helps spread the word. This year we spoke at:
- ARM Conference: Rahul Ravikurmar
- Maker Faire Bay Area: Adam Conway
- Silicon Valley Code Camp: Ed Murphy
Another highlight (and lowlight) is the growth of the community in Mainland China. This is a highlight because all indications are that it is growing like crazy, a lowlight because we are separated from them (with some notable exceptions) — they cannot participate in our Slack or other communities. Still, we will continue to make sure that we are building cars from components that are readily available in China in hopes that the communities can join together some day.
#3 NVIDIA Jetson Nano and Raspberry Pi 4
New hardware platforms always greatly increase interest in Donkey car — people get their new board and then say “now what?”
The NVIDIA AI Jetson Nano was a huge enhancement to the Donkey Car Platform. It was added as a standard supported board along-side the Raspberry Pi. This has done a lot to keep the advanced Donkey users focused on the core repository rather than having to fork to use exotic hardware. It is also worth noting that the team at NVIDIA has been supportive of Donkey and our efforts.
In addition the Raspberry Pi Foundation continues to push forward with new Raspberry Pi platforms. The new Raspberry Pi 4 greatly improves inference speeds — coupled with TFLite we can get over 100 inferences per second with the standard TensorFlow model. One other huge enhancement is that users can now get more than 1GB of Memory! this has been a huge shortcoming of the Raspberry Pis and is now solved.
Looking forward to 2020
It goes without saying that we are not close to being done. There are big things we want to do in 2020 will keep the community going and keep the project strong
Add Localization
One of the lovely things about Donkey Car has been that it is stateless and simple, but we are getting to the limitations of what a stateless system can do. It is time for us to start thinking about how we start adopting more robotic approaches like localization.
Better Models
Many users can get a workable model up and running in the first few hours of using Donkey, but making those models work in a race scenario reliably is hard as the environment often changes between training and race time. Creating a generalized model has been a challenge. We are working on several techniques to make this easier including transfer learning.
Solve the big remaining hardware issues
Even 4 years in we have 3 big nagging hardware issues that are ripe to be solved.
- Find (or make our own) standard chassis that is globally available.
- Provide a consistent source of batteries and make sure that it is easy to use a single battery
- Make it easy to add odometry and other sensors
Stop Slack-ing
Fix or Move away from Slack. The free version of slack is atrocious at our scale and the paid version would be thousands of dollars for a community of our size. With our current usage of slack we can only find messages going back only 2–3 months. In order for our community to grow and be useful we must move beyond slack. In the meantime we have a Discourse group at https://donkey.discourse.group/ please give it a shot.
It is worth noting how disappointed I am with Slack — they could be a great choice for OSS communities, but instead willfully make it hard on us. They force their core community, developers, to look at other platforms — and this is just what we will do.
Getting involved
This project is dependent on people like you building cars or just spreading the word. If you want to get more involved involved however, please feel welcome to submit a pull request, submit a Medium blog post to the Donkey Car publication, or join us at a race.