autoware源码编译
1. 安装前
尽量保证系统是一个干净的系统,我是根据官方要求,重新在电脑上安装了Ubuntu 22.04,显卡为3080显卡。
同时,先用鱼香ROS的办法安装ROS2 humble,这里非常重要。由于按照鱼香ROS安装ROS的时候,会修改系统的源,这会让后续很多依赖的包都可以下载。具体命令如下:
source <(wget -qO- http://fishros.com/install)
参见官方链接:
https://github.com/fishros/install
2 Autoware的安装
具体的步骤参考官方的编译步骤即可。
autoware官方编译步骤:
https://autowarefoundation.github.io/autoware-documentation/main/installation/autoware/source-installation/
核心步骤
#下载Autoware相关仓库文件
git clone https://github.com/autowarefoundation/autoware.git
cd autoware#建立编译环境
./setup-dev-env.sh#下载Autoware源码
cd autoware
mkdir src
vcs import src < autoware.repos#安装ros依赖
source /opt/ros/humble/setup.bash
# Make sure all previously installed ros-$ROS_DISTRO-* packages are upgraded to their latest version
sudo apt update && sudo apt upgrade
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO#编译代码
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
3 编译过程中,遇到的问题
注意1
下载好autoware文件夹后,注意,使用命令如下(不要用官方的命令):
./setup-dev-env.sh --no-nvidia --no-cuda-drivers
这里表示不要自动安装NVIDIA相关的软件,因为这些软件都很大,网络不好的情况下,先不安装,手动安装。
Nividia套件,具体的安装链接参考:
https://blog.csdn.net/stanleyrain/article/details/153726839?spm=1001.2014.3001.5501
注意2
当询问是否安装artifacts时,选择否,否则,由于网络问题,经常安装不成功,后续可以使用如下命令单独进行下载,同样的,这个命令也可能需要多次才能成功。
注意,要在autoware文件夹中,执行这个命令
ansible-playbook autoware.dev_env.download_artifacts -e "data_dir=$HOME/autoware_data" --ask-become-pass

注意3
编译前,最后先安装autoware所有的依赖包,否则编译会提示缺少很多包
rosdep install -y --from-paths src --ignore-src --rosdistro humble
源码编译命令
colcon build --symlink-install --cmake-args -DCMAKE_BUILD_TYPE=Release
注意4
出现错误:
--- stderr: managed_transform_buffer
/home/stanley/autoware/src/universe/external/managed_transform_buffer/managed_transform_buffer/src/managed_transform_buffer.cpp:19:10: fatal error: pcl_ros/transforms.hpp: No such file or directory
19 | #include <pcl_ros/transforms.hpp>
| ^~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

解决办法,修改对应的CMakeLists.txt
stanley@zjf:~/autoware/src/universe/external/managed_transform_buffer/managed_transform_buffer$ vim CMakeLists.txt
![]()
# ==== 新增的依赖链接语句 ====
ament_target_dependencies(${PROJECT_NAME}
geometry_msgs
pcl_conversions
pcl_ros
rclcpp
sensor_msgs
tf2
tf2_eigen
tf2_geometry_msgs
)

