分类: ROS2

12 篇文章

ROS2学习记录(12)-URDF:机器人建模方法
机器人的组成:建模描述机器人的过程中,我们自己需要先熟悉机器人的组成和参数,比如机器人一般是由硬件结构、驱动系统、传感器系统、控制系统四大部分组成,市面上一些常见的机器人,无论是移动机器人还是机械臂,我们都可以按照这四大组成部分进行分解。 硬件结构就是底盘、外壳、电机等实打实可以看到的设备; 驱动系统就是可以驱使这些设备正常使用的装置,比如电机的驱…
ROS2学习记录(11)-TF:机器人坐标系管理
坐标系是我们非常熟悉的一个概念,也是机器人学中的重要基础,在一个完整的机器人系统中,会存在很多坐标系。 在机械臂形态的机器人中,机器人安装的位置叫做基坐标系Base Frame,机器人安装位置在外部环境下的参考系叫做世界坐标系World Frame,机器人末端夹爪的位置叫做工具坐标系,外部被操作物体的位置叫做工件坐标系,在机械臂抓取外部物体的过程中…
ROS2学习记录(10)-launch
Launch启动文件可以一次性启动多个节点文件,是ROS系统中多节点启动与配置的一种脚本。 ROS2中的Launch文件就是基于Python描述的,其核心目的是启动节点,我们在命令行中输入的各种参数,在Launch文件中,通过类似这样的很多代码模版,也可以进行配置,甚至还可以使用Python原有的编程功能,大大丰富了启动过程中的多样化配置。它就像粘…
ROS2学习记录(9)-DDS
DDS是ros2相对于ros1而言最大的变化,话题、服务、动作,他们底层通信的具体实现过程,都是靠DDS来完成的,它相当于是ROS机器人系统中的神经网络。 DDS本质上也是一种通信模型,常见的通信模型如下: 第一种,点对点模型,许多客户端连接到一个服务端,每次通信时,通信双方必须建立一条连接。当通信节点增多时,连接数也会增多。而且每个客户端都需要知…
ROS2学习记录(8)-分布式通信
在ROS系统中,机器人功能是由各种节点组成的,这些节点可能位于不同的计算机中,这种结构可以将原本资源消耗较多的任务,分配到不同的平台上,减轻计算压力,这就是分布式通信框架的典型应用之一。 只要两个计算机安装好ROS2,并且处于同一网络中,他们就可以实现之前讲过的话题、服务、动作等通信了,就像在一个电脑里一样。 如果使用虚拟机,需将虚拟机网络修改为桥…
ROS2学习记录(7)-参数
参数是ROS机器人系统中的全局字典,可以运行多个节点中共享数据。 比如在机器视觉识别的时候,有很多参数都会影响视觉识别的效果。 在ROS系统中,参数是以全局字典的形态存在的,什么叫字典?就像真实的字典一样,由名称和数值组成,也叫做键和值,合成键值。或者我们也可以理解为,就像编程中的参数一样,有一个参数名 ,然后跟一个等号,后边就是参数值了,在使用的…
ROS2学习记录(6)-动作
动作也是ros2的一种通信机制,目的就是便于对机器人某一完整行为的流程进行管理。 动作就是在下令让机器人完成什么动作时及时反馈,告诉客户端执行到哪一步了,并且让客户端随时可以下令取消动作。 动作和服务类似,使用的也是客户端和服务器模型,客户端发送动作的目标,想让机器人干什么,服务器端执行动作过程, 控制机器人达到运动的目标,同时周期反馈动作执行过程…
ROS2学习记录(5)-通信接口
通信接口的主要目的就是传输数据,为了高效的建立连接,并且准确包装和解析传输的数据内容,话题、服务等机制也就诞生了,他们传输的数据,都要符合通信接口的标准定义。这些接口看上去像是给我们加了一些约束,但却是ROS系统的精髓所在。 接口可以让程序之间的依赖降低,便于我们使用别人的代码,也方便别人使用我们的代码,这就是ROS的核心目标,减少重复造轮子。 R…
ROS2学习记录(4)-服务
服务是有应答的同步通讯,用于节点间的你问我答。 C/S架构:客户端需要某些数据时向服务器端发送请求,服务器端收到请求后处理并反馈、应答。 同步通讯:服务端收到信息很尽快应答 服务器端唯一,客户端可以不唯一 .srv文件定义请求和应答数据结构 服务器端示例代码如下: import rclpy # ROS2 Python接口库 from rclpy.n…
ROS2学习记录(3)-话题
话题是节点间传递数据的桥梁,用于连接节点,服务于节点间的信号传递。 发布数据的节点为话题的发布者,接受数据的节点为话题的订阅者,是多对多的通讯模型,在多个发布者时需注意订阅者的执行优先级。 话题是一个异步通信机制,发布者处并不知道什么时候被订阅者接收,也不需要等到回应,只管发布(因此不适用于参数修改)。 发布与接受的数据必须符合统一的数据描述格式,…