1.ROS 2中发布和可视化传感器数据实战系列之四:kitti公开数据集IMU数据的源导发布及在RViz2中的显示
2.ROS2的学习经验
3.ROS开源项目:(一)中文语音交互系统ROSECHO (二)教学级别无人车Tianracer
4.ubuntu18.04 OAK-D kalibr 双目+imu联合标定
5.坐标转换&点云变换&姿态互转| TransForms3d
6.1.5 ROS2体系框架万字干货来啦,快来码住
ROS 2中发布和可视化传感器数据实战系列之四:kitti公开数据集IMU数据的航源发布及在RViz2中的显示
在ROS 2中发布和可视化传感器数据实战系列之四:kitti公开数据集IMU数据的发布及在RViz2中的显示
本文将指导您如何在ROS 2中发布kitti公开数据集的IMU数据,并在RViz2中进行可视化显示。码r码在ROS 2中,导航RViz2默认不支持IMU数据的包完可视化。因此,整代个人介绍 个性 酷 源码我们将通过添加Github网站上的源导imu_tools开源存储库中的rviz_imu_plugin插件软件包,将IMU数据中的航源线性加速度、角速度、码r码方位等数据在RViz2中进行可视化显示。导航以下是包完详细步骤:
1. **发布IMU数据**:使用Python编写一个ROS 2发布者节点,读取kitti数据集中oxts/data子目录中的整代.txt文件,从中提取方位、源导角速度和线性加速度数据,航源转换为sensor_msgs/Imu消息类型进行发布。码r码确保在发布消息时仅包含方位、角速度和线性加速度数据及其协方差矩阵。
2. **安装rviz_imu_plugin插件**:从imu_tools存储库中获取rviz_imu_plugin插件,按照自述文档中的指示进行二进制包安装或源代码编译安装,并设置环境变量。
3. **在RViz2中显示IMU数据**:在RViz2中添加(rviz_imu_plugin)插件后,可以将发布到话题上的IMU消息数据进行可视化显示。
注意,RViz2在ROS 2中对于IMU消息的直接支持不足,因此需要通过上述步骤进行自定义配置。通过这些步骤,您可以有效地在RViz2中展示kitti数据集中的IMU数据。
**IMU简介**:
- IMU(Inertial Measurement Unit)是测量物体三轴角速度和加速度的设备,内部包含三轴陀螺仪和三轴加速度计。
- IMU数据包含线性加速度、角速度、方位等信息,可用于自动驾驶、机器人和工业自动化等领域。
- IMU传感器在定位领域的地位不容忽视,尤其与全球导航卫星系统(GNSS)结合使用时,能提供高度准确的定位信息。
**IMU在ROS 2中的应用**:
- ROS 2中发布IMU数据并利用rviz_imu_plugin插件进行可视化显示,是实现自动驾驶、机器人应用中定位与姿态控制的关键步骤。
- 本文通过具体示例和代码指导,帮助开发者在ROS 2环境中实现IMU数据的发布与可视化,为相关应用提供技术支持。
**总结**:
- 通过本实战系列之四,您将掌握如何在ROS 2中发布kitti公开数据集的IMU数据,并在RViz2中进行可视化显示。
- 了解IMU及其在ROS 2中的应用,对于自动驾驶、机器人和工业自动化领域的开发人员而言,是一次宝贵的学习经验。
ROS2的学习经验
ROS2广泛应用于工业自动化、服务机器人、智能交通、医疗保健和农业机器人等领域。相较于ROS,ROS2去除了部分缺点,并被认为是未来的趋势。尽管ROS2发展时间不长,生态系统尚未完善,学习资源较少,但学习它并推动生态发展是明智之举。个人学习经验表明,应具备编程语言(C++和Python)、Ubuntu系统命令使用、整理易语言源码C++智能指针(如make_ptr和共享指针)、命名空间、VSCode使用、多线程编程、数学知识(坐标转换、pnp解算、旋转度RPY、四元素等)、CmakeLists.txt语法等基础。
初学者应从视频资源入手学习ROS2基础,推荐赵虚左老师的视频课程,使用鱼香ROS工具进行实践。首先,通过赵虚左老师的视频学习ROS2基础,然后进一步使用鱼香ROS文档深入学习导航2(Navigation2)部分。面对导航2框架资料较少、难以理解的挑战,建议仔细积累并参考官方文档的英文版本与鱼香ROS的翻译文档。遇到文档中错误的代码时,不要怀疑,可以尝试使用AI解决问题。
进阶阶段,学习导航2(Navigation2)框架,特别关注官方文档与鱼香ROS翻译文档的结合使用。理解框架原理后,通过实际项目实践,如使用鱼香ROS的开源项目,让机器人在仿真环境中运行起来。在实践过程中,会遇到手动初始化位姿与标点导航的问题,通过代码自动导航可简化流程。使用nav2框架提供的Python API,可以方便地实现决策功能,如使用c++编写可能较为复杂。理解nav2源码,如复制和修改src avigation av2_simple_commander中的代码,或使用nav2_simple_commander\launch文件启动特定节点。
为了构建和导航,需准备机器人模型(urdf)、仿真环境(world)等,放入description功能包中。启动仿真环境后,建图并获取地图信息。在实车或仿真导航中,确保定位准确,避免机器人在接近目标时徘徊。当到达目标距离0.5米时开始计时,若5秒内未到达目标,则取消当前导航并转向下一个目标。理解nav2框架参数的含义,根据项目需求进行调整。
构建ROS2项目时,需要新建navigation2功能包,管理nav2框架的启动与配置。地图、参数文件(如av2_params.yaml)应放入相应文件夹中,根据需要调整参数,例如使用仿真时间、定位方法和控制器。启动nav2框架后,通过手动初始化位姿进行仿真导航,或结合雷达、IMU等设备数据构建完整tf图,问道三端源码实现机器人导航。精准导航需要长时间的学习和实践,确保定位准确,避免机器人到达目标时的徘徊问题。
ROS开源项目:(一)中文语音交互系统ROSECHO (二)教学级别无人车Tianracer
开发之路永无止境,往往在最后期限的白板上写着的计划,往往只是一份空想。年初时,我定下了两个目标,计划在年末完成,然而时间在拖延中流逝,直到如今,我才发现,真正的开源精神并非一个人的单打独斗,而是众人协作的火焰。
记得一年前,我四处奔波,从开源社区汲取养分,同时也渴望贡献出自己的力量。然而,回顾过去,我却发现并没有做出任何贡献。这次,我希望能够集结各路伙伴,如果有志于参与开源项目,我们能共同打造一个GitHub上的百星、千星项目。几位资深程序员已经搭建好了基础,硬件改进较多,但程序完善程度未达预期。我们期望有更多的年轻朋友加入我们,与我们一起学习软件的版本控制、代码规范和团队协作,共同完成复杂的机器人项目,实现成长与蜕变。
(一)中文语音交互系统ROSECHO
ROSECHO的GitHub源码库已准备好,欢迎先star再深入阅读。此代码遵循BSD开源协议。
详细中文介绍文档
面对智能音箱市场,许多人或许会质疑我们的团队为何要涉足这个领域。然而,故事并非如此简单。在年,我们计划为一个大型展厅打造讲解机器人,采用流行于Android系统的接待引导机器人,其语音交互功能本无问题,但当时的挑战在于,尚未有集成cartographer在数千平米展厅中进行建图导航的方案。因此,我们决定打造一款完全基于ROS的讲解机器人。市场上虽然有众多智能音箱,但缺乏适用于ROS二次开发的产品。在科大讯飞一位大佬的介绍下,我们选择了AIUI方案,虽然开发难度大,但高度定制化,非常适合我们这样的开发团队。于是,我们主要任务转变为开发一款能够在ROS下驱动的智能音箱,ROSECHO便由此诞生。
第一版智能音箱在年4月问世,包含W的大喇叭、6环麦克风,两融源码港股以及ROS主控制器,下方控制了一个云迹科技的水滴底盘。了解过ROS星火计划进阶课程的朋友大概知道,课程中的大作业之一是语音命令移动机器人端茶倒水,而我们的任务相当于完成了一个加强版的大作业。
整个机器人在年7月完成,音箱分散到身体各个部分,环麦位于头顶,喇叭置于身体两侧。其他传感器、执行机构、决策、定位导航均基于ROS,定制了条特定问答,调试的机器人在场馆中行走上下坡不抖动,定位准确,7*小时工作稳定。音箱在大机器人上使用效果出色,主要得益于讯飞的降噪和回声消除技术,使得远场对话和全双工对话得以实现。社区中许多小伙伴也尝试了软核解决方案,但由于环境限制较大。于是,我们决定将音箱从大家伙改为普通智能音箱大小,通电即为智能音箱,USB接入ROS后,只需启动launch,即可接收语音识别结果,发送TTS语料,配置网络、接收唤醒角度等。
这次体验深刻地让我认识到,做大容易做小难。过完春节后,年8月ROS暑期夏令营期间,我们做了N款外壳,测试了M种喇叭,贴了P版外围电路,程序则改动不大。主要是由于时间有限,无法进行更多改进。样品均为手工制作,音质上,7w的喇叭配有一个无源辐射板,对于从森海HD入门的人来说,音质虽有瑕疵,但足以满足日常使用。
之前在想法中发布了一个使用视频,大家可参考运行效果。
ROSECHO基本情况介绍完毕,如何开始呢?
从零开始:推荐给手中已有讯飞AIUI评估板的小伙伴,记住,评估板而非麦克风降噪板(外观相似,简单区分是评估板售价元,降噪板元)。手头的评估板可通过3.5mm接口连接普通电脑音箱,再准备一根USB转转换头连接评估板DB9接口。后面需要根据实际串口修改udev规则,理论上可配合ROSECHO软件使用。硬件工作量较大,还需包含移动机器人所需机械设计、电气改造等。好处是弩箭助手iapp源码拥有AIUI后台,可以定制云端语料和技能,但这又是另一个领域的能力,也不是三下五除二能完成的。
从ROSECHO开始:直接购买ROSECHO,首发的十台会附赠ROS2GO,只需连接自带电源并用USB线连接电脑,配置无线SSID和密码即可。连接方便,我们维护云端语料,人设为智能机器人管家,大家只需关注如何利用识别后的词句控制机器人和进行应答。云端问答AIUI处理,一些自定义问答可在本地程序中处理,务必联网,因为语音识别本身需要网络。具体软件启动和简单demo请查看GitHub软件库的说明。
然后做什么:要实现智能语音交互功能的移动机器人,需要对ROS中的actionlib非常熟悉。我们提供了简单的demo,可以控制机器人在turtlebot stage仿真环境中根据语音指令在两点之间移动,也可以根据唤醒方位进行旋转。之后还需增加音箱的TF变换。
大机器人中的状态机采用层次状态机(Hierarchical state machines),适用于移动机器人的编程,框架准备开源,方便大家开发自己的智能移动机器人策略。参考下面链接,希望深入了解也可以购买译本,肯定是比ROS By Example中的Smach状态机更适合商用级产品开发。
还计划做一套简单的语音遥控指令集,机器人问答库,在iflyos中构建适合机器人的技能库。何时能完成尚不确定,大家一起加油!
(二)教学级别无人车Tianracer
GitHub源码库已准备就绪,欢迎先star再深入阅读。遵循Hypha Racecar的GPLv3协议。
这是最近更新的详细使用手册。相比ROSECHO,Tianracer的基本功能均已完成,至少可以拿来学习建图导航,了解SLAM。
Tianracer是一个经过长时间准备的开源项目,年从林浩鋕手中接过Hypha Racecar后,希望将项目发扬光大。这两年改进了软件框架、周边硬件、机械结构,并增加了新的建图算法,但仍有大量工作待完成。这两个月在知乎想法和微信朋友圈分享了项目的进展,经历了多次迭代,现在大致分为入门、标准、高配三个版本。三个版本的软件统一,可通过环境变量更改设置。
最近整个项目从Tianbot Racecar更名为TianRacer,经过长时间探索,终于实现了合理的传感器与处理器配置。相比Hypha Racecar,处理器从Odroid XU4更改为NVIDIA在上半年推出的Jetson Nano,车前方增加了广角摄像头,利用Nano的深度学习加速,可以接近实时处理图像数据。相比之前的单线激光,广角摄像头大大扩展了后续可实现的功能。
TianRacer基本使用Python编写,从底层驱动到遥控等,目的是方便大家学习和二次开发。同时集成了cartographer和vins-fusion启动文件,可以尝试新的激光与视觉SLAM,基于Nano的深度学习物体识别等也是可以直接运行的。但目前功能尚未有机整合。
从零开始搭建:TianRacer搭建可能难度较大,不仅需要RC竞速车的老玩家进行机械电子改装,还需要对ROS熟悉并修改软件以进行适配,同时可能需要嵌入式程序员的帮助。对于主要关心搭建的朋友,可以参考小林的Hypha Racecar和JetRacer Tamiya版本的搭建指南。
从TianRacer开始:这批开发版本的无人竞速车附赠搭好环境的ROS2GO,TianRacer本身有开机自启功能,利用ROS2GO加上USB线对车体进行网络配置,就可以远程编程和调试。仔细参考提供的TianRacer看云文档(文档积极更新),大部分车体自带的功能都可以实现,包括但不限于建图、定位、导航、识别等。
然后做什么:利用TianRacer学习无人车的基础框架,还可以通过JupyterLab学习Jetson Nano的深度学习算法。未来计划将交通标识识别、行人和车辆检测、车道线检测等无人车基础功能融合,但不确定Jetson Nano的算力是否足够。目标是在校园内进行低成本的无人车竞速比赛,希望像CMU的Mobot室外巡线比赛一样持续发展,至今已举办届。
这个视频是搬运自YouTube。大家可深入了解非结构环境下的导航。对于不清楚结构化环境与非结构化环境的朋友,CMU和恩智浦的比赛完美诠释了两者之间的区别。
一起来玩耍吧!
在开源社区协作方面,我们也是第一次尝试,对于松散的协同开发经验不足,希望参与或组织过大型开源项目的朋友们加入我们,一起努力。有兴趣的朋友可以留言或私信。
前几日与朋友们闲聊时,想起几年前高翔博士赞助一锅粥(orb-ygz-slam)1万元时,我也只能提供支持。这次真心希望可以贡献出代码,实现实实在在的贡献。
年年底发布了开发者申请价格,但数量有限,早已连送带卖售罄。年又有几十位爱好者填写了问卷,忘记查阅。每年的双十一双十二我们都会有优惠活动,感谢大家的关注。
ubuntu. OAK-D kalibr 双目+imu联合标定
将OAK相机接入ROS系统,进行SLAM定位建图导航等算法时,确保双目相机与IMU的标定参数准确,对于提升定位建图的精度和算法的鲁棒性至关重要。原厂提供的OAK相机仅包含双目的标定数据,因此,本教程使用第三方标定工具Kalibr,在ROS系统中完成双目标定、IMU标定以及IMU+双目的联合标定,以满足算法需求。
在执行标定过程前,首先确保已安装ROS melodic和depthai_ros环境,参考教程链接进行安装配置。接着,利用源码地址克隆Kalibr,使用catkin_make命令编译相关依赖,如Ceres Solver和code_utils,并根据教程调整code_utils文件中的代码引用。
标定过程中,需采集数据,具体分为双目、IMU以及双目+IMU三个部分。双目数据需在白色背景下录制,确保场景清晰。IMU数据录制时,保持相机静止状态,并确保时间超过2个小时。双目+IMU数据采集时,使用特定的配置文件路径进行标定,输出cam_chain.yaml、imu_param.yaml文件,以及生成camchain-imucam.yaml结果文件。
通过Kalibr工具,完成双目和IMU的单独标定及联合标定,输出关键参数文件。完成整个标定流程后,可参阅OAK中国官网获取最新教程和更新信息。如有技术咨询或项目合作需求,请通过指定链接与OAK官方联系,加入OAK官方微信群,获取最新资讯和社区支持。
感谢您对OAK中国和Kalibr标定工具的关注与支持,如您喜欢本教程,欢迎分享或点赞,您的鼓励是我们持续改进的动力。
坐标转换&点云变换&姿态互转| TransForms3d
本文分享的开源库TransForms3d,专为坐标转换和点云变换提供解决方案,基于Eigen库构建,无需额外依赖,适用于机器人开发和导航系统构建。 开源地址:gitee.com/ohhuo/transfo... 或 github.com/fishros/tran... 该库提供丰富的函数,覆盖角度、欧拉角、四元数和齐次矩阵等基础转换,以及坐标变换组操作。安装与使用
1. **源码引入**:将trans_forms_group.cpp,trans_forms.cpp,transforms3d.h文件复制至项目中。 2. **编译安装**:根据项目需求进行编译。 3. **使用样例**:- **手眼矩阵估算**:通过TransformsGroup实现。
- **点云坐标转换**:利用TransformsGroup完成。
- **欧拉角转换**:支持多种格式转换。
函数列表
基础部分:角度、弧度、欧拉角、四元数、齐次矩阵等转换。 坐标变换组:添加、打印、查找坐标转换关系。鸣谢与反馈
欢迎贡献代码、提供反馈,共同提升TransForms3d库的性能与功能。1.5 ROS2体系框架万字干货来啦,快来码住
1.5 ROS2体系框架详解
深入理解ROS2框架,对于学习和开发至关重要。ROS2不仅涉及文件系统与核心模块,还有强大的技术支持和广泛应用领域。让我们从微观和宏观视角探讨。微观视角
ROS2的文件系统由三层结构组成,主要针对开发者,主要关注的是功能包为核心的硬盘目录和文件组织,特别是应用层,开发者通过编写特定功能包构建机器人应用。宏观视角
技术支撑:得益于ROS2社区,涵盖了包文档、问答、论坛、包索引和问题跟踪等多种支持机制。
应用方向:ROS2在导航、机械臂、自动驾驶等领域展现出广泛的应用,如Nav2项目、OpenCV、MoveIt等。
具体操作
创建和编译功能包:使用colcon指令进行操作,如`colcon build`和`colcon build --cmake-args`。
通信模块:涉及机器人控制、传感器数据传输和人机交互等,是开发核心。
功能包应用:包括二进制安装、源码安装和自定义实现。
工具与资源
命令行工具和rqt图形化界面:方便调试和开发效率提升。
launch文件:批量启动节点的常用方式。
TF坐标变换和rviz2可视化:辅助定位和数据展示。
ROS中MPC局部路径规划器使用方法及源码流程解读
本文将详细介绍ROS导航框架中MPC局部路径规划器mpc_local_planner的使用方法,并对其源码进行解读,梳理其规划流程。内容分为MPC模型预测控制算法简介、mpc_local_planner使用方法、mpc_local_planner源码解读与规划流程梳理三个部分。
一、MPC模型预测控制算法简介
MPC的设计和实施包含三个步骤。首先在k时刻,需要估计/测量出系统当前状态。MPC的优点在于处理多变量、多约束系统,适应动态环境,并提供优化性能。但它的计算复杂度较高,适用于需要高精度控制的应用。
二、mpc_local_planner使用方法
在ROS现有开源MPC模型预测控制算法的局部路径规划器插件中,mpc_local_planner功能包广受欢迎。它与teb_local_planner出自同一研究机构,因此在流程及上有许多相似之处。以下是mpc_local_planner的使用步骤:
1. 下载mpc_local_planner功能包并将其放置在ROS工作空间的src文件夹下。
2. 配置环境,执行以下指令安装所需依赖和环境。
3. 使用catkin_make对mpc_local_planner功能包进行编译。
4. 可根据需要执行以下语句中的一个或多个,来使用功能包自带的示例,对功能包是否能够正常工作,并可对其性能进行测试。
5. 在启动move_base的launch文件中,配置局部路径规划器插件为mpc_local_planner/MpcLocalPlannerROS,并根据机器人的实际情况,设定参数clearing_rotation_allowed的值来设定在规划时是否允许机器人旋转。
6. 在上述move_base节点配置中调用mpc_local_planner的参数配置文件mpc_local_planner_params.yaml。
7. 进行效果测试,并根据测试效果对参数进行调节。
ROS2 Nav2 [Navigation 2 Stack] –SLAM导航教程
ROS2 Nav2 [Navigation 2 Stack] –SLAM导航教程
在本课程中,您将踏上一段学习旅程,从实验开始,构建直观的导航理解。首先,通过实践操作,您将获得初步体验。接下来,理论与实践相结合,解释和理论将增强您的学习体验,随后是更多实践环节。
课程内容包括:
每个章节紧密相连,知识递进式学习。您将通过附加挑战巩固所学,并获得更多实践机会。
立即注册课程,开始您的导航堆栈学习之旅,节省大量宝贵时间。课程承诺,不满意可享受天全额退款,无需任何问题。
注意:本课程不适用于以下情况:
面向所有计算机科学爱好者,本教程涵盖计算机学科的多个领域,如人工智能、机器学习、编程语言、游戏开发、网络安全、云计算、Linux运维、面试技巧等。所有教程均配备中英双语字幕、练习源码及补充资料。
TurtleBot 3 & 2i ROS开源实验平台
TurtleBot 3 & 2i ROS开源实验平台是全球最受欢迎的ROS平台,以小型、低成本、可编程的移动机器人形式出现,广泛应用于教育、研究和业余爱好。
TurtleBot3系列,如TurtleBot3 Burger和TurtleBot3 Waffle Pi,提供移动跟随功能,集成开放式机械手,能够实现°激光距离传感器LDS-,模块化执行器,以及可扩展性,支持多种自定义选项,如控制板、计算机和传感器等,具有强大的传感器阵容和尺寸小的特性。
TurtleBot3 Burger和Waffle Pi提供了强大的功能,如使用增强的°LiDAR、9轴惯性测量单元和精确编码器,以及Intel®RealSense™和识别SDK等,支持自主定位与导航、SLAM地图构建、物体识别与抓取等功能,适合ROS教学、科学研究、多机器人协作,以及机器人爱好者的产品原型设计。
此外,TurtleBot3还具备强大的传感器阵容,包括增强的°LiDAR、9轴惯性测量单元和精确编码器等,配合功能强大的Intel®RealSense™和识别SDK,以及高效率的Raspberry Pi相机,是制造移动机器人的最佳硬件解决方案。
TurtleBot3的硬件、固件和软件是开源的,方便用户下载、修改和共享源代码,所有组件均采用注模塑料制造,成本低廉,也提供3D CAD数据用于3D打印。对于想要自己制作OpenCR1.0板的用户,详细信息包括原理图、PCB gerber文件、BOM和固件源代码均已开放。
TurtleBot3的视觉PRO版-TB3汉堡视觉PRO版,结合度SLAM导航和规划、3D点云探测、二维码识别和WIFI通讯模块,实现多智能体组网。旨在成为学生“软件开发”、“动手实践”、“多机器人协作”、“创意展示”、“竞赛”等综合平台,最大程度激发学生们对机器人学习兴趣。
TurtleBot 2i移动研究机器人基于ROS的模块化机器人平台,对TurtleBot的先前迭代进行了改进,具有全新设计的模块化底盘,并实现了对机械臂的本地支持,提供Pincher MK3 4 DOF机械臂,允许机器人与现实世界中的小物体交互,适合个人自主搭建、机器人研发与教育、多功能机器人研究以及开源社区软件培训。
TurtleBot 2i配备有ROS开放源码的SDK及示例源代码,帮助使用者开发和测试自己的机器人算法程序,价格便宜,非常适合做机器人研究以及提供个人或家庭的机器人开发平台,广泛被院校、研究所以及个人采用。智能佳提供专业的技术服务支持团队,确保购买后无忧使用。