-2
\$\begingroup\$

I have a horizontal platform that rotates over a vertical axis. Is there a way to measure the rotation angle with respect to earth (or its initial position) without gyroscopes, rotary encoders on the motor rotating the platform?

\$\endgroup\$
7
  • \$\begingroup\$ How big is the platform? How accurately do you need to measure the angle? \$\endgroup\$
    – The Photon
    Commented Jun 16, 2013 at 14:43
  • \$\begingroup\$ about 10" by 10",, precision of about 10-20 degrees would be good,actually its a robot with differential drive,, \$\endgroup\$ Commented Jun 16, 2013 at 15:15
  • 1
    \$\begingroup\$ Are you looking for some form of electronically readable compass? \$\endgroup\$ Commented Jun 16, 2013 at 15:32
  • \$\begingroup\$ @JImDearden you should write that up as an answer! \$\endgroup\$ Commented Jun 16, 2013 at 16:58
  • \$\begingroup\$ Are you saying the horizontal platform remains horizontal while it rotates round (not over) a vertical axis OR are you saying the horizontal platform tilts and it's the angle of the tilt you want? Does it use stepper motors before the differential or ordinary dc motors? \$\endgroup\$
    – Andy aka
    Commented Jun 16, 2013 at 16:59

2 Answers 2

1
\$\begingroup\$

I would think to get the rotation angle you would need at a minimum the speed of rotation of the robot, or as it is called in rotational dynamics: Angular Velocity (AV). If you are using a micro-controller with your robot, this value can be a constant in software.

Then to calculate the angular displacement (AD), which is how much it has rotated, you need the time that you rotate, and AD is then AV * time: AV*t. The answer is in radians, and a full circle (360 degrees) would be 2*PI radians, (2*3.14).

If your robot has a constant speed of rotation then you can find AV by measure the time it rotates a known amount. Let us say to rotate a full 360 degrees it takes 10 seconds, then AV = AD/t = 2*PI/10

If you prefer to deal with degrees (0-360), then convert radians (AD) to degrees by knowing that a full rotation 2*PI = 360 degrees, therefore the degree rotated (DEG) can be calculated as: DEG = AD/(2*PI)*360

This method will be very accurate if the rotation velocity is accurate, and you have a way to measure time in the micro. In most micros time measurement is pretty accurate.

\$\endgroup\$
2
  • \$\begingroup\$ yeah that would do it in principle,, but for that first I have to measure angular velocity at some voltage(which is being supplied to motors) and then do the multiplication to get the angle,,,and problem is that if I operate robot on different surfaces with different friction co-efficient the angular speed for same voltage will change,, I need some method which is independent to external conditions and work for every angular speed in range,, \$\endgroup\$ Commented Jun 16, 2013 at 17:26
  • \$\begingroup\$ Yes, with varying speed it complicates the matter. You stated however that accuracy was OK with up to 20 degrees, which is quite a bit. Otherwise the only solution is some kind of sensor, be it a pulse feedback from the axis or a gyro chip for example. If you have access to the motor shaft, some sort of light sensor could be used to count pulses from a mirror like surface on the motor shaft. Would not be my solution, but if money is a factor, pretty cheap. \$\endgroup\$ Commented Jun 16, 2013 at 18:14
0
\$\begingroup\$

I'm not sure if "without gyroscopes" includes accelerometers or not, but if your platform is otherwise stationary in space, it would be almost a no-brainer to calculate the angle of your platform with a 3-D (or even a 1-D, if certain conditions can be met) accelerometer.

\$\endgroup\$

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