I am in charge of the software team for my university’s competition underwater robotics team (we participate in RoboSub), and I’m trying to improve the experience for new members, particularly for the development environment setup.
Currently we are using ROS Melodic, with uuv_simulator on top of Gazebo for simulation. For a while we have been suggesting that members use a virtual machine to set everything up so they can get Ubuntu 18.04 for ROS Melodic. This past year I’ve created an Ansible playbook that automatically installs everything, and then created virtual machine images that I distribute, that each member then loads onto their computer to speed up the installation process from ~40 minutes to ~10 minutes. That’s the idea at least, but we’ve face many issues.
Most members are using VirtualBox. There are a few assorted issues that we know the solution to but are still annoying when we encounter them. Then there are others like the setup not working on dedicated AMD GPUs.
Is there a better way?
I’ve looked at this thread: What environments do you use for training and courses? - #4 by ruffsl
It seems Docker is a good option, and I was already considering it myself as we want to migrate to ROS 2 but our current hardware does not officially support newer versions of Ubuntu, so I was going to use Docker to achieve the migration.
One idea I had is to have people install Gazebo bare-metal so GPU acceleration should be a breeze, then have it talk to ROS in Docker somehow. Possible issues are (1) Gazebo’s support for Windows is experimental, not sure if it supports M1 Macs, and (2) more involved installation process, and my dream is that the installation would take 10 minutes at the most, with new members able to start writing tutorial code within 20 minutes on their first day.
Key wants/needs (not sure if they are all currently possible):
- Majority of members are freshman students, many have little or no prior experience in robotics, Linux, Python/C++, etc. I want the setup to be as quick and painless as possible.
- GPU acceleration is important for Gazebo simulation.
- Our competition is autonomous, so we could probably get away with recording the simulation results to video, but ideally everyone would be able to run it live at 20-60 fps.
- Need to support:
- Windows, macOS, Linux
- Both Intel and new Arm Apple Silicon Macs
- GPU acceleration on Intel/AMD integrated graphics, AMD discrete graphics, Nvidia discrete graphics.
- As a university club we suffer from turnover, so ideally the solution is simple enough that future members can easily learn how to support/maintain it. Ansible and making custom VM images was probably a bad choice on my part for this goal.