ROS学习(十):ROS URDF->joint

描述关节的运动学和动力学属性。描述关节的运动范围。

示例如下:

<joint name="my_joint" type="floating">    关节的名称、类型
    <origin xyz="0 0 1" rpy="0 0 3.1416"/>    变换矩阵:位置、角度
    <parent link="link1"/>  关节连接的父连杆
    <child link="link2"/>   关节连接的子连杆

    <calibration rising="0.0"/>
    <dynamics damping="0.0" friction="0.0"/>    阻尼、静摩擦
    <limit effort="30" velocity="1.0" lower="-2.2" upper="0.7" />   极限值:最大力矩、最大速度、关节下限、关节上限
    <safety_controller k_velocity="10" k_position="15" soft_lower_limit="-2.0" 

soft_upper_limit="0.5" />   
 </joint>

这里写图片描述

属性

1、name (required)

定义关节的名字(唯一)

2、type (required)

定义关节类型,可选项有:

  • revolute - 旋转关节,其极限位置由 upper and lower limits 决定

  • continuous - 旋转关节,无位置限制

  • prismatic - 滑动关节,其极限位置由 upper and lower limits 决定

  • fixed - 虚拟关节,关节不可运动

  • floating - 六自由度关节

  • planar - 平面关节

组件

< origin> (optional: defaults to identity if not specified)

父连杆和子连杆的转换矩阵。关节位于子连杆的坐标原点处,

  • xyz

描述 x,y,z 坐标的偏置量

  • rpy

描述绕固定轴的旋转量,按照 x,y,z 轴的顺序。

< parent> (required)

父连杆

  • link

父连杆的名字

< child>(required)

子连杆

  • link

子连杆的名字

< axis>(optional: defaults to (1,0,0))

关节坐标系中,关节轴的坐标。

  • xyz

关节轴的描述(正交向量)

< calibration> (optional)

关节的参考位置,用来校准关节的绝对位置

  • rising (optional)

关节正向运动,参考位置出发上升沿

  • falling (optional)

关节反向运动,参考位置出发下降沿

< dynamics> (optional)

描述关节的物理属性。经常用来详述建模属性,特别是对仿真必不可少

  • damping (optional, defaults to 0)

关节的物理阻尼值

  • friction (optional, defaults to 0)

关节的物理静摩擦力

< limit> (required only for revolute and prismatic joint)

用来描述运动的一些极限值

  • lower (optional, defaults to 0)

关节位置下限

  • upper (optional, defaults to 0)

关节位置上限

  • effort (required)

关节的最大力矩

  • velocity (required)

关节的最大速度

< mimic> (optional)

用来描述现在定义的关节与已经存在的关节的关系
其值可以用下式计算:

value=multiplierotherjointvalue+offset

  • joint (required)

被模仿的关节名称

  • multiplier (optional)

乘积因子的数值,默认1

  • offset (optional)

偏置量,默认0

< safety_controller> (optional)

描述安全控制器参数

  • soft_lower_limit (optional, defaults to 0)

安全控制器运行时,关节的位置极限下界,其值应大于 lower joint limit

  • soft_upper_limit (optional, defaults to 0)

安全控制器运行时,关节的位置极限上界,其值应小于 upper joint limit

  • k_position (optional, defaults to 0)

位置和速度极限之间的关系

  • k_velocity (required)

力矩和速度之间的关系

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
这是一段 C++ 代码,包含了几个语句,主要功能是订阅ROS话题,加载URDF模型,并获取ROS节点的命名空间。 具体来说,这段代码中: - `if (orientation_from_imu_)` 表示如果满足条件 `orientation_from_imu_`,则执行下面的语句。这里的 `orientation_from_imu_` 是一个成员变量,可能是一个布尔类型的变量。 - `imu_subscriber_ = nh->subscribe<sensor_msgs::Imu>("imu/data", 1, &StateEstimation::imu_callback_, this);` 表示创建了一个 ROS 订阅者对象 `imu_subscriber_`,订阅了名为 "imu/data" 的话题,并指定了回调函数 `&StateEstimation::imu_callback_`。其中,`nh` 是一个 ROS 节点句柄,用于创建 ROS 订阅者对象;`1` 表示订阅话题的队列长度为 1;`this` 表示回调函数的对象是当前对象。 - `base_.setGaitConfig(gait_config_);` 表示调用对象 `base_` 的成员函数 `setGaitConfig()`,并将参数 `gait_config_` 传递给该函数。这里的 `base_` 可能是一个对象。 - `champ::URDF::loadFromServer(base_, nh);` 表示调用 `champ::URDF` 命名空间中的静态成员函数 `loadFromServer()`,并将 `base_` 和 `nh` 作为参数传递给该函数。这个函数的作用是从 ROS 参数服务器中加载 URDF 模型,然后将模型设置到 `base_` 对象中。 - `joint_names_ = champ::URDF::getJointNames(nh);` 表示调用 `champ::URDF` 命名空间中的静态成员函数 `getJointNames()`,并将 `nh` 作为参数传递给该函数。这个函数的作用是从 ROS 参数服务器中获取机器人关节名称列表,并将结果保存到 `joint_names_` 变量中。 - `node_namespace_ = ros::this_node::getNamespace();` 表示调用 ROS API 中的 `ros::this_node::getNamespace()` 函数,获取当前节点的命名空间,并将结果保存到 `node_namespace_` 变量中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值