У меня есть настройка ROS индиго, Беседка под Ubuntu 14.04.Под ROS узел moveit работает.Робот-манипулятор IRB120 моделируется и стоит в беседке.У меня есть узел, который использует moveit
(узел move_group) для планирования пути (траектории) для пункта назначения , который хочет Боб.Запланированная траектория будет отправлена в Беседку, которая будет показана позже.
Существует два подхода, которые Боб может использовать для описания пункта назначения:
Углы каждого суставарука: используя массив из шести чисел (для шести суставов руки), определяется форма каждого сустава и голени.Этот подход работает отлично.Используется класс JointConstraint
:
double 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;вес j = 1,0;jc.tolerance_above = 0,0001;jc.tolerance_below = 0,0001;jc.position = goal_poses [i];jc.joint_name = names [i];goal_constraint.joint_constraints.push_back (х);} </p>
Определите местоположение и направление только конечного эффектора.Я не могу использовать этот подход.Я использовал 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
)