首页 > 其他分享 >使用livox mid 70提取特征点过程

使用livox mid 70提取特征点过程

时间:2024-10-23 15:35:03浏览次数:5  
标签:lidar rviz livox mid feature 70 点云 ros

参考链接

使用rviz显示bag数据

LOAM-Preprocessing

loam_livox

实现

第一版

读了一下驱动程序说明书

创建了ros环境,创建了demo功能包,创建了类,订阅话题"/livox/lidar"激光雷达数据,

不处理直接发布,发布话题"/full"

在rviz中查看。

说明书

首先,览沃 ROS 驱动程序可以看到广播码说明,luanch配置文件,我需要的是livox_lidar_rviz.launch连接览沃雷达设备,
向外发布 pointcloud2 格式的点云数据,自动加载rviz

览沃 ROS 驱动程序中的所有内部参数都位于 launch 文件中,常用的三个参数

参数名 详细说明 默认值
publish_freq 设置点云发布频率 浮点数据类型,推荐值 5.0,10.0,20.0,50.0 等。 10.0
multi_topic LiDAR 设备是否拥有独立的 topic 发布点云数据 0 -- 所有 LiDAR 设备共同使用同一个 topic 发送点云数据 1 -- 每个 LiDAR 设备各自拥有独立的 topic 发布点云数据 0
xfer_format 设置点云格式 0 -- 览沃 pointcloud2(PointXYZRTL) 点云格式 1 -- 览沃自定义点云数据格式 2 -- PCL库中标准 pointcloud2(pcl::PointXYZI) 点云格式 0

览沃 pointcloud2(PointXYZRTL) 点云格式,详细说明如下:

float32 x               # X axis, unit:m
float32 y               # Y axis, unit:m
float32 z               # Z axis, unit:m
float32 intensity       # the value is reflectivity, 0.0~255.0
uint8 tag               # livox tag
uint8 line              # laser number in lidar

直接连接 LiDAR 时,使用 livox_lidar_config.json 来配置 LiDAR 参数,可以把broadcast_code改为自己的设备

livox.launch中可以看到,

    <node pkg="loam_livox" type="livox_scanRegistration" name="livox_scanRegistration">
     <remap from="/laser_points_0" to="/livox/lidar" />
    </node>

仅仅查看订阅到的数据

#include "extract_feature.hpp"
void laserCloudHandler(const sensor_msgs::PointCloud2ConstPtr &laserCloudMsg) {
    ROS_INFO("牛");
}

int main(int argc, char** argv) {

    ros::init(argc, argv, "extract_feature");
    ros::NodeHandle nh;
    setlocale(LC_ALL, "");
    // Laser_feature laser_feature;   
    ros::Subscriber sub = nh.subscribe("/livox/lidar", 1000, laserCloudHandler);
    /*应该先订阅,回调函数处理,再发布呀构造函数中有三个话题*/

    ros::spin();
    return 0;
}

launch文件一句话,原神,启动!!!!

    <node pkg="demo" type="extract_feature" name="extract_feature" output="screen" />

订阅后直接发布

创建一个类Laser_feature,在其中进行相关操作。主函数变为

#include "extract_feature.hpp"

int main(int argc, char** argv) {

    ros::init(argc, argv, "extract_feature");
    Laser_feature laser_feature;   

    ros::spin();
    return 0;
}

就是整了个构造函数初始化,发布者和订阅者拿成员变量接收。直接将原始点云接收后发出。

    int init_ros_env(){
        ros::NodeHandle nh;
        m_sub_point_cloud = nh.subscribe<sensor_msgs::PointCloud2>("/livox/lidar", 10000, boost::bind(&Laser_feature::laserCloudHandler, this, _1));
        m_pub_livox_full = nh.advertise<sensor_msgs::PointCloud2>("/full", 10000);

        return 0;
    }

    void laserCloudHandler(const sensor_msgs::PointCloud2ConstPtr &laserCloudMsg){
        m_pub_livox_full.publish(*laserCloudMsg);
    }

此时打开rviz查看,可以将rviz的配置文件保存下来,保存到当前功能包的config文件夹下,然后在launch文件中增加

    <arg name="rviz" default="true" />
    <group if="$(arg rviz)">
        <node launch-prefix="nice" pkg="rviz" type="rviz" name="rviz" args="-d $(find demo)/config/default.rviz" />
    </group>

那么好,现在下面要做的就是在回调函数中处理数据,编写laserCloudHandler函数

第二版

标签:lidar,rviz,livox,mid,feature,70,点云,ros
From: https://www.cnblogs.com/WMAAA/p/18496508

相关文章

  • 一文读懂AI生成小说平台Midreal AI
    今天给大家分享的MidrealAI是一款由MIT、NYU、剑桥、普林斯顿联合打造的AI生成小说产品。我个人认为,这绝对是针对普通网文作者的降维打击!我自己体验了一下,不得不说真的非常nice。下面是我自己对MidReal的总结,大家可以先了解下,后面有我的实际体验。MidrealAI的核心竞争力......
  • PMP--必刷题–解题–61-70
    文章目录4.整合管理--问题日志--61、[单选]一个软件交付项目开始遇到技术障碍,这个问题可能导致交付物延迟。技术服务团队一直在处理这个问题,但即使经过1周的维护,问题仍未解决。高级项目经理现在应该怎么做?62、[单选]客户要求项目经理提供项目状态报告。项目经理发送......
  • AbMole|Apilimod mesylate Apilimod甲磺酸盐(CAS号 870087-36-8;目录号M9418)
    Apilimodmesylate(STA5326mesylate,Apilimod甲磺酸盐)是Apilimod的甲磺酸盐形式,也是一种具有口服活性的IL-12/IL-23抑制剂,抑制IFN-γ/LPS刺激的人PBMC产生IL-12的IC50值为10nM。可用于难治性葡萄膜炎的相关研究。生物活性Apilimod甲磺酸盐是一种IL-12/IL-23抑制剂,抑制IFN-......
  • AbMole|Erastin2(CAS号1695533-44-8;目录号M21708)
    Erastin2是一种ferroptosis铁死亡的诱导剂,是xc(-)胱氨酸/谷氨酸转运体系统的有效的选择性抑制剂。化学性质分子量623.14分子式C36H35ClN4O4CAS号1695533-44-8溶解性(25°C)DMSO90mg/mL储存条件4°C,protectfromlight运输方式冰袋运输,根据产品的不同,可能会有相应调整......
  • P7072 [CSP-J2020] 直播获奖 对顶堆
    对顶堆动态维护第k大的值。#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;voidShowball(){intn,w;cin>>n>>w;priority_queue<int,vector<int>,greater<int>>minq;priority_queue<int>ma......
  • Midjourney进阶
    本节课程是midjourney的进阶课程,本节课我们将学习如何设计优秀的提示词引导midjourney更好地按照我们的想法出图,我们也会讲述一些实用指令的应用方式,然后我们也会讲述通过图生图的方法,更好的控制图像生成结果。接着我们会演示通过局部重绘功能,实现图像的局部调整和修改。最后我......
  • 【新书】构建大型语言模型,370页pdf
    学习如何从零开始创建、训练和调整大型语言模型(LLMs)在《从零构建大型语言模型》一书中,畅销书作者塞巴斯蒂安·拉什卡(SebastianRaschka)将一步步指导你创建自己的LLM。每个阶段都有清晰的文字、图表和示例解释。从最初的设计和创建,到基于通用语料库的预训练,再到为特定任务......
  • P4170 [CQOI2007] 涂色 区间 dp
    P4170[CQOI2007]涂色区间dp模板题,不理解为什么是蓝。将现在考虑的区间\([l,r]\)分为\([l,k]\)和\([k+1,r]\),如果\(s_l=s_r\)就可以一起涂,少涂一次。方程:\[dp_{l,r}=\min_{k=l}^{r-1}dp_{l,k}+dp_{k+1,r}-[s_l=s_r]\]代码:#include<bits/stdc++.h>usingnamespac......
  • 比赛记录(61~70)
    61CSP-S模拟赛441得分题目T1T2T3T4总分得分\(10\)\(0\)\(0\)\(50\)\(60\)排名:rank\(15\)。真正最最炸裂的一集。2题解由于本场都有图片题解且都较为繁琐,因此不进行总结。T1岛屿T2最短路考虑建立最短路树。既然不能走最后一条边,那么此时我们......
  • 对普通人来说,Stable diffusion 和 Midjourney 怎么选?他们有什么区别?
    这个问题我觉得挺好,因为虽然StableDiffusion(SD)和Midjourney(MJ)这2个AI绘画工具的名字已经深入广大AI爱好者的内心了,但对于普通人(包括刚接触到AI绘画的童鞋)来说,看到这2个名字仍然还是会感觉到陌生。那么,今天我就来给新手用户来讲讲这2个AI绘画工具的区别,我们应该如何选择?......