前言:
Jetson AGX Orin只支持Ubuntu20.04及以上,而Ubuntu20.04对应的ROS版本为ROS noetic,PUTN作者提供的是支持Ubuntu 16.04和Ubuntu 18.04及对应的ROS版本(原文可参考如下链接),因此记录在ROS noetic上安装运行出现的问题。
一、 A-LOAM安装
整体依然按照Github A-LOAM进行安装(注意后续要将PUTN的源码和A-LOAM源码放到同一个工作空间的src目录下,提前安排好A-LOAM的安装位置),但是其中有一些步骤和源码内容需要修改,整理如下:
(1)按照 Github A-LOAM 安装流程安装ceres时的最后一步不用make install,采用sudo make install。
(2)在安装完整的ROS时会一并安装好PCL,ROS noetic对应的应该是PCL 1.10版本(查询命令:apt-cache show libpcl-dev),因此需要将A-LOAM源码中的CmakeList.txt的"-std=c++11"修改为"-std=c++14"。
"-std=c++11"
——>
"-std=c++14"
(3)在安装完整的ROS时会一并安装好OpenCV,ROS noetic自带的是OpenCV4.2.0版本(查询命令:opencv_version),因此需要修改A-LOAM源码中的头文件,同时也需要修改
OpenCV读取图片时的API传参,具体修改如下:
1.将A-LOAM/src/scanRegistration.cpp中的头文件
#include <opencv/cv.h>
修改为:
#include <opencv2/opencv.hpp>
2.将A-LOAM/src/kittiHelper.cpp中的第91行和93行的
CV_LOAD_IMAGE_GRAYCALE
修改为:
cv::IMREAD_GRAYSCALE
(4) 运行A-LOAM时只有一条绿色的里程计轨迹没有点云信息,需要将A-LOAM/src下的三个文件laserMapping.cpp和scanRegistration.cpp和laserOdometry.cpp中的所有“/camera_init”改为“camera_init”。
二、PUTN安装
整体依然按照前言中的链接进行安装:
step1:slam模块的安装。上文已经安装好了A-LOAM。
step2:依赖项的安装。没什么大的改变,只需注意将melodic换成noetic就行。
step3:下载源码并编译(注意要将PUTN的源码和A-LOAM源码放到同一个工作空间的src目录下)。也要将melodic换成noetic,同时要注意自己把PUTN源码放到了哪个工作空间下,不要无脑地复制运行。
比如说你想把PUTN源码放到了已有的工作空间catkin_ws下,那么第一句 “mkdir……”就不需要,直接cd catkin_ws/src/后git clone源码,再执行其他命令即可。
报错:catkin_make后会发现有大量的报错,主要有三个方面:
a. 关于PCL的报错。原因还是因为c++版本不对,将PUTN源码中的所有"std=c++11"改为"std=c++14"。
b. src/putn/src/putn/putn_planning/CMakeLists.txt中未修改和添加依赖。具体内容可以参考这篇文章:https://blog.csdn.net/xiaoguanghaohao/article/details/125860602 。
c. 上面两个问题解决后其实已经可以编译通过了,但运行仿真时仍然会有问题,具体表现为:rviz中一片空白。解决办法可以参考https://github.com/jianzhuozhuTHU/putn/issues/3。简单总结如下:
1.
文件putn/src/scout_simulator/scout_description/urdf/scout_v2.xacro中第十二行的:
<HDL-32E parent="base_link" name="velodyne" topic="/velodyne_points" hz="10" samples="440" gpu="false" lasers="32" max_range="100">
<origin xyz="0 0 0.3" rpy="0 0 0" />
</HDL-32E>
修改为:
<xacro:HDL-32E parent="base_link" name="velodyne" topic="/velodyne_points" hz="10" samples="440" gpu="false" lasers="32" max_range="100">
<origin xyz="0 0 0.3" rpy="0 0 0" />
</xacro:HDL-32E>
也就是添加了两个"xacro"
2.
文件PUTN/SRC/PUTN/putn_planning/SRC/PUTN_vis.cpp中第52行的:
map_vis.header.frame_id = "/world";
修改为:
map_vis.header.frame_id = "world";
也就是去掉了"/"
step4: 按照原文章步骤4添加上权限即可。