如何连续捕获图像并同时控制基于时间的机器人?

时间:2018-02-08 16:11:24

标签: python multithreading image-processing raspberry-pi python-multithreading

这篇文章并不完全是一个编码问题,但更多的是代码结构化和同步问题。所以我使用Raspberry Pi创建了一个机器人,它在预定义的路径中移动,如附图所示。它从开始 - > A移动10秒,然后向左移动并移动5秒并继续直到它到达结束(为清楚起见,请参见图片)。所以,我有以下方式进行机器人运动的代码结构 -

for directions,time in database:
    while time!=0:
       continue movement in the specified direction .
       time--

所以,基本上它在Python中运行一个for循环,从名为“database”的列表变量中找到方向和时间并相应地前进。

问题的第二部分是,我在机器人上安装了一个摄像头,可以连续拍摄图像并执行某项任务,前提是检测到物体。以下机器人的代码结构是这样的 -

for frame in camera.continuous_capture():
   capture image()
   do some calculation() 
   if object in frame()==True:
      do something()

上述代码实际上是Picamera(Raspberry Pi)中使用的连续捕获方法。文档是 - https://picamera.readthedocs.io/en/release-1.10/recipes1.html#capturing-timelapse-sequences

现在,问题是 - 我希望将这种连续摄像头捕获算法与僵尸动作集成。比如说,机器人从Start->移动。 A,相机应该是活动的并且连续捕捉帧,并且机器人也应该移动。在检测到对象(如果存在)时,它应该停止当前路径的计时器,根据图像处理算法执行必要的操作并返回以在之前的路径中继续其运动。

如果单独运行,我的图像处理算法工作正常。 Bot运动也是如此。但是我无法弄清楚如何将这两个函数并排运行,因为它们都使用“While”循环,而将一个嵌套在另一个内部将不会给我所需的解决方案。

所以,我想知道如果“线程”是我应该做的?比如说,图像处理算法在检测到任何变化时改变全局变量,并且Bot运动算法同时跟踪全局变量。在检测到对全局变量的任何更改时,bot算法停止并让图像处理算法执行必要的功能。这是当前的方法还是有更好的解决方案?

请求帮助。请不要低估这个问题。我不是在拖钓,我也不是在寻找代码帮助,因为我可以自己解决这个问题。我只需要知道如何集成/构建我的代码。

谢谢!

Bot path.

0 个答案:

没有答案