机器人底盘

机器人底盘程序概述

    ROS运行在Ubuntu平台上,需要将控制指令传递至下位机即机器人底盘,进行运动控制,同时将底盘采集的距离、速度等传感器数据传递至上位机。下位机使用STM32作为主控,负责根据上位机指令进行运动控制,并根据上位机指令将相应的数据进行上传,上位机通过USB转TTL模块与下位机通过串口进行通信,上位机与下位机协调一起,共同完成机器人整体功能实现。

    以STM32F103为平台,构建ROS底盘控制系统。底板控制系统作为下位机通过串口与上位机进行数据通信,数据通过预先设定好的通信格式进行双向传输。上位机通过串口将控制命令发送到下位机,下位机通过解析数据帧获取功能码与控制字,并根据解析到的数据执行相应的操作命令,命令包含底盘运动控制命令、编码器数据查询命令、编码器数据清零命令、超声波数据查询命令、超声波数据清零命令以及系统状态命令,当接收的命令为运动控制时通过解析数据包中的速度数据,通过底盘运动控制程序控制机器人的运动状态当为同布或者查询、清零命令时执行相应的控制命令。

  • 完成两路PWM初始化,用于左右轮的速度控制,执行串口初始化程序,完成两个通道的串口初始化,一路串口用于与上位机建立通信,并在串口中断解析函数内完成,另一路用于程序调试。
  • 执行定时器初始户程序,定时器周期配置成20ms,将编码器数据采集、运动控制等需要周期执行的程序放到中断处理函数中。电机方向控制端口初始化,用于控制电机驱动器的使能以及电机的正反转,实现对机器人的运动方向控制。
  • 串口初始化,设定串口波特率等参数,用于数据发送与数据接收。初始化完成后打开中断,当上位机发送数据过来时,串口中断被触发,进入串口中断处理函数,进行数据接收,并行和校验。当串口中断校验成功后,主循环根据串口中断接收的数据判断执行的函数,决定是返回数据,还是运动控制。当定时中断到来时,程序进入定时中断处理函数,进行编码器数据采集,机器人运动PID控制。
posted @ 2019-11-13 20:11  数星星的猫  阅读(693)  评论(0)    收藏  举报