PIBOT下位机开发

作者: PIBOT导航机器人 | 来源:发表于2019-06-02 23:26 被阅读1次

    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


      image.png

    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值导致编码器一直反向变化,所以需要调整电机线或者编码器接线,通过设置软件编译参数也可以达到同样效果具体可以参见关于运动控制方向的补充

    相关文章

      网友评论

        本文标题:PIBOT下位机开发

        本文链接:https://www.haomeiwen.com/subject/tpofxctx.html