1.古月私房课 | 风靡机器人圈的古月ROS到底是什么
2.solidworks模型转urdf倒入ros-gazebo的过程记录
3.1.3 编写一个简单的ROS2 Qt Demo(笔记)
4.ROS技术点滴 —— 有限状态机smach (1)
5.ROS学习笔记7:launch启动文件的使用方法
6.ros探索----actionlib
古月私房课 | 风靡机器人圈的ROS到底是什么
古月私房课:揭示ROS在机器人圈的奥秘
欢迎关注古月居的微信公众号、新浪微博和知乎专栏,源码了解更多深度内容。古月我们特别推荐的源码“古月私房课”系列课程——《ROS机械臂开发:从入门到实战》第二讲已上线,聚焦于"风靡机器人圈的古月ROS到底是什么"。 在本讲中,源码太子源码棋牌主讲人胡春旭将从通信机制、古月开发工具、源码应用功能和生态系统四个方面,古月为您详细解读ROS。源码ROS作为机器人领域的古月标准,其核心在于通信机制,源码利用计算图和节点间的古月节点管理器、话题和服务构建高效通信。源码话题单向传输数据,古月而服务则包含反馈,帮助理解两者差异。 ROS的开发工具涵盖了Linux命令行工具,如用于查询、控制和编译系统的工具,以及坐标变换工具TF和Qt工具箱,它们简化了机器人的开发和数据管理。Rviz和Gazebo分别提供可视化和仿真功能,为应用功能的实现提供了必要支持。 应用功能部分,ROS拥有丰富的资源,包括导航框架、SLAM建图和MoveIt!等,使得机器人的功能实现变得便捷。ROS的生态系统则支撑了其快速扩张,中国正逐渐成为使用ROS的xgboost 源码 预测主力,社区活跃度日益提升。 完整的内容和课程视频,您可以在古月居的微信公众号、微博和知乎专栏,或直接访问古月居网站获取。《ROS机械臂开发:从入门到实战》将带您深入探索ROS的世界,期待您的参与。solidworks模型转urdf倒入ros-gazebo的过程记录
参考古月居的相关课程
使用sw2urdf插件实现solidworks模型转换为URDF格式,进而导入ROS-Gazebo进行仿真。
首先,安装sw2urdf插件:从github.com/ros/solidwor... 下载,然后执行安装过程,一路默认安装。
打开solidworks,利用插件-Tools-sw2urdf功能,开始模型转换工作。
确保所有模型的link坐标系已正确设置(通过先插入点,再插入坐标系),并确定所有joint的旋转轴位置(通过插入基准轴完成)。
利用sw2urdf插件进行导出,预览后保存模型。
完成导出后,将模型导入ROS的工作空间,打开display.launch文件,通过拖动滑块检查关节是否正常运行。
通过显示的模型图像,观察红轴指向,以确认模型方向正确。若方向不正确,需检查在solidworks配置urdf坐标轴时是玩呗源码否存在问题。
接下来,根据仿真需要,添加控制器至urdf文件,并配置其他相关文件,实现机器人的基本控制功能。具体配置过程较为复杂,此处省略。
最终,注意在仿真中模型腿处于伸直状态,膝关节处于雅可比矩阵的奇异点,直接施加扭矩控制时关节不会动。为避免此情况,需给膝关节施加微小扰动以打破奇异点。
完成上述步骤后,即可成功将solidworks模型转为URDF格式,并导入ROS-Gazebo进行仿真,实现机器人的基本控制与动作模拟。
1.3 编写一个简单的ROS2 Qt Demo(笔记)
本文详细记录了创建一个简单的ROS2 Qt Demo的全过程。在开始之前,我们参考了"古月居"课程,根据学习内容进行笔记整理。
首先,在ROS2功能包的项目中,新建了名为rclcomm的通信类。具体操作为进入项目目录,选择新建C++类,命名为rclcomm。
将rclcomm.h文件放置在项目的include目录下,rclcomm.cpp文件放在src目录中。完成创建后,聚合视频源码检查是否需要自动加载,选择不自动加载,因为cmake配置中已包含相关文件。
编写rclcomm.h文件定义通信类的接口,rclcomm.cpp实现类的具体功能。此外,通过CMakeLists.txt文件管理项目的构建。
实现过程中,我们使用了QThread通信类,通过ROS的方式导入节点。针对发布和订阅话题,我们分别实现相应的功能。
遇到的主要问题在于发布话题和消息订阅接受编译时出现错误。解决方法是导入std_msgs包,并确保在CMakeLists.txt中正确声明updateTopicinfo函数。
总结整个项目,我们通过按钮成功发布话题,但如何在按钮操作后停止话题发布仍需进一步研究。源码包括CMakeLists.txt、mainwindow.cpp、rclcomm.h、main.cpp和mainwindow.cpp、rclcomm.cpp等文件。
通过此项目,我们不仅掌握了ROS2和Qt的集成方法,还深入了解了ROS2消息通信机制,为后续更复杂的项目打下了坚实的基础。
ROS技术点滴 —— 有限状态机smach (1)
ROS中的SMACH技术,作为Python编写的强大且易于扩展的状态机库,虽然本身独立于ROS,代码调试源码但通过executive_smach元功能包,它在ROS中得到了很好的整合,为机器人复杂任务的开发提供了任务级的状态机框架。它适用于需要设计多状态模块且状态间可跳转的场景,但不适合任务结构简单的项目。
要安装SMACH,无论是ROS的indigo还是kinetic版本,都有预装的二进制包,可以直接通过命令安装。SMACH提供了官方示例代码,但部分缺乏内部观测器,古月君已进行过修改,可供下载使用。
通过简单示例如state_machine_simple_introspection.py,你可以运行并观察状态的跳转,但可视化效果可能不够清晰。这时,可以启动SMACH观测器以增强可读性。代码中,定义了状态如FOO和BAR,它们的执行逻辑包括初始化和执行函数,以及定义状态结束时的输出值(如状态成功、失败或完成)。
在main函数中,通过StateMachine创建状态机,添加状态并设置跳转关系,同时加入IntrospectionServer观测器以可视化运行状态。例如,状态“FOO”在counter达到3时结束,跳转到outcome4。整个过程可类比为机器人抓取杯子的任务,重复尝试直到成功或放弃。
SMACH功能丰富,适合构建复杂状态机,更多详细内容可参考ROS官方文档和古月居公众号或网站。
ROS学习笔记7:launch启动文件的使用方法
launch文件能够启动机器人所有功能,无需频繁打开新终端运行rosrun程序。
launch文件可自动启动rosmaster,无需手动输入roscore命令。
launch文件内容包含pkg、type、name等参数,其中pkg指定功能包名称,type指定可执行文件名,name为节点运行后的名称,以避免节点重复。
arg为局部变量,仅用于launch文件或作为node输入,remap用于重命名参数。
创建功能包时,无需依赖文件,launch文件本身用于链接各个文件。
在功能包下创建名为launch的文件夹,存放所有launch文件。
创建simple.launch文件,将文本改为XML格式,编译运行后可同时启动两个节点。
创建参数的launch文件turtlesim_parameter_config.launch,在learning_launch下新建config文件夹,添加param.yaml文件,运行后可对比代码。
创建海龟跟踪案例的launch文件start_tf_demo_c++.launch,运行后结果与手动rosrun一致。
创建turtlesim_remap.launch文件,运行后可查看映射替换结果,发布速度指令。
备注:代码摘自古月居。
ros探索----actionlib
引入背景
在ROS(Robot Operating System)中,topic和service是常用的通讯机制。然而,这两种机制在某些场景下并不能满足需求。topic是一种异步通信方式,无法提供反馈信息,而service虽然能获取反馈,但反馈只有一次,且在请求执行时间长时,用户无法查看进度或取消请求。这时,actionlib包的引入就显得尤为重要,它提供了创建可被抢占的长期运行目标的工具,同时具备反馈机制,支持任务执行过程中的中断。
action简介
actionlib包包括用于创建action服务器的工具,这些服务器可以执行长时间运行的目标,并且提供了客户端接口,用户可以通过这些接口向服务器发送请求。action机制类似于service,但额外具有反馈机制,可以持续反馈任务执行的进度,用户可以在任务执行过程中停止运行。
action工作机制
action采用服务器端/客户端模式,ActionClient与ActionServer通过“ROS Action Protocol”进行通信,该协议基于ROS消息构建。客户端与服务器通过简单的API,利用函数调用和回调,请求目标(客户端)或执行目标(服务器端)。
ActionClient与ActionServer之间的具体通信流程如下图所示:
ROS消息
欲深入了解action的工作机制,可查阅相关资料。
一个demo
要创建一个action,首先需在action文件夹下定义目标、结果和反馈的消息格式。action通过.action文件定义,结构类似于服务的.srv文件,但包含额外的消息项。编译过程中,.action文件被打包为消息类型。以下为.action文件示例内容:
定义目标:洗碗机器人的ID
定义结果:总洗碗数量
定义反馈:洗碗进度百分比
相应的,需要更新CMakeLists.txt和package.xml文件如下:
CMakeLists.txt添加内容
找到并引入相关依赖,添加.action文件,生成消息文件。
在package.xml中添加依赖
确保actionlib、actionlib_msgs等依赖被正确声明。
编译完成后,会生成一系列消息文件。
定义Action Client
假设已定义好Dodeshes.action文件,接下来在src文件夹编写客户端程序。
包含相关头文件,定义客户端类型,设置回调函数(完成、激活、反馈),并创建并发送目标给服务器。
定义Action Sever
创建服务器,接收目标,按照设定频率发布反馈,完成任务后返回结果。
运行结果
运行上述demo,可参考古月居 ROS探索总结(三十二)--action - 古月居的例子,对实际操作进行了解。
参考资料
查阅ROS actionlib相关资料,进一步深入学习。
基于ROS的两轮应急巡检车系列(一)旭日X3初体验及基于ubuntu.的ROS安装
基于ROS的两轮应急巡检车初体验及Ubuntu .安装教程 在古月居与地平线联合的高校合作计划中,我有幸获得旭日X3派,开始记录项目过程和个人心得。以下是详细的初体验和安装步骤。旭日X3派上手体验
旭日X3派外观炫酷,右下角有古月居标志,侧面印有"AI机器人开发不必从零开始",性价比高,类似树莓派和Nano终结者。打开包装,包括一个派和天线,但未含TF卡,需自行准备。最终组装后,它的酷炫外观令人赞叹。系统烧录与安装
烧录前准备GB TF卡和读卡器,从developer.horizon.ai下载桌面版系统镜像和balenaEtcher工具。将镜像解压后烧录到TF卡,务必使用至少5V 2A的电源适配器,避免供电不足问题。成功烧录后,系统能正常启动。 遇到系统无法进入的问题,可能是因为TF卡兼容性问题,推荐使用官方推荐的GB闪迪TF卡。接下来,更换源至速度更快的清华镜像。ROS1安装
首先,通过清华镜像源优化源文件,然后添加ROS源和密钥,更新源,开始安装ROS。安装过程可能耗时,完成后配置环境变量,安装依赖。国内ROS专家鱼香ROS提供了一种解决方案,帮助解决依赖下载问题。 最后,通过运行小乌龟图形界面和键盘控制节点进行测试,确认ROS安装成功。在项目进行中,我将持续分享更多体验和心得,期待与大家共同进步。结语
总体来说,旭日X3派作为开发板表现优秀,后续将深入体验并分享更多内容,期待与你一起交流学习。