本文是求助贴,请大神帮忙,谢谢!(在古月居交流社区发帖,一周多都没人回复,请各位帮忙)
问题描述:
请看代码,pos存储三维点,posOffset存储三维点的偏差。
想通过设置一个初始点,然后根据偏差值规划一系列的点,期望机械臂末端(法兰盘中心)根据这些点运动。
目前遇到的问题:假设规划路径为A—B—C—……,A—B时,机器人会绕一整圈到达B点,并没有实现直线到达。
其实三维点描述的是S型轨迹(代码中的三维点已经被省略了),想让机械臂末端走S型曲线。
另外,四元素表示的姿态到底是怎么设置的?怎么知道它要取什么值?四元素感觉不直观。
请哪位大神帮忙解答,万分感谢!

//实现关节空间轨迹规划
#include<moveit/move_group_interface/move_group_interface.h>
#include <moveit/planning_scene_interface/planning_scene_interface.h>
#include <moveit_msgs/DisplayRobotState.h>
#include <moveit_msgs/DisplayTrajectory.h>
#include <moveit_msgs/AttachedCollisionObject.h>
#include <moveit_msgs/CollisionObject.h>
#include <vector>int main(int argc, char **argv){//初始化,其中ur_test02为节点名ros::init(argc, argv, "ur_test01");//多线程ros::AsyncSpinner spinner(1);//开启新的线程spinner.start();//初始化需要使用move group控制的机械臂中的arm groupmoveit::planning_interface::MoveGroupInterface arm("manipulator");   //允许误差arm.setGoalJointTolerance(0.001);//允许的最大速度和加速度arm.setMaxAccelerationScalingFactor(0.2);arm.setMaxVelocityScalingFactor(0.2);// 控制机械臂先回到水平位置,这个位置下载的文件中已经设置好了arm.setNamedTarget("home");arm.move();sleep(1);//关节空间std::vector<vector<double>> pos = {{      1516.38824   24.37429249 4.945091105 },
{      1517.288232 24.70266148 4.910326798 },
{      1517.828202 25.1301746   4.869095553 },
{      1518.6382     25.65316643 4.823924466 },
{      1519.538144 26.23986586 4.779723388 },
{      1520.43816   26.84294131 4.7401259     },
{      1521.518101 27.43266236 4.705291704 },
{      1522.418002 27.97653605 4.675852832 },
{      1523.317976 28.47903696 4.648267775 },
{      1524.038019 28.94768219 4.620115082 },
{      1524.847979 29.38823305 4.590313158 }
};int n = pos.size();int m = pos[0].size();std::vector<vector<double>> posOffset(n-1,vector<double>(m,0));for(int i = 0; i < n-1; i++){posOffset[i][1] = pos[i+1][1] - pos[i][1];posOffset[i][2] = pos[i+1][2] - pos[i][2];posOffset[i][3] = pos[i+1][3] - pos[i][3];}geometry_msgs::Pose target_pose1;target_pose1.orientation.w = 1.0;target_pose1.position.x = 0.35;target_pose1.position.y = -0.05;target_pose1.position.z = 0.6;arm.setPoseTarget(target_pose1);for(int i = 0; i < n-1; i++){target_pose1.position.x += posOffset[i][1];target_pose1.position.y += posOffset[i][2];target_pose1.position.z += posOffset[i][3];arm.setPoseTarget(target_pose1);} arm.move();//输出确定是否运行成功moveit::planning_interface::MoveGroupInterface::Plan my_plan;bool success = (arm.plan(my_plan) == moveit::planning_interface::MoveItErrorCode::SUCCESS);ROS_INFO_NAMED("tutorial", "Visualizing plan 1 (pose goal) %s", success ? "" : "FAILED");//控制机械臂先回到初始化位置arm.setNamedTarget("home");arm.move();sleep(1);ros::shutdown();return 0;
}

MoveIt轨迹规划问题相关推荐

  1. 使用 MoveIt 控制自己的真实机械臂【4】——了解 MoveIt 的轨迹规划实现机制

    上一节中我们提到了一个planning request adapters 的概念,在这一节中我们将对其展开详细了解. planning request adapters 是运动规划中 Motion P ...

  2. Moveit编程——moveit 编程技巧笔记——圆弧轨迹规划+修改轨迹

    moveit 编程技巧笔记--圆弧轨迹规划+修改轨迹 1 笛卡尔空间圆弧轨迹规划 2 轨迹重定义(修改moveit生成的轨迹数据) 1 笛卡尔空间圆弧轨迹规划 之前学习过笛卡尔空间下轨迹规划API:( ...

  3. 机器人轨迹规划(熊友伦)

    机器人轨迹规划(熊友伦) http://blog.csdn.net/jyc1228/article/details/3991881 http://blog.csdn.net/wx545644217/a ...

  4. 遨博协作机器人ROS开发 - 机械臂复杂轨迹规划

    目录 一.简介 二.环境版本 三.学习目标 四.知识储备 五.任务实施 六.任务拓展 七.课堂小结 八.课后练习 一.简介 大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人ROS开发),今天 ...

  5. (学习用1)调用用RRT算法进行笛卡尔空间轨迹规划和关节空间轨迹规划

    在MoveIt中,可以通过调用computeCartesianPath()函数来使用RRT算法进行笛卡尔空间轨迹规划,可以通过调用computeJointSpacePath()函数来使用RRT算法进行 ...

  6. ROS进阶——笛卡尔轨迹规划descartes

    一.配置 在kinetic版本无法直接通过apt-get安装descartes,因此直接下载源码到工作空间内编译使用(可去掉descartes_tests). git clone https://gi ...

  7. Matlab Robotic Toolbox V9.10工具箱(三):轨迹规划

    利用matlab robotics 进行轨迹规划 轨迹规划有两个函数: (1).jtraj,已知初始和终止的关节角度,利用五次多项式来规划轨迹. [q,qd,qdd] = jtraj(q0, qf, ...

  8. github gis 路径规划_Apollo问答丨车辆定位和轨迹规划用的是语义,还是3D Position?...

    自Apollo开发者社区小程序上线以来,我们每一天都会在「社区问答」板块收到许多开发者的技术提问. 每周,可爱的Apollo小姐姐都会精选出被采纳的社区问答进行整理汇总,并统一对大家进行答复. 开发者 ...

  9. 机器人中的轨迹规划(Trajectory Planning )

    Figure. Several possible path shapes for a single joint 五次多项式曲线(quintic polynomial) $$\theta(t)=a_0+ ...

最新文章

  1. 数据库中的datatime的长度怎么设定_软件测试必备之数据库知识(一)
  2. 高性能MySQL读书笔记---查询优化
  3. BZOJ5467 PKUWC2018Slay the Spire(动态规划)
  4. 字符缓冲流特有功能复制Java文件
  5. javafx之TableView的FXCSS
  6. java后端工程师平时开发或多或少会用到eclipse,那么它有哪些快捷键呢
  7. 由Object.prototype.toString.call( )引发关于toString( )方法的思考
  8. spring事务源码解析
  9. java解决Exception in thread “main“ java.lang.OutOfMemoryError: GC overhead limit exceeded
  10. RabbitMQ和Kafka的显著差异(1)
  11. docker使用国内仓库
  12. Android okHttp网络请求之缓存控制Cache-Control
  13. elasticsearch索引模块缓存
  14. Mybatis-学习笔记(2)Mybatis配置文件
  15. 神思SS628(100)型第二代身份证验证阅读机具二次开发
  16. S3C2410,ARM920T,试题总结
  17. Pisces的属性配置文件加载
  18. websphereJDBC提供驱动程序配置问题,导致报错:Illegal attempt to enlist multiple 1PC XAResources
  19. emoji表情无法显示在html,微信分享页面Andriod手机emoji表情符无法显示问题?
  20. python中PIL的安装参考教程

热门文章

  1. 杰理之TIMER【篇】
  2. 【PTA乙级练习题】topic:1001
  3. centos java 乱码,linux(centos7)下程序中文输出乱码问题的解决
  4. UE4 通过UI蓝图来控制游戏的暂停和返回
  5. 莆田学院计算机系录取分数线,莆田学院2019录取分数线_高考升学网
  6. pHP分析网站日志,通过用数据挖掘技术来分析Web网站日志?
  7. Java学习第7篇_supper关键字
  8. 程序员们为什么不能“面朝大海,春暖花开?”
  9. 那些为用户保驾护航的产品
  10. C++训练 : 神奇的fans