OTOS On Concrete

I am currently investigating the use of an optical sensor for navigation over a concrete surface. During initial testing, the sensor was positioned approximately 13 mm above the ground. When driving the vehicle around a loop, the results were not consistent.

The loop we are driving is approximately 193 feet in total length, and our speed does not exceed 1 m/s. The data below represents the results logged from the sensor. We have logic in place to handle rollover since we are traveling such a long distance. Ideally, the loops should overlap more consistently with one another.

I was specifically testing the repeatability of the sensor, and the results were not as strong as I expected. It is possible that this sensor is simply not well-suited for our use case, which is acceptable if that is the conclusion. However, I wanted to get a second opinion before deciding to move on from this sensor.

Hi there,

Tthe OTOS should have better accuracy than what you’re seeing. There’s a few things that can cause poor accuracy like that:

  1. Poor tracking from the optical sensor. This can happen for a number of reasons (surface, height, sensor flatness, dirty sensor, etc.).
  2. Poor code logic. For example, repeatedly overwriting the pose registers can mess with the sensor’s tracking algorithm.
  3. Defective sensor. Manufacturing defects can happen sometimes, resulting in a sensor that has poor tracking.

How smooth is the surface? Is it smooth cement like a warehouse floor, or rough concrete like a road? Could you please share a photo of the surface? The OTOS requires a fairly smooth surface to get accurate tracking.

Could you please share some code snippets, or at least give an idea of how you’re interacting with the OTOS?

Could you also please share a photo of how you’ve mounted the OTOS to the vehicle? And what is the vehicle? Does it have any kind of suspension? Excessive motion from a wobbly mount or vehicle suspension can mess with the tracking algorithm.

Can you try on a smaller loop? Ideally one that doesn’t require handling rollover, just in case that code logic is somehow causing issues.

Thanks!

Hello,

I have attached photos showing how the system is mounted, as well as the condition of the concrete surface. The concrete is generally smooth; however, there are expansion joints where the individual slabs connect.

This platform is an Automated Guided Vehicle (AGV) and does not have any suspension. The ground is not perfectly level in all areas, which may have contributed to the accuracy issues I observed. At the moment, it would be difficult to run a smaller loop to fully rule out rollover as a potential factor.

I have also attached my code for reference. Below is the link to my GitHub repository:

OTOSSensor/Reading_And_Logging.ino at main · jason614163/OTOSSensor · GitHub

Please let me know if you need any additional information.

Thanks,

I am a new user, so I can only attach one image at a time. I will create a post for each image.

Image of the concrete

Image of the mount in relation to the ground.

Just reaching out again, I believe I answered the questions that were asked. Was there any addition information that was needed?

Thanks

My sincere apologies for not responding sooner! The notification of your initial responses somehow fell through the cracks, then I was travelling last week and only just returned today.

Thank you for sharing the additional information and images. Given everything you shared, I would expect the OTOS to perform better than what you’re seeing. I unfortunately don’t know why it’s performing poorly.

Could you perhaps share the .csv file of the data you collected? Your measured loops are primarily shifting in the +y direction, which is a curious trend. I’d like to see if I can spot anything from your data.

One thing I noticed about the code you sent is that you are not setting the linear and angular scalar calibration values, which is explained in Example 3. The linear scalar isn’t really relevant right now, but setting the angular scalar is needed to get good tracking accuracy, especially when performing multiple rotations like in your test. The gyro angle is typically off by ~0.5% (~2 degrees per rotation), so after the 7 loops performed in your test, I’d expect the angle to be off by ~15 degrees, which is what your plot appears to show. This obviously doesn’t explain the shifting in the +y direction, but it would explain the slight rotation we’re seeing.

I will be out of office for the next couple weeks, so I may not have time to help further until I return. My guess is that your sensor may be defective, in which case you can work with @TS-Russell or @TS-John to do an RMA. I would be curious to know if a different sensor performs better, though I also understand if you’re prefer to just move on!

I hope this helps, and sorry again for taking so long to respond!

1 Like