300 + 明星创业公司,3000 + 行业人士齐聚
全球人工智能与机器人峰会 GAIR 2017
,一同见证 AI 浪潮之巅!
目前仅剩少量余票,有需要的朋友抓紧了。
雷锋网按:
近日,“神奇小子”George Hotz 创办的自动驾驶初创公司 Comma.ai 在 Medium 撰文分享了其开发的一款开源驾驶助理 openpilot。
据雷锋网了解,Comma.ai 发布的第一款产品 Comma One 因为无法证明其安全性,一个月后被美国公路交通安全管理局叫停。随后 Hotz 转换思路,将 Comma.ai 的自动驾驶软件进行开源,甚至还提供了一份硬件组装指南,指导极客用户自己动手打造一个即插即用的辅助驾驶套件。
openpilot 便是这一思路下的产物。具体来说,openpilot 能实现对油门、刹车和方向的自主控制,控制时长最高可达 6 分钟(使用时驾驶员请注意观察路况)。我们来看看 openpilot 是如何工作的,也希望业内的行家来评判这种方式是否靠谱。
使用中的 openpilot
如何与汽车交流?
现在的市售车辆中,大多数都是通过多条控制器局域网路(CAN)总线将车辆的多个模组连接在一起的。其中一条 CAN 总线会连接在汽车自诊系统(OBD-II)上,其他的则大多数被隐藏在车辆内部面板之下。
图 1:panda
openpilot 可以用 NEO 或 panda 作为 CAN 的接口。由于 openpilot 采用开源设计,因此它还能支持 OpenXC、Kvaser 或者 CANBus Triple。
在 openpilot 最先支持的本田思域和 ILX 两款车上,所有的通讯只需要两条 CAN 总线就能完成,一条是车辆 CAN 总线,一条则为雷达 CAN 总线。不过,其他车辆可能会有所不同。
汽车能说哪国语言?
其实 CAN 是一种非常简单的协议,只靠一条总线,任何设备都能给局域网路上的其他设备发送信息。信息内会含有标识符,标准的 CAN 协议识别符长度为 11 比特,扩展版则为 29 比特。一条信息最长为 8 字节。
标准的 CAN 信息
标识符会决定如何解析信息,而 DBC 文件是指定解析方法的标准方式。下面这段代码就是从参与测试本田思域的 DBC 文件中截取出来的,从中我们可以看出转向控制包是如何解析的:
BO_ 228 STEERING_CONTROL: 5 ADAS
SG_ STEER_TORQUE : 7|16@0- (1,0) [-3840|3840] "" EPS
SG_ STEER_TORQUE_REQUEST : 23|1@0+ (1,0) [0|1] "" EPS
SG_ CHECKSUM : 39|4@0+ (1,0) [0|15] "" EPS
SG_ COUNTER : 33|2@0+ (1,0) [0|3] "" EPS
这段代码第一行的信息标识符是 228 或 0xE4,其他四行则展示了将四个字段打包填充进 5 字节信息的方法。