autoware的安装真的是太太太难了,断断续续的竟然安装了四五个月==。
先说我的环境配置:
Linux:Ubuntu 16.04 LTS
ROS:Kinetic版
Qt:5.13.1版本
OpenCV:3.4.4
这些版本按照官方要求就可以,我也是事先用到就安装了,因此在这里不在介绍如何安装的问题。
一、安装包
查看关于autoware的博客,大部分讲的方法是从github上采用clone方式获取安装包,但是给的链接是被原作者迁移的,所以我们可以从其他分支下载,但是要注意的是,最新的autoware版本的没有标定和融合模块,所以在这给出autoware1.8.0链接,以方便大家下载autoware1.8.0。
二、安装
https://blog.csdn.net/yourgreatfather/article/details/86504547
在这篇博客里讲解的十分清楚,所以也不在赘述,大致将我是如何进行的介绍一下:
1、安装依赖:
% sudo apt-get update
% sudo apt-get install -y python-catkin-pkg python-rosdep python-wstool ros-$ROS_DISTRO-catkin libmosquitto-dev gksu
也许大部分人在此处都不会报错,但是我就是那一小部分 ==,日常艰难。
sudo apt-get update更新时报错 404 not found [ip: 91.189.95.83.80]
解决:
在博客https://blog.csdn.net/qq_44871442/article/details/102133758中给出解决方法:
1.执行命令:(找到文件目录)
cd /etc/apt/sources.list.d
2.进行修改:这里将它加bak后缀(设为备份文件)
ls
sudo mv n-muench-ubuntu-vlc-xenial.list n-muench-ubuntu-vlc-xenial.list.bak
先ls命令,列出文件,再执行move命令,修改文件名,完成之后,再执行sudo apt update就没有那个报错了!
ps:并不一定都是在n-muench-ubuntu-vlc-xenial后添加.bak后缀,要具体结合你报错代码的前边的文件名,从ls中找到,在添加.bak就可以了。
由此就可以完成环境搭建了,接下来按照博客所讲,在解压缩的文件中,
首先:
git init //不执行此步会报错:fatal: Not a git repository
然后:
git submodule update --init --recursive
接下来:
cd ~/你的解压缩文件夹/ros/src
catkin_init_workspace
然后:
去这里:下载文件,放在你的文件夹下的/ros/src/msgs文件下,然后按这里修改文件修改相应的文件。
接下来:
cd ../
rosdep install -y --from-paths src --ignore-src --rosdistro $ROS_DISTRO
./catkin_make_release
记忆中rosdep么有出现报错,但是在最后一步./catkin_make_release报错了。错误如下:
发现是nlopt的问题,但是我之前安装了nlopt,并且可用,所以当时调试了好久,最后在
报错的文件里的cmakelists.txt里,将
find_package() 添加: nlopt
include_directories() 添加: nlopt
target_link_libraries()添加: nlopt (两个target_link_libraries())
再次进行
./catkin_make_release
终于安装完成。
这种方法应该是最简单的了,其余的从github上用clone下载或者用docker方式,都有其他的要求,所以在这里记录一下,方便后来者。
三、autoware的使用
我主要用它来做相机和激光雷达的标定。所以更多的参考了两篇博客
无人驾驶汽车系统入门(二十二)——使用Autoware实践激光雷达与摄像机组合标定
Autoware–北科天绘rfans激光雷达使用相机&激光雷达联合标定文件验证点云图像融合效果
他们两人已经写的很详细了,最需要注意的就是激光雷达的话题,autoware默认的激光雷达话题是/points_raw,但是我们自己录制的话题并不一定是这个。
第二篇文章给出解决办法:
修改1:将路径/ros/src/sensing/fusion/packages/points2image/nodes/points2image这个路径下的points2image.cpp中points_topic = “/points_raw”;改成自己的话题:points_topic = “你的激光雷达发布的话题”; 可以用rosbag info **.bag查看。
修改2:将路径/ros/src/util/packages/runtime_manager/scripts这个路径下的points2image.launch文件中的 改为
此外还要补充的一点是,上边的两个修改主要是作用在将激光雷达的点云投影到图像上,在求相机与激光雷达之间的旋转矩阵和平移向量时,还有一个地方要进行修改,否则不显示点云:
修改3:将路径/ros/src/sensing/fusion/packages/calibration_camera_lidar/nodes/calibration_toolkit文件中的mainwindow.cpp的 QString velodynetopic="/points_raw";中的/points_raw同样改为自己的激光雷达话题。
最后,修改之后一定要重新编译一下!
另外如果不想采用上述方法,博客激光雷达(lidar)和相机(camera)联合标定调研(基于Autoware的详细步骤)
中提到:
rosbag的制作,使用ros格式数据就可以了,比如点云为ros的PointCloud2,直接发布话题,然后用rosbag record /image /point_cloud 记录下rosbag就可以了。
在之后的输出用rosbag play /image:=image_raw /point_cloud:=points_raw,就可以将自己的topic名转换成Autoware标定程序需要的image_raw和points_raw。在rosbag play时可以按空格暂停。
这种方法我还没有尝试过,大家可以试一下。
完结撒花!