| 177 | | This means that there will be some offset between the servo angles and the framework angles. |
| 178 | | |
| 179 | | Another thing to tune is the ratio between pulse variation and real servo displacement. This ratio varies a lot from a brand to another. And even for a same model, it varies from a servo to another. This is especially true for low cost servos. |
| 180 | | |
| 181 | | Offsets and ratios are defined in the {{{SERVO_CALIBRATION}}} table. This table also has a '''neutral''' param, to fine tune the ''SNP'' (it is not always possible to mount the servo so 1500µs is the perfect ''JNP''). |
| | 175 | This means that there will be some offsets between the servo angles and the framework angles. |
| | 176 | |
| | 177 | Another thing to tune is the servo neutral position, to correct mechanical errors. |
| | 178 | |
| | 179 | Last thing to tune is the ratio between pulse variation and real servo displacement. This ratio varies a lot from a brand to another. And even for a same model, it varies from a servo to another. This is especially true for low cost servos. |
| | 180 | |
| | 181 | Offsets and ratios are defined in the {{{SERVO_CALIBRATION}}} table. |
| 185 | | We first need to enable the servo, by clicking the '''Enable''' checkbox. Then, we need to check if the servo rotates the right direction: increasing the pulse value should increase the joint angle (= make in turn in the trigonometric sense in the leg coordinate system). If it is not the case, click the '''Invert''' checkbox (usually, coxa joints are all the same, and other joints should be inverted for legs of one side, but it depends if there is a symmetry in the mechanics or not). Note that from within this tool, the servo direction won't change! But the ratio is inverted, so '''Py4bot''' will compute angles the right way. |
| 186 | | |
| 187 | | We are now ready to fine tune the ''SNP'', and set its matching ''JNP''. To do this, we move the '''Pulse''' slider until we mechanically reach the ''JNP''. Then, we move the '''Joint neutral''' slider to match the theoretical ''JNP'' for that specific joint (as we seen, coxa = 0°, femur = 180°, tibia = 90°). Then, we click the '''Set pulse''' button of the joint neutral setting. This recomputes the '''offset''' and '''neutral''' params of the {{{SERVO_CALIBRATION}}} table. |
| 188 | | |
| 189 | | Then, we need to tune the ratio. This step is a little bit harder, as we need to measure the angle the joint really moves. The best way is to move up to +-90°, as it is visually easy to see, but it is not always mechanically possible, and we can restrict the range to +-45°. |
| 190 | | |
| 191 | | So, we move the 'Angle min' slider to -45°. Then, we move the '''Pulse''' slider so our joint really reaches -45°. Last, we click the '''Set pulse''' button of the '''Angle min'' slider to recompute the ratio. |
| 192 | | |
| 193 | | We of course need to repeat the procedure for the angle max. After both have been tuned, the ratio should be correct. |
| 194 | | |
| 195 | | And we need to repeat the entire procedure for each servo/joint, which can be tedious for a 4 DoF hexapod :o/ But after that, our robot should walk better ;o) |
| 196 | | |
| 197 | | Note that if we already have a '''{{{settings.py}}}''' module, we can launch '''{{{py4bot-gui-servocal.py}}}''' from the directory containing that module in order to reload the previous values. |
| | 185 | We first need to enable the servo, by clicking the '''Enable''' checkbox. Then, we need to check if the servo rotates the right direction: increasing the pulse value should increase the joint angle (= make in turn in the trigonometric sense in the leg coordinate system). If it is not the case, we just click the '''Invert''' checkbox (usually, coxa joints are all the same, and other joints should be inverted for legs of one side, but it depends if there is a symmetry in the mechanics or not). |
| | 186 | |
| | 187 | Then, we can set the offset as shown above by moving the '''Offset''' slider. This has no impact on the servo position, but changes the table offset. |
| | 188 | |
| | 189 | Next, we need to fine tune the servo neutral position. To do this, we move the '''Neutral''' slider until we mechanically reach the correct neutral position. |
| | 190 | |
| | 191 | Once this is done, we can adjust the ratio. This step is a little bit harder, as we need to measure the angle the joint really moves. The best way is to move up to +-90°, as it is visually easy to see, but it is not always mechanically possible, and we can restrict the range to +-45°. But we have to keep in mind that the larger the angle is, the better the accuracy will be. |
| | 192 | |
| | 193 | So, we move the '''Test Angle''' slider to 45°. Then, we move the '''Ratio''' slider so the joint really reaches 45°. Finally, we can check if going to -45° moves the joint to the symmetrical position. |
| | 194 | |
| | 195 | We of course need to repeat the entire procedure for each servo/joint, which can be tedious for a 4 DoF hexapod :o/ But after that, our robot should walk better ;o) |
| | 196 | |
| | 197 | Note that if we already have a '''{{{settings.py}}}''' module, we can launch '''{{{py4bot-gui-servocal.py}}}''' from the directory containing that module in order to reload the previous values. And if the module contains a '''{{{LEGS_SERVOS_MAPPING}}}''', the script will show the legs/joints names. So, it is better to start writing this param, before launching the script. |