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/
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号