丁嘉伟,闻凯,桂敬亮
(南京航空航天大学金城学院,江苏南京,211156)
全自动多轴飞行器模拟搜救系统是一款主要飞行器系统与搜救系统两大部分组成,其中飞行器系统以成熟的六轴飞行器为主要平台,通过搭载pixhawk开源飞控系统进行相关设计,搜救系统主要由机械臂,机械爪组成,通过使用arduino开发系统进行控制处理,配合视觉识别处理技术提高系统感知能力与抓取可靠性。
飞控采用开源飞控pixhawk配合地面站软件mission planner[1]。相较于市面上其他开源飞行控制器,此款飞控支持多种无人机机型,并能够根据负载大小设定合适的无人机飞行参数,配合GPS全球定位模块系统在地面端规划飞行路径以实现自主巡航,自主定位等相关功能。
机械臂采用多级结构设计,采用上下双层结构,上层结构为支架和固定的45齿同步轮。支架选择了坚固的2020型钢,通过t型滑块螺母鱼5mm椴木板固定;45齿同步轮和和360°舵机连接的30齿同步轮进行配合,进行控制旋转舵机板的转动。
其设计目的主要是能够让机械臂能够到达无人机正下方的任何地方,使得其不存在死角,使得后面能进行全方面的抓取。
机械爪部分分为滑块直线轴承板,升降臂和机械爪滑块直线轴承板就是通过2组同步带轮带动升降舵机挂板进行水平移动,竖直的一组是30齿主动轮带动15齿从动轮从动,从动轮再将动力借由光轴带动水平齿轮移动从而控制升降舵机挂板,在确定好位置以后通过齿轮机械臂升降,最后经由机械爪抓取,机械爪如图1所示是由四组机械只抓,舵机,限位挡板组成,限位挡板如图2所示是由2组完全一样的螺旋曲线构成,将机械只抓固定好相应的位置,舵机旋转带动只抓的开合,从而控制爪的抓取。
图1 机械爪
图2 限位挡板
由上位机运行视觉代码对回传的实时画面进行识别处理,将处理后获取的位姿信息发送给下位机下位机接收上位机的数据对机械臂进行控制,整体流程如图3所示。
图3 流程图
摄像头采用普通1080P USB摄像头,拍摄目标为黑白棋盘网格纸。
参考张正友标定法原理,相机内外参数标定方法有多种标定方法。到目前为止使用最多的是经典标定法中的张氏相机标定法,它相对经典标定法解决了标定物制作精度要求高的问题,其精度比自标定法的更高,且制作模板更容易,降低了成本低、便于实现、鲁棒性好、精度高,任何人都可以快速、方便、准确地获取到相机的畸变参数以及各内外参数。Open CV视觉库以及Matlab视觉处理库都是基于张正友标定原理来求解相机参数的[2]。
将摄像头拍摄的25张棋盘网格照片导入MATLAB获取相机畸变参数,其需要参数为五个,分别为3个径向畸变(k1,k2,k3)以及2个切向畸变(P1,P2)。
调用Open CV 开源视觉库展原图象如图4所示和标定后的图象如图5所示。
图4 标定前图象
图5 标定后图象
可明显的观测到标定后的图象更接近于现实中人眼所看到的图象,其边部不在有由畸变而引起的弯曲。标定目的是方便运用相机获取物体实际的物理信息。
先根据目标对象和机械爪的特征分别锁定其在画面中的二维坐标,再根据标定后无畸变的图象搭配pnp算获法获取目标对象和机械爪的三维坐标点,从而计算出目标对象相对机械爪在实际中的相对物理差值。运用标定后的摄像机对机械爪和目标小球的位置进行实时获取,再进行实时解算这样就可以实时获取机械爪相对目标物体的物理偏差值,这样就可以在机械臂移动出现误差时进行及时的回调补救。
根据目标对象和机械爪的相对位给下位机发送指令,如:当机械臂与目标物的X轴和Y轴的相对值为0时,向下位机发送下降机械臂的指令。当Z轴相对值为一定值a(机械爪可抓取目标)时发送抓取命令。最后将相对位置差和相对的控制命令打包成数据包运用串口通信发送给下位机。每一帧循环都执行发送流程从而达到实时调控的效果。
使用Arduino Mega2560作为下位机主控,程序编写使用Arduino IDE,根据机械结构建立极坐标系,单片机通过无线串口接收数据后,处理上位机视觉识别发送过来的数据包,进行相应的动作,为避免发生联动错乱,控制顺序为转动,滑动,抓取。
转动结构使用360度可持续旋转舵机,单片机调用pwm库,产生小于1500us的脉宽逆时针旋转,大于1500us顺时针旋转,差值越大转速和扭矩越大。根据转速计算时间达到控制转动到指定角度的效果。
滑动结构选用42步进电机,采用霍尔编码器读取直流电机脉冲数,结合位置式PID算法公式,配合驱动来控制电机输出准确脉冲数[3]。当发出位置指令后,控制步进电机旋转指定位置,并计算出误差进行补偿。
其调试过程相对复杂与繁琐,但却是及其重要的一个环节,整个机械臂的实际抓取准确率和灵活度都取决于调试时的优化。本次调试主要分为三步:第一步,视觉代码优化,提高其识别的准确率和识别精度。第二部,电控代码优化,对上位机的数据进行一个滤波处理,提高机械臂的灵活度。第三步,视觉与电控联动调试,调整其机械臂实际抓取的偏差。在实际调试中依次按上述步骤反复进行,从而达到整体系统的最优化。
对实际抓取进行测试其抓取次数和抓取成功次数如图6所示,其相对应的抓取成功率如图7所示
图6 抓取与抓中次数
图7 抓取成功率成功率
其视觉算法与电控的算法相对于传统的视觉识别控制,不再是识别后等待机械臂执行完成后再次发送修正指令,该视觉设计可以实时监控机械臂对其控制进行实时修正。
由以上测试可知在实际测试的过程中仍会存在一些实际偏差。虽然并不会如理想环境下那么精确。但在其自主识别抓取的前提下,其平均抓取成功率依然能够达到76%的准确率。其主要原因还是其视觉算法的实时调控起到了关键性的作用,使得机械臂在实际操作的过程中如果出现视觉可识别的误差能够及时修正。
在理想状态下,其准确率是可以达到95%的,其产生实际主要误差的原因分别是机械臂的结构和电控使得机械臂在转动中仍然存在一些位置的偏移,另一个则是其视觉识别的效果受设备和环境的各种影响,其实际识别率会存在一个误差,使得即使标定后其测定得的实际相对位置差值也会存在一定误差。从而使得实验测试中的平均抓取成功率只有76%。其相应的解决方案分别是提高机械臂机械结构的制作精度,优化视觉和控制算法的代码,以及选用拍摄效果更好识别精度更高的摄像头或者使用双目摄像头也能大幅的提高可识别精度,识别率则可以增加深度学习算法对机械爪和目标对象进行一个训练,这样整体系统的识别与抓取效果就可以有一个很大的提升以及具有很高的鲁棒性。
本文主要介绍设计一款全自主自动飞行的多轴飞行器的模拟搜救系统,通过对其飞控系统,模拟搜救系统,视觉处理系统以及控制系统的相关设计方案进行了阐述与研究,分析了实际过程中可能遇到的问题并提出了相应的解决方法,对多轴飞行器模拟搜救的实际设计与应用具有较高的参考价值[4]。