本小白调试百度Apollo的教学小车踩到了很多坑,想要记录下来发到网上,帮助其他同小白少走的弯路(大佬们请忽略我这篇文章)。如有问题,希望各路大神能够及时指正。希望我们共同进步,共同发展,谢谢~
本篇文章的内容是小车刚开始安装调试过程中可能遇到的各种问题和解决方案,记录到循迹演示部分。
在开始正文前给大家一些很实用的小tips:
一定要仔细阅读百度给出的教程文件,网址如下:apollo/readme.md at r3.0.0,该教程中没有讲解的部分可以尝试在github-apollo项目里其他文件夹下的readme.md文件中查找。
此外在调不通的时候,可以多看看apollo系统的报错文件,apollo的所有报错文件都在/apollo/data/log下。
系统选择:
apollo系统需要运行在ubuntu系统上,此处强烈推荐使用Ubuntu桌面操作系统64位版本:ubuntu14.04.3,该版本也是官方推荐的版本,使用其他版本可能出现未知的问题。一定要注意系统架构应该是amd64,否则会在安装docker时带来问题
系统安装:
大多数情况下,按照百度和ubuntu的官方教程安装就不会有问题,这里给出几个比较少见的问题情况。
系统安装出现的问题与工控机的型号也有关系,我们工控机的型号是Novo-8108GC。
一、ubuntu安装界面黑屏只有一个下划线闪烁
在安装前的界面里,将光标移动到install ubuntu选项上,按e进入编辑界面,把splash和quiet改成nomodeset,之后再安装。如下两图所示。
二、ubuntu安装报错update-grub失败
首先可以尝试联网安装。
如果联网安装仍然报出相同的错误,那么可以尝试在开机之后按住F12,进入grub引导菜单。注意不是按F2进入BIOS设置菜单。在grub引导菜单中选择U盘启动,然后进行安装,可以避免update-grub失败。
一、CAN卡驱动安装
可以说在安装驱动过程中,最大的坑就是CAN卡驱动安装。
一定要做软链接!一定要编写.rules文件!
一定要做软链接!一定要编写.rules文件!
一定要做软链接!一定要编写.rules文件!
之所以说它是坑,是因为它在官方的总教程中没有明确给出,只有一些零零散散的文件中提到过。
做软链接的教程文件如下,esd_can readme.md,一定要注意,所有的操作都要在下面的路径下操作。
/apollo/third_party/can_cancard_library/esd_can
如果该路径下没有/include和/lib文件夹,那么就自己手动新建文件夹,然后再在相关的文件夹下进行操作。软链接所在的路径必须是正确的。
编写.rules文件可以参照该篇博客。编写.rules文件
二、显卡驱动安装
大家在显卡驱动安装不上时,一定要检查一下此时使用的是不是车载的显示器。只有当使用车载显示器时,显卡驱动才能正常安装,否则会由于显卡与显卡驱动不匹配而报出各种奇怪的错误。
安装完成后可以用下面的命令检查是否安装成功。若不报错,则说明安装成功。
nvidia-smi
针对github经常出现的下载速度慢或者出现提前终止的情况,这里提供两种解决方案。采用第二种方案无需修改hosts文件。
一、修改hosts文件
修改hosts文件以及查询github网站ip的方法可以参考这篇文章,解决GitHub下载速度缓慢的问题。该方法可以解决下载慢的问题,但是由于Apollo项目较大,下载提前终止的情况仍有可能出现。此时可以采用第二种方案。
二、将Apollo项目导入码云并使用ssh协议下载
由于码云的服务器位于国内,因此将项目导入到码云后,也可以直接解决下载速度慢的问题,而不需要修改hosts文件。若再次碰到下载提前终止的情况,可以采用SSH方式进行下载。SSH协议允许建立本机和gihub或码云之前的安全连接,更加的方便快捷。
将gihub上的项目导入到码云并保持同步更新的方法,大家可以参看这码云gitee的篇官方教程,如何将 GitHub 项目导入码云?一步搞定!。设置SSH的方法的方法可以参考下面这篇文章,github设置添加SSH。
按照官方教程启动apollo时,使用的是 bash docker/scripts/dev_start.sh
命令,该命令在每次运行时都会联网检查docker有无更新,若网络不好就会导致启动失败。
下面介绍一组不需要联网就可以启动docker环境的命令
cd ~/apollo
docker restart apollo_dev
bash docker/scripts/dev_into.sh
运行完上面这组命令后,终端就已经启动apollo成功,进入docker环境中了。之后是否打开dreamview均可。
还可以将上面这组命令写入一个sh脚本中,这样就可以实现只输入一个命令就启动apollo系统,大大简化了启动过程。
有时大家可能会遇到dreamview打开后,进入http://localhost:8888后页面显示黑屏的情况。此时可以换个浏览器打开即可解决该问题。
一般情况常用的浏览器有:
chrome、火狐
按照官方教程的定位模块配置做GPS的配置时,有下面几点注意事项,否组会出现问题。常见的报错如下:
/use_sim_time is not set, will not subscribe to simulated time [/clock] topic
如图所示:
如果出现上面的报错,请重新检查下面所说的四个注意事项是否都正确完成。
一、USB接口输出设置时要单行输入
理论上来讲,对串口进行配置时,可以逐条发送命令也可以一起发送给设备。但是由于某些未知原因,USB接口输出设置时,如果把所有的命令一起发送给M2设备,会导致串口调试软件cutecom不停刷屏滚动而不显示$cmd,config,ok*ff
字段。如下图所示。
若出现上述问题,就需要通过单行输入USB接口输出设置命令来解决,一定要确保每一条命令都有 $cmd,config,ok*ff
的反馈之后,再输入下一条命令。
二、串口配置完成后一定要保存
很多人都会马虎忘记这一步,配置完成后就直接断电重启了。但是没有保存过的配置在断电重启后就会清空,导致无法正常打开GPS模块。
因此这里特别强调一下,在完成所有的配置后,一定要输入
$cmd,save,config*ff
并看到 $cmd,config,ok*ff
的反馈之后,再进行断电重启。
三、修改ttyACM0权限
配置都完成后,可能会出现运行gps.sh失败的问题,这是由于没有修改ttyACM0的权限造成的。(ttyACM0就是M2主机所接串口的名称,由于具体情况不同该名称可能会有差别)请用下面的命令修改ttyACM0的权限。
sudo chmod 777 /dev/ttyACM0
请注意,每次对M2进行重新配置后,都需要修改ttyACM0的权限。
四、拷贝文件
如果运行 rostopic echo /apollo/sensor/gnss/best_pose
后接受不到数据,显示版章节刚开始提到的报错,那么就需要进行下述操作。
将
modules/calibration/data/vehicle_name/gnss_params/gnss_conf.pb.txt
拷贝到
modules/drivers/gnss/conf/gnss_conf.pb.txt
并且这两个文件中关于基站的配置也要进行相应的修改。
注意:百度的官方教程中说该操作是可能需要但不必须做的,但经过我们的实践,基本每一辆车都需要进行改操作。
五、GPS精度不够
GPS精度不够最有可能的问题是基站的配置不正确,建议大家回到前几步中重新检查基站的相关配置。
此处有一个小窍门可以帮助大家检查自己基站的配置是否正确:将自己车辆的GPS定位打开并移动到开阔的地方,然后联系千寻的客服,询问他们基站是否向自己的账号下传数据,如果没有,这说明账号未生效,基站的配置不正确。
循迹测试是对车辆底盘线控改造的一个综合测试,以及对apollo控制算法和传感器集成的综合测试。如果上面的各个步骤大家都完整无误的做完了,那么循迹演示不会出现问题。