[ROS2系列] ORBBEC(奥比中光)AstraPro相机在ROS2进行rtabmap 3D建图
目录
背景:
一、驱动AstraPro摄像头
二、安装rtabmap
error1:缺包
三、尝试
四、参数讲解
五、运行
error2: Did not receive data since 5 seconds!
六、效果编辑
error4:
背景:
1、设备:pc;jeston agx orin
2、环境:Ubuntu20.04;ROS2(Foxy)
3、主从机配置,jeston agx orin为主机
4、jeston agx orin含有:AstraPro、激光雷达驱动,刑天底盘控制,语音交互
5、目前已实现激光雷达2D建图,AstraPro驱动,刑天底盘控制,语音交互
一、驱动AstraPro摄像头
https://github.com/orbbec/ros_astra_camera
启动摄像头:
ros2 launch astra_camera astra_pro.launch.py
warning:
[component_container-1] [WARN] [1697708402.794392173] [camera.point_cloud_xyz]: [image_transport] Topics '/camera/depth/image_raw' and '/camera/depth/camera_info' do not appear to be synchronized. In the last 10s:
[component_container-1] Image messages received: 5
[component_container-1] CameraInfo messages received: 5
[component_container-1] Synchronized pairs: 0
二、安装rtabmap
https://github.com/introlab/rtabmap_ros
具体操作看[ROS2系列] ubuntu 20.04测试rtabmap-CSDN博客
但是我在jeston agx orin 使用
rosdep update && rosdep install --from-paths src --ignore-src -r -y
error1:缺包
sudo apt-get ros-foxy-
注意:后面跟的包的“_”都需要改成“-”
三、尝试
由于我用的是奥比中光摄像头,官方也并没有例子,在issue中我也问了维护者:

这有一个zed的例子:
ros2 launch zed_wrapper zed.launch.pyros2 launch rtabmap_launch rtabmap.launch.py \rtabmap_args:="--delete_db_on_start" \rgb_topic:=/zed/zed_node/rgb/image_rect_color \depth_topic:=/zed/zed_node/depth/depth_registered \camera_info_topic:=/zed/zed_node/rgb/camera_info \frame_id:=base_link \approx_sync:=false \wait_imu_to_init:=true \imu_topic:=/zed/zed_node/imu/data \qos:=1 \rviz:=true
qos (Quality of Service) argument should match the published topics QoS (1=RELIABLE, 2=BEST EFFORT). ROS1 was always RELIABLE.
所以这里我选择用qos=2。
四、参数讲解
args:="-d --Mem/UseOdomGravity true --Optimizer/GravitySigma 0.3": 这个参数用于指定RTAB-Map的命令行参数。具体地,它包括了以下命令行参数:-d:表示RTAB-Map在启动时删除(清空)先前的数据库,以重新开始构建地图。
--Mem/UseOdomGravity true:启用RTAB-Map使用里程计信息进行重力校正。
--Optimizer/GravitySigma 0.3:设置RTAB-Map优化中的重力方向方差为0.3。
odom_topic:=/t265/odom/sample: 这个选项指定里程计信息的话题,通常用于融合定位和地图构建。frame_id:=t265_link: 这个选项指定RTAB-Map使用的坐标系,通常是相机或机器人的坐标系。在这里,它被设置为t265_link。rgbd_sync:=true: 这个选项表示启用RGB-D数据的同步,确保RGB图像和深度图像具有相同的时间戳。depth_topic:=/d400/aligned_depth_to_color/image_raw: 这个选项指定深度图像的话题。rgb_topic:=/d400/color/image_raw: 这个选项指定RGB图像的话题。camera_info_topic:=/d400/color/camera_info: 这个选项指定相机信息的话题,包含了相机的参数和标定信息。approx_rgbd_sync:=false: 这个选项表示禁用RGB-D数据的近似同步。visual_odometry:=false: 这个选项表示禁用视觉里程计(Visual Odometry)。queue_size:=30: 这个选项指定RTAB-Map节点使用的消息队列大小。增加队列大小可以容纳更多的消息,以应对消息发布频率不一致的情况。
frame_id:=base_link: 这个选项指定RTAB-Map节点使用的坐标系,通常是相机或机器人的坐标系。在这里,它被设置为base_link。approx_sync:=false: 这个选项用于控制RGB和深度图像的同步。当设置为false时,RGB和深度图像不会强制同步。
五、运行
进入ubuntu,查看摄像头话题
ros2 topic list
('rgb/image', '/camera/color/image_raw'),#('rgb/camera_info', '/camera/color/camera_info'),('rgb/camera_info', '/camera/color/camera_info'),#('depth/image', '/camera/aligned_depth_to_color/image_raw'),('depth/image', '/camera/depth/image_raw')]
当我尝试命令时候,会出现延时错误

error2: Did not receive data since 5 seconds!
rtabmap_viz-3] [WARN] [1697700727.832576678] [rtabmap.rtabmap_viz]: rtabmap_viz: Did not receive data since 5 seconds! Make sure the input topics are published ("$ ros2 topic hz my_topic") and the timestamps in their header are set. If topics are coming from different computers, make sure the clocks of the computers are synchronized ("ntpdate"). If topics are not published at the same rate, you could increase "queue_size" parameter (current=20).
这个错误有很多,github issue里面相关的解决方法我都看完了,但不是我需要的,最后我的可执行命令是:
ros2 launch rtabmap_launch rtabmap.launch.py \rtabmap_args:="--delete_db_on_start" \rgb_topic:=/camera/color/image_raw \depth_topic:=/camera/depth/image_raw \camera_info_topic:=/camera/color/camera_info \frame_id:=camera_link \use_sim_time:=true \approx_sync:=true \qos:=2 \rviz:=true \queue_size:=30
六、效果
至少3个界面都有图像了。
当我操作我的机器人时,图像同步的过于慢,终端有报错
error4:
[rtabmap_viz-3] [INFO] [1697708400.611813528] [rtabmap.rtabmap_viz]: rtabmap_viz stopping spinner...
[rtabmap-2] [ERROR] (2023-10-19 17:39:10.449) Rtabmap.cpp:1343::process() RGB-D SLAM mode is enabled, memory is incremental but no odometry is provided. Image 0 is ignored!
[rtabmap-2] [ERROR] (2023-10-19 17:39:11.367) Rtabmap.cpp:1343::process() RGB-D SLAM mode is enabled, memory is incremental but no odometry is provided. Image 0 is ignored!
后续再更吧,尊的累了,搞的想吐。我的intel D435i 为什么不显示点云!!!
相关文章:
[ROS2系列] ORBBEC(奥比中光)AstraPro相机在ROS2进行rtabmap 3D建图
目录 背景: 一、驱动AstraPro摄像头 二、安装rtabmap error1:缺包 三、尝试 四、参数讲解 五、运行 error2: Did not receive data since 5 seconds! 六、效果编辑 error4: 背景: 1、设备:pc;jeston agx …...
墨迹天气商业版UTF-8模板,Discuz3.4灰白色风格(带教程)
1.版本支持:Discuzx3.4版本,Discuzx3.3版本,DiscuzX3.2版本。包括网站首页,论坛首页,论坛列表页,论坛内容页,论坛瀑布流,资讯列表页(支持多个),产品列表页(支持多个),关于…...
Godot 官方2D C#重构(2):弹幕躲避
前言 Godot 官方 教程 Godot 2d 官方案例C#重构 专栏 Godot 2d 重构 github地址 实现效果 技术点说明 异步函数 Godot的事件不能在Task中运行,因为会导致跨线程的问题。 //这样是不行的,因为跨线程了,而且会阻塞UI线程,具体原因…...
ELK之LogStash插件grok和geoip的配置使用
本文针对LogStash常用插件grok和geoip的使用进行说明: 一、使用grok输出结构化数据 编辑 first-pipeline.conf 文件,修改为如下内容: input{#stdin{type > stdin}file {# 读取文件的路径path > ["/tmp/access.log"]start_…...
基于Python实现的一款轻量、强大、好用的视频处理软件,可缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段、自动配字幕等
Quick Cut 是一款轻量、强大、好用的视频处理软件。它是一个轻量的工具,而不是像 Davinci Resolve、Adobe Premiere 那样专业的、复杂的庞然大物。Quick Cut 可以满足普通人一般的视频处理需求:压缩视频、转码视频、倒放视频、合并片段、根据字幕裁切片段…...
深入探讨 Golang 中的追加操作
通过实际示例探索 Golang 中的追加操作 简介 在 Golang 编程领域,append 操作是一种多才多艺的工具,使开发人员能够动态扩展切片、数组、文件和字符串。在这篇正式的博客文章中,我们将踏上一段旅程,深入探讨在 Golang 中进行追加…...
三网话费余额查询的API系统 基于thinkphp6.0框架
本套系统是用thinkphp6.0框架开发的,PHP需大于8.2,系统支持用户中心在线查询和通过API接口对接发起查询,用户余额充值是对接usdt接口,源码全开源,支持懂技术的人二次开发~搭建教程1、源码上传后,吧运行目录…...
LeetCode —— dfs和bfs
797. 所有可能的路径 给你一个有 n 个节点的 有向无环图(DAG),请你找出所有从节点 0 到节点 n-1 的路径并输出(不要求按特定顺序)。 graph[i] 是一个从节点 i 可以访问的所有节点的列表(即从节点 i 到节点…...
【ROS 2 基础-常用工具】-7 Rviz仿真机器人
所有内容请查看:博客学习目录_Howe_xixi的博客-CSDN博客...
循环神经网络(RNN)
定义 循环神经网络(RNN)是一种深度学习神经网络,专门用于处理序列数据,如文本、语音和时间序列数据。RNN的独特之处在于它具有循环连接,允许信息在网络内持续流动,以便处理先前的输入信息,具体…...
ESP32C3 LuatOS TM1650②动态显示累加整数
--注意:因使用了sys.wait()所有api需要在协程中使用 -- 用法实例 PROJECT "ESP32C3_TM1650" VERSION "1.0.0" _G.sys require("sys") local tm1650 require "tm1650"-- 拆分整数,并把最低位数存放在数组最大索引处 loc…...
文心一言 VS 讯飞星火 VS chatgpt (117)-- 算法导论10.3 2题
二、用go语言,对一组同构对象用单数组表示法实现,写出过程ALLOCATE-OBJECT和FREE-OBJECT。 文心一言: 在Go语言中,我们通常使用指针和结构体来表示和操作复杂的数据结构。对于一组同构对象,我们可以使用一个数组来存…...
专业修图软件 Affinity Photo 2 mac中文版编辑功能
Affinity Photo for Mac是应用在MacOS上的专业修图软件,支持多种文件格式,包括psD、PDF、SVG、Eps、TIFF、JPEG等。 Affinity Photo mac提供了许多高级图像编辑功能,如无限制的图层、非破坏性操作、高级的选择工具、高级的调整层、HDR合成、全…...
Excel 5s内导入20w条简单数据(不使用多线程)
文章目录 Excel 5s内导入20w条数据1. 生成20w条数据1.1 使用Excel 宏生成20w条数据1.2 生成成功 2. ExecutorType:批量操作执行器类型2.1 ExecutorType.SIMPLE2.2 ExecutorType.BATCH2.3 ExecutorType.REUSE 3. 20w条数据直接插入数据库3.1 使用ExecutorType.SIMPLE…...
计算机毕业设计 基于SpringBoot笔记记录分享网站的设计与实现 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
Windows Ubuntu子系统使用USB教程
Windows Ubuntu子系统使用USB教程 Windows Subsystem for Linux (WSL)允许您在Windows上运行Linux。以下指南涉及如何在WSL2中连接和使用USB设备。 WSL版本 在WSL内部运行 uname -a应该显示内核版本为5.10.60.1或更高版本。你需要运行WSL 2发行版本。 USB/IP 客户端工具 在W…...
如何理解TCP/IP协议?
一、是什么 TCP/IP,传输控制协议/网际协议,是指能够在多个不同网络间实现信息传输的协议簇 TCP(传输控制协议) 一种面向连接的、可靠的、基于字节流的传输层通信协议 IP(网际协议) 用于封包交换数据网…...
如何开发出来一款解决抖音本地生活的软件营销工具?
一、智能剪辑、矩阵分发、无人直播、爆款文案于一体独立应用开发 抖去推----主要针对本地生活的----移动端(小程序软件系统,目前是全国源头独立开发),开发功能大拆解分享,功能大拆解: 7大模型剪辑法(数学阶乘&#x…...
GO 语言如何用好变长参数?
函数重载 对于函数重载相信编码过的 xdm 肯定不会陌生,函数重载就是在同一个作用域内定义多个具有相同名称但参数列表不同的函数 此处的参数列表不同,可以是参数的类型不同,参数的个数不同 那么我们一起分别来看看 C 语言,C 语…...
怎么解决 Http 协议无状态?
一、Http 协议无状态的含义 1.1 有状态协议 常见的许多七层协议实际上是有状态的,例如 SMTP 协议,它的第一条消息必须是 HELO,用来握手,在 HELO 发送之前其他任何命令都是不能发送的;接下来一般要进行 AUTH 阶段&#…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
