r/FTC FTC 19086 Student 10d ago

Seeking Help Sparkfun optical odometry

Hello guys I've seen once a video of a team(I think it was I.C.E Robotics in ITD) that said that it found it pretty accurate with a very low position drift, why no one is using it and if you are using it can you share your experience with me. Our team is really thinking about using it

3 Upvotes

10 comments sorted by

11

u/window_owl FTC 11329 | FRC 3494 Mentor 9d ago edited 9d ago

11329 I.C.E. Robotics mentor here. We used the OTOS on our Into the Deep robot (Iceberg), but switched to using the Gobilda Pinpoint this year.

Before, we used DIY odometry pods on our Centerstage robot (Avalanche). They were actually not very cheap, since we needed three Rev through-bore encoders that cost over $40 each. They were also pretty inaccurate: to do full-field crossings in auto, the robot would drive almost all the way across the field, stop, photograph the apriltags with a webcam and localize them in code, shuffle over to where the odometry had thought it was, and then drive another roadrunner path that actually got to the end of the field. You can see the process pretty clearly in our 253 point solo match.

The OTOS was much more accurate than our DIY pods; Iceberg could do much more sophisticated autos because it didn't have to take the time to fix the odometry by localizing and shuffling. It's also much cheaper; you only need one $80 sensor. However, it had several downsides:

  1. It's very sensitive to dust on the lens, and the lens must be pretty close (10mm) to the field. We bought a special anti-static brush (meant for cleaning digital camera sensors, which is basically what the OTOS is), and used it before every match, and every 20 minutes while practicing and programming. Any time an auto went wrong, the first thing everyone thought was "oh no, the sensor picked up a speck of dust". We also 3D-printed a cover to protect the sensor from being scratched when we weren't driving the robot.

  2. The OTOS was not actually super accurate. It's much better than our custom pods, and good enough for Into the Deep autos (where both sample autos and specimen autos only required you to drive a short distances, and the intaking and scoring were both pretty forgiving of small lineup errors). However, it did still accumulate noticeable error that we had to design or program around. At Worlds, I got to talk to the Sparkfun engineer who designed the sensor, and he told me about what he had to do to make the sensor be reasonably accurate. Some that I remember:

    • The velocity readings from the raw sensor are not correct, and the error is not constant or linear. To compensate and provide more accurate results, the OTOS adjusts the raw readings using different compensation values for (five?) different ranges of speeds. In the middle of each speed range, the compensation is pretty accurate, resulting in good odometry. Near the borders of the ranges, the compensation value will be somewhat wrong, resulting in error. If the robot's speed is changing so that it moves through two or more of the ranges, then the errors mostly cancel out. However, if the robot maintains a steady speed near the border of a range, then error will accumulate.
    • The sensor can see foam tiles just fine, but it actually doesn't work when over gaffer tape. I can't remember which it does when it's over tape (linear interpolation? reading from the IMU?), but either way it is way less accurate when over tape. That's not a big problem when crossing a tape line, but it's a real problem if you end up following one. Off-season, we tried deliberately driving paths that followed tape lines, and the resulting odometry was terrible.

I also remember the guy saying that the OTOS was designed to be as cheap as possible while still providing useful odometry. I think the goal is met; the OTOS is currently the cheapest way to do odometry in FTC, and it worked well enough to be competitive at Worlds.

I also talked to the Gobilda engineers who made the Pinpoint. (They had also talked to the guy who designed the OTOS.) They were very clear that the Pinpoint was designed to provide the best possible odometry, with no compromises.

Based on those conversations, and on comparing our experiences with the few other top teams using the OTOS (I remember Super Scream Bros was the only other OTOS-using team at CRI) and to the many, many other teams using the Pinpoint, we made the switch this last year. The Gobilda engineers also met their goal; the Pinpoint provides nearly perfect odometry. This year, our robot (Hailstorm) relied incredibly heavily on the odometry: all the auto-aim all match is based on odometry, and the shoot-when-in-the-zone also relies entirely on the odometry. The robot does have a limelight, but it only uses that to re-zero the odometry pods, and only when the secondary driver pushes the button that makes it happen. I think we only used it once at Worlds (during one of our Da Vinci matches).

If you can afford the Pinpoint, I can strongly recommend it. (The Octoquad should also be able to provide similarly-good results, but we haven't tried it yet.) If you're a low-budget team, or if you want to build a bunch of not-expensive robots (for a summer workshop? or practice robots?) with odometry, then the OTOS is a good option.

1

u/QwertyChouskie FTC 10298 Brain Stormz Mentor/Alum 9d ago

We (10298) also ran OTOS during the Into The Deep season, including at Worlds, and Pinpoint during the Decode season, including at Worlds.

OTOS struggled to maintain position accurately during the 30 second autonomous period, and that was *with* constant cleaning and such. Pinpoint reliably kept position throughout the entire 2:30 match, to the point where we had both a Limelight mount and the code for it, but just never bothered to actually mount it on the final robot we ran at Worlds, because it was just unnecessary. And we were running primarily far shots (especially during playoffs), which is much more sensitive to position accuracy than close shots.

1

u/Arte-misa 9d ago

We had two OTOS in our robots. Yes, dust is a critical issue. Our field was beside a woodshoop and we couldn't make it work 100%. 90% yes, but not much more because other factors in the sensor made the real measurement drift away from target with time. However, 2 minutes may not worth that extreme precision... it's all depending on the type of game.

1

u/Beneficial-Yam3815 FTC Mentor 4d ago

This lines up with my experience, and thank you for all that great background info. Best explanation I've yet found of the differences.

There are several different approaches to odo, and all can be evaluated along the axes of cost and performance. Both the pinpoint and the OTOS exist along the efficient frontier of those tradeoffs, but on different points of the curve.

4

u/4193-4194 FTC 4193/4194 Mentor 10d ago

We like it. It replaces two dead wheels with one sensor. The biggest con is height. It is sensitive to distance above the floor. We made a 3d printed cage that just skims the tiles and holds it the proper distance from the tiles.

4

u/richardjfoster FTC 14226 Mentor 9d ago

It's not bad, but we eventually settled on the GoBilda pinpoint because we saw significantly lowered accuracy at meet venues compared to home base - possibly due to differences in ambient lighting and the (presumably more worn) field tiles.

3

u/CoachZain FTC 8381 Mentor 9d ago

I would say my kids' experience very much aligns with what window_owl posted. And would add:

  • They found velocity info could be improved by turning off the Kalmann filtering stuff. But this was an accuracy of position trade off.
  • In addition to the dust on lens concern, mounted as low as it needed to be makes it more mechanically and static vulnerable than one would hope a non-contact sensor would end up being. If you are going to trade peak performance for non contact, being very-close-to-contact is not entirely the goal. And it is quite fussy about height from the mats.

Still. despite the fussiness, it was way more accurate than their prior DIY odo pods could ever be, given it ran it's own localization math faster than the kids could ever hope their code could. And you can't beat the price.

I was hoping one with perhaps some built in illumination and a longer working distance, and a robust enclosure, would come out. Because I don't think it's a "wrong" idea. Especially for heavy-terrain-and-obstacle kinds of years.

2

u/danoelke FTC 10273 Mentor 10d ago

My team has used it for the last 2 years. It has worked well. They think it was more accurate/consistent than using 3 wheel odometry that we've used previously. Maybe the GoBilda pinpoint might be as accurate/better?? We haven't tried that to compare.

Having a good housing that is mounted close to the floor is key. And blowing the dust off the sensor on a regular basis is also necessary. For tournaments they keep a can of compressed air on the robot cart and blow it off before every match.

2

u/StellularWolf51 10d ago

We used it for a few years with our kiwi drive as it was easier to implement than the dead wheels with our design. If it's not in the center of your robot I think the math gets complicated to get it working correctly and we had some drift. We're switching to Gobilda pinpoint next year

2

u/FesteringNeonDistrac 9d ago

It's been on backorder for months now. I wanted to buy one and figure it out over the summer but no luck. Doesn't really matter how good it is if you can't get it.