1.TurtleBot 3 & 2i ROS开源实验平台
2.Navigation 2系列教程(七)——插件教程之三:编写新的控制器(Controller)插件
3.Turtlebot3 入门教程-PC软件设置
4.Navigation2源码剖析:(二)启动
5.ROS开源项目:(一)中文语音交互系统ROSECHO (二)教学级别无人车Tianracer
6.四足机器人雷达-视觉导航2:Elevation mapping局部高程图测试
TurtleBot 3 & 2i ROS开源实验平台
TurtleBot 3 & 2i ROS开源实验平台是全球最受欢迎的ROS平台,以小型、低成本、可编程的移动机器人形式出现,广泛应用于教育、研究和业余爱好。c sql操作源码
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通讯模块,实现多智能体组网。旨在成为学生“软件开发”、“动手实践”、“多机器人协作”、element源码系列“创意展示”、“竞赛”等综合平台,最大程度激发学生们对机器人学习兴趣。
TurtleBot 2i移动研究机器人基于ROS的模块化机器人平台,对TurtleBot的先前迭代进行了改进,具有全新设计的模块化底盘,并实现了对机械臂的本地支持,提供Pincher MK3 4 DOF机械臂,允许机器人与现实世界中的小物体交互,适合个人自主搭建、机器人研发与教育、多功能机器人研究以及开源社区软件培训。
TurtleBot 2i配备有ROS开放源码的SDK及示例源代码,帮助使用者开发和测试自己的机器人算法程序,价格便宜,非常适合做机器人研究以及提供个人或家庭的机器人开发平台,广泛被院校、研究所以及个人采用。智能佳提供专业的技术服务支持团队,确保购买后无忧使用。
Navigation 2系列教程(七)——插件教程之三:编写新的控制器(Controller)插件
本教程详细介绍了如何创建自定义控制器插件,特别以实现纯追踪路径跟踪算法为例。首先,强调基于一篇论文实现该算法,并推荐阅读论文以获取更深入理解。然后,指出创建控制器插件的要求包括安装和构建 ROS 2、Nav2、Gazebo 和 Turtlebot3。接下来,指导读者创建纯追踪控制器插件的具体步骤,包括继承自基类nav2_core::Controller,并实现computeVelocityCommands、configure和setPlan方法。在configure方法中,获取特定于控制器的ROS参数desired_linear_vel,以保持组织有序并保持插件间参数的独立性。在setPlan方法中,接收并处理更新后的全局路径。computeVelocityCommands方法计算期望速度指令,以使机器人尽可能遵循全局路径。所有未使用的基类方法必须覆盖,但在此教程中它们被置为空实现。接着,演示如何导出控制器插件,包括在源代码中使用pluginlib宏进行导出,并创建插件描述文件、使用cmake函数导出插件以及添加插件描述到package.xml中。最后,通过修改nav2_params.yaml文件来传递插件名称,实现控制器插件的启用,并通过运行仿真环境验证控制器的功能。
Turtlebot3 入门教程-PC软件设置
本文提供Turtlebot3入门教程,正点闹钟+源码重点讲解PC软件设置。
首先,安装Ubuntu系统并执行脚本安装ROS-kinetic,如安装过程中遇到问题,可选择源码安装。
源码安装步骤包括:安装源、增加key、更新、Desktop-Full安装推荐包,包括ROS、rqt、rviz、robot-generic库等,并解决依赖问题。
在安装过程中,可能需要解决国外服务器下载问题,可借助科学上网方法解决。
环境设置后,进行rosinstall工具的安装,方便下载ROS软件包。接着开始安装TurtleBot3及依赖包。
进行网络配置,首先通过`ifconfig`命令获取主机ip地址,如:..1.,并在终端中编辑`.bashrc`文件,添加ROS_MASTER_URI参数,记得包含接口:“:”,然后刷新环境变量。
小车连接显示器,打开树莓派Ubuntu系统,获取从机ip地址,并确保小车系统连接同一WiFi,与主机IP前三部分一致。
在小车系统中,同样在`.bashrc`文件中进行相关参数的添加和修改,并刷新环境变量,确保配置完整无误。
进行主从机测试配置,首先在主机启动roscore服务,接着在从机执行`rostopic list`命令,查看节点名称返回数据是否与预期相同,若相同则配置成功。
如果配置过程中遇到无法连接主从机的问题,需检查虚拟机网络配置或网络连接是否正确。
本文还提供如何在主机上仅进行网络配置的简化步骤,通过使用ssh命令连接从机,便于操作和管理。
完成上述步骤后,即可成功设置Turtlebot3的PC软件环境,为后续的使用与开发打下坚实基础。
Navigation2源码剖析:(二)启动
Navigation2源码剖析:(二)启动
Nv2源码中的bringup包和svl-robot-bringup负责LgSvl仿真和Nv2项目的启动,它们是整个工程的入口。 主车设计采用两轮差分驱动,游戏开源+源码如Turtlebot3,由两个动力轮控制轮速,实现前进和转向,万向轮作为支撑。其控制模型基于开环系统,可通过添加负反馈形成闭环,以提高控制精度。 Nv2的传感器配置包括2D激光雷达(Lidar)、深度相机和imu模块。Lidar用于建图、定位和代价地图生成,depth-camera提供障碍物信息,imu则用于里程计数据的计算和漂移校正。在Gazebo仿真中,IMU直接作为输入。 在LGCloi中,已预置6种传感器,选择Nav2-PointCloud或Navigation2配置,主要区别在于Lidar数据类型。为适配Nv2需求,需使用pointcloud_to_laserscan包将PointCloud2转换为LaserScan类型,这一过程涉及数据压缩和转换,如图[5]所示。 svl-robot-bringup和nav2_bringup模块在项目启动过程中起关键作用,详细内容可参考相关附录[4]。ROS开源项目:(一)中文语音交互系统ROSECHO (二)教学级别无人车Tianracer
开发之路永无止境,往往在最后期限的白板上写着的计划,往往只是一份空想。年初时,我定下了两个目标,计划在年末完成,然而时间在拖延中流逝,直到如今,我才发现,真正的开源精神并非一个人的单打独斗,而是众人协作的火焰。
记得一年前,我四处奔波,从开源社区汲取养分,同时也渴望贡献出自己的力量。然而,回顾过去,我却发现并没有做出任何贡献。这次,我希望能够集结各路伙伴,如果有志于参与开源项目,我们能共同打造一个GitHub上的百星、千星项目。几位资深程序员已经搭建好了基础,硬件改进较多,但程序完善程度未达预期。我们期望有更多的年轻朋友加入我们,与我们一起学习软件的神迹online源码版本控制、代码规范和团队协作,共同完成复杂的机器人项目,实现成长与蜕变。
(一)中文语音交互系统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软件使用。硬件工作量较大,还需包含移动机器人所需机械设计、电气改造等。好处是拥有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万元时,我也只能提供支持。这次真心希望可以贡献出代码,实现实实在在的贡献。
年年底发布了开发者申请价格,但数量有限,早已连送带卖售罄。年又有几十位爱好者填写了问卷,忘记查阅。每年的双十一双十二我们都会有优惠活动,感谢大家的关注。
四足机器人雷达-视觉导航2:Elevation mapping局部高程图测试
为了四足机器人实现高效的局部高程图构建,结合视觉与雷达技术,确保导航的准确性和稳定性,本文将详细阐述这一过程。四足机器人相较于自动驾驶,需要主动选择落足点,因此局部高程图尤为重要。获取高程图,视觉与雷达传感器各有优劣,例如视觉传感器易受光照、遮挡等因素影响,而雷达传感器在噪声、死区和点云稀疏等问题上则有所欠缺。因此,融合视觉与雷达数据,形成互补,成为目前较为稳定的解决方案。
雷达提供长期可靠的里程计信息,而深度视觉则用于获取局部深度数据,从而建立高程图。这种方案分为实时高程图与全局高程图两种。实时高程图基于深度信息快速构建,实现简便,速度较快,甚至可能无需全局定位数据。然而,视角和深度图质量问题可能导致噪声和空洞。全局高程图则先建立整个环境的地图,然后基于里程计信息提取局部信息,这种方案需要全局定位信息,但通过利用机器人多视角下的数据采集,不断优化修正全局高程地图,最终提取的局部高程图质量更高。
实现高程图建立的项目,以ETH开源的“elevation mapping”为代表。本文提供了一个从最初下载、编译到最终基于Gazebo仿真运行简单Demo的过程,旨在帮助快速部署项目。首先,确保ROS的正确安装与更新,采用melodic版本。其次,安装Grid Map、kindr、pcl点云库等依赖库,注意在编译过程中可能遇到的内存不足等问题,确保编译环境的资源充足。在进行PCL库编译时,遇到的“error: ‘PCL_MAKE_ALIGNED_OPERATOR_NEW’ does not name a type”问题,可以通过修改为“EIGEN_MAKE_ALIGNED_OPERATOR_NEW”解决。在下载和编译kindr_ros与elevation mapping后,通过catkin_make进行编译,可能遇到的编译错误如“fatal error”问题,需要找到并修正hpp文件中的错误。
在完成安装与编译后,通过下载turtlebot3与相关ROS包,建立新的catkin工作空间,下载源码并编译。在编译过程中,可能需要解决与python版本匹配、文件路径等细节问题。运行Demo,基于turtlebot3和RealSense的示例,注意可能需要对脚本进行修改以适应特定的环境或系统配置,如Python版本匹配问题,以及修改地图文件路径。在运行中,通过Rviz观察点云和高程图数据,验证高程图构建的实时性和准确性。
然而,在实际应用中,还存在一些挑战。例如,运算速度可能无法满足实时需求,尤其是不采用GPU的情况下,刷新频率可能较低。真实世界中的传感器噪声相比仿真环境更大,地图构建效果可能不如预期。此外,需要进一步开发代码以提取局部高程图,并通过UDP或共享内存等方式将其发送给步态控制器。随着机器人运动,全局地图的构建与维护对于计算资源的要求较高,尤其是使用低成本处理器时。面对这些问题,可能需要优化算法、改进资源管理,或直接构建局部地图以适应不同环境与设备的性能限制。
综上所述,结合视觉与雷达技术构建的高程图,对于四足机器人的局部导航具有重要价值。通过合理利用开源资源与技术工具,可以实现从环境感知到高程图构建的全流程,为机器人的自主导航提供坚实的支撑。面对实际应用中的挑战,持续的技术优化与创新将推动四足机器人在复杂环境下的高效导航与操作能力。