项目地址
github:
https://github.com/halostorm/PCAT_open_source
视频教学:
https://v.youku.com/v_show/id_XNDYxNjY4MDExMg==.html?spm=a2h0k.11417342.soresults.dtitle
https://v.youku.com/v_show/id_XNDYxNjY4MDI5Mg==.html?spm=a2hzp.8244740.0.0
安装ros
自行安装。
下载和安装
下载并解压PCAT_open_source
(源码地址:https://github.com/halostorm/PCAT_open_source) or
git clone https://github.com/halostorm/PCAT_open_source
安装PCAT_open_source
cpp
cd PCAT_open_source
sh install.sh
解决报错
1 缺头文件
cpp
/home/guo/文档/guo/PCAT_open_source/src/rviz_cloud_annotation/src/rviz_cloud_annotation_points_io.cpp:110:19: error: 'setw' is not a member of 'std'; did you mean 'set'?
110 | << std::setw(w) << weight_steps << std::setw(w) << file_weight_steps << "\n";
这个编译错误表明在 rviz_cloud_annotation_points_io.cpp 文件中,编译器找不到 std::setw 的定义。std::setw 是 C++ 标准库 中的一个函数,用于设置输出流的字段宽度。要解决这个问题,你需要在文件中包含 头文件。
解决方法
在 rviz_cloud_annotation_points_io.cpp 文件的开头添加以下头文件:
cpp
#include <iomanip> // 用于 std::setw
重新编译项目:
catkin_make
2 cv版本不兼容
cpp
/home/guo/文档/guo/PCAT_open_source/src/rviz_cloud_annotation/src/rviz_cloud_annotation_plugin.cpp:1553:51: error: 'CV_LOAD_IMAGE_COLOR' was not declared in this scope
1553 | cv::Mat image = cv::imread(imagePath.c_str(), CV_LOAD_IMAGE_COLOR);
这个错误是由于 OpenCV 版本更新导致的 API 变更。CV_LOAD_IMAGE_COLOR 是 OpenCV 2.x 的宏定义,在 OpenCV 3.x 和 4.x 中已被弃用,改用 cv::IMREAD_COLOR。
解决方案
- 修改 rviz_cloud_annotation_plugin.cpp 文件
将:
cpp
cv::Mat image = cv::imread(imagePath.c_str(), CV_LOAD_IMAGE_COLOR);
改为:
cpp
cv::Mat image = cv::imread(imagePath.c_str(), cv::IMREAD_COLOR);
3 yaml库版本不兼容
cpp
home/guo/文档/guo/PCAT_open_source/devel/lib/rviz_cloud_annotation/rviz_cloud_annotation_node: error while loading shared libraries: libyaml-cpp.so.0.5: cannot open shared object file: No such file or directory
process[annotation_rviz-3]: started with pid [10340]
#检查已安装的版本
cpp
ls /usr/lib/x86_64-linux-gnu/libyaml-cpp* # 查看是否存在更高版本(如libyaml-cpp.so.0.6)
#创建符号链接(指向 0.6 版本)
cpp
sudo ln -sf /usr/lib/x86_64-linux-gnu/libyaml-cpp.so.0.6 /usr/lib/libyaml-cpp.so.0.5
sudo ldconfig
#验证符号链接
cpp
ls -l /usr/lib/libyaml-cpp.so.0.5
4 pcl版本不兼容
cpp
/home/guo/文档/guo/PCAT_open_source/devel/lib/rviz_cloud_annotation/rviz_cloud_annotation_node: error while loading shared libraries: libpcl_segmentation.so.1.8: cannot open shared object file: No such file or directory
process[annotation_rviz-3]: started with pid [15211]
#一键式为所有PCL组件创建符号链接
cpp
for lib in $(ls /usr/lib/x86_64-linux-gnu/libpcl_*.so.1.10); do
sudo ln -sf $lib ${lib%.1.10}.1.8
done
sudo ldconfig
#验证创建结果
cpp
ls -l /usr/lib/x86_64-linux-gnu/libpcl_{segmentation,filters,common,io}.so.1.8
安装完成后
运行 sh run.sh
显示的rviz没有任何报错
导入pcd文件
复制待标注的点云.pcd格式文件到 lidar_annotation/pcd/ 文件夹下
(如果你手上只有.bin文件,可以参考这篇博客进行.bin文件转换为.pcd文件,链接为:https://blog.csdn.net/r1141207831/article/details/103795677)
(注意:标注工具默认支持激光雷达pcd格式点云,Field为[x,y,z,intensity],如果使用XYZRGB等其他pcd format,请在src/rviz_cloud_annotation/launch/annotation.launch中更改pcd_type参数的value.)
导入文件后再次运行sh run.sh,文件夹下自动填充一下文件,之后按照教程进行标注即可。