Skip to content

Commit 9833d6f

Browse files
committed
"Change calcurate the offset for RT version Dynamixel"
1 parent d7c87ac commit 9833d6f

File tree

1 file changed

+6
-3
lines changed

1 file changed

+6
-3
lines changed

src/Stackchan_servo.cpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ void StackchanSERVO::attachServos() {
7272
_dxl.writeControlTableItem(DRIVE_MODE, AXIS_X + 1, 4); // Velocityのパラメータを移動時間(msec)で指定するモードに変更
7373
_dxl.writeControlTableItem(DRIVE_MODE, AXIS_Y + 1, 4); // Velocityのパラメータを移動時間(msec)で指定するモードに変更
7474
_dxl.torqueOn(AXIS_X + 1);
75-
delay(10); // ここでWaitを入れないと、Y(tilt)サーボが動かない場合がある。
75+
delay(100); // ここでWaitを入れないと、Y(tilt)サーボが動かない場合がある。
7676
_dxl.torqueOn(AXIS_Y + 1);
7777
delay(100);
7878
_dxl.writeControlTableItem(PROFILE_VELOCITY, AXIS_X + 1, 1000);
@@ -103,15 +103,18 @@ void StackchanSERVO::attachServos() {
103103
_dxl.writeControlTableItem(PROFILE_VELOCITY, AXIS_Y + 1, 1000);
104104
delay(100);
105105

106-
M5_LOGI("CurrentPosition X:%d, Y:%d", _dxl.getPresentPosition(AXIS_X + 1), _dxl.getPresentPosition(AXIS_Y + 1));
106+
M5_LOGI("CurrentPosition X:%f, Y:%f", _dxl.getPresentPosition(AXIS_X + 1), _dxl.getPresentPosition(AXIS_Y + 1));
107107

108108
if (_dxl.getPresentPosition(AXIS_X + 1) > 4096) {
109109
_init_param.servo[AXIS_X].offset = _init_param.servo[AXIS_X].offset + 360;
110110
}
111-
if (_dxl.getPresentPosition(AXIS_Y + 1) > 4096) {
111+
if ((_dxl.getPresentPosition(AXIS_Y + 1)-convertDYNIXELXL330_RT(_init_param.servo[AXIS_Y].lower_limit + _init_param.servo[AXIS_Y].offset)) > convertDYNIXELXL330_RT(270)) {
112112
_init_param.servo[AXIS_Y].offset = _init_param.servo[AXIS_Y].offset + 360;
113113
}
114+
//_init_param.servo[AXIS_Y].offset = 360;
114115

116+
M5_LOGI("Current Offset X:%d, Y:%d", _init_param.servo[AXIS_X].offset, _init_param.servo[AXIS_Y].offset);
117+
115118
_dxl.setGoalPosition(AXIS_X + 1, convertDYNIXELXL330_RT(_init_param.servo[AXIS_X].start_degree + _init_param.servo[AXIS_X].offset));
116119
_dxl.setGoalPosition(AXIS_Y + 1, convertDYNIXELXL330_RT(_init_param.servo[AXIS_Y].start_degree + _init_param.servo[AXIS_Y].offset));
117120
//_dxl.torqueOff(AXIS_X + 1);

0 commit comments

Comments
 (0)