编译livox ros driver2(ROS2、livox、rviz、ubuntu22.04)

news2024/9/22 3:40:12

1. 编译Livox-SDK2

官方地址:https://github.com/Livox-SDK/Livox-SDK2

执行一下命令:

git clone https://github.com/Livox-SDK/Livox-SDK2.git
cd ./Livox-SDK2/
mkdir build
cd build
cmake .. && make
sudo make install

 如上就安装完成了Livox-SDK2,会安装如下内容:

-- Installing: /usr/local/lib/liblivox_lidar_sdk_static.a

-- Installing: /usr/local/include/livox_lidar_def.h

-- Installing: /usr/local/include/livox_lidar_api.h

-- Installing: /usr/local/include/livox_lidar_cfg.h

-- Installing: /usr/local/lib/liblivox_lidar_sdk_shared.so

 如需删除,执行如下命令:

sudo rm -rf /usr/local/lib/liblivox_lidar_sdk_*
sudo rm -rf /usr/local/include/livox_lidar_*

2.编译livox_ros_driver2

官方地址:https://github.com/Livox-SDK/livox_ros_driver2

2.1.克隆源代码

打开终端执行如下命令,会将源代码clone在/home/ws_livox/src/livox_ros_driver2目录下,这步创建了ROS2需要使用的工作空间。

git clone https://github.com/Livox-SDK/livox_ros_driver2.git ws_livox/src/livox_ros_driver2

2.2.编译

终端进入到/src/livox_ros_driver2目录下,执行如下命令:

source /opt/ros/humble/setup.sh
./build.sh humble

第一行命令是将基于Ubuntu22.04的ROS2 humble引入环境变量(如果已经配置了环境变量,则不需要执行这一步);

第二行命令是构建基于humble的ROS2下的livox_ros_driver2,读者可以根据自己的目标系统编译对应的驱动,详细命令可以参见官网内容;

2.3.配置文件说明

2.3.1.launch文件说明

首先根据传感器修改对应参数,笔者使用的是Livox-Mid360,读者可以根据自己的传感器修改对应参数文件。

Launch文件在 ws_livox/src/livox_ros_driver2/launch_ROS2 文件夹内,包括:

根据不同的应用场景,启动不同的节点和配置。

笔者使用的单个mid360,会用到 rviz_MID360.launch msg_MID360.launch 两个文件。

其中rviz方式的是连接到传感器,发布pointcloud2格式的数据,并且启动rviz显示点云。

其中msg方式的是连接到传感器,发布livox customized格式的点云数据。

也可以根据自己的需求编写launch文件,launch文档中可以配置一些参数,例如发布频率、点云格式等

2.3.2.config文件说明

使用官方提供的launch启动时,会使用 ws_livox/install/livox_ros_driver2/share/livox_ros_driver2/config 文件夹内的配置文件。

其内容如下:

{
  "lidar_summary_info" : {
    "lidar_type": 8
  },
  "MID360": {
    "lidar_net_info" : {
      "cmd_data_port": 56100,
      "push_msg_port": 56200,
      "point_data_port": 56300,
      "imu_data_port": 56400,
      "log_data_port": 56500
    },
    "host_net_info" : {
      "cmd_data_ip" : "192.168.1.222",
      "cmd_data_port": 56101,
      "push_msg_ip": "192.168.1.222",
      "push_msg_port": 56201,
      "point_data_ip": "192.168.1.222",
      "point_data_port": 56301,
      "imu_data_ip" : "192.168.1.222",
      "imu_data_port": 56401,
      "log_data_ip" : "",
      "log_data_port": 56501
    }
  },
  "lidar_configs" : [
    {
      "ip" : "192.168.1.106",
      "pcl_data_type" : 1,
      "pattern_mode" : 0,
      "extrinsic_parameter" : {
        "roll": 0.0,
        "pitch": 0.0,
        "yaw": 0.0,
        "x": 0,
        "y": 0,
        "z": 0
      }
    }
  ]
}

上面的配置中,host_net_info 中对应的IP需要配置成主机对应网卡的IP地址,笔者连接该设备的网口IP为192.168.1.222。lidar_configs 的IP需要配置成lidar设备的IP,如果不知道该IP,可以启动Livox Viewer2 软件查看设备IP,笔者的设备IP为192.168.1.106。

其他的配置内容可以详细参考官方解释,上述的修改了以后就可以正常启动连接设备。

2.4.运行驱动

笔者启动rviz_MID360_launch,输入如下命令:

ros2 launch livox_ros_driver2 rviz_MID360_launch.py

正常启动的情况下,就会连接设备并采集发布点云,自动启动rviz显示点云,如下图:

 问题1:

如果报错没有发现 liblivox_sdk_shared.so,则先在命令行中运行export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/lib,也可以将该命令添加到~/.bashrc中,永久添加到环境变量中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/440259.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

嵌入式【CPLD】5M570ZT100C5N、5M1270ZF256C5N、5M2210ZF256C5N采用独特的非易失性架构,低成本应用设计。

英特尔MAX V CPLD 采用独特的非易失性架构,提供低功耗片上功能,适用于以边缘为中心的应用。MAX V CPLD系列能够在单位空间中提供大量 I/O 和逻辑。这些设备还使用了低成本绿色封装技术,封装大小只有 20 毫米。 MAX V系列的关键应用包括&…

PCL点云库(1) - 简介与数据类型

目录 1.1 简介 1.2 PCL安装 1.2.1 安装方法 1.2.2 测试程序 1.3 PCL数据类型 1.4 PCL中自定义point类型 1.4.1 增加自定义point的步骤 1.4.2 完整代码 1.1 简介 来源:PCL(点云库)_百度百科 PCL(Point Cloud Library&…

个推打造消息推送专项运营提升方案,数据驱动APP触达效果升级

“数智化运营”能力已成为企业的核心竞争力之一。借助数据和算法,构建完善的数智化运营体系,企业可增强用户洞察和科学决策能力,提高日常运营效率和投入产出比。近半年,个推精准把握行业客户的切实需求,将“数智化运营…

分析型数据库:MPP 数据库的概念、技术架构与未来发展方向

随着企业数据量的增多,为了配合企业的业务分析、商业智能等应用场景,从而驱动数据化的商业决策,分析型数据库诞生了。由于数据分析一般涉及的数据量大,计算复杂,分析型数据库一般都是采用大规模并行计算或者分布式计算…

css的属性选择器

文章目录 属性选择器的原理简单的语法介绍子串值(Substring value)属性选择器 CSS 属性选择器的最基本用法复杂一点的用法层叠选择多条件复合选择伪正则写法配合 **:not()** 伪类重写行内样式 组合用法:搭配伪元素提升用户体验角标功能属性选…

基于51单片机的智能晾衣架的设计与实现(源码+论文)_kaic

【摘要】随着社会和市场的变化,我国经济的快速发展和房地产行业的快速扩张,使得装修家居行业飞速发展,在行业高速发展的同时,消费者家居智能化要求也在日益发展。随着科学技术的进步和电子技术的发展,单片机作为智能控…

Stable Diffusion一键安装器,只有2.3M

最近AI画图真的是太火了,但是Midjourney收费之后大家就不知道去哪里能用AI画图了, Stable Diffusion很多人听过,但是安装特别麻烦。所以为大家介绍一款软件,一键安装SD。 Stable Diffusion一键安装器_SD一键启动器-Stable Diffus…

LeetCode:459. 重复的子字符串 —【2、KMP算法】

🍎道阻且长,行则将至。🍓 🌻算法,不如说它是一种思考方式🍀 算法专栏: 👉🏻123 一、🌱459. 重复的子字符串 题目描述:给定一个非空的字符串 s &…

Docker数据管理与Docker镜像的创建

目录 1.管理数据的方式 1.数据卷 2.数据卷容器 3.容器互联(使用centos镜像) 2.Docker镜像的创建 1.基于现有镜像创建 2.基于本地模板创建 3.基于Dockerfile创建 4.Dockerfile案例 总结 1.管理数据的方式 容器中管理数据主要有两种方式&#xff1…

c++作业

自己定义mystring类实现string功能 #include <iostream> #include<cstring> using namespace std;class myString {private:char *str; //记录c风格的字符串int size; //记录字符串的实际长度public://无参构造myString():size(10){str new …

tomcat服务搭建

系列文章目录 文章目录 系列文章目录一、Tomcat1.核心功能 二、Tomcat服务搭建1.Tomcat服务2.Tomcat 虚拟主机配置1.创建 kgc 和 benet 项目目录和文件2.修改 Tomcat 主配置文件 server.xml3.客户端浏览器访问验证 三、Tomcat多实例部署 一、Tomcat 1.核心功能 1.connector&a…

Spring Bean生命周期源码之包扫描、创建BeanDefinition、合并BeanDefinition源码

文章目录 Bean生命周期源码生成BeanDefinitionSpring容器启动时创建单例Bean合并BeanDefinition Bean生命周期源码 我们创建一个ApplicationContext对象时&#xff0c;这其中主要会做两件时间&#xff1a;包扫描得到BeanDefinition的set集合&#xff0c;创建非懒加载的单例Bea…

体验ChatGPT在具体应用场景下的能力与表现——vuedraggable的move多次触发问题

当下人工智能模型在满天飞&#xff0c;今天拿一个具体的应用场景&#xff0c;来体验下ChatGPT的能力与表现&#xff0c;看看是否能解决实际问题。 顺便填一下之前遇到的一个具体的坑&#xff1a;vuedraggable的move多次触发问题。 背景 背景是这样的&#xff0c;实现低代码开…

Hadoop启动相关命令

Hadoop启动相关配置 文章目录 Hadoop启动相关配置格式化节点的情况什么情况下Hadoop需要进行格式化节点&#xff1f; Hadoop启动步骤Hadoop的启动步骤只是start-dfs.sh即可吗 *hdfs*的web管理页面参数说明参数的评价场景 格式化节点的情况 什么情况下Hadoop需要进行格式化节点…

赛效:怎么用改图鸭进行一键Logo设计?

改图鸭工具是一款在线图像处理工具&#xff0c;可以对图片进行大小调整、添加色彩、滤镜等&#xff0c;用户使用改图鸭可快速轻松地对多种图像进行处理操作&#xff0c;另外&#xff0c;改图鸭工具还支持一键进行Logo设计&#xff0c;很多人对改图鸭工具比较陌生&#xff0c;不…

rsync 服务器备份代码

rpm -qa | grep rsync #检查rsync软件是否存在 yum -y install rsync #安装rsync服务 systemctl start rsyncd #启动rsync服务 systemctl enable rsyncd #加入rsync开机启动 systemctl reload rsyncd #重新加载rsync netstat -lnp|grep 873 #检查是否已经成功启动 firewall…

【代码随想录】刷题Day2

1.左右指针比大小 977. 有序数组的平方 class Solution { public:vector<int> sortedSquares(vector<int>& nums) {vector<int> ret nums;int left 0;int right nums.size()-1;int end nums.size();while(left<right){if(abs(nums[left])>abs…

vue-element-admin-master编译异常记录

前言 最近一直在往大前端的方向转&#xff0c;不得不说前端的知识架构还真的很庞大&#xff0c;一步一个脚印吧&#xff0c;之前消化完极简版后台项目[vue-admin-template-master]后&#xff0c;开始想看下完整版的后台[vue-element-admin-master]项目&#xff0c;奈何clone项…

ChatGPT实战100例 - (08) 设计转化为SQL并获取ER图

文章目录 ChatGPT实战100例 - (08) 设计转化为SQL并获取ER图一、需求与思路二、SQL建表三、绘制四、 总结 ChatGPT实战100例 - (08) 设计转化为SQL并获取ER图 一、需求与思路 在你还在手撸SQL&#xff1f;ChatGPT笑晕在厕所 这篇博文中 针对经典3表设计&#xff1a; 学生表 S…

【我在CSDN成长】我的两周年创作纪念日

【我在CSDN成长】我的两周年创作纪念日 一、来到CSDN的大家庭二、在CSDN的收获1.在CSDN的感受2.在CSDN的收获 三、在CSDN的未来规划憧憬 一、来到CSDN的大家庭 当看到这个信息时&#xff0c;才发现不知不觉已经在CSDN创作两年了&#xff0c;今天才腾出时间来写下这篇博文。感叹…