livox_mid40激光雷达使用 (一) : 初始环境配置及初始点云显示

1 首先在Ubuntu16.04下将本机IP地址置于和雷达IP同一局域网下:默认初始雷达的静态IP地址为192.168.1.50(本文档中广播码对应的雷达静态IP为192.168.1.30)
2.1 安装Livox-SDK
  • 安装依赖
sudo apt install cmake pkg-config
  • 编译Livox-SDK,在 Livox SDK 目录中,执行以下指令编译工程:
git clone https://github.com/Livox-SDK/Livox-SDK.git
cd Livox-SDK
  • 安装 apr 库:
sudo apt install libapr1-dev
  • 最后
cd build && cmake ..
make
sudo make install

此时,Livox-SDK安装完成。

2.2 安装驱动livox-ros-driver
  • 从GitHub上获取驱动程序
git clone https://github.com/Livox-SDK/livox_ros_driver.git ws_livox/src

注意路径问题。(此时路径在上一步安装的SDK里面,需要从里面退出来)

  • 构建览沃 ROS 驱动程序
cd ws_livox
catkin_make
  • 使用如下命令更新当前 ROS 包环境
source devel/setup.bash

此时,驱动程序配置完成。

3 运行下面launch文件,在rviz下查看点云
roslaunch livox_ros_driver livox_lidar_rviz.launch bd_list:="0TFDH590061W721"

后面为雷达的广播码,每次启动launch文件时需要对应输入特定的广播码,在实体雷达的背面。(环境配置好,也可不用输入特定的广播码)

4 点云聚类输出最近障碍物

聚类教程及源码

以下是一个基于ROS的livox mid40型号激光雷达点云转成ros消息格式的C++代码,可能需要根据实际情况进行修改和适配: #include <ros/ros.h> #include <sensor_msgs/PointCloud2.h> #include <livox_ros_driver/LivoxEthPacket.h> #include <livox_ros_driver/PacketDecoder.h> ros::Publisher point_cloud_pub; PacketDecoder decoder; void livox_data_callback(const livox_ros_driver::LivoxEthPacket::ConstPtr& msg) { std::vector<livox_point> point_cloud; decoder.Decode(msg->data.data(), msg->data.size(), point_cloud); sensor_msgs::PointCloud2 cloud_msg; cloud_msg.header.stamp = ros::Time::now(); cloud_msg.header.frame_id = "livox_mid40"; cloud_msg.width = point_cloud.size(); cloud_msg.height = 1; cloud_msg.is_bigendian = false; cloud_msg.is_dense = true; sensor_msgs::PointCloud2Modifier modifier(cloud_msg); modifier.setPointCloud2FieldsByString(2, "xyz", "rgb"); sensor_msgs::PointCloud2Iterator<float> iter_x(cloud_msg, "x"); sensor_msgs::PointCloud2Iterator<float> iter_y(cloud_msg, "y"); sensor_msgs::PointCloud2Iterator<float> iter_z(cloud_msg, "z"); sensor_msgs::PointCloud2Iterator<uint8_t> iter_r(cloud_msg, "r"); sensor_msgs::PointCloud2Iterator<uint8_t> iter_g(cloud_msg, "g"); sensor_msgs::PointCloud2Iterator<uint8_t> iter_b(cloud_msg, "b"); for (auto& p : point_cloud) { *iter_x = p.x / 1000.0f; *iter_y = p.y / 1000.0f; *iter_z = p.z / 1000.0f; *iter_r = p.r; *iter_g = p.g; *iter_b = p.b; ++iter_x; ++iter_y; ++iter_z; ++iter_r; ++iter_g; ++iter_b; } point_cloud_pub.publish(cloud_msg); } int main(int argc, char** argv) { ros::init(argc, argv, "livox_mid40_node"); ros::NodeHandle nh; point_cloud_pub = nh.advertise<sensor_msgs::PointCloud2>("livox_mid40_point_cloud", 10); ros::Subscriber livox_data_sub = nh.subscribe<livox_ros_driver::LivoxEthPacket>("livox_mid40_packets", 10, livox_data_callback); ros::spin(); return 0; }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生不过一闭一睁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值