PIBOT下位机开发

文章目录

  • 1. 概述
  • 2. 软件框架
  • 3. 下位机开发环境
    • 3.1 环境搭建
      • Arduino
      • STM32F1
      • STM32F4
    • 3.2 环境配置
      • Arduino
      • STM32F1
      • STM32F4
  • 4. 代码分析
  • 5. 参数配置
    • 5.1 默认参数
      • apollo
      • zeus
      • apolloX
      • hades
      • hera
    • 5.2 配置参数
  • 6. 电机方向和编码器方向软件调整

1. 概述

  • PIBOT下位机支持多种主板,Arduino Mega2560、STM32F1及STM32F4等
  • PIBOT下位机支持多种运动模型(差分、全向、麦克纳姆轮),只需要调整编译参数即可
  • PIBOT下位机支持不同的参数的机器人,执行设置相关参数即可

2. 软件框架

橙色部分为下位机的功能模块

3. 下位机开发环境

  • Arduino Mega 2560为主控单元,使用Visual studio code+Platform IO进行开发,支持Windowsubuntu环境
  • STM32F1为主控单元,使用Keil进行开发
  • STM32F4为主控单元,Ubuntu下使用Visual studio code进行开发

3.1 环境搭建

Arduino

具体请参考Visual Studio Code插件PlatformIO IDE开发Arduino

STM32F1

具体请参考PIBOT的STM32F1的环境配置与编译

STM32F4

具体请参考PIBOT的ubuntu下stm32 C/C++模版及配置编译

3.2 环境配置

Arduino

使用Visual studio code打开附带下位代码文件夹,在platformio.ini修改相应模型以及使用的电机控制器

apollo

models =
    -D ROBOT_MODEL=ROBOT_MODEL_DIFF
    -D MOTOR_CONTROLLER=COMMON_CONTROLLER

zeus

models =
    -D ROBOT_MODEL=ROBOT_OMNI_3
    -D MOTOR_CONTROLLER=COMMON_CONTROLLER

STM32F1

Arduino

STM32F4

param.mk的修改相关配置,下图分别代表四种车型选择一种即可

4. 代码分析

以Arduino为例的代码分析具体请参考ROS机器人底盘(7)-Firmware的代码分析(1)
ROS机器人底盘(8)-Firmware的代码分析(2)
ROS机器人底盘(24)-嵌入式部分框架设计与实现

5. 参数配置

运动参数出厂时都内置在板子的EEPROM/FLASH

5.1 默认参数

默认参数出厂会固化到板子

apollo

  • Arduino
  • STM32F1/STM32F4

zeus

  • STM32F4

apolloX

  • STM32F4

hades

  • STM32F4

hera

  • STM32F4

  • wheel_disameter 轮子直径

  • wheel_track apollo:轮距 zeus:轮子所在圆直径 hades:轮子矩形长宽之和 hera 左右轮距*系数

  • encoder_resolution 轮子旋转一周编码器变化值的绝对值(一般为4减速比编码器分辨率,如4 * 11 *90 固件程序做了4倍频)

  • do_pi_interval 计算pid的间隔时间,固定值10

  • kp ki kd

  • ko 为一个系数,实际P I D参数为kp/ko ki/ko kd/ko

  • cmd_last_time 命令激励的超时时间,即超过该时间没有新的命令会机器人会停止

  • max_v_liner_x max_v_liner_y max_angular_z 底层速度限制,遥控器键盘或者导航层下发的速度会被该值限制

  • imu_type 固定值69

5.2 配置参数

配置参数需要通过ROS上位机的界面配置

pibot_bringup
pibot_configure

或者

roslaunch pibot_bringup bringup.launch
rosrun rqt_reconfigure rqt_reconfigure

6. 电机方向和编码器方向软件调整

移植PIBOT下位机或者由于电机或编码器接线问题,导致电机控制时一直转。原因是给定方向的PWM值导致编码器一直反向变化,所以需要调整电机线或者编码器接线,通过设置软件编译参数也可以达到同样效果具体可以参见关于运动控制方向的补充

你可能感兴趣的:(ROS自主导航机器人,ROS)