参考文章前两篇是 CSDN 的,又一次让我见识到 CSDN 的文章质量之低了。
写这篇文章的目的,是 Livox LiDAR 发布的格式是 CustomMsg,没有办法用 rviz 直接可视化,必须重新发布为 PointCloud2 格式或者使用 C++ 通过驱动直接解析。
安装
先编译并安装 Livox 的SDK:
git clone https://github.com/Livox-SDK/Livox-SDK.git
mkdir build
cd build
cmake .. && make
sudo make install -j8
然后下载 Livox 的 Driver:
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src
这里已经创建好 ws_livox/src 这个文件夹,并且把 livox_ros_driver 作为功能包克隆下来了。
然后, 进入 src 并下载 repub 的功能包:
git clone https://github.com/jianfee/livox_repub.git
返回 ws_livox 工作空间目录并编译:
catkin_make
最终 ws_livox 文件夹结构应该是这样的, build 和 devel 两个文件夹的内容是编译自动产生的, 被我略去。
(cv) jetson@funnywii-orin:~/Documents/LiDAR/ws_livox$ tree -L 2
.
├── build
├── devel
└── src
├── CMakeLists.txt -> /opt/ros/noetic/share/catkin/cmake/toplevel.cmake
├── images
├── LICENSE.txt
├── livox_repub
├── livox_ros_driver
├── README_CN.md
└── README.md
然后在 ws_livox 目录下执行:
source devel/setup.bash
roslaunch livox_repub livox_repub.launch
运行
首先播放 Livox 的 rosbag,其 rostopic为 /livox/lidar,repub出来的新话题为 /livox_pcl0。
然后打开 rviz,修改话题为 /livox_pcl0,修改Fixed Frame为 /livox。即可看到 PointCloud2 格式的点云。
最后用ros录制 /livox_pcl0 为话题的点云即可。
订阅代码
如果是想直接使用 C++ 订阅 Livox 发布的点云,也是可行的,但是也要安装好上面提到的 SDK 和包。
首先修改 CMakeLists.txt:
find_package(catkin REQUIRED COMPONENTS
message_generation
message_runtime
roscpp
rospy
std_msgs
sensor_msgs
livox_ros_driver # 增加这一行
)
然后引用头文件:
#include "livox_ros_driver/CustomMsg.h"
C++ 回调函数:
bool awaken_detect_ = true;
void LidarCallback(const livox_ros_driver::CustomMsgConstPtr msg) {
if (awaken_detect_ == true) {
pcl::PointCloud<pcl::PointXYZI>::Ptr input_lidar_cloud(new pcl::PointCloud<pcl::PointXYZI>);
for (unsigned int i = 0; i < msg->point_num; ++i) {
pcl::PointXYZI pointxyzi;
pointxyzi.x = msg->points[i].x;
pointxyzi.y = msg->points[i].y;
pointxyzi.z = msg->points[i].z;
pointxyzi.intensity = ((int)msg->points[i].reflectivity) / 255.0;
(*input_lidar_cloud).push_back(pointxyzi);
}
std::cout << "Lidar point cloud size: " << input_lidar_cloud->size() << std::endl;
}
}
需要注意的是,在编译之前要先 source 一下 livox_ros_driver和 livox_repub 工作空间的 setup.bash
然后 catkin_make 编译代码即可。
参考文章
[1] 将rosbag中livox CustomMsg格式转为Pointcloud2格式_rosbag中custommsg转pointcloud2-CSDN博客
评论