我有一个ROS靛蓝,Gazebo在Ubuntu14.04下的背景。在ROS下,moveit节点正在运行。在Gazebo对机器人手臂IRB120进行了仿真和仿真。我有一个节点,它使用 moveit (move_group节点)为Bob想要的目标规划路径(轨迹)。计划的轨道将发送给Gazebo,稍后显示。
moveit
Bob可以使用两种方法来描述目的地:
JointConstraint
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
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 )
move_group
/move_group/goal
发布于 2018-09-03 09:26:51
一种略有不同的解决方案解决了 描述目标的末端效应定位和位置 的问题。
我们可以使用 topic 库函数 computeCartesianPath ,而不是将目标发布到另一个节点上进行解析和读取。(在本例中,发布轨迹的代码被注释,部分丢失)
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: