1 任务描述

在使用Moveit对机械臂运动进行规划时,我们定义Pose,然后规划,目标位姿Pose的定义代码如下:

target_pose = PoseStamped()
target_pose.header.frame_id = reference_frame
target_pose.header.stamp = rospy.Time.now()
target_pose.pose.position.x = -0.545
target_pose.pose.position.y = 0.426
target_pose.pose.position.z = 0.267target_pose.pose.orientation.x = -0.628
target_pose.pose.orientation.y = 0.226
target_pose.pose.orientation.z = 0.708
target_pose.pose.orientation.w = 0.230        

2 错误表现

这里面xyz的定义是没有问题的,但是姿态这么定义有问题,查看源代码这里的orientation是单位四元数的表示,然而规划也总是失败的。具体表现为无论你定义为多少姿态总是运动到四元数为[0 0 0 1]的姿态位置。就是下面这个姿态

3 原因分析

经过查找原因是数据格式问题,我具体的操作方法是在rviz界面拖动机械臂到预定位置,然后使用 tf_echo 查看坐标变换数值,然后把这个Quaternion数值输入上面定义的位置,如下图

tf_echo 查看坐标变换数值

问题就出在这里,这里显示的变换四元数只保留了三位小数,而实际应该是8位小数,如下图形式

4 解决办法步骤

  • rviz中拖动机械臂到合适位置,“Plan and Execute”使机械臂运动到目标位姿
  • 运行下面代码查看目标位姿的pose表示
rosrun tf tf_echo 参考坐标系 目标坐标系

  • 使用里面的 In RPY 数值,求解四元数(需要自己写代码),然后把这个四元数赋值给姿态数值
r, p, y = 1.567, 1.469, -3.080   # tf_echo 中查看的弧度表示
rm = ax2rm(r, p, y)   # 弧度2旋转矩阵
goal_quat = rm2q(rm)   # 旋转矩阵2四元数target_pose = PoseStamped()
target_pose.header.frame_id = reference_frame
target_pose.header.stamp = rospy.Time.now() target_pose.pose.position.x = -0.545
target_pose.pose.position.y = 0.426
target_pose.pose.position.z = 0.267target_pose.pose.orientation.x = goal_quat[0]
target_pose.pose.orientation.y = goal_quat[1]
target_pose.pose.orientation.z = goal_quat[2]
target_pose.pose.orientation.w = goal_quat[3]

5感悟

!!!当你代码流程没有问题,却怎么也找不到解决办法时,可以好好检查下使用到的数据格式是否一致正确

matlab机械臂工作空间代码_ROS中机械臂笛卡尔空间规划姿态求解无效-Moveit!相关推荐

  1. matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...

    本文参考Moveit!官方文档. 系统:ubuntu 18.04 / 16.04 ROS:Melodic / Kinetic 概述 基于python的运动组API是最简单的MoveIt!用户接口.其中 ...

  2. matlab机械臂工作空间代码_轻型协作机械臂运动学及工作空间分析

    0 引言 OUR机械臂有别于传统工业机械臂,其特点是体积小.重量轻.有很快的运动速度和较大的活动范围,机械臂的最大运动速度可以达到180°/s,能够处理更复杂.更危险的工作,具有极强的灵活度.精确度和 ...

  3. matlab机械臂工作空间代码_[连载 5]Vrep--Matlab Robitic Toolbox--PUMA560机械臂控制

    [连载 0]Vrep入门介绍 [连载 1]Vrep小车建模--前进和转向 [连载 2]Vrep小车建模--内嵌脚本 [连载 3]Vrep小车建模--matlab控制 [连载 4]Vrep导入三维模型- ...

  4. matlab机械臂工作空间代码_老外研发模拟肌肉运动的机械臂,与人类协同工作动作完美同步...

    一直以来 机器人貌似都是工程师的专属 一旦和体力劳动者扯上关系 就比较尴尬了 基本上就是机器人取代体力劳动者 其实 机器要是能和人类协同合作的话 机动和执行并存 效率肯定会更高 因此人机协作再怎么难 ...

  5. matlab机械臂工作空间代码_焊接机械臂工作站的搭建与组装

    一.物料准备 1.1.工业机器人焊接工作站需要的设备:弧焊机器人本体 示教器和电柜,焊机,气瓶,变位机,清枪站,焊枪,送丝机,焊丝,导电嘴,喷嘴 ,ANYBUS模块,导电嘴坐,送丝管,防撞装置,焊接工 ...

  6. MATLAB绘制笛卡尔心形线---by CSDN ChitGPT AI大模型

    以下是MATLAB代码,用于绘制笛卡尔心形线: t = linspace(0, 2*pi); x = 16.*sin(t).^3; y = 13.*cos(t)-5.*cos(2*t)-2.*cos( ...

  7. 数据库中的四大join 笛卡尔乘积(以MySQL为例)

    1. 绪言 不管是面试还是实际工作中,总是会听到你对两个表做连接查询试试呢,你知道数据库有哪些连接吗,诸如此类的对话 数据库中,表与表之间大部分都是存在关系的,比如经典的学生表和班级表.班级表与学校表 ...

  8. 蒙特卡洛法计算机械臂工作空间matlab

    蒙特卡洛法计算机械臂工作空间matlab 前言 代码分析 1. 利用改进DH参数建立Franka的模型 2. 蒙特卡洛法求工作空间 前言 以Franka emika七轴机械臂为例,利用蒙特卡洛法在ma ...

  9. MoveIt的使用(二)机械臂URDF在ROS中MoveIt的配置和使用

    一.机械臂在ros里面的可视化 在SOLIDWORKS转换成urdf文件之后,生成的文件放在新建的功能包中后,编译(catkin_make),再执行下面代码即可运行可视化文件 roslaunch de ...

最新文章

  1. SQuirreL SQL Client 使用记录
  2. 记于2014-12-9
  3. [启发式搜索/A*] [SCOI2005]骑士精神题解
  4. 【pmcaff专栏】陆蔚青:漫谈商业智能
  5. Javascript模板引擎handlebars使用实例及技巧
  6. VTK:可视化之TensorGlyph
  7. Swoole 实现简单的路由
  8. JAVA——以ReentrantLock为例学习重入锁以及公平性问题
  9. 庆祝西安.NET俱乐部成立,请申请加入的朋友在这里报到
  10. 遍历frame中的表单:
  11. win10 wlan 诊断显示后没有有效的ip配置
  12. 开关电源和LDO的区别
  13. 一定要收藏,一位百万年薪Python程序员手写资料(附实例分享)
  14. 人工智能数学基础1:三角函数的定义、公式及固定角三角函数值
  15. golang 时间格式化
  16. ppt导出1000dpi的图
  17. vue el-table表格计算小计
  18. .NET Framework各个版本(1.0 - 2.0)
  19. 在互联网时代一切归零
  20. 手把手教你使用Keras进行人脸检测和识别

热门文章

  1. 怎么访问原生php类,关于如何利用php的原生类进行XSS
  2. Oracle Rownum 伪列详解
  3. java鸟_java飞扬的小鸟
  4. php curl显示错误信息,php如何调试curl错误信息
  5. php 去除重复的值,php数组怎么去除重复值?
  6. mysql连表删除语句_MySQL中联表更新与删除的语法介绍
  7. SpringBoot整合RabbitMQ-创建队列并绑定交换机
  8. MySQL Workbench工具设置编码
  9. 《好好学Java 从零基础到项目实战》姗姗而来
  10. swoole 类中使用定时器