ROS 欧拉角

本文详细解释了在RobotOperatingSystem(ROS)中,欧拉角如何用于描述物体旋转,区分静态和动态欧拉角,以及涉及的相关函数如tf2::Quaternion和tf2::Matrix3x3的使用。同时介绍了如何在ROS的tf库中处理欧拉角转换和TF数据操作。
摘要由CSDN通过智能技术生成

在ROS中,欧拉角(Euler angles)通常用于描述一个物体相对于参考坐标系的旋转。这种表示方法基于三个连续的旋转角度,每个角度对应于绕着特定轴线(通常是XYZ轴或ZYZ轴等不同顺序)的旋转。

ROS中,欧拉角四元数均被用于表示坐标系中的旋转关系。欧拉角的定义有许多不同的形式,但在ROS中通常采用的绕x,y,z三个轴的旋转来表示物体旋转,具体为:绕Z轴旋转,称之为航向角,使用yaw表示;绕X轴旋转,称之为横滚角,使用roll表示;绕Y轴旋转,称之为俯仰角,使用pitch表示。

欧拉角包括横滚角(Roll)俯仰角(Pitch)和 航向角(Yaw)。这三种角度分别表示物体绕自身三个坐标轴进行的旋转:

横滚角:沿物体的X轴(左右方向),也称为偏航轴。

俯仰角:沿物体的Y轴(前后方向),也称为升降轴。

航向角:沿物体的Z轴(上下方向),也称为滚动轴。

在ROS中的tf库中,欧拉角被用来表示三维空间中刚体的运动。通常有两种类型的欧拉角:

静态欧拉角:也称为外积旋转向量、固定坐标系下的欧拉角或Tait-Bryan角。这些是围绕世界坐标系(全局坐标系)的X、Y和Z轴进行的旋转。当使用这种方式表示时,物体本身的坐标系会随着每次旋转而改变。

动态欧拉角:也称为内积旋转向量或移动坐标系下的欧拉角。这些是围绕物体自身的坐标系的X、Y和Z轴进行的旋转。在这种情况下,物体自身的坐标系保持不变,而是世界坐标系在变化。

ROS中的欧拉角转换通常涉及到以下函数:

    tf2::Quaternion

        表示四元数。

    tf2::Matrix3x3

        用于表示旋转矩阵。

    tf2::fromMsg(const geometry_msgs::Quaternion &msg)

        将 ROS 消息格式的四元数转换为 TF 格式。

    tf2::toMsg(const tf2::Quaternion &q)

        将 TF 格式的四元数转换为 ROS 消息格式。

    tf2::convertRotationToRPY(const tf2::Quaternion &quat, double& roll, double& pitch, double& yaw)

        将四元数转换为 Roll-Pitch-Yaw(RPY)欧拉角。

    tf2::convertRPYToRotation(double roll, double pitch, double yaw, tf2::Quaternion &quat)

        将 Roll-Pitch-Yaw(RPY)欧拉角转换为四元数。

    tf2_ros::Buffer

        提供了缓存和查询TF数据的功能。

    tf2_ros::TransformListener

        监听TF消息并更新缓冲区中的变换数据。

    tf2_ros::Buffer.lookupTransform

        从缓冲区中查找给定时间戳的坐标系之间的变换。

使用这些函数时,需要包含相应的头文件,例如 <tf2_geometry_msgs/tf2_geometry_msgs.h>。

需要注意的是,不同旋转顺序的欧拉角是不同的。例如,在一些代码中,可能使用的是z-y'-x''(偏航、俯仰、滚转)作为欧拉角的旋转顺序。

此外,ROS中的欧拉角可以分为绕定轴绕动轴的变换方式,当没有指定Euler时,默认是按定轴转动,矩阵依次左乘。若函数的名字中有Euler,则表示为绕动轴转动的方式,矩阵依次右乘。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器人操作系统入门 课程讲义 ROS 柴长坤 中国大学MOOC 目錄 前言 第一章 ROS简介 机器人时代的到来 ROS发展历程 什么是ROS 安装ROS 安装ROS-Academy-for-Beginners教学包 二进制与源码包 安装RoboWare Studio 单元测试一 第二章 ROS文件系统 Catkin编译系统 Catkin工作空间 Package软件包 CMakeLists.txt package.xml Metapacakge软件元包 其他常见文件类型 单元测试二 第三章 ROS通信架构(一) Node & Master Launch文件 Topic Msg 常见msg类型 单元测试三 第四章 ROS通信架构(二) Service Srv Parameter server Action 常见srv类型 常见action类型 单元测试四 第五章 常用工具 Gazebo RViz Rqt Rosbag Rosbridge moveit! 单元测试五 第六章 roscpp Client Library与roscpp 节点初始、关闭与NodeHandle Topic in roscpp Service in roscpp Param in roscpp 时钟 日志与异常 第七章 rospy Rospy与主要接口 Topic in rospy Service in rospy Param与Time 第八章 TF与URDF 认识TF TF消息 tf in c++ tf in python 统一机器人描述格式 附录:TF数学基础 三维空间刚体运动---旋转矩阵 三维空间刚体运动---欧拉角 三维空间刚体运动---四元数 第九章 SLAM 地图 Gmapping Karto Hector 第十章 Navigation Navigation Stack move_base costmap Map_server & Amcl 附录:Navigation工具包说明 amcl local_base_planner carrot_planner clear_costmap_recovery costmap_2d dwa_local_planner fake_localization global_planner map_server move_base_msg move_base move_slow_and_clear navfn nav_core robot_pose_ekf rotate_recovery
目錄 前言 第一章 ROS简介 机器人时代的到来 ROS发展历程 什么是ROS 安装ROS 安装ROS-Academy-for-Beginners教学包 二进制与源码包 安装RoboWare Studio 单元测试一 第二章 ROS文件系统 Catkin编译系统 Catkin工作空间 Package软件包 CMakeLists.txt package.xml Metapacakge软件元包 其他常见文件类型 单元测试二 第三章 ROS通信架构(一) Node & Master Launch文件 Topic Msg 常见msg类型 单元测试三 第四章 ROS通信架构(二) Service Srv Parameter server 11.5.4 1.5.5 1.5.6 1.5.7 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 1.7.7 1.8 1.8.1 1.8.2 1.8.3 1.8.4 1.9 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.6.1 1.9.6.2 Action 常见srv类型 常见action类型 单元测试四 第五章 常用工具 Gazebo RViz Rqt Rosbag Rosbridge moveit! 单元测试五 第六章 roscpp Client Library与roscpp 节点初始、关闭与NodeHandle Topic in roscpp Service in roscpp Param in roscpp 时钟 日志与异常 第七章 rospy Rospy与主要接口 Topic in rospy Service in rospy Param与Time 第八章 TF与URDF 认识TF TF消息 tf in c++ tf in python 统一机器人描述格式 附录:TF数学基础 三维空间刚体运动---旋转矩阵 三维空间刚体运动---欧拉角 21.9.6.3 1.10 1.10.1 1.10.2 1.10.3 1.10.4 1.11 1.11.1 1.11.2 1.11.3 1.11.4 1.12 1.12.1 1.12.2 1.12.3 1.12.4 1.12.5 1.12.6 1.12.7 1.12.8 1.12.9 1.12.10 1.12.11 1.12.12 1.12.13 1.12.14 1.12.15 1.12.16 三维空间刚体运动---四元数 第九章 SLAM 地图 Gmapping Karto Hector 第十章 Navigation Navigation Stack move_base costmap Map_server & Amcl 附录:Navigation工具包说明 amcl local_base_planner carrot_planner clear_costmap_recovery costmap_2d dwa_local_planner fake_localization global_planner map_server move_base_msg move_base move_slow_and_clear navfn nav_core robot_pose_ekf rotate_recovery 3中国大学MOOC---《机器人操作系统入门》 课 程讲义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值