@@ -72,7 +72,7 @@ void StackchanSERVO::attachServos() {
72
72
_dxl.writeControlTableItem (DRIVE_MODE, AXIS_X + 1 , 4 ); // Velocityのパラメータを移動時間(msec)で指定するモードに変更
73
73
_dxl.writeControlTableItem (DRIVE_MODE, AXIS_Y + 1 , 4 ); // Velocityのパラメータを移動時間(msec)で指定するモードに変更
74
74
_dxl.torqueOn (AXIS_X + 1 );
75
- delay (10 ); // ここでWaitを入れないと、Y(tilt)サーボが動かない場合がある。
75
+ delay (100 ); // ここでWaitを入れないと、Y(tilt)サーボが動かない場合がある。
76
76
_dxl.torqueOn (AXIS_Y + 1 );
77
77
delay (100 );
78
78
_dxl.writeControlTableItem (PROFILE_VELOCITY, AXIS_X + 1 , 1000 );
@@ -103,13 +103,18 @@ void StackchanSERVO::attachServos() {
103
103
_dxl.writeControlTableItem (PROFILE_VELOCITY, AXIS_Y + 1 , 1000 );
104
104
delay (100 );
105
105
106
+ M5_LOGI (" CurrentPosition X:%f, Y:%f" , _dxl.getPresentPosition (AXIS_X + 1 ), _dxl.getPresentPosition (AXIS_Y + 1 ));
107
+
106
108
if (_dxl.getPresentPosition (AXIS_X + 1 ) > 4096 ) {
107
109
_init_param.servo [AXIS_X].offset = _init_param.servo [AXIS_X].offset + 360 ;
108
110
}
109
- 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 ) ) {
110
112
_init_param.servo [AXIS_Y].offset = _init_param.servo [AXIS_Y].offset + 360 ;
111
113
}
114
+ // _init_param.servo[AXIS_Y].offset = 360;
112
115
116
+ M5_LOGI (" Current Offset X:%d, Y:%d" , _init_param.servo [AXIS_X].offset , _init_param.servo [AXIS_Y].offset );
117
+
113
118
_dxl.setGoalPosition (AXIS_X + 1 , convertDYNIXELXL330_RT (_init_param.servo [AXIS_X].start_degree + _init_param.servo [AXIS_X].offset ));
114
119
_dxl.setGoalPosition (AXIS_Y + 1 , convertDYNIXELXL330_RT (_init_param.servo [AXIS_Y].start_degree + _init_param.servo [AXIS_Y].offset ));
115
120
// _dxl.torqueOff(AXIS_X + 1);
0 commit comments