本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
机械手在现代社会已经广泛应用于制造业,航空航天业,军事业,同时也将进入服务业,移动机械手是近年来迅速发展起来的高新技术密集的机电一体的产品。随着社会生产技术的飞速发展,移动机械手的应用领域不断扩展。从自动化生产线到海洋资源的探索,乃至太空作业等领域,机械手已成为高技术领域内具有代表性的战略目标。然而就目前的机械手技术水平而言,机械手在信息的获取、处理及控制能力等方面都是有限的,对于复杂的工作任务及多变的工作环境,机械手的能力更显不足。随着移动互联网时代的到来、嵌入式技术及软件技术的快速发展,越来越多的高性能嵌入式芯片的出现,嵌入式操作系统的快速发展,并且应用到嵌入式处理器中,促进了移动机械手向更加向智能化方向发展。本文以TI公司的OMAP4430异构多核处理器为,Android手机为控制终端,实现了一款基于摇杆手柄操作的可视化移动机械手。控制终端Android手机响应摇杆事件控制移动机械手操作。同时借助OMAP4430异构多核处理器在视频编解码上的强大优势实现了对720P视频的实时无线传输。为了提高移动机械手的控制和相应速度,采用直流马达驱动机械手运动并采用实现180级别角度和速度的7个AX-12马达来提供更大的力矩。通过实验来验证本次设计的可行性。
1 硬件平台
本次设计的可视化远程遥控移动机械手硬件部分主要分为OMAP4430开发板、Android手机、车体及机械手马达三部分。
1.1 OMAP4430开发板
OMAP4430 是TI公司的实现了高性能和低功耗完美平衡的Soc,其内部主要包括四个处理引擎:基于ARMv7l指令集的SMP Cortex-A9 1Ghz双核处理器,可编程多媒体硬件加速引擎IVA-HD及协处理核Cortex-M3,高性能的图像显卡Power SGX540及提供图像视频并行计算的ISP。其中IVA-HD多媒体加速引擎内部有7个针对各种视频编解码而设计的加速引擎,能够实现对720P视频的实时编解码。其内部示意图如图1所示:
图1 OMAP4430内部引擎示意图
1.2 Android平台
Android是一个以Linux为基础的开放源代码移动设备操作系统,主要用于移动设备,由Google成立的Open Handset Alliance持续领导与开发中。Android具有开源、良好的可移植性等成为大智能手机操作系统。本次设计Android手机采用联发科Cortex-A7处理器,支持无线网卡AP热点,支持H264硬解码。
1.3 移动机械手
移动机械手由运动小车和机械手组成,运动小车负责地面移动,而机械手通过旋转6个马达关节来完成捉取地面目标任务。
1.3.1 移动小车
利用高性能MCU ATmega128L芯片通过传感器采集当前的状态及驱动DC马达进行移动, ATmega128单片机为基于AVR RISC结构的8位低功耗CMOS微处理器。由于其先进的指令集以及单周期指令执行时间,ATmega128单片机的数据吞吐率高达1MIPS/MHZ,小车采用4轮驱动车轮形移动机器人,配有4个DC直流马达及多种传感器,具有卓越的旋转能力和稳定性好的特点,小车控制框架如图2所示:
图2 小车运动控制示意图
1.3.2 机械手
机械手由6个AX-12马达组成,AX-12马达具有180级别位置和速度控制、位置角度和速度的实时反馈、内部温度或力矩超出范围时给予警告提示等优点。个马达的关节负责机械手360度旋转,第二个关节的同时控制两个马达,这个关节在提起和放下物体时提供了必须的扭矩,因此通过控制两个马达补充扭矩大小的不足,而第三第四个马达提供了机械手捉取目标时前伸和后缩所需的力矩,第五个马达则是手腕旋转马达,用于旋转一个马达的空中角度。一个马达的旋转将推动夹子张开和闭合来捉取地表目标。通过这6个马达的机械臂,可向所有方向移动并进行多样化的动作实验。
1.4 系统硬件框架
图4 系统硬件框架图
2 软件设计
系统软件设计包括Android手机应用、OMAP4430开发板Linux控制服务端和无线视频服务软件设计、AVR单片机程序设计,系统软件框架如图5所示。
Android应用主要负责接收手柄水平、竖直方向的摇杆时间和手柄按键事件、实时分析处理事件、将结果通过Socket发送给OMAP4430开发板。同时Android将实时接收经过OMAP4430开发板通过H264算法压缩的720P视频流并通过硬解码技术将解码缓存绘制到控制界面上。
OMAP4430开发板搭载Linux3.9.11操作系统,通过无线网卡Socket编程与Android手机建立通信,它主要负责接收Android平台发过来的控制命令并进行处理后将数据通过无线蓝牙串口发送给AVR单片机控制移动机械手的运动和马达操作。利用OMAP4430异构多核处理器在视频编解码上的强大优势,通过USB摄像头采集720P分辨力的视频帧通过libdce库利用内部的IVA-HD多媒体硬件加速引擎进行H264编码,并将编码视频缓存流通过无线网卡Socket通信发送到Android手机进行显示。
而底端AVR单片机则负责接收OMAP4430发过来的控制命令来操作4个直流电机进行运动、同时将通信数据进行解析成机械马达旋转速度及角度械手的动作来完成任务。
图5 系统软件框架图
2.1 移动机械手单片机软件实现
移动机械手的控制为ATmega128L单片机,其内部通过时钟产生变换PWM来控制4个DC电机旋转从而实现机械手的移动。同时内部有两个UART串口,分别与OMAP4430通信的蓝牙串口和控制AX-12马达旋转的串口。其软件流程如下:
1)寄存器初始化:包括初始化时钟定时器、端口输入输出初始化、设置LED控制寄存器等
2)打开蓝牙串口和与AX-12通信串口,设置串口的波特率、奇偶校验、停止位等属性
3)蓝牙串口接收OMAP4430发过来的控制参数,并进行参数解析处理。如果为运动控制参数,则通过PWM_change()修改PWM来控制机械手运动方向,如果为机械手设置参数通过Ctrl_Array_MT()设置每个AX-12马达的旋转角度和旋转速度来完成捉取目标任务。
4)读取AX-12马达的温度及力矩,如果超出预定范围则调整马达速度和力矩并向OMAP4430开发板发出提示信息。机械手动作控制命令如表1所示:
表1 移动机械手操作命令
2.2 Android应用软件设计
2.2.1 摇杆手柄事件处理
摇杆手柄采用USB OTG方式连接到Android手机,Linux内核已经包括其驱动程序。手柄的水平竖直摇杆事件和按键事件都将触发MainActivity的onKeyDown()函数和onGenericMotionEvent()函数的调用,在函数中分析事件对象的属性(触发按键ID、事件类型)进而向OMAP4430发出不同控制命令。其参考代码如下:
boolean onKeyDown(int keyCode, KeyEvent event)
{if(event.getSource()==InputDevice.SOURCE_JOYST ICK || event.getSource()==1281) //手柄按键事件
{ if(event.getAction()==KeyEvent.ACTION_DOWN)
{ int keycode=event.getKeyCode();
swicth(keycode)
{ case KeyEvent.KEYCODE_BUTTON_1:
……. break; //ID=1按键按下触发的事件
case KeyEvent.KEYCODE_BUTTON_2:
case KeyEvent.KEYCODE_BUTTON_3:
default:break;}}}}
boolean onGenericMotionEvent(MotionEvent event){
if(event.getSource()==InputDevice.SOURCE_JOYSTICK)
{ //手柄摇杆事件
float Raw_x=event.getRawX(); //水平方向偏移
讨论