1

我正在使用 rospy 获取我的机器人位置的数据并实时绘制它。

这就是我所拥有的:

 self.plot_pose()

 def plot_pose(self):
     plt.plot(self.pose[0], self.pose[1], 'o', color='green')
     plt.plot([self.pose[0], self.pose[0] - 0.5*np.cos(self.pose[2])],
              [self.pose[1], self.pose[1] + 0.5*np.sin(self.pose[2])],
              'k-', color='red', lw=2)

     plt.show(block=False)
     plt.pause(0.0001)

不幸的是,这并没有抹去情节,而是覆盖了一切。所以我尝试使用

plt.clf()
plt.cla()

第一个给了我弃用错误,第二个给了我一个空白的情节出于某种原因。我正在使用 python2.7 和 rospy 库。

任何有关如何更新情节的建议将不胜感激。

4

1 回答 1

1

这与通常的动画相同。尽量避免每次交互都创建新图,而是更新旧图。

self.point, = plt.plot([],[], 'o', color='green')
self.line, =  plt.plot([],[], ls="-", color='red', lw=2)
plt.show(block=False)
self.plot_pose()

def plot_pose(self):
    self.point.set_data(self.pose[0], self.pose[1])
    self.line.set_data([self.pose[0], self.pose[0] - 0.5*np.cos(self.pose[2])],
                       [self.pose[1], self.pose[1] + 0.5*np.sin(self.pose[2])])

    plt.pause(0.0001)

如果点在图之外,您可能需要调整图 ( plt.xlim(), ) 的范围。plt.ylim()

于 2017-10-31T16:47:49.607 回答