智能机器人保姆
2.3.2 视频设计
视频采用的是已经集成的模块,其接线图如下图10所示:
图10 视频接线图
设计中为了能够提供很好的视频效果,还专门设计了照明灯。其设计电路图如图11所示:
图11 照明电路图
同样,为了使用者很好的视觉效果,摄像头部分设计了移动云台。摄像头云台的作用是通过遥控,控制云台的两个电机的转动,带动摄像头运动,从而使得操作者能更好的观察平台端周围的环境,获得更多的信息,也能在一定程度上消除视觉死角,对机械手的运动操作更加方便。云台的硬件如图12所示,两个小型直流减速电机成90度安装,电机1的正反转带动摄像头左右转动,使摄像头获得可调的水平视角,电机2的正反转带动摄像头的俯仰角度发生变化,使摄像头获得可调的俯仰视角,电机的控制和手臂驱动电机的控制方法和电路是一样的。
图12 云台设计示意图
2.3.3 智能机器人软件设计
本设计采用结构化和模块化的编程思想,二者相辅相成实现各模块间的连接,各个模块之间程序保持独立,模块之间通过入口参数和出口参数联系,这样有利于程序的调试与修改。
遥控端主程序设计
遥控端的主程序的任务是采集当前操作者的操作指令,对数据处理并发送给小车端,主程序完成遥控系统的初始化,AD转换器初始化,串行数据端口初始化,IO口初始化,终端服务程序初始化,遥控端主程序流程图如图13所示。
串型数据传输程序
在遥控端,数据完成采集之后,需要无线发送给平台端,作为控制信号来遥控平台端的各个执行机构完成操纵者的指令,单片机自带两个串行数据口,数据的传输使用到了单片机的串口0,将采集到的数据通过串行端口发送给无线收发模块,模块在接收到数据后,会自动的将数据转存之后按照设定的波特率发送给接受端,接收端在接收到数据后会返回一个值给发送端,作为发确认接收和送下一数据的信号,这个过程由无线收发模块自动完成。程序设计流程图如图14所示:
图14串行数据发送程序流程图
机械手控制程序设计
机械手的控制是通过分别控制5个舵机来控制的,在机械手控制程序中,根据舵机的控制原理,编程使得单片机能根据串口得到的遥控数据,计算出控制舵机的PWM波的占空比,并输出这个占空比,由此来控制电机。程序设计框图如图15所示:
平台端驱动程序设计
平台端的驱动电机采用12V电压供电的直流减速电机,电机控制信号通过光电隔离器,加载在LM298芯片上,实现单片机对电机的控制,对电机的控制也采用控制PWM波的占空比方式。程序设计框图如图16所示:
图16 平台驱动电机控制程序流程图
总结
本次设计在开始采用的是模块设计的思想,在设计过程遇到了不少的问题。同时最后没有能够最后完成所有模块的组装调试。遇到的主要问题有:
肌电检测不准确,通过本文设计的电路和软件检测肌电信号很不准确,主要是由于设计原理过于简单,所有器件误差大,同时软件上没有很好的处理。从而导致机器人的控制部分没有得到很好的解决,因此在机器人设计部分我们只有采用电位器的方式来进行调试。
在对机械手硬件制作的时候,先测试了用一块单片机采集遥控臂上的电位器电压信号,采用同一块单片机的定时器B输出PWM波来控制机械手,这个过程实现起来没有太大的问题,但后当用一块单片机A采集遥控信号,并通过无线模块将数据发送至另一块单片机B,单片机B根据接收到的数据产生PWM波来控制机械手,这时出现机械手控制失灵甚至失效的问题,从理论上来讲,只要数据一致,定时器B产生的PWM波一致,就不会存在这个问题,但是在实际测试中结果却不如同理论分析结果。
在对机器人软件设计上很多BUG没有处理的很好,比如机器人在得到控制命令后会有误操作的情况,这是由于控制命令发来后,由于数据量相对较大,就造成了误判的产生。同时在舵机的设计上没有很好的硬件设计,有些时候给一个小幅度动作信号,但是手臂运动幅度很大。
评论