@@ -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,13 +103,18 @@ void StackchanSERVO::attachServos() {
103103 _dxl.writeControlTableItem (PROFILE_VELOCITY, AXIS_Y + 1 , 1000 );
104104 delay (100 );
105105
106+ M5_LOGI (" CurrentPosition X:%f, Y:%f" , _dxl.getPresentPosition (AXIS_X + 1 ), _dxl.getPresentPosition (AXIS_Y + 1 ));
107+
106108 if (_dxl.getPresentPosition (AXIS_X + 1 ) > 4096 ) {
107109 _init_param.servo [AXIS_X].offset = _init_param.servo [AXIS_X].offset + 360 ;
108110 }
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 ) ) {
110112 _init_param.servo [AXIS_Y].offset = _init_param.servo [AXIS_Y].offset + 360 ;
111113 }
114+ // _init_param.servo[AXIS_Y].offset = 360;
112115
116+ M5_LOGI (" Current Offset X:%d, Y:%d" , _init_param.servo [AXIS_X].offset , _init_param.servo [AXIS_Y].offset );
117+
113118 _dxl.setGoalPosition (AXIS_X + 1 , convertDYNIXELXL330_RT (_init_param.servo [AXIS_X].start_degree + _init_param.servo [AXIS_X].offset ));
114119 _dxl.setGoalPosition (AXIS_Y + 1 , convertDYNIXELXL330_RT (_init_param.servo [AXIS_Y].start_degree + _init_param.servo [AXIS_Y].offset ));
115120 // _dxl.torqueOff(AXIS_X + 1);
0 commit comments