PIBOT下位机开发
1. 概述
- PIBOT下位机支持多种主板,Arduino Mega2560、STM32F1及STM32F4等
- PIBOT下位机支持多种运动模型(差分、全向、麦克纳姆轮),只需要调整编译参数即可
- PIBOT下位机支持不同的参数的机器人,执行设置相关参数即可
2. 软件框架
软件框架图橙色部分为下位机的功能模块
3. 下位机开发环境
-
Arduino Mega 2560
为主控单元,使用Visual studio code
+Platform IO
进行开发,支持Windows
和ubuntu
环境 -
STM32F1
为主控单元,使用Keil
进行开发 -
STM32F4
为主控单元,Ubuntu
下使用Visual studio code
进行开发
3.1 环境搭建
Arduino
具体请参考Visual Studio Code插件PlatformIO IDE开发Arduino
STM32F1
STM32F4
具体请参考PIBOT的ubuntu下stm32 C/C++模版及配置编译
3.2 环境配置
Arduino
使用Visual studio code
打开附带下位代码文件夹,在platformio.ini
修改相应模型以及使用的电机控制器
models =
-D ROBOT_MODEL=ROBOT_MODEL_DIFF
-D MOTOR_CONTROLLER=COMMON_CONTROLLER
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值导致编码器一直反向变化,所以需要调整电机线或者编码器接线,通过设置软件编译参数也可以达到同样效果具体可以参见关于运动控制方向的补充