Hello, this informal blog will be dedicated to documenting our journey to create a mobile robotics platform for development in robotics, autonomous vehicles, and AI. We’ve taken heavy inspiration from MIT’s RACECAR and NVIDIA’s RACECAR/J.
The robot base we’ve selected is the 1/10 scale 2WD Traxxas Slash. The decision primarily came out of trying to keep the price around $200 and having more real estate on the 1/10th scale compared to the 1/16th which is 4WD.
Disclaimer, many decisions on sensors and hardware we choose are based on what we already have or what we can get at lower costs (many times free).
While waiting for the RC car to arrive, we had a navX-Micro 9 axis IMU on hand and chose this as a substitute for the typical Sparkfun 9Dof Razor IMU. We prepared code before hand for publishing to the ROS IMU topic. Luckily FRC Team 900 already had a library to read the sensor data through USB. We built on top of this to create an imu node that publishes to the imu topic. You can see our code here. We chose to create this package separate from the main repository so that others can just clone our repo in the future like how many sensor libraries for ROS are currently provided by the community. (Maybe we’ll create a roswiki page too, but that’s for the future)
This was one of our first experiences working with compiling C code, so we had a fun (tedious) time figuring out how to set up the CMakeLists. Do we know how exactly it works? Not really, we kinda just went by trial and error, but I feel confident we developed some intuitions to speed up the next time we need to compile external sources.
The other feature/lesson we learned was how to work with git submodules. It provides a way to import the existing library we were using and we will probably use it to import this node into our full project.
We verified that the imu was sending correct data through the rviz imu plugin and we were quite content with the results. The one thing we didn’t include are the covariance matrices which we don’t fully understand. One of our goals in this project is learn to implement a Kalman filter, which we assume the use case for these matricies. Here’s a starting read we found and a seemingly really good video series.