@@ -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,15 +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:%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 ));
107
107
108
108
if (_dxl.getPresentPosition (AXIS_X + 1 ) > 4096 ) {
109
109
_init_param.servo [AXIS_X].offset = _init_param.servo [AXIS_X].offset + 360 ;
110
110
}
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 ) ) {
112
112
_init_param.servo [AXIS_Y].offset = _init_param.servo [AXIS_Y].offset + 360 ;
113
113
}
114
+ // _init_param.servo[AXIS_Y].offset = 360;
114
115
116
+ M5_LOGI (" Current Offset X:%d, Y:%d" , _init_param.servo [AXIS_X].offset , _init_param.servo [AXIS_Y].offset );
117
+
115
118
_dxl.setGoalPosition (AXIS_X + 1 , convertDYNIXELXL330_RT (_init_param.servo [AXIS_X].start_degree + _init_param.servo [AXIS_X].offset ));
116
119
_dxl.setGoalPosition (AXIS_Y + 1 , convertDYNIXELXL330_RT (_init_param.servo [AXIS_Y].start_degree + _init_param.servo [AXIS_Y].offset ));
117
120
// _dxl.torqueOff(AXIS_X + 1);
0 commit comments