Robot Model and Robot State

通过Cpp接口使用Moveit动力学

两个核心库 接近机器人动力学

RobotModel类包含所有链接和关节之间的关系,包括从URDF加载的关节极限属性。

RobotModel还将机器人的连杆和关节分成SRDF中定义的规划组。在这里可以找到关于URDF和SRDF的单独教程:URDF和SRDF教程

URDF (Universal Robot Description Format)通用机器人说明格式

he SRDF or Semantic Robot Description Format语义机器人说明格式

补充了URDF,并指定了关节组、缺省机器人配置、额外的碰撞检查信息和可能需要的额外转换,以完全指定机器人的s姿态。生成SRDF的推荐方法是使用MoveIt!设置助理。

 

RobotState包含关于机器人的实时截断信息(某一时刻),存储关节位置的向量以及可选的速度和加速度,可用于获取机器人的运动学信息,这些信息取决于机器人的当前状态,比如末端执行器的雅可比矩阵。

RobotState还包含辅助函数,用于根据末端执行器位置(笛卡尔姿态)设置手臂位置,以及计算笛卡尔轨迹。

 

设置开始使用RobotModel类非常简单。通常,您会发现大多数高级组件将返回一个指向RobotModel的共享指针。你应该尽可能地使用它。在本例中,我们将从这样一个共享指针开始,只讨论基本API。您可以查看这些类的实际代码API,以获得关于如何使用这些类提供的更多特性的更多信息。

我们将首先实例化一个RobotModelLoader对象,该对象将在ROS参数服务器上查找机器人描述,并构造一个供我们使用的RobotModel。

robot_model_loader::RobotModelLoader robot_model_loader("robot_description");
robot_model::RobotModelPtr kinematic_model = robot_model_loader.getModel();
ROS_INFO("Model frame: %s", kinematic_model->getModelFrame().c_str());

使用RobotModel,我们可以构造一个维护机器人配置的RobotState。 我们将状态中的所有关节设置为其默认值。 然后我们可以获得一个JointModelGroup,它代表特定组的机器人模型,例如 熊猫机器人的“panda_arm”。

  robot_state::RobotStatePtr kinematic_state(new robot_state::RobotState(kinematic_model));
  kinematic_state->setToDefaultValues();
  const robot_state::JointModelGroup* joint_model_group = kinematic_model->getJointModelGroup("panda_arm");

  const std::vector<std::string>& joint_names = joint_model_group->getVariableNames();

setJointGroupPositions()本身不强制执行联合限制,但是对enforceBounds()的调用将执行此操作。

现在,我们可以计算一组随机关节值的正向运动学。 请注意,我们希望找到“panda_link8”的姿势,它是机器人“panda_arm”组中最远端的链接。

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值