Hey Everyone,
We have been thinking about making a VSLAM system for robot localization as a summer project. I want to get some feedback on the project.
The goal:
The goal is to create a system that is accurate enough to aim a turret throughout a match. We hope that this system removes the reliance on tracking retroreflectors so that we always have the robot’s position and so we never have to worry about tracking on the wrong subject.
My thoughts:
I think that VSLAM is the best option for this type of localization; VIO would have too much drift and lidar-based SLAM seems like it would have issues with the polycarbonate on the field. 4915 successfully combined Intel’s T265 SLAM camera with wheel odometry data (https://www.chiefdelphi.com/uploads/short-url/wy264PCiOgLa5oxdi9QR4dbtaYS.pdf), so it seems like VSLAM is possible. The issue is that SLAM is a very computationally expensive task, which means that a CPU-based SLAM system basically requires an x86 processor. Putting a NUC on an FRC robot does not seem practical because it’s large, power-hungry, and expensive. I talked to Kudan, a company that develops SLAM software, about this project. They thought it would be better to record a video on inspection/practice day, then use the video to generate a point map of the field in the pits, and then upload the map to the robot to run a localization algorithm. I think that this process seems volatile and unnecessarily complicated. The last option, which seems like the best option, is GPU accelerated SLAM. This would mean we could use a jetson SBC, which is practical to put on a robot. It looks like Nvidia’s Isiac Elbrus SLAM is GPU accelerated, efficient, and accurate.
Our hardware:
We have a jetson nano and Intel D435. A D435 is unideal alone because Elbrus likes having an IMU to fill in times when tracking is lost, but it is probably fine. However, a jetson nano will probably be a massive compute bottleneck; Nvidia shows that an AGX Xavier runs at 91 fps, and they say that 30fps is a minimum for good tracking. A jetson nano has no chance of achieving that. So it seems like to use SLAM, we need to get a Xavier NX.
I’m excited to see other teams’ thoughts and experiences on the subject.