KDL
这是运动学和动力学库(KDL)的 API 参考,它是 Orocos 的一个子项目,但可以独立于 Orocos 使用。KDL 提供了不同种类的功能,分为以下几个模块:
Geometric Primitives:几何原始体是指一些基本的几何形状,如点,线,圆,矩形,椭圆,三角形等。它们可以用来表示空间中的物体或坐标系的位置和方向。KDL 中提供了一些几何原始体的类,如 KDL::Vector,KDL::Rotation,KDL::Frame,KDL::Wrench 等,用来表示向量,旋转,坐标系,力和力矩等。
Kinematic Families:运动学族是指一组具有相似属性的运动学结构,例如相同的连接拓扑,相同的求解算法等。运动学结构是指由一个或多个段组成的刚体运动的模型,例如机器人的运动学模型。段是指由一个关节和一个偏移坐标系组成的刚体,表示两个关节之间的几何姿态。关节是指具有一个参数化的自由度和一个标量的动力学属性的简单的运动元件,例如旋转,平移,固定或无效。运动学族的功能是指可以构建运动学链并访问它们的运动学和动力学属性的功能,例如正向和逆向的运动学和动力学。正向运动学是指根据关节的位置,速度或加速度,计算末端执行器的位置,速度或加速度。逆向运动学是指根据末端执行器的位置,速度或加速度,计算关节的位置,速度或加速度。
Motion:运动是指刚体或运动学链在空间中随时间变化的状态,例如位置,速度,加速度等。运动的功能是指可以指定坐标系或运动学链的运动轨迹的功能,例如梯形速度曲线。运动轨迹是指描述运动状态随时间变化的规律的函数,例如位置函数,速度函数,加速度函数等。梯形速度曲线是指一种常用的运动轨迹,它的速度函数是一个梯形的曲线,即速度先以恒定的加速度增加,然后保持最大速度一段时间,再以恒定的减速度减小。
KDLTK:KDLTK 是指用于将 KDL 集成到 Orocos 实时工具包(RTT)的接口代码。Orocos RTT 是一个用于开发实时控制系统的软件框架,它提供了一些基本的组件,如任务,数据流,服务,事件等。KDLTK 是一个 Orocos RTT 的组件,它可以将 KDL 的运动学和动力学的功能封装成 Orocos RTT 的服务,从而可以在 Orocos RTT 的环境中使用 KDL 的功能。
Geometric Primitives
几何原始体是指一些基本的几何形状,如向量,旋转,坐标系,扭转,力矩等,它们可以用来表示空间中的物体或运动的状态。KDL 提供了一些几何原始体的类,以及一些操作和转换的方法。
扭转和力矩有三种不同类型的转换,分别是坐标系乘以扭转或力矩,旋转乘以扭转或力矩,和扭转或力矩的参考点变换。这些转换可以改变扭转或力矩的参考点或基准。
为了提高效率,建议使用 p2 = A*(B*(Cp1))) 而不是 p2=ABCp1 的写法。
提出了一种命名约定,用于区分不同类型的几何原始体,例如坐标系,旋转,扭转,力矩,向量等。这种命名约定可以方便地表示不同坐标系之间的关系,以及进行运算和赋值。
规定了一些用于机器人的约定,例如世界坐标系,安装板坐标系,任务坐标系,传感器坐标系等。这些约定可以用来表示机器人的运动学和动力学的模型,以及进行运动和力控制。
规定了一些用于单位的约定,通常使用标准的国际单位制,如牛顿,米,秒等。
KDL::Vector
KDL::Rotation
KDL::Frame
KDL::Twist
KDL::Wrench
KDL::Vector:表示一个三维的向量,可以用来表示空间中的一个点或一个方向。它有三个分量,分别是 x,y 和 z,可以用下标或括号访问。它提供了一些常用的操作,如加法,减法,数乘,点乘,叉乘,取模,归一化,旋转等。它还可以和 KDL::Rotation,KDL::Frame,KDL::Twist,KDL::Wrench 等类进行转换或运算。
KDL::Rotation:表示一个三维的旋转,可以用来表示空间中的一个坐标系或一个姿态。它是一个 3x3 的矩阵,每一列对应一个坐标轴的方向。它提供了一些常用的操作,如乘法,逆,转置,求迹,求行列式&#x