第五天:了解越疆dobot机械臂,使用python,编写通过ros服务控制机械臂运动程序

一、了解越疆dobot机械臂

详细信息可以查看用户手册和API开发手册,以及其它官方提供资料,这里我只列出我在开发过程中遇到的问题,以及需要了解的知识点。

(1)坐标系

我们可以看到这里涉及的坐标系主要是两种,一种是关节坐标系,一直是笛卡尔坐标系。我们可以通过命令获取到这两组坐标系的值,后面详细说明。

二、使用python,编写通过ros服务控制机械臂运动程序

注意后面运行python脚本的时候,要先开启机械臂的服务,直接使用一下指令即可

(1)设置机械臂的归零状态:

SetHOMECmd.py(调用SetHOMECmd服务,编写client,这里函数接口已经通过服务方式进行封装好了我们直接可以使用)

这是我在API里找到的函数原型,我们直接使用系统的回零接口即可。

(3)执行 PTP 指令

设置机械臂运动的目的坐标,这里一共需要传递五个参数,通过官方的API接口可以看到每一个参数的意思。

可以看到,第一个代表PTP模式的设置,后面四个参数主要是描述坐标系的相关量。我们这个工程主要使用模式1,MOVJ模式和笛卡尔坐标系了,这就用到了博文开头提到的坐标系和模式介绍。

(4)整合相关接口,实现完整的一个实现流程。

首先,我们先理一下我们的思路。
我们的流程就是:建图——>导航——>识别——>抓取——>移动到目标点——>投递——>(回到第三步,反复识别抓取投递)。
今天这里研究的是抓取。我们通过识别邮件的信息和位置,然后通过机械臂去抓取。我们车导航到分拣台,但是邮件的位置是一个不知道的位置,我们首先通过摄像头去进行一个图像分割,检测到邮件出现在我们摄像头里面,就可以算出邮件的中心点相对于摄像头图像中心点的差值,我们分别返回相差的X,Y值,然后控制机械臂运动去抓取。
我们首先可以知道现在的机械臂末端位置的X,Y,Z坐标(我们使用的就是笛卡尔坐标系,可以获得当前坐标点的一个坐标)然后我们可以通过X,Y分别加上我们放回的值然后移动机械臂去抓他是吧,听着确实也好懂。
当时,我们得考虑一下临界值,就是实际上Y,Z的值分别是有第二和第三连接角进行控制的,至于X只是底盘的一个值可以不用多讨论。而我们的Y变化是和Z有关的,所以我们需要测出这个范围值。

其实在思考这里的时候,我首先想到的不是上面这个样子直接对左边进行的一个加减。我之前做垃圾桶的时候进行的分拣,那里实际上用到了计算机械臂的逆解,当时是个六自由度的机械臂,这里是四自由度的一个机械臂,相对要简单一些,不过这里四自由度逆解算法手上没有现成的,也就没有使用算逆解的方式。后面有机会在补充试试。而且这里实际上也不要那么麻烦。
我们只要在固定的高度Z测试一下范围即可。因为我们首先是在一个固定的定去识别邮件,首先记录这个点的高度,然后我们需要降到桌面去吸取邮件,这是第二个高度,我们只需要测定这两个高度Z的前提下,Y的移动范围就可以了!
下面是我写的一个简单的测试程序:

这里实在Z值固定的范围下对x,y进行测试,由于x的范围很大,不会超出其范围,所以只对y进行测试即可。
这里最终机械臂会进行 错,由于是软件 错,所以可以直接使用警 清除命令:rosservice call /DobotServer/ClearAllAlarmsState就可以恢复。

这是我们测试的几组值,其实可以看到X一定的情况下,Y的范围取决于Z值高的,也不难想,机械臂越高,那么Y轴可移动空间越小,所以建议以高的为限制。

今天大概就到这里!

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览214586 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月5日
下一篇 2021年8月5日

相关推荐