优化 go_straight 函数中的方向计算逻辑,使用 IMU 数据来确定角度偏差,提升了机器人在前进和后退时的运动精度。
This commit is contained in:
parent
4a2ab00f8d
commit
2793daf8fe
@ -104,10 +104,11 @@ def go_straight(ctrl, msg, distance, speed=0.5, observe=False):
|
||||
dy = current_position[1] - start_position[1]
|
||||
distance_moved = math.sqrt(dx*dx + dy*dy)
|
||||
|
||||
# 计算移动方向与初始朝向的偏差
|
||||
movement_direction = math.atan2(current_position[1] - last_position[1],
|
||||
current_position[0] - last_position[0]) if distance_moved > 0.05 else start_yaw
|
||||
yaw_error = movement_direction - start_yaw
|
||||
# 根据前进或后退确定期望方向
|
||||
expected_direction = start_yaw if forward else (start_yaw + math.pi) % (2 * math.pi)
|
||||
|
||||
# 使用IMU朝向数据计算角度偏差
|
||||
yaw_error = current_yaw - expected_direction
|
||||
# 角度归一化
|
||||
while yaw_error > math.pi:
|
||||
yaw_error -= 2 * math.pi
|
||||
|
Loading…
x
Reference in New Issue
Block a user