Thoughts about calibration and fixed starting position #1828
Replies: 4 comments 10 replies
-
An idea could be to use acceleration sensors to get the angle with respect to gravity. I am using the differences in acceleration of technichubs and (WeDo-) tilt sensors (using device.read(3)) to calculate leg positions of my lego robot dog. The dog is not finished but getting joint angles this way works. |
Beta Was this translation helpful? Give feedback.
-
Thomas, I have it not at hand now, But I had a tic-tac-toe robot, where I had a smooth calibration function by lowering the torque. Bert |
Beta Was this translation helpful? Give feedback.
-
This is a partial answer, but it is simple and practical. It does not require any extra sensors. I had the same challenge for this 6-legged robot. When you initialize the motor, you have the option of So then you can manually initialize once - for example the first time after you boot - and use In this robot, I made it choose |
Beta Was this translation helpful? Give feedback.
-
I see more interesting answers here. So I just post a link to my tic-tac-toe program on bricksafe Bert |
Beta Was this translation helpful? Give feedback.
-
Let's say I am building a robot arm. I may use a worm gear to reduce the gear ratio and to make sure the weight of the arm doesn't put load on the motor in stationary position.
At the start of my program, I would like the arm to start in a fixed/known position. For two reasons:
The usual approach is to drive the motor back and forth using run_until_stalled, that works well for calibrating the steering of a car for example. But considering the weight of the arm and that will be using a worm gear, that is not really an option.
The angular motors also know their zero position, but that is only useful when the gear ratio is <1. If the motor needs to rotate many times (when using a worm gear for example), then resetting it to zero position doesn't mean the arm is in the zero position as well (not necessarily).
Are there any other calibration techniques that I haven't thought about? I suppose I could use touch sensors, but that solution has downsides as well. For now I just settle on manually putting the arm in the right position and returning to the initial position at the end of the program, or when it crashes.
Beta Was this translation helpful? Give feedback.
All reactions