DonkeyCar入门教程-部件-说明

DonkeyCar入门教程-部件-说明

说明:

  • 介绍DonkeyCar用于控制小车的软件部分,部件

部件:

  • 封装车辆功能组件的Python类。
  • 这些包括:
  • 传感器 - 相机,激光雷达,里程表,GPS ...
  • 执行器 - 电机控制器驾驶仪 - 车道检测器,行为克隆模型,
  • 控制器 - 基于Web或蓝牙。
  • 存储 - TUB,或保存数据的方式。

举例:

  • 以下是如何使用PiCamera部件在每个驱动器循环的 'cam/img'通道中发布图像的示例。
V = dk.Vehicle()

#initialize the camera part
cam = PiCamera()

#add the part to the vehicle.
V.add(cam, outputs=['cam/img'])

V.start()

部件解析:

  • 所有部件共享一个通用结构,以便它们都可以由车辆驱动回路运行。
  • 这是一个接受数字的部分的例子,将其乘以一个随机数并返回结果。
import random 

class RandPercent:
    def run(self, x):
        return x * random.random()
    
  • 现在将其添加到车辆中:
V = dk.Vehicle()

#initialize the channel value
V.mem['const'] = 4

#add the part to read and write to the same channel.
V.add(RandPercent, inputs=['const'], outputs=['cost'])

V.start(max_loops=5)

多线程部件:

  • 为了使车辆运转良好,驱动器循环必须每秒执行10-30次,所以缓慢的部件应该多线程执行以保持驱动器循环。
  • 线程部分需要定义在独立线程中运行的函数,并且要调用的函数将快速返回最近的值。
  • 下面是一个例子,说明如果运行功能第二次完成,如何使RandPercent部件线程化。
import random 
import time

class RandPercent:
    self.in = 0.
    self.out = 0.
    def run(self, x):
        return x * random.random()
        time.sleep(1)

    def update(self):
        #the funtion run in it's own thread
        while True:
            self.out = self.run(self.in)

    def run_threaded(self, x):
        self.in = x
        return self.out

    
  • part.run : function used to run the part
  • part.run_threaded : drive loop function run if part is threaded.
  • part.update : threaded function
  • part.shutdown

参考:

  • http://docs.donkeycar.com/parts/about/

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: donkeycar入门教程