ROS2 Galactic
The simulator is built on the ROS2 Galactic platform, sending out information via a Peer-to-Peer model in which subscriber nodes listen for any data published
by the simulator. Throughout this project, I had to learn all of the intricacies related to ROS, including it's backend architecture, how to interface with nodes/topics,
and how to visualize incoming data using RVIZ.
To the right is a Python script I wrote using the ROS package to collect time-synchronized LiDAR and Stereo Camera data from the simulator. The simulator output data from
the onboard LiDAR and Stereo Camera as well as the ground-truth position for each cone. With this, we could run our algorithmns on the sampled data and compare our estimates
to the ground-truth data. This allowed us to quantify the error in our algorithms and characterize what cases our pipeline was failing in.
Docker
One of the issues with the simulator is that it is only compatible with Ubuntu 16.04. Very few people on our team had machines running Linux, and
even fewer were willing to dual-boot their Windows/Mac machines with Ubuntu. For this reason, I had to find a way to make the simulator compatible
with everyone's machines, regardless of what operating system they were running.
For this reason, I chose to "Docker-ize" the simulator, wrapping it in a Ubuntu 16.04 container that made the code platform-independent. This was my
first time using Docker, so I had to learn how to create a Dockerfile (shown to the left) and push it to a publicly-accessible repository on DockerHub.
The container also comes with ROS2 Galactic, as well as several other dependencies pre-installed.