看了好几篇文章,按其他文章做的还是有报错,继续搜报错才完全解决问题,在此先将流程写一下。
sudo apt-get install libnlopt-dev
mkdir -p lidar_align_ws/src
cd lidar_align_ws/src
git clone https://github.com/ethz-asl/lidar_align
cd ..
catkin_make
报错,将 lidar_align 文件夹下的 NLOPTConfig.cmake 复制到 ROS工作空间lidar_align_ws/src路径下面,再次编译
报错,输入以下命令
//依次运行以下指令
sudo mv /usr/include/flann/ext/lz4.h /usr/include/flann/ext/lz4.h.bak
sudo mv /usr/include/flann/ext/lz4hc.h /usr/include/flann/ext/lz4.h.bak
sudo ln -s /usr/include/lz4.h /usr/include/flann/ext/lz4.h
sudo ln -s /usr/include/lz4hc.h /usr/include/flann/ext/lz4hc.h
catkin_make
成功编译
应该还要改接口,但是我暂时没有改。
在此描述一下编译经历。
ubuntu16.04 lidar_align实现三维激光雷达和Imu联合标定_berry丶的博客-CSDN博客
首先查看的该链接教程,结果他完成下面一步就成功了
解决办法:
将 lidar_align 文件夹下的 NLOPTConfig.cmake 复制到 ROS工作空间lidar_align_ws/src路径下面,再次编译
编译完成
然后我的有报错
[ 16%] Building CXX object lidar_align/CMakeFiles/lidar_align.dir/src/loader.cpp.o
In file included from /usr/include/flann/util/serialization.h:9:0,
from /usr/include/flann/util/matrix.h:35,
from /usr/include/flann/flann.hpp:41,
from /usr/include/pcl-1.8/pcl/kdtree/flann.h:50,
from /usr/include/pcl-1.8/pcl/kdtree/kdtree_flann.h:45,
from /home/cyp/lidar_align_ws/src/lidar_align/include/lidar_align/sensors.h:8,
from /home/cyp/lidar_align_ws/src/lidar_align/include/lidar_align/loader.h:7,
from /home/cyp/lidar_align_ws/src/lidar_align/src/loader.cpp:5:
/usr/include/flann/ext/lz4.h:196:57: error: conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’
typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
^~~~~~~~~~~~
In file included from /opt/ros/melodic/include/roslz4/lz4s.h:38:0,
from /opt/ros/melodic/include/rosbag/stream.h:46,
from /opt/ros/melodic/include/rosbag/chunked_file.h:46,
from /opt/ros/melodic/include/rosbag/bag.h:41,
from /home/cyp/lidar_align_ws/src/lidar_align/src/loader.cpp:2:
/usr/include/lz4.h:196:57: note: previous declaration as ‘typedef struct LZ4_stream_t LZ4_stream_t’
typedef struct { long long table[LZ4_STREAMSIZE_U64]; } LZ4_stream_t;
^~~~~~~~~~~~
In file included from /usr/include/flann/util/serialization.h:9:0,
from /usr/include/flann/util/matrix.h:35,
from /usr/include/flann/flann.hpp:41,
from /usr/include/pcl-1.8/pcl/kdtree/flann.h:50,
from /usr/include/pcl-1.8/pcl/kdtree/kdtree_flann.h:45,
from /home/cyp/lidar_align_ws/src/lidar_align/include/lidar_align/sensors.h:8,
from /home/cyp/lidar_align_ws/src/lidar_align/include/lidar_align/loader.h:7,
from /home/cyp/lidar_align_ws/src/lidar_align/src/loader.cpp:5:
/usr/include/flann/ext/lz4.h:249:72: error: conflicting declaration ‘typedef struct LZ4_streamDecode_t LZ4_streamDecode_t’
edef struct { unsigned long long table[LZ4_STREAMDECODESIZE_U64]; } LZ4_streamDecode_t;
^~~~~~~~~~~~~~~~~~
In file included from /opt/ros/melodic/include/roslz4/lz4s.h:38:0,
from /opt/ros/melodic/include/rosbag/stream.h:46,
from /opt/ros/melodic/include/rosbag/chunked_file.h:46,
from /opt/ros/melodic/include/rosbag/bag.h:41,
from /home/cyp/lidar_align_ws/src/lidar_align/src/loader.cpp:2:
/usr/include/lz4.h:249:72: note: previous declaration as ‘typedef struct LZ4_streamDecode_t LZ4_streamDecode_t’
edef struct { unsigned long long table[LZ4_STREAMDECODESIZE_U64]; } LZ4_streamDecode_t;
^~~~~~~~~~~~~~~~~~
lidar_align/CMakeFiles/lidar_align.dir/build.make:110: recipe for target ‘lidar_align/CMakeFiles/lidar_align.dir/src/loader.cpp.o’ failed
make[2]: *** [lidar_align/CMakeFiles/lidar_align.dir/src/loader.cpp.o] Error 1
CMakeFiles/Makefile2:510: recipe for target ‘lidar_align/CMakeFiles/lidar_align.dir/all’ failed
make[1]: *** [lidar_align/CMakeFiles/lidar_align.dir/all] Error 2
Makefile:140: recipe for target ‘all’ failed
make: *** [all] Error 2
Invoking “make -j12 -l12” failed
然后参考https://blog.csdn.net/weixin_42141088/article/details/118000544解决问题。