本帖最后由 lfshit 于 2015-10-9 23:02 编辑
一、UARM机械臂试用体验 2015年9月23日,收到UARM机械臂,包含机械臂本体、气泵模块。未到的蓝牙模块、手爪模块待下次寄过来。随即,满怀新奇与激动地与几个小伙伴开始研究如何让这个宝贝动起来。 仔细看了使用说明(英文版的,略费劲。建议UARM团队提供中文版说明下载),安装好一些必需的软件和驱动后,第一步需要把 Standard.ino文件烧写到Arduino-Uno板子上去。这时候发现:只要一插上烧程序的USB线,程序就无法编译和下载。没办法了,用小伙伴的Windows 7系统的电脑上试试。竟然可以编译并烧写!后来重装了另一个版本的Arduino,好了!原来是Arduino版本问题,而不是Windows 10系统不兼容导致的。 第二步,将机械臂接上电源,机械臂迅速动作回到初始位置。打开鼠标控制程序MouseControl_V1.0.5.exe,移动鼠标、滚轮、左、右键,即可实现对机械臂前后、左右、上下和抓放的运动控制!!!(另外,在我的笔记本上存在另一个奇怪的问题,就是鼠标控制程序无法捕捉鼠标滚轮的运动。而该鼠标放在别的电脑上控制时,滚轮是好使的。该问题有待进一步攻克!) 仔细研究一番机械臂的动作,主要有两点发现:①UARM机械臂机构设计最大的巧妙之处就是:在相当大的运动范围内,不管大臂小臂如何运动,其末端执行装置,无论是吸盘还是手抓,都能够基本保持水平!这样就保证了吸取或夹取物体的顺畅。②在进行机械臂上下动作控制时发现,执行末端升高或降低这两个看起来简单的动作,其实是靠大臂和小臂的联动实现的。即单片机在实现执行末端上下运动时,对大臂和小臂进行了逆运动学解算和合成控制,大臂和小臂的舵机联动。逆运动学建模也是我后续想要深入研究的一个方向。
二、开发ROS 程序包控制机械臂 ROS(Robot Operation System)是一个机器人软件平台,提供一些标准操作系统服务,例如硬件抽象,底层设备控制,常用功能实现,进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受,发布,聚合各种信息(例如传感,控制,状态,规划等等)。目前ROS主要支持Ubuntu。ROS(低层)使用BSD许可证,所有都是开源软件,并能免费用于研究和商业用途。由于其强大的功能、全面的信息及方便快捷的开发,使得开源的ROS逐渐成为机器人开发者首选的开发工具和平台。更多学习内容详见网页 http://wiki.ros.org/cn。 为了学习ROS系统,实现ROS系统对单片机的数据通讯和控制,试着通过在Ubuntu虚拟机下编写ROS程序包,使用键盘(也可以是鼠标)控制UARM机械臂。这样,原本控制单片机靠的是在Windows系统上安装的鼠标控制程序MouseControl_V1.0.5.exe,现在要被在Ubuntu系统下运行的ROS程序包所取代。原先已经烧写到单片机内的程序不作更改。 这部分工作是在一位资深搞ROS的小伙伴帮助指导下完成的。在ROS下建立两个节点(NODE)或程序包(PACKAGE)和一个话题(TOPIC),第一个节点负责捕捉电脑键盘信息,并向话题发送消息(MESSAGE);话题收到消息后向外发送;第二个节点接收话题传过来的消息,并向单片机串口发送数据。每帧数据含11个字节。在本项目中,节点间传输的消息为按键按下所表征的机械臂运动信息。 ROS程序编写前需要先获取UARM官方所提供的程序中单片机串口通讯、舵机控制等的相关信息。ROS程序调试过程比较顺利,虽然出现了初始值错误、数据高低八位搞反等低级错误,但还是用3天时间完成了程序的编写和调试。当第一次使用ROS实现了对机械臂的完美控制时,满心欢喜,成就感爆棚~~~
(未完待续...)
|