龙佳乐,祝欢亮,陈健恒,茹道志,黄楚鑫,伍康敏,李鹏,张建民※,倪素茵,吴清秀
(1.五邑大学智能制造学部,广东江门 529020;2.广东彩立方科技有限公司,广东江门 529030;3.深圳中科银狐机器人有限公司,广东深圳 518126)
在现代社会中,下水道遍布城市各地,构成了复杂的下水道网络。下水道在城市美化、饮食卫生、防止疾病传播、污水处理等方面起到重要作用。然而随着时间的推移,下水道长期遭受污水的腐蚀以及堆积了各种各样的垃圾、淤泥,会出现堵塞、破裂、产生有毒气体等问题,对环境造成了极大的污染,阻碍了城市的生活排水,给人们的生活出行造成极大的困扰,所以定期对地下的排水通道进行排查、检修、维护愈发重要[1]。但是由于大多数地下道操作空间狭小,不便于人们在地下道开展人工作业,再加上环境恶劣,存在有毒气体,长期呆在下水道作业会对人体的健康造成难以挽回的影响,研究出能够代替人工开展地下作业的特种机器人成为了一种必然的趋势。在地下管道内使用的机器人具有体积小、灵活多变的行驶方式,能够很好地在狭小的地下管道内通行,并且可以实时勘测管道内部的堵塞情况,完成疏通管道的工作。地下道勘测机器人能够替代人们完成复杂繁琐的管道勘测和疏通清理工作,适用于各种管道,具有广阔的应用市场。从20 世纪70 年代开始至今,发达国家对管道机器人的研究都有很大的进展。日本的东京大学的HIROSE 的团队研究的Thes 系列的中小型管道的检修机器人。日本的横滨国立大学[2-3]通过大量采集数值与分析数值,然后建立机器人行驶数学模型,设计出能够位置定位、清理污水的管道检测机器人。为适应未来社会的发展,复旦大学设计并成功制作了一台地下道勘测机器人,使用了无线图传技术对摄像头采集的图像进行无线传输,在电脑上接收视频图像[4]。通过远程控制技术,实现机器人的远程控制操作,驱使机器人移动与机械爪的控制夹取,并且可以通过非接触感应充电的形式,实现小车的无线充电的功能[5-6]。
图1 所示为该地下道勘测机器人系统总体框架。包括电源管理电路、主控芯片电路、BTN7971B 电机驱动电路、74L244 逻辑芯片电路、机械臂控制电路、无线充电模块、OLED 显示模块、电压采集模块等。地下道勘测机器人的底盘控制采用了以STM32RCT6为主控的单片机芯片和使BTN7971B 芯片设计电机驱动电路,电机的转向与转速通过单片机输出的信号到电机驱动电路上实现。本文以74LS244 设计一个逻辑电路,作为主控芯片与电机驱动电路之间保护的桥梁。单片机的PWM信号经过74LS244 逻辑电路,再转接到驱动电路,起到隔离保护单片机的作用,避免电机启动或堵转时的电流过大,反冲倒灌从而烧毁单片机。机械臂的控制部分采用STM32F103C8T6 为主控的单片机芯片,机械臂的单片机通过串口通信与主控芯片连接,接收主控芯片发送的控制指令,再通过输数PWM信号来控制机械臂的运作和摄像头云台的控制。在该系统运行的过程中,使用电压采集模块对电池的电量实时采集,使用一个OLED 模块来显示机器人运动的状态信息和电池的电量。
图1 系统总体框架
该机器人底盘的主控芯片采用意法半导体的32 位单片机STM32F103RCT6。STM32F103RCT6芯片是大量的微电子原件(二极管和三极管)集成电路,拥有32 位的处理器,外部的引脚共有64 个,最高运行频率为72 MHz。还有工作性能稳定、功耗低、内部可使用的资源丰富等特点。该芯片程序存储器的最大容量为256 kB,随机存取容量存储器(RAM)为48 kB。该芯片的功能强大,可为本机器人控制提供多个串口的使用,使其连接不同串口通信的模块,多路PWM 输出可以控制电机的转速。ADC的采集通道,可以采集模拟量输出模块的电压值。
机器人使用STM32F103C8T6 作为地下道勘测机器人的机械臂部分的主控制芯片,STM32F103C8T6 的最高运行频率为72 MHz,程序存储器的最大容量为64 kB,随机存取存储器(RAM)最大容量为20 kB,可以同时使用多个通用定时器,同时输出多路的PWM信号,满足机械臂控制功能的需求。该芯片拥有3 个串口通道,通过串口接收主控芯片的控制指令的数据信息,实现主控芯片对机械臂运动姿态的控制。机器人使用5 个自由度的机械臂,由5 个舵机共同构成,通过改变舵机旋转的角度,实现机械臂的运动姿态控制。机械臂和摄像头控制云台一共由7个舵机组成。
图2 所示为BTN 电机驱动电路。机器人使用BTN7971B 芯片作为地下道勘测机器人的电机驱动电路的控制芯片。BTN 设计的驱动电路耐压值可达到45 V,通过的最大电流达到80 A,由其构成的H桥驱动电路,可以驱动较大功率的电机。BTN7971B集成的驱动IC具有自动保护的功能,在检测到过压、过流、过温等致命故障时,可自动关闭或者调整内部的开关管,强行停止或限流运行,起到保护驱动电机的作用。机器人地盘采用12 V 大扭矩的减速电机,该电机的启动电压电流比较大,其堵转产生的电流大。BTN7971B 所设计H 桥驱动电路,可以输出较大的电压和电流,满足驱动电机的参数要求。所以采用BTN7971B电机驱动芯片作为本系统的驱动芯片。
图2 BTN电机驱动电路
无线充电模块包括发射端和接收端,发射端与24 V的充电器的输出接口连接,接收端与电源管理电路的无线充电的输入口连接。无线充电模块可以给电源管理电路供电和给锂电池充电。在管道内设置一个无线充电的接口,机器人就能够在管道内完成充电,便于机器人在管道内长期工作,节省机器人在充电过程中搬运过程的时间和返程的电量消耗。
使用英伟达开发板作为机器人摄像头采集视频传输的硬件部分。在英伟达开发板上安装Ubuntu 系统,并在系统上配置了运行代码所需要的Python 环境和各种协议所需的安装包,采用TCP/IP 协议作为传输的载体[7]。如图3 所示。视频传输的过程首先是要确定上位机的IP 地址,在英伟达开发板的运行代码上输入上位机的IP 地址和设定的端口号。开始运行英伟达开发板上的程序,尝试连接上位机的图像接收服务器并判断是否连接成功,并打印相关连接信息。如果连接成功,则开启摄像头,否则结束代码进程。将摄像头采集的每一帧图片进行大小处理和压缩处理,把压缩的图片数据转换成numpy 格式的数据,再转成二进制数据,获取二进制数据的长度,将根据二进制数据长度打包转换成TCP/IP 协议发送的字符串数据[8]。并将图片的字符串数据到服务器上。然后就可以在上位机上看到下水道的详细信息。
图3 摄像头采集视频传输程序流程
地下道勘测机器人的机械臂主控芯片使用的是STM32F103C8T6 的单片机,通过串口中断采集主控芯片发送的控制指令,采取中断处理各种主要算法,其中包括控制机械臂运动和摄像头云台的运动。中断处理可以提高程序的运行效率和确保程序运行的实时性。如图4 所示。机械臂控制板上的芯片接收动作指令后,其根据指令选择具体的机械臂或者摄像头云台的控制轴,再输出对应的PWM 值。通过修改PWM信号值来控制机械臂上的舵机旋转不同的角度,从而控制机械臂的运动姿态[9]。在控制机械臂和摄像头云台的过程中,由于机械臂和摄像头云台的运动的范围广,很容易由于某个轴的舵机的旋转角度过大,导致机械臂将机器人的控制板撞坏或者摄像头云台导致摄像头损坏等因素,所以还需要对每一个轴的舵机进行范围限制。
图4 机械臂的控制代码程序流程
4G 模块基于4G 网络、支持TD-LTE 和FDD-LTE 等LTE 网络制式的通信模块统称。具有通信速度快、网络频谱宽、通信灵活等特点。4G 模块在硬件上将射频、基带集成在一块PCB 小板上,完成无线接收、发射、基带信号处理功能。软件上通过4GLTE 网络传输,对下位机modbus 数据进行传输到服务器端,支持心跳包,注册包功能。并可支持软件支持语音拨号、短信收发、拨号联网等功能。4G 模块通过高速联网,将所有终端业务数据及设备运行状态实时传输到业务中心,通过管理监控平台,实时监测终端设备运行状态,因为机器人需要进行图像回传,数据量比较大,所以选择高速的4G通信来进行数据传输,使机器人的实时通信得到保障[10]。
图5 所示为远程控制流程。远程控制是地下道勘测机器人的核心部分,其原理是通过绑定PC 端的IP 地址和端口,等待与4G模块连接,完成网络通信。远程控制负责控制整个机器人的行动,其中包括机器人的行驶、机械臂的夹取、摄像头的角度调整等。上位机的远程控制是通过TCP/IP 协议与4G 模块连接,4G 模块将获取到的控制指令通过串口发送到主控单片机上,主控单片机根据控制指令执行相应的动作,从而实现远程控制[11]。由于机器人的远程控制是通过广域网控制的,而电脑本身的IP 地址是在局域网内的,所以要进行内网映射,即把电脑的IP地址和端口号映射到外网上,4G模块连接外网的IP 地址和端口号,实现与上位机的远程部分网络通信。远程控制由3 部分组成,分别为小车控制、机械臂控制、摄像头控制,均通过发送不同的控制指令来实现不同功能的控制。发送控制指令的方式有两种,一种是通过鼠标点击GUI 界面的按钮,发送控制指令;另外一种是通过按下键盘的按键,发送控制指令。
图5 远程控制流程
图6 所示为本系统配套的电脑端上位机,它是基于QT采用Python开发的,通过点击按钮实现控制机器人、摄像头获取图像、机械臂控制等功能[12]。上位机的程序使用双线程的形式,使用两次TCP协议分别对远程视频监控部分和远程控制部分进行网络通信,两个线程独立运行互不干扰。
图6 上位机界面
机器人的远程控制是通过广域网控制的,而PC 端的IP 地址是在局域网内,上位机与4G 模块通信需要将PC 端内网的IP 和端口变成外网的IP 和端口,才可以实现广域网的远程控制。
通过使用路由侠端口映射软件,可以把PC端内网的IP地址与端口映射到外网上,端口映射界面如图7所示。
图7 路由侠端口映射界面
调试时先打开上位机软件界面,在界面内输入PC端本地的地址和固定的端口号,点击启动图像传输的按钮,启动图像传输服务器。在英伟达开发板上,修改程序里面上位机的IP地址和端口号。然后运行图像传输的程序,等待与上位机图像接收服务器连接。如果通信连接成功,则发送图像到服务器端。通过上位机界面的视频显示窗口可以判断是否连接成功,如果有图像显示则代表已经与服务器连接,客户端和服务器都正常工作,如图8所示。如果没有则要检查服务器与客户端的IP 地址和端口号是否相同且是否连接在同一个局域网内。图9所示为地下道勘测机器人实物。
图8 上位机远程视频传输
图9 地下道勘测机器人实物
本文设计实现了基于STM32 的地下道勘测机器人智能控制系统。通过摄像头采集图像信息,上传到电脑本地,实现远程的视频监控,根据接收的图像数据,确定机器人下一步要执行的动作和需要行驶的方向,通过上位机发送对应动作控制指令到单片机上,单片机接收上位机发送数据并处理数据。然后根据指示命令实现远程控制机器人的行动与机械臂的夹取。同时利用QT5 平台开发上位机,上位机与机器人的控制系统通过TCP/IP 协议通信,使用该协议通信能够通过网络传输数据,增大机器人远程控制的范围,最终实现下水道的高效清理。