使用ubuntu20.04,ros noetic 安装livox_ros_driver遇到如下报错:
home/robot/ws_livox/src/livox ros_driver/livox ros_driver/lddc.cpp:344:31:
required from here
opt/ros/noetic/include/ros/message traits.h:125:14: error: 'const class std::sh
ared_ptr<pcl::PointCloud<pcl::PointXYZI> s’ has no member named (
-_getMD5Sum
125 getMD5Sum().c str();
/opt/ros/noetic/include/ros/serialization.h:145:14: error:
"const class std::shar
ed ptrspcl::Pointcloudspcl::PointXYZ1> > has no member named 'serializationlen
gth
145 return t.serializationLength():
大部分方法都是在报错的文件里加入头文件#include <pcl_ros/point_cloud.h>,但是这些文件里原本就有这个头文件,所以这个方法没用。
这个报错的原因是pcl和ros之间的消息转换问题。首先找到报错的文件,我这里是lddc.cpp的344行。把
p.publisher->publish(cloud);
改为
p.publisher->publish(*cloud);
还有347行的cloud 改为*cloud。
重新编译即可