Похоже, есть пара возможностей.Во-первых, вы можете планировать по декартовым путям с помощью MoveIt:
moveit::planning_interface::MoveGroup group("right_arm");
std::vector<geometry_msgs::Pose> waypoints;
geometry_msgs::Pose target_pose3 = start_pose;
geometry_msgs::Pose target_pose3 = waypoint_pose;
waypoint_pose.position.x += 0.2;
waypoints.push_back(waypoint_pose); // Add first waypoint
waypoint_pose.position.y -= 0.2;
waypoints.push_back(waypoint_pose); // Add second waypoint
// Compute the Cartesian trajectory (stored in a RobotTrajectory)
moveit_msgs::RobotTrajectory trajectory;
group.computeCartesianPath(waypoints,
0.01, // task space stepsize (meters)
0.0, // jump threshold
trajectory);
Недостатком может быть то, что я не уверен, что вы можете указать желаемые скорости и ускорения в каждой точке пути, поэтому еслиу вас есть эти ограничения, эта опция может не работать для вас.
Другой вариант может быть Декарт , который выполняет декартово планирование пути.Есть учебники здесь и здесь , и есть некоторое обсуждение на Descartes / MoveIt!интеграция. Эта страница выглядит так, как будто на ней много документации по Декарту.