本文作者:qiaoqingyi

vsdll编程(vsd程序)

qiaoqingyi 03-28 139

  

  

  前言

  互联网时代,技术的进步,文化的传播,自由的表达,让每一个个体都有了闪光的机会。形形色色的极客,各种 DIY,关注技术时尚,展示自己创意,也是新时代的赏心乐事。

  工业机器人,高自由度的机械手臂,明晃晃的高科技啊。拥有一台灵活控制的机械手,应该是极客们的幸福事情。

  

  现在机会来了,Dobot 团队开发了一款桌面型机械手,可以摆在书桌上,小巧玲珑,控制简单灵活。能做什么,就等你开发了。

  开箱

  不多说,拆箱!看看全家福吧。

  

  不得不提是包装格外有创意,让人想起来千层饼。看到上图那厚厚的一摞泡沫塑料了吗?看看拆箱时的情景吧。

  给未出壳的机械手来个特写吧!机械手金属表面的处理很有质感。

  

  抓手设计的很巧妙,抓紧状态-电机旋转-松开状态-电机旋转-抓紧状态,这期间电机不需要反向旋转。

  

  很用心的设计,连接线上用标签扎线,既可以提示,又可以扎线。

  

  装配

  Dobot 配件有机械臂主体、电源线、控制器、USB 线、爪子和激光头等配件,机械臂由三个电机控制。

  

  控制器的每个接线都有标签,其中1号电机接 Stepper_R 电机,2号电机接 Stepper_L 电机,3号电机接 Stepper_rot 电机。

  

  Dobot 主体有三个臂可以运动,分别为图2-2中的1、2、3表示。其中1号臂由1号电机控制,2号臂由2号电机控制,3号臂由3号电机控制。

vsdll编程(vsd程序)

  为了获得当前机械臂的姿态,需要安装传感器,1号臂安装标签为 rear arm 的传感器,2号臂安装标签为 Forearm 的传感器(注意:由于2号臂较窄,需要拆卸2号臂才可以装入)

  

  控制器有两个接口,分别为 USB 接口和电源接口,插入电源和 USB 接口,则带有气泵功能的机械手臂安装完成。插好 Dobot 机械手上的电机、传感器连接控制器,然后通过 USB 与电脑相连。

  

  使用

  装配完成,接下来可以通电操作啦。没上电之前,机械手软软的,先让机械手摆放一个Pose,打开电源开关。控制器立刻接管机械手的控制权,机械手硬了。小伙伴千万要留意,通电后就不要强行转动机械手。

  下面让我们先在电脑上测试一下。去Dobot官网下载并安装驱动。驱动是Arduino驱动,Arduino可是非常流行的开源硬件,简单易上手,用过的都知道。安装件dobottools,拨动开关切换控制器为USB控制。

  

  运行DobotClient软件,Dobot服务器会自动运行。点击右上角的菜单,可以对Dobot进行配置,比如设置机械手末端是抓手、激光笔或者气泵。

  DobotClient示教功能提供两种控制模式:单关节点动和坐标轴点动。单关节点动模式直接控制机械手的关节转动,挖掘机就是这么开的。坐标轴点动模式控制机械手末端移动,由程序计算关节运动,这种模式更直观。接下来就可以控制机械手摆Pose了。

  

  使用再现功能可以重复你先前的操作,不过需要你记录下每一个关键动作。然后点击启动按钮就可以回放动作了。

  

  手机移动端提供了iOS和Android客户端控制软件,本次使用iOS端测试。下载安装Dobot App,运行之前要做好准备工作。把控制器切换至蓝牙控制,手机打开蓝牙开关,可以运行App了。

  Dobot App同样提供了两种控制模式:通过J1、J2、J3控制关节转动,或通过直接滑动机械手臂进行控制。

  

  通过设置再现点,可以重复执行先前动作。

  

  准备工作完成,先用气泵抓物体试试。抓硬币自然不再话下,拿游标卡尺来,没问题。找个茶叶盒,装上重物,再试试,重量291.8克。能力很强啊,继续测试,3.5寸硬盘有596克,真的抓不起来了。

  卸下气泵,换上抓手。看看效果, 今年是猴年,让我们看个抓猴子的视频吧。

  

  结构与控制

  机械手结构

  Dobot机械手结构简单,设计巧妙。通过大臂小臂上的连杆机构可以保证不论大臂小臂的角度如何变化,末端吸盘始终垂直于水平面。

  

  

  机械结构

  机械手控制模型

  对Dobot机械手的控制就是控制大臂、小臂和底盘的角度,转换为坐标系,以此实现对吸盘的定位。AO 、CD永远垂直于水平面。XYZ坐标系原点位于机械手固定底盘。

  

  机械臂简图

  

  看起来这个机械手的控制还是非常简单的吗,只要有中学数学基础就可以理解了。

  编程控制

  API接口

  

  简单程序流程

  控制Dobot机械臂运动的简单流程。

  1)调用ConnectDobot连接机械手

  2)创建一个线程以固定间隔调用PeriodicTask函数

  3)设置大小臂的初始位置、超时时间、末端类型、示教/再现的静/动态参数。

  4)指令机械手移动到指定坐标(x,y,z)

  5)获取机械手姿态,检测是否移动到(x,y,z),未到达目标位置则跳转4

  6)读取下一个机械手要到达的坐标(x,y,z),跳转4

  简单的编程测试

  Dobot API动态链接库采用C++编码,支持C、C++、C#、java等语言的开发,需要使用DobotDll.dll动态链接库、DobotDll.h接口声明文件、DobotType.h数据结构定义文件,这些文件可以通过Dobot官网下载。

  生成lib文件

  在控制Dobot时还需要使用Dobot静态库,由于没有提到静态库,则需要通过DobotDll.h动态库生产静态库,需要以下几步:

  1)使用VS自带工具DUMPBIN将DLL中的导出函数表导出到(.DEF)文件。

  

  DEF转化

  2)将导出的(.DEF)文件整理为符合(.DEF)个数的函数导出文件。

  

  DEF修改

  3)使用VS自带的LIB工具将(.DEF)文件输出为VS格式的LIB文件。

  

  LIB生成

  编写代码

  使用VS 建立VC++控制台工程,编写C++代码。代码有点长,贴在这里有凑字数的嫌疑。哈哈,只贴个轮廓了,有需要代码的小伙伴请留言。

  

  程序测试

  我们编写的程序能够控制机械手按照输入的坐标连续运动。接下来让我们测试一下书法笔画图。书法笔笔头较软,即使Z轴方向有误差,也能顺利写字画图。卸下吸盘,拆开包装,装上书法笔。

  

  编程控制书法笔

  开机测试

  重复定位精度

  作为一款机械手,一个非常重要的指标就是末端位置重复定位精度(重复定位精度)。当机械手重复同一动作时,末端位置的偏差与这一指标有密切关系。Dobot给出的是0.2毫米。也就是说控制机械手反复执行同一个动作,位置偏差不超过0.2毫米。

  让我们看看重复性真的如此好吗?把机械手末端装上水笔,编程控制末端的坐标,反复画直线,画线过程是“中à右à中à左à中”,重复3次。

  

  使用游标卡尺测量测量一下图中蓝色标记的位置宽度。

  直线测量位置示意图

  左中、右中位置是笔不断往返的点,笔不会停顿,因此是测量重复精度的最好位置;(而中点是起点也是定位点,左、右点是停顿折返点,不适合)。考虑到水笔头部直径3mm以及墨水扩散的因素,可以推断重复精度小于0.4mm。

  哈哈,这个精度足够极客们在实验室High了。

笔头直径

0.3mm

线长

42.20mm

线宽(中)

2.08mm

线宽(左端)

0.71mm

线宽(右端)

0.70 mm

线宽(左中)

0.40mm

线宽(右中)

0.44mm

  伸展范围

  让我们再测量一下机械手触及范围。以底座前缘为起点,测量机械手末端吸盘能触及最远与最近距离。

  

  伸展范围测量示意图

  当触及水平面时,吸盘能控制的最远距离278毫米,最近距离31.8mm。

  

  机械手控制范围测试(动画 最远距离)

  

  最近距离测试1(吸盘)

  

  最近距离测试2(吸盘)

  若允许吸盘高于水平面(高23.5mm),则距底座前缘最近距离为40.1mm。

  

  最近距离测试3(吸盘)

  

  最近距离测试4(吸盘)

  改装可行性

  极客总是不甘于墨守成规的,改造才是最有乐趣的事情。接下来让我们看看Dobot机械手的可改造性。

  机械改装

  Dobot机械手机械部分最方便改装的部分是末端。Dobot随箱送来许多末端配件,让我们先浏览下。配件主要包括抓手、激光笔、触摸笔、可转动的吸盘。当然也可以装配其它的东西,比如挂个布娃娃,带个面具之类的。

  

  机械手末端(空)

  

  末端用零配件

  电气改装

  Dobot控制器内部也有改造的余地。气泵、继电器都是可拆卸的。主控板上激光笔接口、抓手接口、控制吸盘转动电机接口、吸盘用气泵接口都可以改插其它模块,只要能搞清楚接口引脚定义、电气特性等。

  

  电气改造配图

  编程接口

  Dobot官网提供的开发文档包含DobotAPI文档、通讯协议、DobotDemo、DobotTools源码。

  

  开发文档内容图

  编程接口Dobot API包括DobotAPI.DLL动态连接库及C/C++头文件。

  l 提供Java、Python、WPF、JS等示例代码

  l 支持Windows操作系统

  l 支持C、C++、C#、Python、Java、JS等语言开发

  会C、C++、C#、Python、Java、JS等其中任何一门语言的小朋友,都可以编写代码随心所欲的控制机械手了。

  二次开发难度

  作为极客,自己打造的程序才有成就感。那么编程控制机械手,上手程度有多难?我花了半天时间,包括阅读文档、编程、调试等,能顺利控制机械手画矩形了。

  《插入视频:水笔画矩形.mp4》

  程序使用C语言编写,共137行代码。编程中用到了多线程,这个稍有难度。难度中等偏下,有一定编程经验且能独立编写100行以上程序的同学,努力一下都可以做到的。

  如果熟悉串口通信编程,还可以绕过DobotAPI,参考Dobot通信协议文档,直接编程操作串口,自由度更高,但难度有些偏高。Github网站有Dobot的开源代码,有兴趣的小伙伴可以到Github阅读(https://github.com/maxosprojects/open-dobot)。

  脑洞大开(有了机械手可以做什么?)

  装上激光器,结合人脸识别技术,控制机械手自动瞄准目标,配上声音“举起手来”,可以拍电影了。

  

  或者找个四轮移动平台,装上机械手,是吊车还是挖掘机还是什么东东,就看你的改装水平了。

  

  四轮移动机械手

  给机械手装上抓手,控制机械手甩动手臂,抛球,可以投篮了。给机械手带个面具,然后配上摄像头,装上音箱,给小朋友讲故事。或者两个机械手玩击剑,就看脑洞开的有多大了。

  体验总结

  Dobot这款桌面型机械手,的确是为桌面设计,体积小,不占空间。执行动作时非常安静,步进电机噪声小;唯独气泵电机的声音稍大,室内环境完全可以接受。Dobot机械手结构简单,控制参数少,容易上手。

  控制器的硬件接口也十分便捷,可以根据需要,增加相应的物理器材。外围连接方便。可以通过电脑使用USB进行控制,也可以通过蓝牙无线控制。不论是Android还是IOS都有可用App。

  Dobot提供了电脑及手机上的控制软件。特别值得一提的是,手机App操作最方便。GitHub上有Dobot开源代码,适合有意深入研究的同学。

  Dobot API支持多种语言开发,包括C、C++、C#、JAVA、Python。API接口函数少,学习简单,二次开发难度小。

  总的来说,连接方便、协议公开、快速开发、重复精度高,适用极客。

  最后提两点建议

  (1)控制器和机械手之间的连线有些凌乱,希望更清爽些了;

  (2)加强文档。我在编程时走了很多弯路,如果文档清晰,并适度讲解控制器内部结构,会更有利于二次开发。

  ---------------END----------------

  是不是很好很强大~想要看看这个机械臂的是怎么工作的吗?

  打开微信搜索并关注公众号:极果网

  公众号回复:机械臂

  比人手还灵活~

  

阅读
分享