第1章:环境搭建——Ubuntu系统配置、ROS/ROS2安装、Apollo与Autoware源码编译与部署
大家好,我是你们的老朋友。今天咱们来聊聊环境搭建这件事。
说实话,很多同学觉得环境搭建就是「装个系统、装个ROS、然后编译」——听起来很简单对吧?但我在实际项目中踩过的坑,十个手指头都数不过来。有一次,我花了一整天时间编译Apollo,结果发现是Ubuntu版本不对,直接白干。嗯,从那以后,我每次搭环境都会先确认三件事:系统版本、依赖库版本、以及——我的咖啡够不够喝。
好,咱们正式开始。
1.1 Ubuntu系统配置
我个人习惯用Ubuntu 18.04或20.04。为什么?因为Apollo和Autoware对这两个版本支持最好。你想想看,如果选了个太新的版本,依赖库可能不兼容,编译报错能让你怀疑人生。
安装步骤其实很简单:
- 下载Ubuntu 18.04.5 LTS或20.04.3 LTS的ISO镜像
- 用Rufus或balenaEtcher制作启动U盘
- 安装时选择「最小安装」,避免不必要的软件包
- 分区建议:/ 分区50GB,/home 分区剩余空间,swap 8GB
- 安装完成后,先执行
sudo apt update && sudo apt upgrade -y
这里有个小技巧:安装完成后,我建议你立刻安装一些基础工具:
sudo apt install -y git vim curl wget build-essential cmake python3-pip
为什么要装这些?因为后面编译Apollo和Autoware时,这些工具一个都少不了。我曾经因为没装cmake,编译到一半报错,气得我直接重装了系统——当然,那是年轻时候的事了。
1.2 ROS/ROS2安装
ROS和ROS2,说白了就是自动驾驶的「操作系统」。Autoware依赖ROS1(Melodic或Noetic),Apollo则用ROS2(Foxy或Galactic)。
你可能会问:能不能只装一个?答案是:不能。因为两个框架的通信机制完全不同。我在项目中试过用ROS1桥接ROS2,结果延迟高得离谱,最后老老实实装了双版本。
1.2.1 安装ROS1(Melodic)
如果你用Ubuntu 18.04,就装Melodic。步骤很简单:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
sudo apt update
sudo apt install -y ros-melodic-desktop-full
echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
安装完成后,记得初始化rosdep:
sudo rosdep init
rosdep update
1.2.2 安装ROS2(Foxy)
Apollo 6.0及以上版本需要ROS2 Foxy。安装命令如下:
sudo apt update && sudo apt install -y curl gnupg2 lsb-release
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2-latest.list'
sudo apt update
sudo apt install -y ros-foxy-desktop python3-colcon-common-extensions
echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc
注意:ROS1和ROS2的source命令不能同时放在.bashrc里,否则会冲突。我建议你分别创建两个别名:
alias ros1='source /opt/ros/melodic/setup.bash'
alias ros2='source /opt/ros/foxy/setup.bash'
这样,每次打开终端,你只需要输入ros1或ros2就能切换环境。嗯,这个小技巧我用了好几年,非常顺手。
1.3 Apollo源码编译与部署
Apollo的编译,说白了就是一套自动化流程。但如果你不了解它的依赖关系,很容易卡住。
1.3.1 下载源码
git clone https://github.com/ApolloAuto/apollo.git
cd apollo
git checkout v6.0.0
我建议你切到v6.0.0这个稳定版本。为什么?因为master分支经常有更新,可能不稳定。我在项目中吃过这个亏,编译到一半发现接口变了,气得我直接回滚。
1.3.2 安装依赖
Apollo提供了一个一键安装脚本:
bash docker/scripts/dev_start.sh
这个脚本会自动拉取Docker镜像并安装所有依赖。但要注意:你的电脑需要安装Docker,并且有至少20GB的磁盘空间。
1.3.3 编译
bash docker/scripts/dev_into.sh
./apollo.sh build_opt
编译时间取决于你的机器配置。我自己的机器(i7-10700K,32GB内存)大概需要40分钟。如果你用笔记本,可能得等一两个小时。这时候,我建议你去泡杯咖啡,或者看看文档。
1.3.4 部署
编译完成后,启动Dreamview:
bash scripts/bootstrap.sh
然后在浏览器打开 http://localhost:8888,就能看到Apollo的界面了。我第一次看到这个界面时,心里还挺激动的——毕竟折腾了整整一天。
1.4 Autoware源码编译与部署
Autoware的编译比Apollo简单一些,但坑也不少。
1.4.1 下载源码
git clone https://github.com/Autoware-AI/autoware.ai.git
cd autoware.ai
git checkout 1.14.0
同样,我建议用稳定版本。1.14.0是目前最稳定的版本,支持ROS Melodic。
1.4.2 安装依赖
Autoware提供了一个安装脚本:
cd autoware.ai
./install_dep.sh
这个脚本会自动安装所有依赖,包括Qt、OpenCV、PCL等。但要注意:如果你的网络不好,可能会下载失败。我建议你提前把依赖包下载好,或者用代理。
1.4.3 编译
cd autoware.ai
catkin_make
编译时间大概20-30分钟。如果你用 catkin_make -j4 可以加快速度,但小心内存不够。我试过用 -j8,结果直接内存溢出,系统卡死了。
source devel/setup.bash。否则你运行任何Autoware的命令都会报错。
1.4.4 部署
启动Autoware:
roslaunch runtime_manager runtime_manager.launch
然后你就能看到Autoware的图形界面了。说实话,第一次看到这个界面时,我觉得它比Apollo的Dreamview简陋一些,但功能很全。
1.5 知识体系总览
为了让你更直观地理解本章的知识结构,我画了一张图:
这张图展示了整个环境搭建的流程。说白了,就是先装好Ubuntu,再装ROS1和ROS2,最后分别编译Apollo和Autoware。每一步都有坑,但只要你按我的步骤来,应该不会出大问题。
1.6 避坑指南
最后,我总结几个常见的坑:
- 依赖冲突:ROS1和ROS2的依赖包可能冲突。我建议用Docker隔离,或者用虚拟环境。
- 磁盘空间不足:Apollo编译后大概占用15GB,Autoware占用10GB。确保你有至少50GB的空闲空间。
- 网络问题:下载依赖时经常超时。我建议用国内的镜像源,比如清华源或阿里源。
- 内存不足:编译时如果内存不够,可以加swap。我一般会加16GB的swap文件。
rosdep install --from-paths src --ignore-src -r -y 通常能解决大部分问题。
好了,环境搭建就讲到这里。记住,这一步虽然枯燥,但它是后面所有工作的基础。我见过太多同学因为环境没搭好,后面调试时各种报错,最后心态崩了。所以,耐心一点,一步一步来。
可可精品资料库