# go_grasp
基于ROS & Moveit,订阅给定的抓取位姿话题,使用链式机械臂进行抓取,代码目前在UR5机械臂上已进行了测试,未来希望也能够适配于panda机械臂。
## 基本信息
- 订阅接收数据类型为[`GraspConfigList`](https://github.com/Hymwgk/gpg/tree/master/msg)的抓取位姿话题
- 默认执行所接受话题中`GraspConfigList`格式数据中包含的第一个`GraspConfig`数据所代表的抓取
- 默认订阅的抓取位姿的形式,使用`典范抓取坐标系`形式表示
## 代码涉及的基础抓取信息
<img src="README.assets/image-20220619153333535.png" alt="image-20220619153333535" style="zoom:200%;" />
### 符号说明
以下符号基本延续在书本《机器人学导论》中的符号表示形式;
需要特别说明的是,我们设定机械臂在接收到指定的抓取位姿之后,不会直接将夹爪移动到对应的抓取位姿,而是将夹爪首先移动到一个`预备抓取姿态`,然后从该预备姿态,沿着抓取approach轴方向直线靠近抓取姿态,直至到达目标。
为了区分抓取状态和预备抓取状态时的机械臂所处的状态,我们通过对位置可变动坐标系的符号添加下标`g`(grasp抓取状态)与`p`(pre-grasp预备抓取状态)分别代表这两种不同的状态;例如,变换关系`BTE`代表坐标系{E}相对于坐标系{B}的普遍变换关系,而`BTEg`特指在抓取情形下,坐标系{E}相对于坐标系{B}的变换关系,特殊的,对于相对位置固定的坐标系`{E}`与`{L}`之间存在关系`LgTEg = LpTEp = LTE`
注意理解下文中: 情形,状态等词语的区别
### 涉及的连杆与物体(以UR5为例)
`base_link` :ur5机械臂规划组里的基座连杆
`wrist_3_link`:ur5机械臂末端最后一个连杆
`AG95` :使用的机械手实物,
`Realsense D435`:使用的相机实物
`GRIPPER`:虚拟夹爪
`Object`:桌面上的目标物体
### 坐标系
表征一个刚体在三维空间中的位置与姿态(位姿),可以通过在刚体上固连一个坐标系,并描述该坐标系相对于空间参考坐标系的变换关系来实现,下面解释本抓取例子中各个连杆与物体上固连的坐标系系统。
**`{GC}`**:典范抓取坐标系,固连在虚拟夹爪`GRIPPER`上,它主要描述 **在抓取情形下** 一种典型的抓取坐标系与夹爪的相对固连方式 ,不用于描述具体的抓取姿态
> - 定义,典范抓取坐标系的x轴为approach轴,y轴为闭合方向轴记为binormal,z轴为夹爪指向夹爪正面,记为minor_pc轴(使用Dex-net中定义的形式)
> - 所谓虚拟夹爪,可以认为是物理夹爪在抓取情形下的表征,代表物理夹爪在抓取情形下的状态
> - 虚拟夹爪在显示的时候,我们把它简化为图中所示的形式,它的重要的基本几何尺寸与实际夹爪形同,可以[参照这里的一些解释](https://github.com/Hymwgk/PointNetGPD)
**`{G}`**:表征抓取位姿的坐标系,与实际夹爪`AG95`的固连形式 与 {GC}和`GRIPPER`固连形式相同
> 一旦确定了该坐标系相对于一个父坐标系的位置姿态,**抓取情形下**,实际夹爪在父坐标系中的具体位置姿态也就确定了
>
> 仅在抓取情形下有意义,因此在变换关系中可省略下标`g` ,例如GgTEg=GTEg
**`{O}`**:固连于物体`Object`之上的物体坐标系(或者叫Local frame)
> 在计算过程中,我们通常无法直接计算抓取坐标系{G}相对于某个父坐标系的位姿,而是先计算出坐标系{O}的位姿,然后使用一个人为设定的变换关系OTG来推算出坐标系{G}的位姿
**`{C}`**:相机坐标系,在我们UR5的例子中,使用realsense D435的 `camera_color_optical_frame`坐标系,固连于其rgb光学镜头
> 通常,在进行抓取姿态检测时,得到的抓取位姿都是使用CTG来表示的,即,最初视觉抓取检测出的抓取一般都是以相机坐标系{C} 为父坐标系
**`{E}`** :实际夹爪的指尖中心固连(抓取)坐标系,在我们的UR5例子中,认为坐标系{E}固连在AG95夹爪指尖中心位置处
> - 与{G} 不同的是,坐标系{E}任何时间均会随着实际夹爪移动而移动,坐标系{G}仅在抓取情形下有意义;
>
> - 坐标系{E}与实际夹爪的固连形态可能是由系统直接指定,也可能是由自己人为指定,例如本UR5例子中,为了增加例子说明度,我们采用{L}与类似`wrist_3_link` 连杆的固连形态,因此在本例子抓取情形时,{E} 与 {G}之间存在一个确定的变换关系G**T**Eg (当然你也可以直接使用坐标系{G}与虚拟夹爪之间相同的固连形态) 以下左侧第一个是我们人为指定的固连方式
>
> ![image-20220619223646039](README.assets/image-20220619223646039.png)
**`{B}`**:机械臂基座连杆的固连坐标系,在UR5机械臂中,固连于`base_link`连杆
**`{L}`**:机械臂末端连杆的固连坐标系,在UR5机械臂中,固连于`wrist_3_link` 连杆
### 坐标系间的变换关系
说明: 以下的变换中,符号`T`代表`to`的含义,表示从一坐标系到另一坐标系的变换关系(变换矩阵),也可以表述为,一个坐标系相对于另一个坐标系中的位姿(位置姿态),例如,`ATB`代表坐标系`{A}`到坐标系{B}的变换,也可表述为坐标系{B}相对于坐标系{A}的位姿,以下存在一定程度的说法混用,注意分辨。
#### 基本变换关系
**`BTC`**:相机坐标系{C}相对于基座坐标系{B}的位置姿态,手眼标定之后即可确定;
> 实际上,如果是眼在手上的形式,手眼标定其实是确定了关系`LTC` ,关系`BTC`则由BTC=BTL*LTC 实时计算确定,其中`BTL`由正运动学计算得到
>
> 在ROS中,我们可以使用TF直接读取该变换关系
**`CTG`**:抓取坐标系{G}在相机坐标系{C}中的位姿,即,所订阅话题中的目标抓取位姿的表示形式
**`GTEg`**:**抓取情形下**,抓取坐标系`{G}`相对于实际夹爪指尖固连坐标系`{E}` 的变换关系
**`LTE`**:指尖坐标系`{E}`与末端连杆固连坐标系`{L}`之间的变换关系,是一个由物理机械结构尺寸确定的固定变换关系
> 例如本例子中,AG95夹爪结构尺寸确定,且固定连接在`wrist_3_link`连杆上,因此该变换是一个固定值
**`EgTEp`**:坐标系{E}在预备抓取与抓取情形下 之间的变换关系,为人为设定的固定值
#### 中间变换关系解释
**`BTEg`**:特指抓取情形下,实际夹爪指尖抓取坐标系`{E}`,相对于机械臂基座固连坐标系`{B}`的位姿
> 在代码中,我们使用以下表示形式,将变换关系拆分为平移和旋转
>
> - `BTEg_rot`:变换矩阵`BTEg`的旋转分量
>
> - `BTEg_trans`:变换矩阵`BTEg`的位置分量,以下变换同理,省略不写
**`BTEp`**:特指预备抓取情形下,实际夹爪指尖抓取坐标系`{E}`,相对于机械臂基座固连坐标系`{B}`的位姿
#### 求解的目标变换关系
在进行手眼标定之后,我们可以使用正运动学,实时读取关系**`BTC`**,并结合给出的抓取位姿变换CTG,使用上述**基本变换关系**计算出抓取与预抓取情形下,机械臂末端执行器的变换关系`BTEg`与`BTEp` ,进而计算出以下两个关系`BTLg`与`BTLp` ,最终使用Moveit进行机械臂各关节逆运动学解,并规划运动轨迹。
**`BTLg`**:抓取情形下,机械臂末端连杆上的固连坐标系`{L}`,相对于机械臂基座固连坐标系`{B}`的位姿,例如抓取情形下ur5机械臂中的`wrist_3_link`坐标系,相对于`base_link`坐标系的位姿
**`BTLp`**:预备抓取情形下,`wrist_3_link`固连坐标系`{L}`,相对于机械臂基座`base_link`固连的坐标系`{B}`的位姿
###
yava_free
- 粉丝: 5397
- 资源: 2089
最新资源
- 小区管理系统的设计与实现(论文+源码)_kaic.zip
- 无感Foc成熟项目,代码全开源 学习观测器,锁相环,无感算法 基于国产M0核MCU平台, 风机量产程序,包含龙博格电机观测器,SVPWM,顺逆风启动,五段式与七段式调制等源码,完全可以移植到别的MC
- 学生成绩信息管理系统的设计与实现(论文+源码)_kaic.zip
- 智能车位管理系统设计与实现(论文+源码)_kaic.zip
- 鲸鱼优化算法 WOA优化用于分类 回归 时序预测 鲸鱼优化支持向量机SVM,最小二乘支持向量机LSSVM,随机森林RF,极限学习机ELM,核极限学习机KELM,深度极限学习机DELM,BP神经网络,长
- 学习过程可视化管理系统的设计与实现(论文+源码)_kaic.zip
- 五次多项式道轨迹规划+MPC轨迹跟踪控制simulink模型(有说明文档) 版本:Matlab R2019a Carsim2019.1 模型采用五次多项式道轨迹,考虑道过程中的边界条件约束和侧向加
- 粒子群算法优化用于分类 回归 时序预测 粒子群优化支持向量机SVM,最小二乘支持向量机LSSVM,随机森林RF,极限学习机ELM,核极限学习机KELM,深度极限学习机DELM,BP神经网络,长短时记忆
- comsol电磁轨道炮模型 三维
- MATLAB代码:基于分时电价条件下家庭能量管理策略研究 关键词:家庭能量管理模型 分时电价 空调 电动汽车 可平移负荷 参考文档:《基于分时电价和蓄电池实时控制策略的家庭能量系统优化》参考部分模型
- MATLAB代码:基于主从博弈的电热综合能源系统动态定价与能量管理 超值 关键词:主从博弈 电热综合能源 动态定价 能量管理 粒子群算法 cplex求解 参考文档:店主自编文档,完全复现 仿真
- RexVision 1.6.1,C#+Halcon机器视觉框架源码, 到手vs2019可以直接编译、 视觉检测、AOI视觉检测、机械手定位、点胶机、插件机、激光切割机、视觉螺丝机、视觉贴合机、激光焊接
- 电子凸轮-区间运动Ver2.3.0(位置跟随,去程+返程,适合送料动作) 1.一个主轴伺服(定速运动)+一个从轴伺服 2.在西门子200smart中运行 3.维伦通触摸屏 4.主轴定速运动(启动带加速
- 基于MBD的BMS电池管理系统应用层软件,策略说明 国外知名供应商出品 sumlink电池管理系统策略模型 BMS电池管理控制器 BMS INCA 基于ccp xcp协议A2L标定文件
- 苍鹰优化算法NGO优化BP神经网络的软值和阈值参数做多输入单输出的拟合预测建模 程序内注释详细直接替数据就可以使用 程序语言为matlab 程序直接运行可以出拟合预测图,迭代优化图,线性拟合预测
- Comsol merging BIC
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈