42.电机与编码器的方向动态配置
时间:2022-09-19 11:30:00
1. 概述
21.运动控制方向的补充是基于运动控制方向的补充。
新固件增加配置参数,支持编码器和电机的动态调整方向,并提供相关的控制协议和测试程序,方便移植自己的电机和编码器
测试脚本pypibot
参见此代码
2. 确认电机顺序
PIBOT各模型的电机顺序如下 , 以下坐标系相同ROS
(X前进方向,Y为右)
2.1 电机顺序
两轮差分
/* x ^ | | | y<-------- --------------------- - - - - - - - - - - - - 1-------------------2 */
四轮差分/四轮麦克纳姆轮
/* x ^ | | | y<-------- 3-------------------2 - - - - - - - - - - - - 4-------------------1 */
三轮全向
/* x ^ | | | y<-------- 1 - - - - - - - - - - - - 2-------------------3 */
2.2 测试电机顺序
-
确认车型
查看pibot_bringup打印输出,确认当前配置模型是否与使用一致
-
测试电机
退出以前的程序, 架空小车(易观察)
cd ~/pibot_ros/pypibot/transport # 测试电机1 python test_motors.py 1000 0 # 命令输了,电机1会转动 # 根据配置车辆对照电机顺序图,观察是否是电机1转动 # 测试电机2 python test_motors.py 0 1000 # 命令输了,电机2会转动 # 根据配置配置的电机顺序图,观察电机2是否旋转 # 测试电机3(如有) python test_motors.py 0 0 1000 # 命令输完,电机3会转动 # 根据配置配置的电机顺序图,观察电机3是否旋转 # 测试电机4(如有) python test_motors.py 0 0 1000 # 命令输了,电机4会转动 # 根据配置配置的电机顺序图,观察电机4是否旋转
3. 确认和调整电机方向
确保电机顺序和方向正常,然后进行测试
重做电机测试, 根据输入参数和实际转向方向确认电机接线方向是否正确
cd ~/pibot_ros/pypibot/transport # 测试电机1 python test_motors.py 1000# 命令输了,电机1会转动 # 观察电机1是否顺时针旋转(从电机输出轴/外观) python test_motors.py -1000 0 # 命令输了,电机1会转动 # 观察电机1是否逆时针旋转(从电机输出轴/外观)
依次测试每个电机。如果符合结果,则无需调整。如果一个或多个不符合要求,则输入以下命令,打开配置页面,调整相应的电机参数
motorX_exchange_flag
pibot_bringup pibot_configure
调整完板需要重新上电
4. 调整编码器的方向
确保电机顺序和方向正常,然后进行测试
重做测试电机的测试, 编码器根据输入参数和编码器反馈确认
cd ~/pibot_ros/pypibot/transport # 测试电机1 python test_motors.py 1000 0 # 命令输了,电机1会转动 # 观察输出日志, 第一列值是否变大 python test_motors.py -1000 0 # 命令输了,电机1会转动 # 观察输出日志, 第一列值是否变小
如下结果
- 编码器1(第一列)在控制电机1顺时针旋转时逐渐增大正常
david@david-MS-7808:~/pibot_ros/pypibot/transport$ python test_motors.py 1000 0 [I] 2021-04-23 23:34:02.941 (0xFBE7):set pwm success [I] 2021-04-23 23:34:02.941 (0xFBE7):****************get encoder count***************** [I] 2021-04-23 23:34:02.948 (0xFBE7):encoder count: 0 0 0 0 [I] 2021-04-23 23:34:03.964 (0xFBE7):encoder count: 636.0 0.0 0.0 0.0 [I] 2021-04-23 23:34:04.472 (0xFBE7):encoder count: 1292.0 0.0 0.0 0.0 [I] 2021-04-23 23:34:04.980 (0xFBE7):encoder count: 1949.0 0.0 0.0 0.0 [I] 2021-04-23 23:34:05.488 (0xFBE7):encoder count: 2609.0 0.0 0.0 0.0 [I] 2021-04-23 23:34:05.996 (0xFBE7):encoder count: 3263.0 0.0 0.0 0.0 [I] 2021-04-23 23:34:06.504 (0xFBE7):encoder count: 3922.0 0.0 0.0 0.0 [I] 2021-04-23 23:34:07.012 (0xFBE7)encoder count: 4584.0 0.0 0.0 0.0
- 在控制电机1逆时针转动时候,编码器1(第一列)逐渐减少则为正常
david@david-MS-7808:~/pibot_ros/pypibot/transport$ python test_motors.py -1000 0
[I] 2021-04-23 23:35:51.575 (0xD657):encoder count: 5402.0 0.0 0.0 0.0
[I] 2021-04-23 23:35:52.083 (0xD657):encoder count: 4772.0 0.0 0.0 0.0
[I] 2021-04-23 23:35:52.591 (0xD657):encoder count: 4122.0 0.0 0.0 0.0
[I] 2021-04-23 23:35:53.099 (0xD657):encoder count: 3473.0 0.0 0.0 0.0
[I] 2021-04-23 23:35:53.607 (0xD657):encoder count: 2822.0 0.0 0.0 0.0
依次控制各个电机,如果符合结果则无需调整,如果某一个或几个不符合则输入下面命令打开配置页面调整对应编码器参数
encoderX_exchange_flag
调整完成主板需要重新上电生效