elevation mapping学习笔记3之使用D435i相机离线或在线订阅点云和tf关系生成高程图

文章目录

  • 0 引言
  • 1 数据
    • 1.1 D435i相机配置
    • 1.2 协方差位姿
    • 1.3 tf 关系
  • 2 离线demo
    • 2.1 yaml配置文件
    • 2.2 launch启动文件
    • 2.3 数据录制
    • 2.4 离线加载点云生成高程图
  • 3 在线demo
    • 3.1 launch启动文件
    • 3.2 CMakeLists.txt
    • 3.3 在线加载点云生成高程图

0 引言

elevation mapping学习笔记1已经成功编译安装elevation mapping高程图工程,并运行示例turtlesim3_waffle_demo,在仿真环境下,控制带有传感器的机器人生成高程图,简单熟悉了高程图的实际应用。elevation mapping学习笔记2主要熟悉了该工程一些节点和参数的定义和说明,在此基础上,使用D435i相机发出的点云作为高程图的点云输入,本文主要学习如何离线输入点云生成高程图,进一步学习如何在线订阅点云生成高程图。

👉 elevation mapping github:https://github.com/ANYbotics/elevation_mapping

本文系统环境:

  • Ubuntu18.04
  • ROS-melodic
  • elevation mapping
  • D435i相机和驱动

1 数据

elevation mapping高程图工程主要的输入数据有三部分,topic类型分别是:点云(相机,雷达等)、协方差位姿(机器人,里程计等)和tf关系,其中点云和tf关系是必需的,协方差位姿是非必需的。

  • /points( sensor_msgs/PointCloud2 )
  • /pose( geometry_msgs/PoseWithCovarianceStamped )
  • /tf(tf/tf消息)

1.1 D435i相机配置

默认已在Ubuntu18.04系统上安装ROS版的D435i相机驱动,比如本文驱动安装目录~/catkin_rs/src/realsense-ros

安装后,默认是没有打开点云的配置,所以需要自行修改配置:

# 激活环境
source /catkin_rs/devel/setup.bash
# roscd 进入到配置文件目录下
roscd realsense2_camera/launch/
# 打开 rs_camera.launch 配置文件进行修改
vim rs_camera.launch

打开后,主要是如下的字段需要修改成 true,这样就能发出点云topic

  <arg name="enable_pointcloud"         default="true"/><arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/><arg name="pointcloud_texture_index"  default="0"/><arg name="allow_no_texture_points"   default="false"/><arg name="ordered_pc"                default="true"/>

修改保存后,执行D435i相机的启动命令:

# source后执行
roslaunch realsense2_camera rs_camera.launch input:=/camera/depth_registered/points

启动后,rostopic list 查看可知,/camera/depth/color/points 即是D435i相机的点云topic.

点云topic发布频率查看命令:rostopic hz /camera/depth/color/points

subscribed to [/camera/depth/color/points]
average rate: 15.737min: 0.022s max: 0.092s std dev: 0.01879s window: 14
average rate: 15.158min: 0.022s max: 0.092s std dev: 0.01637s window: 29
average rate: 15.226min: 0.022s max: 0.095s std dev: 0.01710s window: 44
...

点云topic具体信息查看命令:rostopic echo /camera/depth/color/points,其中camera_color_optical_frame 是点云的frame_id 是后文需要的一个配置参数。

header: seq: 115stamp: secs: 1691134687nsecs: 843372107frame_id: "camera_color_optical_frame"
height: 540
width: 960
...

1.2 协方差位姿

协方差位姿是非必需的输入数据,本文暂不使用该数据…

1.3 tf 关系

本文使用D435i相机传感器生成点云,有一个点云坐标系pc_link,高程图主要应用在机器人,也有一个机器人坐标系base_link,输出的高程图也有一个地图坐标系map_link

ROS中描述tf关系时,一般和数据topicframe_id对应,所以三个坐标系中的点云坐标系定义为camera_color_optical_frame,其他两个暂定义为 base_linkmap

以本文为例,三者在机器人的图示如下:

请添加图片描述

确定了三者坐标系的关系,本文已知D435ibase的外参,basemap的外参,外参表示形式是四元数(w,x,y,z)+平移矩阵(x,y,z),直接写入到下述的tf关系参考代码中,python代码命名为tf_map_base_cam_publisher.py,其中发布频率设为300hz

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMware虚拟机NAT模式Ubuntu无法上网解决方案

发现只要NAT模式&#xff0c;ping地址时就报网络不可达&#xff0c;且右上方网络图标消失&#xff0c;但是外部USB网络设备又只能在NAT模式下使用。。。 博主的解决方案如下&#xff1a; 按WinR键入services.msc&#xff0c; 找到VMware DHCP Service、VMware NAT Service和V…

[QT编程系列-41]:Qt QML与Qt widget 深入比较,快速了解它们的区别和应用场合

目录 1. Qt QML与Qt widget之争 1.1 出现顺序 1.2 性能比较 1.3 应用应用领域 1.4 发展趋势 1.5 QT Creator兼容上述两种设计风格 2. 界面描述方式的差别 3. QML和Widgets之间的一些比较 4. 选择QML和Widgets之间的Qt技术时&#xff0c;可以考虑以下几个因素&#xff…

K8s集群安全机制(RBAC)

RBAC 基于角色的访问控制

【网络编程】实现一个简单多线程版本TCP服务器(附源码)

TCP多线程 &#x1f335;预备知识&#x1f384; Accept函数&#x1f332;字节序转换函数&#x1f333;listen函数 &#x1f334;代码&#x1f331;Log.hpp&#x1f33f;Makefile☘️TCPClient.cc&#x1f340;TCPServer.cc&#x1f38d; util.hpp &#x1f335;预备知识 &…

Java Random 类的使用

Java中的Random类是用来生成伪随机数的工具类。它可以用来生成随机的整数、浮点数和布尔值。以下是Java Random类的一些常见用法&#xff1a; 创建Random对象&#xff1a; Random random new Random();生成随机整数&#xff1a; int randomNumber random.nextInt(); // 生…

完美的分布式监控系统——Prometheus(普罗米修斯)与优雅的开源可视化平台——Grafana(格鲁夫娜)

一、基本概念 1、之间的关系 prometheus与grafana之间是相辅相成的关系。作为完美的分布式监控系统的Prometheus&#xff0c;就想布加迪威龙一样示例和动力强劲。在猛的车也少不了仪表盘来观察。于是优雅的可视化平台Grafana出现了。 简而言之Grafana作为可视化的平台&#xff…

设计模式(3)装饰模式

一、介绍&#xff1a; 1、应用场景&#xff1a;把所需的功能按正确的顺序串联起来进行控制。动态地给一个对象添加一些额外的职责&#xff0c;就增加功能来说&#xff0c;装饰模式比生成子类更加灵活。 当需要给一个现有类添加附加职责&#xff0c;而又不能采用生成子类的方法…

SDXL-Stable Diffusion改进版

文章目录 1. 摘要2. 算法&#xff1a;2.1 结构&#xff1a;2.2 微小的条件机制2.3 多宽高比训练2.4 改进自编码器2.5 所有组合放到一起2.6 主流方案比较 3. 未来工作4. 限制 论文&#xff1a; 《SDXL: Improving Latent Diffusion Models for High-Resolution Image Synthesis…

STM32自带的DSP库的滤波初体验(一)

最近在弄STM32自带的DSP库里的滤波&#xff0c;记录一下&#xff1a; arm_fir_instance_q15 instance_q15_S; #define NUM_TAPS 16 //滤波系数的个数 #define BLOCK_SIZE 32 q15_t firStateF32[BLOCK_SIZE NUM_TAPS]; q15_t Fir_Coeff[NUM_TAPS] {-79, -136, 312, 6…

暗黑版GPT流窜暗网 降低犯罪门槛

随着AIGC应用的普及&#xff0c;不法分子利用AI技术犯罪的手段越来越高明&#xff0c;欺骗、敲诈、勒索也开始与人工智能沾边。 近期&#xff0c;专为网络犯罪设计的“暗黑版GPT”持续浮出水面&#xff0c;它们不仅没有任何道德界限&#xff0c;更没有使用门槛&#xff0c;没有…

解析Java中的包装类和泛型

Java中的包装类和泛型 一、包装类与基本类型二、泛型1、什么是泛型2、引出泛型3、泛型类的定义和使用4、擦除机制5、泛型的上界6、泛型方法7、通配符 总结 一、包装类与基本类型 包装类&#xff0c;就是基本数据类型对应的类类型。我们已知Java中有8种基本数据类型&#xff0c…

分布式协议与算法——Paxos算法

目录 Paxos算法Basic Paxos算法三种角色如何达成共识&#xff08;协商过程&#xff09;小结&#xff1a; Multi-Paxos算法关于 Multi-Paxos 的思考领导者优化Basic PaxosChubby 的 Multi-Paxos 实现小结 参考 Paxos算法 Paxos论文 Paxos Made Simple 、author&#xff1a;Lesli…