大家好,我是李慢慢。
今天是2022年农历最后一天了,祝大家新年快乐。
近几日在家,一直在研究openpilot的安装及使用。算是成功了一半。因年后有其它安排,提前写写记录下,下次好继续。
在我们的OpenSIL项目中,openpilot将作为SIL平台的测试对象而存在。openpilot是commaai推出的开源驾驶辅助系统,目前含有ACC、ALC、FCW,LDW等功能。可以将openpiot软件安装到指定乐视手机上,再配合官方提供的一些小硬件,适配到目前市面上特定的几款车型上,以实现上述ADAS功能。
但我们OpenSIL的测试工作将在个人电脑上展开,好在openpiot也支持运行在个人电脑上,并且支持和carla进行联合调试,以验证软件的开发。官方甚至提供了carla和openpiot联合使用的方法说明。
openpilot的官网资料如下:
(1)官网:https://comma.ai/
(2)Github:https://github.com/commaai/openpilot
(3)官方文档:https://docs.comma.ai/
Dragonpilot 中文社区:http://dragonpilot.cn/
openpilot和carla联合使用的说明:
https://github.com/commaai/openpilot/tree/master/tools/sim#openpilot-in-simulator
以下简述docker版本的openpilot的下载及使用。
从github上可以下载下来源码,如下所示:
点击【Download ZIP】下载下来的文件并不完整,很多文件夹内(上图中带有@符号的文件夹)均是空的或者不全,需要在上述的github网页端一一进入该文件夹内,下载该部分,解压到本地同名文件夹内,进行补全。我这里也整理了下载完整的源码(master分支)网盘连接,如下:
下载链接见附件
然后进入如下路径:
path-to-op/openpilot-master/tools/sim
可以看到有如下的一些文件:
其中,start_openpilot_docker.sh脚本就是专门用来下载及安装及使用openpilot的自动化脚本。其内容如下:
理论来讲运行该脚本,就能自动拉取openpilot的docker镜像,并根据镜像创建容器,进入容器,运行程序。但我这里因为网速原因一直无法成功拉取,下面这个过程十分漫长,且最终还很容易失败。
因此,我特意找了国外的小伙伴(感谢@李阳波),帮忙按照上述的脚本拉取了镜像,拉取的方式如下所示:
docker pull ghcr.io/commaai/openpilot-sim:latest
拉取好之后,把镜像打包。
docker save -o IMAGE_ID commaai.tar
小伙伴给我拉取并打包好之后将包给我,我这边重新加载下这个镜像包,就可以免去自己拉取的反复失败的烦恼了。以下为加载的方法及过程:
docker load -i "镜像包名"
如果你也需要我这个镜像,可以从网盘下载openpilot的docker镜像:
下载链接见附件
加载完成后,发现REPOSITORY和TAG为none,因此我补充打个标签,方法如下。
然后,根据这个镜像创建个容器进去看看。
发现容器里的东西,其实就是openpilot的官方源码,和自己在官网下载的很相似。
接下来,尝试运行下openpilot的代码。
在启动openpilot之前,需要按照官方说明先启动carla,具体方法参考上一篇文章。
我这里启动carla的终端截图如下:
上面这个官方启动Carla的脚本,其实只是根据镜像创建了一个容器,容器内启动了carla的服务器,而且是没有界面的,需要自己根据显卡驱动的工作状态判断carla的服务器是否有成功启动。
启动carla后,重新运行下之前的【start_openpilot_docker.sh】脚本。但是要稍微改变下内容:
1)、我们不再需要拉取镜像了,因此注释掉就可以了。
2)、要把启动的镜像名改为我们刚刚打的标签名。
具体如下所示。
重新运行这个【start_openpilot_docker.sh】脚本(这个脚本将创建容器,进入制定目录分别运行【tmux_script.sh】这个脚本,这个脚本的作用是分别打开两个终端,运行两个脚本,一个是启动openpilot的【launch_openpilot.sh】,一个是运行连接openilot和carla的【bridge.py】),效果如下,成功启动了openpilot的ui界面。
我这里遇到了两个问题。
问题1:openpilot的ui界面里,是蓝屏,没有图像。这个根据github官网issues里的讨论,把【tmux_scripts.sh】脚本改改即可。其实就是在启动【bridge.py】时,指定“--high_quality --dual_camera”参数,修改后如下所示:
修改容器内的脚本参数后,重新启动这个容器,运行这个【tmux_scripts.sh】脚本,可以得到如下的效果。
第一个问题解决。
下面是第二个问题。
按照官网的说法,我在启动【bridge.py】这个脚本的终端,按下数字“1”,应该可以加速车辆使之进入自动驾驶状态的。但我发现我输入后,并无法实现这个效果,而是报了如下的错误。“openpilot Unavailable, Press Set to Engage”,在官网上发现好多人都碰到这个问题,然而目前并没有找到有效的解决方案。
然后我就卡在这里了。
年前就先到这里吧,年后再找找方法。
瑞斯拜。