一. 项目开发背景:
  21世纪是互联网及AI智能的时代,机器人不再华而不实正从实验室走向各个场景。使用智能机器人来替代普通安保巡检工人来完成单调且不可或缺的巡检是未来的趋势。人工巡检的弊端,错综复杂的道路,园区巡检各处的矮灌木、花坛和雕塑,都容易形成一个个治安死角,普通的人工巡检很容易漏检、错检,特别是在夜间巡检时,由于人为因素而错过重要的例行检查也是常有的事;煤矿等矿井位于地下深处,地下空间狭小,人工巡检难度极大。悬挂式轨道巡检机器人集人工智能技术、5G通讯、物联、智能感知等多项先进技术于一身,以自主或定时的巡检方式,通过搭载温度湿度气体、粉尘、烟雾,气体探测,环境监测传感器和红外热成像仪,不仅能对周边环境数据实时采集存储,搭载摄像头模组,通过机器视觉能够306无死角智能识别异常情况,并生成报警日志,保质保量的完成巡检任务,安全运行提供了可靠的数据保障。

    悬挂式轨道巡检机器人机器人不易疲劳、不易疏忽、不易犯错的缺点,只需预先设定巡检时间、巡检路线、报警方案,便可做到按时寻检,路径全覆盖,死角地带加强扫描的功能,除此外还可以做到全天候工作、远程报警、巡检视频全记录的一些普通人无法完成的工作;
  轨道巡检机器人建设实现通过智能化的轨道式巡检机器人基于5G通讯技术、搭载数据采集器和实时智能分析软件,实现瓦斯,可燃性气体检测,安全隐患报警消除。创建一个标准化、现代化、智能化的安保巡检方案。提高了巡检效率,还起到了降本增效、节约运维成本的功能。

  • 机器人结构:

    231103eo7u1fusf6872ddu

悬挂轨道巡检机器主要有机器人主体,充电箱,轨道部门,摄像头传感器系统组成。整个系统可以用于企业园区,校园园区,化工工厂,变电站,高速铁路,矿井等巡检。通过架空轨道避免人为干扰,安全性极高,各种传感器系统模块可以更换,适应不同巡检场景,通讯系统基于5G/4G ,Lora模组,网桥等模组实现在线或者离线没有运营商网络也能实时控制。

二.详细设计:

   2.1嵌入式系统硬件设计

   电路板主控采用STM32单片机,电机驱动芯片开始项目中使用的驱动是BTN7971A,VHN5019A 是一款全桥电机驱动器,AEC-Q100 认证。封装MultiPowerSO-30为恶劣的汽车环境而设计,由于采用裸露的芯片焊盘,可提供更高的热性能。适用于各种车规级电机应用。该器件包含一个双单片高侧驱动器和两个低侧开关。 高端驱动器开关采用 STMicroelectronics 众所周知且经过验证的专有 VIPower® M0 技术设计,该技术允许在同一芯片上有效地集成一个真正的低功耗 MOSFET,具有智能信号/保护电路。VNH5019ATR-E三个芯片组装在电隔离引线框架上的 输入信号 INA 和 INB 可以直接连接微控制器以选择电机方向和制动条件。

231103wj2x525z0g9llrjs

231103ia1jydy26ggppesy

231105zqxhenciynrng44f

    ST公司的另外一款IC为VNH5019的电机全桥驱动IC价格不高,全桥驱动,一片可以驱动一个直流电机。四片可以驱动四个电机。驱动器不需要用专门的总线进行连接,只需要两个数字引脚控制方向、一个PWM引脚控制速度、一个模拟引脚(可选)来读取流经电机的电流即 231105lynnzsdabggrjqqa

231105p9stmq98t7kqqq8m

231107fx11crqfxaqwcqqx

实物图:

231107x2y22e4rz5dsp8e2


2.2软件设计:主控制器采用Cortex-M3内核的STM32F103。控制器内部共有8个定时器,其中TIM1_CH1和TIM8_CH1为高级控制定时器引脚,TIM1_CH1用于电机编码器计数。TLM8_CH1用于舵机控制基准时间。通用定时器引脚TIM2 CH1、TIM3 CH1、TIM4_CH1、TIM5_CH1分别用于电机和舵机驱动电路上下桥壁PWM的产生。触发EXIT0中断的PA0口和PB0口分别用于电机过流中断保护。

#include "pwm.h"

void TIM1_Int_Init(u16 arr, u16 psc)

{

        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;

        TIM_OCInitTypeDef  TIM_OCInitStructure;

        GPIO_InitTypeDef GPIO_InitStructure;

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 ;

        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;                  

        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

        GPIO_Init(GPIOA, &GPIO_InitStructure);

        TIM_TimeBaseStructure.TIM_Period = arr;       //当定时器从0计数到999,即为1000次,为一个定时周期

        TIM_TimeBaseStructure.TIM_Prescaler = psc;

        TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;        //设置时钟分频系数:不分频        

        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数模式

        TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);

        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;            //配置为PWM模式1  

        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

        // TIM_OCInitStructure.TIM_OutputNState = TIM_OutputNState_Enable;           

        TIM_OCInitStructure.TIM_Pulse = 0;           //设置切换值,当计数器计数到这个值时,发生电平切换。

        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;  //当定时器计数值小于CCR1_Val时,产生高电平   

        TIM_OC1Init(TIM1, &TIM_OCInitStructure);         //启用通道1   

        TIM_OC1PreloadConfig(TIM1, TIM_OCPreload_Enable);

        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

        TIM_OCInitStructure.TIM_Pulse = 0;          //设置切换值,当计数器计数到这个值时,发生电平切换

        TIM_OC2Init(TIM1, &TIM_OCInitStructure);          //启用通道2

        TIM_OC2PreloadConfig(TIM1, TIM_OCPreload_Enable);

        TIM_ARRPreloadConfig(TIM1, ENABLE);                         // 使能TIM1重载寄存器ARR     

        TIM_CtrlPWMOutputs(TIM1, ENABLE);

        TIM_Cmd(TIM1, ENABLE);

}


软件设计思路:  根据实际运行的需要由PC端上位机通过以太网转串口对机器人巡检速度和巡检位置进行给定。电机的转速是由设定的速度值和由增量式编码器的采集值相比较,经过速度PID算法实现闭环控制。机器人的位置主要是由绝对值式编码器反馈现在位置,根据动作时间要求调节舵机转动的速度。机器人电机控制系统软件要实现的功能如下:

◆上位机给定速度和巡检位置和巡检时间设定,位置点设定;
◆要求电机转速连续可调并且具有良好的静、动态性能,转速没计采用PI算法调节;
◆要求机器人快速到达指定角度,有位置反馈作为电机给定转速的调整;
◆具有一定的故障保护功能。当电机出现堵转、电流过大以及舵机触动限位开关时,要求停止驱动模块工作。
针对以上要实现的功能,可以将应用程序设计分为以下几个任务:
1)启动任务。对系统进行初始化,创建初始电机状态,然后自我删除,启动任务进入睡眠状态。
2)电机和舵机保护任务。用于在过流或限位开关动作时响应外部中断,进入中断状态通过发任务信号量,任务程序检测信号量有效并响应该任务,停止输出。任务优先级设为0级。
3)上位机给定任务。用于上位机控制电机和舵机,任务优先级设为1级。上位机数据输入寄存器时将产生一个中断,该中断将收到的字节送入缓冲区并释放上位机给定任务的信号量;任务中检测到信号量有效便开始执行,将对应的字节信息解析成对应的电机转速和舵机转角位置信息给相应变量赋值。
4)电机转速控制任务。用于电机的闭环调速,任务优先级设为2级。
5)舵机控制任务。用于控制舵机在规定时间内到达指定位置,任务优先级设为3级。

四.上位机设定:

基于C++ QT开发的PC端小程序 ,通过以太网实时显示机器人位置和监控视频机器人控制软件,显示电池电量;显示机器人内部温度;控制风扇开关;控制器人运行,分手动模式和自动巡航模式定时模式:

1)手动模式控制机较简单,首先设定速度一般设计3挡,再按向前,向后,停止,回库,机器人便会做出相应动作。

2)自动模式,首先手动跑一次,根据Realplay数据或者目测参照物,设定巡航点。东边最大210,北边最大172。再设定巡视时间段,机器人会自动巡航

231107q36hiux3ume239xj

231112ncdk6bd0oh67ihk2

云台控制介绍:

       通过方向键控制云台 8 个方向的转动,通过拖动条可控制云台转动的速度。点击 ,云台开始自动扫描,再次点击停止云台自动扫描。点击右侧功能键可进行焦距、光圈和变倍的调节。云台控制界面提供了很多球机功能快捷键,包括 3D 定位、辅助聚焦、灯光雨刷控制、手动跟踪、一键守望、一键巡航、球机菜单调用、手动除冰等,点击 可查看其余的快捷键。

231112zzmbxfmgdnxcaxll

231112kyrfy0tap0y2z0ww 231114s3miskm0temwetyl

运行视频: