解读ROS库(一)

sensor_msgs/JointState.msg

1.这是一条消息,其中包含描述一组扭矩控制接头状态的数据。
2.返回关节的信息
在这里插入图片描述
位置,速度,力的信息
3.每个关节由其名称唯一标识
4.标头指定记录关节状态的时间。 一条消息中的所有关节状态必须同时记录
5.该消息由多个数组组成,每个数组用于表示关节状态的每个部分
6.目标是使每个字段都是可选的。 当例如 您的关节没有与之关联的力时,则可以将力的数组留空。
7.此消息中的所有数组都应具有相同的大小,或者为空。这是将关节名称与正确状态唯一关联的唯一方法。
8.表示方法
在这里插入图片描述

tf库

作用

TF库的目的是实现系统中任一个点在所有坐标系之间的坐标变换,也就是说,只要给定一个坐标系下的一个点的坐标就能获得这个点在其他坐标系的坐标.

TF的API的一些数据结构

在这里插入图片描述

tf::Stamped

是一种包含了除了Transform的其他几种基本的数据结构的一种数据结构:

template <typename T>    //模版结构可以是tf::Pose tf:Point 这些基本的结构
class Stamped : public T{
 public:
  ros::Time stamp_;    //记录时间
  std::string frame_id_;   //ID
  Stamped() :frame_id_ ("NO_ID_STAMPED_DEFAULT_CONSTRUCTION"){}; //Default constructor used only for preallocation
  Stamped(const T& input, const ros::Time& timestamp, const std::string & frame_id);
  void setData(const T& input);

};

kdl_parser

作用

如果要利用运动学和动力学库的强大功能,则kdl解析器提供了一种构造完整KDL Tree对象的简便方法。 从机器人的URDF xml描述或Collada xml描述开始,kdl解析器会自动生成KDL树
在这里插入图片描述

kdl

作用

3D frame and vector transformations:

KDL提供了出色的支持,可用于向量,点,框架变换等。您可以计算向量乘积,将点变换为其他参考框架,甚至更改6d扭曲的参考点。

Kinematics and Dynamics of kinematic chains:

您可以通过KDL Chain对象表示运动学链,并使用KDL求解器来计算从正向运动学到逆动力学的任何事物。 有关更多信息,请查看KDL主页上的链文档。kdl_parser包括从XML Robot Description Format(URDF)文件构造KDL链的支持。

Kinematics of kinematic trees:

您可以通过KDL Chain对象表示运动学链,并使用KDL求解器计算正向运动学

常见的类

chain

此类封装了串行运动学互连结构。 它是由段构成的.

JntArray

此类表示一个固定大小的数组,其中包含KDL :: Chain的值

Frame

表示3D空间中的框架变换(旋转+平移)

trac_ik

作用

1.TRAC-IK具有与KDL的IK解算器调用非常相似的API,不同之处在于用户传递的是最大时间而不是最大的搜索迭代次数。 另外,TRAC-IK允许针对每个笛卡尔尺寸(x,y,z,滚动,俯仰和偏航)独立设置误差容限
2.KDL的联合受限伪逆Jacobian实现是各种ROS软件包和MoveIt!使用的求解器! 用于通用操纵链。
3.TRAC-IK同时运行两种不同的IK方法:
a.KDL求解器的增强功能(检测并减轻了在梯度下降过程中遇到关节极限时可能发生的局部最小值)
b.一种顺序二次编程IK公式,该公式使用已知的牛顿方法来更好地处理非平滑搜索空间

发布了23 篇原创文章 · 获赞 17 · 访问量 4177

猜你喜欢

转载自blog.csdn.net/qq_43786066/article/details/104469001