各位读者朋友,本次打造的自动驾驶仿真系统,涉及感知,预测,规控等多个模块(以规控算法为主),同时可自定义相关扩展(部署&开发自身感兴趣的算法),非常便捷。笔者在此系列中开发的规控算法主要依据专栏《自动驾驶Planning决策规划》中的章节逐步搭建,后续实践系列涉及的博客包括但不局限于以下内容:
《打造自动驾驶系统之环境准备(一)》
《打造自动驾驶系统之定位模块开发(二)》
《打造自动驾驶系统之导航模块开发(三)》
《打造自动驾驶系统之参考线平滑开发(四)》
《打造自动驾驶系统之感知环境开发(五)》
《打造自动驾驶系统之预测模块开发(六)》
《打造自动驾驶系统之决策模块开发(七)》
《打造自动驾驶系统之轨迹生成模块开发(八)》
《打造自动驾驶系统之控制模块开发(九)》
最终呈现的静态效果(无法直接贴视频)如下:
1 系统环境
Ubuntu18.04或者Ubuntu20.04;
笔者的环境:Ubuntu 18.04 上安装 ROS Melodic。
2 ROS的安装
目前很多智驾企业都是基于dds自研的通信中间件,笔者的搭建的环境是基于ROS的。
(1)脚本安装
网上已经有网友整理了脚本安装:
wget http://fishros.com/install -O fishros && sudo ./fishros
(2)正常安装
首先建议用清华或者阿里的源,然后网速稍微好点的环境。
网上还有很多的ROS安装教程,但执行完成所有命令后,有的时候可能会遇到最后执行rosdep update失败的情况。
请不要慌张,遇到报错问题,直接网上搜索报错原因即可,以笔者多年的ROS安装经验,遇到的问题网上都有解决办法,因此ROS的安装笔者就不赘述了。
3 算法常用库的安装
3.1 eigen
在安装完ROS之后,系统会自动把Eigen库安装上,但头文件不能直接引用。
系统默认eigen3的安装位置为:
/usr/local/include/eigen3/
只使用find_package(Eigen3 REQUIRED)命令或者引用头文件的话有可能无法找到,因此还需要做如下的链接工作:
sudo ln -s /usr/local/include/eigen3/Eigen /usr/include/Eigen
sudo ln -s /usr/local/include/eigen3/unsupported /usr/include/unsupported #unsupported主要用于三维矩阵Tensor的定义运算
3.2 protobuf
除了ROS msg之外,还需要额外的通信中间消息体,protobuf的好用程度远大于ROS msg。
(1)下载源码
(2)编译安装
git clone https://github.com/protocolbuffers/protobuf.git
cd protobuf
git submodule update --init --recursive
./autogen.sh
./configure
make
sudo make install
sudo ldconfig
3.3 glog
(1)下载源码
(2)编译安装
git clone https://github.com/google/glog
sudo apt-get install autoconf automake libtool
cd glog
mkdir build
cd build
cmake ..
make -j 8
sudo make install
sudo ldconfig
3.4 gflag
(1)下载源码
(2)编译安装
git clone https://github.com/gflags/gflags.git
cd gflags
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=ON -DGFLAGS_NAMESPACE=gflags ../
make -j4
sudo make install
sudo ldconfig
3.5 osqp
(1)下载源码
(2)编译安装
这里注意区分0.5.0版本还是0.6.0或者更高版本,后续调用求解器接口略有区别,笔者安装的是0.5.0版本。
git clone --recursive https://github.com/oxfordcontrol/osqp
cd osqp
mkdir build
cd build
cmake .. -DBUILD_SHARED_LIBS=ON
make -j8
sudo make install
sudo ldconfig