livox 半固体激光雷达 gazebo 仿真 | 安装与验证

news2024/11/26 14:26:08

livox 半固体激光雷达 gazebo 仿真 | 安装与验证

  • livox 半固体激光雷达 gazebo 仿真 | 安装与验证
    • livox 介绍
    • 安装
    • 验证

livox 半固体激光雷达 gazebo 仿真 | 安装与验证

livox 介绍

览沃科技有限公司(Livox)成立于2016年。为了革新激光雷达行业,Livox致力于提供高性能、低成本的激光雷达传感器。通过降低使用门槛和生产成本,Livox将激光雷达技术集成到更多产品和应用之中,从而为自动驾驶、智慧城市、测绘、移动机器人等行业带来创新性改变。Livox产品已销往包括美国、加拿大、中国、日本和欧盟在内的 26 个国家和地区。

面向智能移动机器人市场,Livox 推出最新一代 3D 激光雷达 Mid-360,开启混合固态激光雷达 360° 立体感知新篇章。凭借小巧体积,Mid-360 的安装布置更加灵活。同时,Mid-360 充分考虑了移动机器人对导航、避障等升维感知的需求,兼容室内外场景,赋能移动机器人进入空间智能感知新时代。 但是这款产品官网一直购买不到, 本篇博客 在 gazebo 中 可实现对该激光雷达的仿真 。

传统激光雷达普遍采用机械扫描方式,扫描路径随时间重复。而Livox 激光雷达采用了独特的扫描⽅式,扫描路径不会重复。在非重复扫描方式中,视场中被激光照射到的区域面积会随时间增大,这意味着视场覆盖率随时间推移而显著提高,可减小视场内物体被漏检的概率,有助于探测视场中的更多细节。

下图中给出了一个直观的例子。(a)图由于采用了非重复扫描方式,随着时间的积累,视场覆盖率逐渐升高。而(b)图,由于扫描每次都是重复的,视场覆盖率几乎没有提升。
在这里插入图片描述
在gazebo的默认的lidar插件,属于传统激光雷达机械扫描方式,如法实现livox的非重复式扫描。 本篇博客在gazebo 中,对livox的几款雷达进行了仿真测试。

安装

github地址:https://github.com/Livox-SDK/livox_laser_simulation

下载代码

git clone https://github.com/Livox-SDK/livox_laser_simulation

正克隆到 ‘livox_laser_simulation’…
remote: Enumerating objects: 74, done.
remote: Counting objects: 100% (37/37), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 74 (delta 21), reused 14 (delta 14), pack-reused 37
展开对象中: 100% (74/74), 69.90 MiB | 1.14 MiB/s, 完成.

在这里插入图片描述
下载完毕后,拷入ros的工作空间

在ubutun20.04 的系统下gazebo是11版本,github上的是针对ubuntu18.04 gazebo9的,需要将CMakeLists.txt文件中的
第5行

add_compile_options(-std=c++11)
改为
add_compile_options(-std=c++17)

进行编译
出现报错

In file included from /home/jk-jone/jone_ws/src/livox_laser_simulation/src/livox_ode_multiray_shape.cpp:14:
/home/jk-jone/jone_ws/src/livox_laser_simulation/include/livox_laser_simulation/livox_ode_multiray_shape.h:10:10: fatal error: ignition/math4/ignition/math.hh: 没有那个文件或目录
10 | #include <ignition/math4/ignition/math.hh>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

在这里插入图片描述
报错的原因是 找不到 ignition/math4/ignition 路径下的 math.hh文件

这个要看是没装 ignition这个库 还是版本不对的原因

在计算机中搜索 ignition
在这里插入图片描述
搜到该文件夹说明是有装的,那可能版本不对,进入该文件夹
在这里插入图片描述
这里有的math6 而不是代码中的 math4 ,所以找不对,再进入math6文件夹下,看ignition文件夹下是否有math.hh文件是否有,一般都是有的

在这里插入图片描述
那解决那个问题,只需要把代码中的路径改对就行

到报错的代码文件 include/livox_laser_simulation/livox_ode_multiray_shape.h
第10行

#include <ignition/math4/ignition/math.hh>
改为:
#include <ignition/math6/ignition/math.hh>

到报错的代码文件 src/livox_ode_multiray_shape.cpp
第15行

#include <ignition/math4/ignition/math.hh>
改为:
#include <ignition/math6/ignition/math.hh>

再次编译
则正常完成
在这里插入图片描述

验证

该功能包默认有一个启动文件 launch/livox_simulation.launch
直接启动即可

roslaunch livox_laser_simulation livox_simulation.launch

gazebo中加载了一个工厂的环境
在这里插入图片描述
地上有个小的机器人,上面有个livox mid40的模型
在这里插入图片描述
rivz中有livox的点云
在这里插入图片描述
rostopic 中有个 scan的话题,就是点云的话题名称

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

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

相关文章

CANdelaStudio 中 Bese Variant 和 Variant区别

关于 Bese Variant &#xff0c;其在 CDDT 和 CDD 文件中都存在&#xff0c;有且只有一个 主要包含三部分&#xff0c;重点只关注 DIDs 和 Supported Diagnostic Classes 而在 CDD 文件中&#xff0c;除了 Bese Variant 外&#xff0c;还有一个 Variant “Variant” 这个概…

C# 使用PanGu分词

写在前面 这是官方介绍&#xff1a;盘古分词是一个中英文分词组件。作者eaglet 曾经开发过KTDictSeg 中文分词组件&#xff0c;拥有大量用户。作者基于之前分词组件的开发经验&#xff0c;结合最新的开发技术重新编写了盘古分词组件。 盘古分词组件需要配合其字典文件使用&am…

Cobalt Strike的各类反向上线操作

前言 Cobalt Strike 使用 GUI 框架 SWING&#xff08;一种java GUI的库&#xff09;开发&#xff0c;攻击者可通过CS木马在 beacon 元数据中注入恶意 HTML 标签&#xff0c;使得Cobalt Strike对其进行解析并且加载恶意代码&#xff08;类似XSS攻击&#xff09;&#xff0c;从而…

Nginx Openresty通过Lua+Redis 实现动态封禁IP

需求 为了封禁某些爬虫或者恶意用户对服务器的请求&#xff0c;我们需要建立一个动态的 IP 黑名单。对于黑名单中的 IP &#xff0c;我们将拒绝提供服务。并且可以设置封禁失效时间 环境准备 linux version: centos7 / ubuntu 等 redis version: 5.0.5 nginx version: nginx…

【C++】继承(下) 单继承 | 多继承 | 菱形继承 | 继承和组合

一、单/多/菱形继承 1.单继承 当一个子类只有一个直接父类时&#xff0c;称这个继承关系为单继承。 2.多继承 一个子类有两个或以上直接父类时称这个继承关系为多继承。 举个实例&#xff1a;新老师进学校工作时&#xff0c;一般会作为助教老师&#xff0c;一边代课教书&am…

【shell】正则表达式和文本三剑客之grep和awk

目录 一、正则表达式 1.1用法 1.2表示字符匹配 1.3表示次数 1.4表示位置锚定 1.5表示分组或其他 1.6扩展正则表达式 二、grep命令 三、awk命令 3.1awk与vim的区别 3.2awk的语法 3.3基础用法 test1.提取磁盘的分区利用率 test2.提取用户名和uid号 test3.提取ip地址…

数据结构与算法编程题27

计算二叉树深度 #define _CRT_SECURE_NO_WARNINGS#include <iostream> using namespace std;typedef char ElemType; #define ERROR 0 #define OK 1 #define Maxsize 100 #define STR_SIZE 1024typedef struct BiTNode {ElemType data;BiTNode* lchild, * rchild; }BiTNo…

前端入职环境安装

前端入职 后环境安装 &#xff0c;内函 nodenvmgit微信开发者工具vscode 的安装包 一.node安装-js运行环境 1.node下载&#xff0c;下载地址Node.js 2.配置淘宝镜像 npm config set registry https://registry.npmmirror.com/ 3.查看配置 npm config list 二.nvm安装-切…

必应的下一个十年:穿越创新的奇点时刻

2023年是微软搜索引擎必应进入中国市场十周年&#xff0c;2024年也将迎来必应上市十五周年。对于风起云涌的互联网公司来说&#xff0c;十年到十五年是一个相当长的创新周期。而在2023年初&#xff0c;以GPT为代表的大语言模型横扫全球科技产业&#xff0c;也对互联网和云计算带…

力扣刷题篇之递归

系列文章目录 目录 系列文章目录 前言 一、二叉树相关问题 二、回溯相关问题 三、动态规划相关问题 总结 前言 刷题按照&#xff1a;[力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 - 力扣&#xff08;LeetCode&#xff09;&#xff0c;如图&#xff0c;因为是讲…

pytorch实现遥感建筑物提取

如何自动地从高分辨率遥感影像中提取建筑物等人工目标是高分辨率遥感影像处理与理解领域的一个热点与难点问题。本篇文章我们将学习如何使用pytorch实现遥感建筑物的智能提取。 智能提取的流程 基于深度学习的遥感建筑物智能提取&#xff0c;首先需要制作数据集&#xff0c;然后…

抽象类的使用—模板设计模式 Java

模板设计模式 一、引入二、改进 一、引入 需求 ① 有多个类&#xff0c;完成不同的任务 job ② 要求统计得到各自完成任务的时间 ③ 请编程实现 >最容易想到的方法&#xff0c;写类&#xff0c;统计时间 AA BB中的 job 方法中是有重复的。 >改进1&#xff1a;每个类中&…

使用conan包 - 安装依赖项

使用conan包 - 安装依赖项 主目录 conan Using packages1 Requires2 Optional user/channel3 Overriding requirements4 Generators5 Options 本文是基于对conan官方文档Installing dependencies的翻译而来&#xff0c; 更详细的信息可以去查阅conan官方文档。 This section s…

Vue简易的车牌输入键盘,可以根据需要修改

效果图如下&#xff1a; 代码如下&#xff1a; <template><div><div class"carNoBoxInput"><div style"padding: 6px;border: 2px solid #fff;border-radius: 6px;margin: 6px 3px 6px 6px;"><input class"inputBox"…

避免手机无节制使用

手机使用情况分析 使用时间 我挑选了11月份某一周的统计数据&#xff0c;可以看到&#xff0c;我的日均手机手机时间达到了惊人的8个小时&#xff0c;每周总共余约57小时。 按照使用软件的类型来分类&#xff0c;其中约%50用于娱乐&#xff0c;主要使用软件为&#xff1a;哔哩…

[SpringCloud] SpringCloud配置中心的核心原理

SpringCloud是什么时候去拉取配置中心的配置中心客户端的配置信息为什么要写在bootstrap文件中对象中注入的属性是如何动态刷新的一些开源的配置中心是如何整合SpringCloud的 文章目录 1.从SpringBoot的启动过程说起1.1 大致过程 2.准备Environment的核心操作2.1 前置操作 3.pr…

每日一题:LeetCode-202.快乐数(一点都不快乐)

每日一题系列&#xff08;day 06&#xff09; 前言&#xff1a; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f308; &#x1f50e…

【数据结构】图<简单认识图>

对于下面的内容&#xff0c;大家着重观察和理解图即可&#xff0c;可以直接绕过一些文字性的概念&#xff0c;对图有一个大概的认识。 图 简单认识图图的定义有向图和无向图完全图无向完全图有向完全图 图的基本存储结构邻接矩阵存储邻接矩阵的优点 网络的邻接矩阵邻接表无向图…

C++基础 -5- 动态内存分配

相对于c语言的优势 C可以在分配空间时初始化 返回的内存地址不需要进行强制类型转换 动态申请单块内存格式(图片代码段呈现) 且在分配的时候可以用圆括号直接赋值 int *bnew int(99);动态申请多块内存格式 int *anew int[1024]{88,99,1010};释放空间 释放单块 delete b;释放…

centos7 keepalived探测当前节点

手动查看 查看keepalived集群主节点在哪台服务器&#xff0c;执行命令&#xff1a; ip a 看下自己设定的虚IP在哪台服务器&#xff0c;哪台就是主节点。 脚本实现 rm -rf ./tmp.log ip a > ./tmp.log if cat tmp.log |grep "132" thenecho -e "\033[32m…