< >
Home » Ailibot2实体机器人入门教程 » ROS2与Ailibot2入门教程-校准-PID校准

ROS2与Ailibot2入门教程-校准-PID校准

说明

  • 介绍如何在Ailibot2上进行PID校准
  • PID校准的主要作用是可以让小车走直线,如果小车不能正常走直线或偏移到一边,说明PID值还没达到理想值。
  • 让小车不能走直线,主要是电机速度差异造成的,需要通过PID的调整来平衡电机之间的速度差异,从而达到电机速度保持一致,实现让小车走直线。

相关设备:

原理:

  • 通过不断调整PID的参数(pid_p,pid_i,pid_d),同时查看plot上的目标速度曲线/cmd_vel/linear/x和实际速度曲线/raw_vel/linear_x,一步步趋于重合。目标速度默认为0.5米/秒
  • 按pid_p,pid_i,pid_d的顺序开始调整,先通过调整pid_p值,让实际速度曲线稍高于目标速度曲线;再调整pid_i值,让实际速度曲线在目标速度曲线上下波动,然后趋于重合;最后调整pid_d值,让实际速度曲线起始波动与目标速度曲线一致。
  • PID校准的主要作用是可以让小车走直线,更新PID参数后,实际落地测试,如果小车不能正常走直线或偏移到一边,说明PID值还没达到理想值。这个校准过程需要反复测试以达到理想值。
  • 目前初始的值为4.0, 0.5, 2.0,如果这些数值还是导致不能正常走直线,即可调整PID值。
  • 一般情况下,可以不做校准。

操作步骤

  • [Ailibot] 启动小车
ros2 launch ailibot2_bringup agent.launch.py

启动曲线图和参数配置界面方法一

  • [Ailibot] 启动PLOT曲线图
ros2 run rqt_plot rqt_plot 
  • 效果图:

请输入图片描述

  • [Ailibot] 启动参数配置界面
ros2 run rqt_reconfigure rqt_reconfigure 
  • 效果图

请输入图片描述

启动曲线图和参数配置界面方法二:

  • 也可以运行rqt后,再添加相应的插件
  • 执行命令
rqt
  • 打开rqt界面后,在屏幕左上方的菜单栏选择Plugins -> Configuration -> Dynamic Reconfigure

  • 同时选择Plugins -> Visualization -> Plot

  • 在Dynamic Reconfigure窗口下,点击pid_configure

  • 效果图:

请输入图片描述

PID校准流程:

    1. 按上面的方法启动plot曲线图和参数配置界面
    1. 启动键盘控制
ros2 launch ailibot2_teleop keyboard.launch.py
    1. 通过修改参数后,再按i驱动小车,查看曲线图的变化情况
    1. 按照pid_p,pid_i,pid_d的顺序,逐一修改参数,并驱动小车,查看/raw_vel/linear_x曲线表现,尽可能接近cmd_vel/linear/x的曲线
    1. 当曲线趋于平缓,波动最小,获取最终值比如pid_p=0.9 ,pid_i=0.1,pid_d=0.8
    1. 将校准得到的PID参数写入ailibot2_bringup/param/robot/ailibot2_d2_agent.sh
  • 这是差速二轮小车的参数配置文件
ros2 param set ailibot2 pid_p 0.9
ros2 param set ailibot2 pid_i 0.1
ros2 param set ailibot2 pid_d 0.8
  • 再启动小车底盘,小车将使用新的pid参数。
  • [Ailibot] 启动小车
# 启动小车
ros2 launch ailibot2_bringup agent.launch.py

# 查看参数
ros2 param get ailibot2 pid_p
ros2 param get ailibot2 pid_i
ros2 param get ailibot2 pid_d
  • [Ailibot] 应用配置的参数
# 配置参数
ros2 launch ailibot2_bringup param.launch.py

# 配置参数后,查看参数是否生效
ros2 param get ailibot2 pid_p
ros2 param get ailibot2 pid_i
ros2 param get ailibot2 pid_d
  • 参数稳定后,可以通过修改固件的配置文件,就不需要每次启动配置参数

参数写入到固件里

  • 我们产品对应提供的虚拟机里面包含固件配置和使用环境
  • 修改固件参数文件,/home/ubuntu/ailibot_micro_ros/Driver/Inc/config里面对应型号的文件中的pid部分
  • 如config.d2.h文件
#define K_P 0.9 // P constant
#define K_I 0.1 // I constant
#define K_D 0.8 // D constant
  • 编译固件
cd ~/ailibot_micro_ros/
./scripts/build.sh
  • 选择对应的机型编译,编译完,则固定参数为配置文件对应的参数
  • 连上STLINK刷机线
make stflash
  • 刷机成功后,关闭机器,断掉重启。
  • 再启动底盘
# 启动小车
ros2 launch ailibot2_bringup agent.launch.py

# 配置参数后,查看参数是否生效
ros2 param get ailibot2 pid_p
ros2 param get ailibot2 pid_i
ros2 param get ailibot2 pid_d

纠错,疑问,交流: 请进入讨论区点击加入Q群

获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号


标签: ros2与ailibot2入门教程