我正在 ROS 中为turtlesim 进行模拟。
在 turtlesim 中,有一只乌龟“A”开始在 2D 环境中绕圈移动。还有一只乌龟“B”需要追赶 A 并捕捉,但 B 在 A 10 秒后生成,B 可以每 5 秒知道 A 的姿势(x,y,theta,线性速度,角度速度)。这意味着 B 不知道 A 的当前位置。我需要根据 A 的最后一个可用姿势在一定时间(例如 15 秒)后预测 A 的位置,以便在 A 到达其未来位置时,B可以提前到达那个位置并在那里等待A,当A到达那个位置时,B抓住A。
我正在尝试使用扩展卡尔曼滤波器来预测姿势,但它没有给出正确的预测姿势。
代码链接:我的要点
注意:step_vel 函数接受速度命令并将其发布。
我不考虑测量,因为我们没有任何测量。 我们只有以下 A 的信息:
我哪里错了?
我正在阅读您的代码时的注释:
self.__x = predicted_x
,但随后你会在 49-51 上执行 self.__x[0] += self.__linear_vel * np.cos(self.__x[2]) * dt
以及一些类似的行。这很可能是过滤器的问题;请注意 49-51 正在执行的操作与 F 定义的动态之间的差异。