Udacity-selfdriving car nanodegree复现遇到的问题及解决办法

邹嘉石
2023-12-01

对自动驾驶控制感兴趣就fork了https://github.com/YoungGer/Udacity-SelfDrivingCar-NanoDegree的项目,然后根据readme介绍安装各种软件和包,经过各种报错各种bug,经过数天的尝试终于复现了pid,MPC控制和path_planning 的演示效果。下面详细记录一下其中的过程。

环境,Ubuntu 18.04.2 LTS,64位,gcc version 7.3.0,GNU Make 4.1

git clone https://github.com/YoungGer/Udacity-SelfDrivingCar-NanoDegree.git获取NanoDegree中的所有项目,有点大,可以找一些方法只获取其中部分项目,参照https://blog.csdn.net/qq_35860352/article/details/80313078。另外git clone的下载速度也有办法提升,如https://blog.csdn.net/qing666888/article/details/79123742

pid,MPC控制和path_planning还有其他的几个项目的效果都需要动画演示,需要安装unity,可以从这里得到,http://beta.unity3d.com/download/fd37f3680b5f/public_download.html,3.1G,下载下来是unity-editor_amd64-2017.2.0b11.deb。安装它有两种方法我都试过,只有一种成功了但忘记了是哪种方法,读者可以两种都试试,分别是https://askubuntu.com/questions/905108/unity-3d-installation-error这种方法和https://www.jianshu.com/p/81734956dfb6

pid和MPC的仿真器是term2 simulator,path_planning的是term3 simulator。simulator解压后只是一个可运行文件,要运行simulator必须先sudo chmod +x simulator的文件名,然后双击该文件就可以在unity中打开。打开后可以手动控制汽车在道路上跑,手动用键盘控制不需要运行其他文件;也可以用pid和MPC控制算法控制小车,但是需要同时运行编译生成的pid或者mpc可执行文件。

pid的比较简单,按照readme来就行。pid的成功了path_planning的可以不用安装其他的软件包直接编译然后运行。MPC的Ipopt安装可能会出现错误,需要把MPC项目目录下的install_ipopt.sh和install-ubuntu.sh复制到主目录下。Eigen不用安装。Eigen3.3中的文件可能需要改动,因为可能出现报错/Eigen/src/Core/AssignEvaluator.h:838:49: required from ‘void Eigen::intern等等,可以按照这个改https://bitbucket.org/eigen/eigen/commits/b4f969795d1b0adbb43ebdd8c6bbcb42cb559687?at=3.3。然后可能报错json.cpp中第6057行error: wrong number of template arguments (1, should be 2),百度得到的解答说可能因为没有加括号,改成

return *(lhs.m_value.array)<*(rhs.m_value.array);

甚至后面类似的代码不用加括号都可以编译成功。但是运行会报错error while loading shared libraries: libcoinmumps.so.1: 。https://blog.csdn.net/pang040328/article/details/42495659这个说可能因为没有32位的库,试着安装库后再运行就运行无误了。

通过动画明显看到pid控制效果很差,速度不高而且车轮转角变化剧烈,拐弯多次几乎冲出跑道。动画也看出MPC控制效果较好,车速达到70mph,而且转角变化小而平稳,车身大概率保持在车道中央。车身前面的一条曲线是本时刻预测未来N个时刻的车的位置连接起来的。

 类似资料: