Automatic robot location in the room

I created a robot controlled by Arduino and Processing, which moves in a room, spinning (like a sphere).

I need to be able to get a new place as soon as it moves on the floor (say, in a room measuring 3 mx 3 m). I use the 9DOF sensor (3 axes of the accelerometer, 3 axes of gyroscopic and 3 axes of magnetic data) to determine its roll, pitch and yaw, as well as its direction.

How can one accurately determine the location of a robot in Cartesian (x, y, z) coordinates relative to its initial position? I canโ€™t use GPS, because the movement is less than 20 cm per revolution, and the robot will be used indoors.

I found some solutions for indoor placement and 3D positioning, such as pozyx or using a fixed camera. However, I need it to be cost effective.

Is there a way to convert 9DOF data to get a new location or any other sensor? Any other solution like an algorithm?

+5
source share
2 answers

As noted in the comments, acceleration integration gives speed, and integration of this again gives position. This, however, is not very accurate, since errors will accumulate as soon as possible.

Instead of what people use, you should use โ€œsensor fusionโ€, which combines the data of several sensors into a better rating, for example, Position. However, it will still accumulate error over time if you rely only on the accelerometer and gyroscope. However, the magnetic vector will help you, but it will probably still be inaccurate.

I found the following guide on the Internet, which gives an introduction to merging sensors with kalmann filters on arduin.

http://digitalcommons.calpoly.edu/cgi/viewcontent.cgi?article=1114&context=aerosp

Warning: you need to know the math in order to start and run it.

+6
source

My next answer does not include a specific implementation, and my experience does not include robotics. (I am a machine learning researcher, NLP, Field AI). However, I believe that my proposal for insufficient detail would be useful because your problem remains at a general level.

SLAM is one of the most famous areas that study how to estimate the location of consecutive robots according to sensor motors. In the field, there are many studies to estimate the location of robots according to sensor engines.

Researchers have studied SLAM methods for various specific situations, for example, in a slippery floor and in a complex room with shapes or with a noisy sensor, etc. I think your current settings are slightly less specific than in those studies.

So, if I were you, I would start by trying to use the standard SLAM method. I would pick up some popular and general methods from the SLAM tutorial and look for open source software that implements these methods.

As far as I know, Particle Filter (PF) is one of the most popular and successful methods in the SLAM field. PF is the extended Kalman filter dispersion (KF). PF is very easy to implement. Math is much simpler than KF. I think PF is worth a try in your situation.

+2
source

All Articles