@@ -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