【ubuntu20安装PCAT点云标注工具】

项目地址

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。

解决方案

  1. 修改 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,文件夹下自动填充一下文件,之后按照教程进行标注即可。