我有一些C ++代码,我使用以下方法给turtlebot一个坐标:
b
机器人从一个点移动到另一个点。然而,它很少直线地做到这一点。似乎turtlebot在完成旋转之前开始移动。两点之间没有任何障碍。它能够到达每个点,但它们之间往往会以小弧度移动。
关于如何在没有障碍物的情况下迫使机器人沿直线移动的任何想法?
修改:我使用goal.target_pose.pose.position.x = mypoint.point.x
goal.target_pose.pose.position.y = mypoint.point.y
和turtlebot_bringup minimal.launch
。
答案 0 :(得分:0)
解决方案是实现反馈控制,您可以在其中获得旋转反馈并在PID控制等简单控制方案中实现错误。 PID的伪代码如下:
Kp = .. //constant
Loop forever
read sensors
error = TargetValue - offset
integral = integral + error // calculate the integral
derivative = error - lastError // calculate the derivative
Turn = Kp*error + Ki*integral + Kd*derivative
lastError = error // save the current error so it can be the lastError next time around
end loop forever