6
$\begingroup$

Do I need a complex system (of gyros, accelerometers etc.) to detect if a robot has moved forward or can I simply use an accelerometer.

I'm building a robot that learns to walk and I need to detect displacement for machine learning. Can I use an accelerometer or will I need a complicated/expensive Internal Navigation System?

$\endgroup$
2
$\begingroup$

For simple motion detection, you might take a look at these:LIS3DH, L3GD20.

If you would like to look at more complex options, you might take a look at this package: INEMO-M1. I'm using this package in a 3D motion tracking application. It is relatively cheap, and it's integrated sensor fusion provides the most robust measure of displacement I've found. (Accelerometer drift is minimized, output is smooth, etc.)

Finally, the fall detection and click/double-tap recognition features found on this part may assist in a walking application: LIS302DL. As an example, the free-fall detection (which may be slightly misnamed since motion triggers can be set on any axis) can assist with detection of leg motion. The tap/double-tap feature could assist in detecting leg contact with the walking surface.

| improve this answer | |
$\endgroup$
3
$\begingroup$

You can theoretically use just an accelerometer for determining motion, but it may not be accurate enough to achieve your goals.

The big problem with accelerometers is drift over time (i.e., errors in the acceleration measurement get integrated twice), so your position accuracy significantly decreases over time. The severity of this problem depends on the quality of the accelerometer and the measurement time.

If you don't need position information and just want some indication that the robot has moved in a particular direction, an accelerometer would do the job.

Otherwise you would want to use some other sensor in conjunction with the accelerometer, in which case you may need some SLAM techniques. You could also switch to another type of system (like external motion capture mentioned in the other answer).

| improve this answer | |
$\endgroup$
  • 3
    $\begingroup$ Also remember that a tilt will also change the accelerometer's output. For example, if x is forward and z up, you'll get an increase in x acceleration and a corresponding decrease in -z acceleration if the device tilts forward. $\endgroup$ – ViennaMike Nov 28 '12 at 19:35
  • $\begingroup$ @ViennaMike Could I use ArduIMU and use the gyros to keep the error to a minimum $\endgroup$ – Jordan Nov 28 '12 at 23:07
2
$\begingroup$

Measuring if something has moved is ok with just accelerometers, how much and where not. You may need to specify your application a little better, but it sounds like you should use an external tracking system (e.g. camera based) instead. You might also use something simple like an ultrasonic sensor to get the distance your robot has moved, if you are looking for low-cost.

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.