@@ -205,7 +205,8 @@ void Locomotion::set_config(const nlohmann::json & json)
205
205
double position_max_range_tilt_double;
206
206
double position_min_range_pan_double;
207
207
double position_max_range_pan_double;
208
- double position_center_range_pan_double;
208
+ double position_center_right_range_pan_double;
209
+ double position_center_left_range_pan_double;
209
210
210
211
valid_section &= jitsuyo::assign_val (position_section, " min_x" , position_min_x);
211
212
valid_section &= jitsuyo::assign_val (position_section, " max_x" , position_max_x);
@@ -222,7 +223,8 @@ void Locomotion::set_config(const nlohmann::json & json)
222
223
valid_section &= jitsuyo::assign_val (position_section, " max_range_tilt" , position_max_range_tilt_double);
223
224
valid_section &= jitsuyo::assign_val (position_section, " min_range_pan" , position_min_range_pan_double);
224
225
valid_section &= jitsuyo::assign_val (position_section, " max_range_pan" , position_max_range_pan_double);
225
- valid_section &= jitsuyo::assign_val (position_section, " center_range_pan" , position_center_range_pan_double);
226
+ valid_section &= jitsuyo::assign_val (position_section, " center_right_range_pan" , position_center_right_range_pan_double);
227
+ valid_section &= jitsuyo::assign_val (position_section, " center_left_range_pan" , position_center_left_range_pan_double);
226
228
227
229
position_min_delta_tilt = keisan::make_degree (position_min_delta_tilt_double);
228
230
position_min_delta_pan = keisan::make_degree (position_min_delta_pan_double);
@@ -232,7 +234,8 @@ void Locomotion::set_config(const nlohmann::json & json)
232
234
position_max_range_tilt = keisan::make_degree (position_max_range_tilt_double);
233
235
position_min_range_pan = keisan::make_degree (position_min_range_pan_double);
234
236
position_max_range_pan = keisan::make_degree (position_max_range_pan_double);
235
- position_center_range_pan = keisan::make_degree (position_center_range_pan_double);
237
+ position_center_right_range_pan = keisan::make_degree (position_center_right_range_pan_double);
238
+ position_center_left_range_pan = keisan::make_degree (position_center_left_range_pan_double);
236
239
237
240
if (!valid_section) {
238
241
std::cout << " Error found at section `position`" << std::endl;
@@ -887,15 +890,15 @@ bool Locomotion::position_kick_custom_pan_tilt(const keisan::Angle<double> & dir
887
890
return false ;
888
891
}
889
892
890
- bool Locomotion::position_kick_range_pan_tilt (const keisan::Angle<double > & direction, bool precise_kick, bool left_kick)
893
+ bool Locomotion::position_kick_range_pan_tilt (const keisan::Angle<double > & direction, bool precise_kick, bool left_kick, bool is_positioning_center )
891
894
{
892
895
auto tilt = robot->get_tilt ();
893
896
auto pan = robot->get_pan ();
894
897
auto delta_direction = (direction - robot->orientation ).normalize ().degree ();
895
898
896
899
bool tilt_in_range = tilt > position_min_range_tilt && tilt < position_max_range_tilt;
897
- bool right_kick_in_range = pan > position_min_range_pan && pan < -position_center_range_pan ;
898
- bool left_kick_in_range = pan > position_center_range_pan && pan < position_max_range_pan;
900
+ bool right_kick_in_range = pan > position_min_range_pan && pan < -position_center_right_range_pan ;
901
+ bool left_kick_in_range = pan > position_center_left_range_pan && pan < position_max_range_pan;
899
902
bool pan_in_range = precise_kick ? (left_kick ? left_kick_in_range : right_kick_in_range) : (right_kick_in_range || left_kick_in_range);
900
903
bool direction_in_range = std::fabs (delta_direction) < position_min_delta_direction.degree ();
901
904
@@ -907,6 +910,10 @@ bool Locomotion::position_kick_range_pan_tilt(const keisan::Angle<double> & dire
907
910
if (!precise_kick) left_kick = pan > 0 .0_deg;
908
911
auto target_pan = left_kick ? left_kick_target_pan : right_kick_target_pan;
909
912
913
+ if (is_positioning_center) {
914
+ target_pan = (left_kick) ? position_center_left_range_pan : -position_center_right_range_pan;
915
+ }
916
+
910
917
double delta_pan = (target_pan - pan).degree ();
911
918
double y_speed = 0.0 ;
912
919
0 commit comments