目录
一、机器人自由度
自由度是机器人的一个重要技术指标,它是由机器人的结构决定的,并直接影响到机器人的机动性。
机器人自由度一般指末端执行器的自由度。一般机器人有6个自由度。机器人的机械臂一般具有3个自由度。
二、机器人姿态的表达方式
机器人姿态的表示方式可以分为以下三种:
- 旋转矩阵
- 坐标轴旋转-绕xyz轴旋转不同的角度(欧拉角)
- 四元数-ROS2的TF2中的姿态描述
姿态描述方法,三类共五种方法如下:
- 旋转矩阵-
旋转矩阵
- 坐标轴旋转-
固定轴欧拉角
,非固定轴欧拉角
- 任意轴旋转-
等效轴角
,四元数
1.旋转矩阵
旋转矩阵采用的是旋转后的坐标系
三个轴分别与原坐标系
三个轴的夹角余弦值共九个数字组成3*3的矩阵。
旋转矩阵一般记作记作R,其一般形式为:
2.坐标轴旋转——欧拉角
旋转矩阵对绕轴旋转的姿态表达非常不直观,而最直观的方法即绕主轴旋转。
绕主轴的旋转表示方法,按是否固定可以分为两种,一是不固定的欧拉角,二是固定角。要三个参量就能表示空间所有姿态的一种方法,结果是最直观的。欧拉角不是唯一的,只要是参考坐标系按照一定顺序依次进行三次绕主轴的旋转就到达空间中任意姿态。只要满足以下条件就可以保证能到达所有姿态:
【1】所有旋转都是绕着参考轴的
【2】三次旋转至少涉及两个不同主轴
【3】同一个主轴不进行两次旋转
注意:绕轴旋转顺序不同结果不同,加上可以参考自身坐标系或参考固定的坐标系旋转,所以欧拉角有12*2=24种旋转方式。
2.1 固定转轴欧拉角 转 旋转矩阵
以绕固定轴以XYZ顺序旋转为例,最终结果为:
2.2 非固定旋转轴的欧拉角
以绕固定轴以ZYX顺序旋转为例,最终结果为:
3.等效轴角
如果轴的方向是一般方向(不是主轴方向),任何姿态都可以通过选择适当的轴和角度来得到。
如果我们选择的是一个主轴,那么他就是我们常见的平面旋转矩阵;如果选择的是一般轴,那么等效旋转矩阵为:
4.四元数
四元数的四个数字由一个实部和三个虚部组成,是一个超复数形式:q=w+x∗i+y∗j+z∗k
三、ros基础知识
0.ros的文件系统
1. 节点(Node)——执行单元
【1】节点就是执行具体任务的进程或独立运行的可执行文件,通常一个系统由多个节点组成,节点之间可以通过ROS客户端库(如roscpp 、rospy)相互通信。【2】不同节点可使用不同编程语言,可分布式运行在不同的主机。【3】节点在系统中的名称必须是唯一的。
2.节点管理器(Master)——控制中心
【1】节点管理器在系统中主要起到了一个中介的作用,能够帮助节点相互找到彼此。【2】节点管理器能够为节点提供命名和注册服务,以及跟踪和记录话题/服务通信。【3】同时节点管理器还提供了一个参数服务器(Parameter Server),节点使用此服务器存储和检索运行时的参数。
节点与节点管理器工作图示如下:
3. 通信机制
ROS采用的是一种点对点的分布式通信机制,实现模块间点对点的松耦合连接,所有软件功能及工具都建立在这种通信机制上,为用户提供多节点(进程)的通信服务,其中ROS最核心的三种通信机制是话题(Topic)通信机制、服务(Service)通信机制和参数(Parameter)管理机制。
3.1 话题(Topic)
话题通信采用的是一种异步通信机制。话题通信基于发布/订阅模型,数据由发布者传输给订阅者。其中节点既可以作为发布者发布消息(message),也可以作为订阅者订阅消息。同一个话题的发布者和订阅者可以不唯一,另外一个节点也可以发布或订阅多个消息。一般来说,发布者和订阅者并不知道对方的存在。发布者将信息发布在一个全局的工作区内,当订阅者发现该信息是它所订阅的,就可以接收到这个信息。通常用于数据传输。
关于话题的命令:
3.2 服务(Service)
服务通信采用的是一种同步通信机制。服务通信基于客户端/服务器模型,客户端(Client)发送请求数据(Request),服务器(Server)完成处理后返回应答数据(Response)。与话题不同的是,ROS中只允许有一个节点提供指定命名的服务。通常用于逻辑处理。
话题与服务的区别
3.3 动作(Action)
动作是基于ROS消息机制实现的一种问答通信机制,基于客户端/服务器模型,服务器可以连续反馈数据给客户端,客户端可以在任务运行过程中中止运行。动作Action的接口主要由goal、cancel、status、feedback和result组成,客户端可以在任务启动前向服务器发布任务目标goal,也可以在任务过程中向服务器发送cancel请求取消任务。服务器向客户端反馈服务器当前的状态,或周期性反馈任务运行的监控数据,而result在任务运行过程中只发布一次,仅在服务器完成动作后反馈一个最终结果。
4.参数(Parameter)——全局共享字典
参数服务器能够保存一部分参数作为全局共享字典,系统中的所有节点都可以通过网络访问这些共享字典,存储和检索参数的参数名或参数值,而字典中的数据类型包含了int整型、float浮点型、string字符串等。参数的存储和检索采用的通信机制是更为底层的RPC,而不再是话题或服务。它更适合存储静态、非二进制的配置参数,不适合存储动态配置的数据。
5.消息记录包(Bag)
消息记录包是一种用于保存和回放ROS消息数据的文件格式。它使用.bag格式保存消息、主题、服务和其他ROS数据信息,可以在事件发生后,通过使用可视化工具调用和回放数据,检查在系统中到底发生了什么。记录包文件可以像实时会话一样在ROS中再现情景,在相同时间向主题发送相同的数据。通常用于调试算法。
使用
参考学习资料:
B站:古月居【ros入门】
博客:【1】机器人姿态 https://blog.csdn.net/weixin_39258979/article/details/119855612
【2】机器人姿态 http://t.csdn.cn/qSV7s
【3】ros基础 http://t.csdn.cn/eEQTw