Here’s a little more detail. Depending on what you want to accomplish, in the monocular sense, there exist three big players…but I’m not an expert, so I may be missing some.
- Semi-Direct Visual Odometry - SVO
- Parallel Tracking and Mapping - PTAM
- Large Scale Direct Monocular SLAM - LSD-SLAM
I’ve spent the last few months at 5% of my time per week looking at SVO and PTAM. Yes not much time, that’s why it’s taking me forever Anyway, SVO and PTAM work well for aerial systems both indoors and outdoors. Currently in the process of evaluating outdoors…takes a bit since it’s a failry unconstrained environment so quantifying all the variables for accurate testing is arduous to say the least. However, indoors is another matter. Anyway, not to bore you with the details, SVO comes in at about ~cm accuracy with camera only, while PTAM lies somewhere in the 1.5+ m range, and drifts a bit, with camera only. (i.e. no fused IMU and barometer/altimeter data) for solving the camera resectioning problem, or localization of the camera in the world frame. LSD-SLAM is next on the list…maybe after the holidays, late January I’ll have a good idea of how it performs.
Anyway, SVO is great as long as your downward facing. The out of the box algorithm keyframe method is tuned for that camera orientation. Also, it doesn’t build much of a map, nor was it designed to. PTAM, on the other hand, builds a sparse map and when fused with IMU and altitude data, comes in at around 1/2 m accuracy (granted using cheapo IMUs). It’s also important to note that both of these methods break and drift off, often and need tuning given environmental differences. No solution exists that can run out of the box and be stable, reliable, and spot on…yet.
Continuing, read the papers, they are good, and they claim great results, hopefully we can get close to them on our systems and in real deployments. We shall see.
In regards to ROV/AUVs, @zacmacc, yes. LOL. That is fantastic. All of your points about why it seems difficult is why it is difficult and there has been a great deal of money thrown at this problem in the DOD world and they have their solutions, don’t know what they are, but I don’t think they are that good, so you’re tackling a good problem space. I can say that noise from the motors will adversely affect your IMU. The big dogs, covert subs and million dollar ROVs, have really expensive and accurate INS. On our kits, the motor noise and quality of the cell phone IMU is going to give you head aches galore. They do me on a weekly basis and others on this forum.
But let’s keep this thread alive. We’ve been talking about this for at least a year and haven’t made any progress for marine work to date, nows a good a time as any to actually do work, lol.
Just a comment about SfM and Localization, though solving what seems to be the same problem is not really. Doing SLAM, you need real-time or near real-time. Given that the ROVs are mostly slow things, near real-time is fine. Processing on a topside buoy is brilliant, do it! Even the RPi2 has problems with denser point cloud work…like it can’t really handle large points clouds for SLAM work. We use an odroid xu4 for svo and ptam and it does a good job, but we do not map densley nor are building large maps on them…don’t think i’ll even attempt it yet.
Anyway, could talk for years about this subject. Here’s the rig I have,
Using an RPi2 with a Navio+ Autopilot cape running ROS. I plan on a bluefox global shutter camera (absolutely needed for VO/SLAM work…we can argue about this later) but now just a simple c920 webcam for preliminary feature testing. The bluefox is somewhat pricey so I have to play nice with others in order to use it for my testing. Gutted my ROV for the acrylic housing (have a new pressure housing ordered from blue robotics) and using a similar homeplug network setup for the comms to topside. Building a larger ROV as well but not needed for the tests coming up this month. Running power from an onboard 4200mAh LiPo. First set of tests will be in a small tank, easy features etc, and go from there.
@zacmacc, keep us updated, very interested in SLAM for underwater robotics…very.
More to come!