相关文章推荐
威武的松树  ·  浙江日报:白马湖实验室和浙江工业大学共建科教 ...·  4 月前    · 
英俊的山楂  ·  宁波揭牌新研究院,中国科学院院士陈十一任院长 ...·  10 月前    · 
无聊的生姜  ·  流氓堕落史:从游侠、流民到流氓-虎嗅网·  11 月前    · 
完美的充值卡  ·  女生适合看什么类型的书?_百度知道·  1 年前    · 
鬼畜的仙人掌  ·  完美替身:重生恋人宠上天漫画|官方在线漫画全 ...·  1 年前    · 
Code  ›  机器人手臂的PositionConstraint目标:无法构造目标表示开发者社区
机器人 position orientation
https://cloud.tencent.com/developer/ask/sof/115154193
忐忑的毛衣
1 年前
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
提问

问 机器人手臂的PositionConstraint目标:无法构造目标表示

Stack Overflow用户
提问于 2018-05-30 16:37:09
EN

我有一个ROS靛蓝,Gazebo在Ubuntu14.04下的背景。在ROS下,moveit节点正在运行。在Gazebo对机器人手臂IRB120进行了仿真和仿真。我有一个节点,它使用 moveit (move_group节点)为Bob想要的目标规划路径(轨迹)。计划的轨道将发送给Gazebo,稍后显示。

Bob可以使用两种方法来描述目的地:

  1. 手臂每个关节的角度:使用一个由六个数字组成的数组(对于手臂的六个关节),定义每个关节和小腿的形状。这种方法效果很好。它使用 JointConstraint 类: 双goal_poses [] = {0.52,0.50,0.73,-0.02,0.31,6.83};for(int I=0;i< 6;i++) /迭代手臂关节。{ moveit_msgs::JointConstraint jc;jc.weight = 1.0;jc.tolerance_above = 0.0001;jc.tolerance_below = 0.0001;jc.position = goal_posesi;jc.joint_name = namesi;jc.tolerance_below}
  2. 仅定义末端执行器的位置和方向。我不能用这种方法。我使用过 PositionConstraint 类。

简单地说, 问题 :我可以使用 JointConstraint 类来描述目的地,但是我不知道如何在 PositionConstraint 类中描述它。 如何描述一个目标,只需指出最终执行者应该在哪里?

我是如何用 PositionConstraint 格式描述目标的:(我指出了最终执行器应该在哪里,它的方向应该是什么)。

  moveit_msgs::PositionConstraint pc;
  pc.weight = 1.0;
  geometry_msgs::Pose p;
  p.position.x = 0.3; // not sure if feasible position
  p.position.y = 0.3; // not sure if feasible position
  p.position.z = 0.3; // not sure if feasible position
  pc.link_name="tool0";
  p.orientation.x = 0;
  p.orientation.y = 0;
  p.orientation.z = 0;
  p.orientation.w = 1;
  pc.constraint_region.mesh_poses.push_back(p);
  goal_constraint.position_constraints.push_back(pc);

但是,当发送请求时,服务器响应时:

[ERROR] [1527689581.951677797, 295.242000000]: Unable to construct goal representation

注意:

在这两种情况下,我都将 goal_constraint 添加到 trajectory_request

trajectory_request.goal.request.goal_constraints.push_back(goal_constraint);
// add other details to trajectory_request here...

trajectory_request 将被发送到 move_group 。(通过在 trajectory_request 主题上发布 /move_group/goal )

1 843 0 票数 0
EN
ros
moveit

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-03 09:26:51

一种略有不同的解决方案解决了 描述目标的末端效应定位和位置 的问题。

我们可以使用 topic 库函数 computeCartesianPath ,而不是将目标发布到另一个节点上进行解析和读取。(在本例中,发布轨迹的代码被注释,部分丢失)

void planTo(std::vector<double> coordinate, std::vector<double> orientation){
  geometry_msgs::Pose p;
  p.orientation.w = 1.0;
  p.position.x = coordinate[0];
  p.position.y = coordinate[1];
  p.position.z = coordinate[2];
  tf::Quaternion q = tf::createQuaternionFromRPY(
      orientation[0],orientation[1],orientation[2]);
  p.orientation.x = q.getX();
  p.orientation.y = q.getY();
  p.orientation.z = q.getZ();
  p.orientation.w = q.getW();
  std::vector<geometry_msgs::Pose> goals;
  goals.push_back(p);
  moveit::planning_interface::MoveGroup mg("manipulator");
  mg.setStartStateToCurrentState();
  // load the path in the `trajectory` variable:
 
推荐文章
威武的松树  ·  浙江日报:白马湖实验室和浙江工业大学共建科教融合学院 编制在高校 科研在平台 转化在企业
4 月前
英俊的山楂  ·  宁波揭牌新研究院,中国科学院院士陈十一任院长 —中国教育在线
10 月前
无聊的生姜  ·  流氓堕落史:从游侠、流民到流氓-虎嗅网
11 月前
完美的充值卡  ·  女生适合看什么类型的书?_百度知道
1 年前
鬼畜的仙人掌  ·  完美替身:重生恋人宠上天漫画|官方在线漫画全集-快看漫画
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号