DashgoD1底盘新指南-3.1 下位机
DashgoD1底盘新指南-3.1 下位机
D1 下位机
连接方式
使用 D1 配送的蓝色USB接口线与上位机(如:PC,树莓派等)相连
官网下载 arduino IDE 并安装(包含arduino驱动安装)
打开arduino IDE或其他串口调试工具,如:SerialPortUtility 等,波特率设置为115200
D1 的物理参数
wheel_diameter: 0.1260 //轮子直径,单位:米
wheel_track: 0.3500 //两个轮子的间距,单位:米
encoder_resolution: 1200 //编码器分辨率, 轮子转一圈,编码器产生的脉冲数
PID_RATE: 30 //PID调节PWM值的频率
支持指令
( 1 )获取波特率的值
输入:b\r
输出:115200\r
说明:D1 默认设置好下位机和上位机通讯的串口比特率为115200, 所以该指令(b)总是会返回固定值115200。
该指令(b)主要用于验证刚开机时下位机和上位机通讯是否正常。
( 2 )读取编码器当前值
输入:e\r
输出:20 20\r
输出类型:int
说明:指令(e)返回 D1 左右轮编码器当前值。
根据编码器的分辨率(encoder_resolution),就可以推算出底盘移动的距离、朝向、单位时间内的线速度和角速度。
注意:编码器当前值是累加的,输出类型为int, 取值范围在-32768到+32767之间,需处理最大和最小值溢出问题。
( 3 )重置编码器的值
输入:r\r
输出:ok\r
说明:指令(r)用于把左右轮编码的计数值重置为零。
每次开机时需要重置下左右轮编码的计数值,防止起始值不正确导致推算出错误的底盘状态。
( 4 )设置速度的期望值
输入:z 20 -20;
输出:ok\r
说明:指令(m)用于设置在单位时间(1/PID_RATE 秒)内底盘移动期望编码器的脉冲数。
第一个参数用于设置左轮的速度,第二参数用于设置右轮的速度, 正数代表向前移动,负数代表向后移动。
注意:这个速度的单位不是m/s, 需要一定的计算来和m/s进行换算。
举例:
假如 D1 以0.3m/s的速度前进,指令(m)的参数计算方法如下:
- D1 轮子转动一圈,移动的距离为轮子的周长:
wheel_diameter * 3.1415926
- D1 轮子转动一圈,编码器产生的脉冲信号为:
encoder_resolution
- 所以每移动1米产生脉冲信号为:
ticks_per_meter
= encoder_resolution /(wheel_diameter*3.1415926)
= 1200/(0.12*3.1415926)
= 3183.10
- D1 以V=0.3m/s的速度前进,1秒钟内产生的脉冲信号为:
V * ticks_per_meter
- 又因为 PID 的频率是1秒钟30次。所以,指令(m)的参数计算方法为:
int(V * ticks_per_meter / PID_RATE)
= int(0.3 * 3183.10/30)
= 32
- 所以,如果设置 D1 以0.3m/s的速度前进,指令输入为:
z 32 32;
- 如果以0.3m/s的速度后退,指令输入为:
z -32 -32;
- 假如 D1 转弯,就需要一个轮子正转,一个轮子反转。例如,需要 D1 以V=1弧度/秒的速度转动。计算方法如下:
左轮 vl = V * wheel_track / 2.0
右轮 vr = -1 * V * wheel_track / 2.0
然后,按公式 int(V * ticks_per_meter / PID_RATE) 分别计算左轮和右轮的速度参数。
若以1弧度/秒的速度转动,指令输入为
z 19 -19;
注意:当需要 D1 持续运动是,需要不断地下发指令(m),如果下位机2秒内没收到指令(m),D1 将停止运行。
( 5 )超声波测距
输入:p\r
输出:179 340 10 240\r
输出距离单位: 厘米(cm)
前面3个超声波,后面1个超声波。输出的值顺序是:前面左边、前面中间、前面右边、后面中间。
( 6 )更新电机控制PID
输入:u 10:12:0:50\r
输出:ok\r
输出默认值(Kp:Kd:Ki:Ko)100:0:0:1000
说明:该参数用于电机对期望速度的自我调整,一般情况下不需要改动。
注意事项:
每个指令都有输入和输出
输入指令的格式:以小写字母开头,跟若干个参数,每个参数之间以空格分隔,最后以单字符\r(相当于“回车”)作为结束符。 形如:
z 20 -20;
- 输出指令的格式: 一个或多个返回值,以空格分隔最后以单字符\r或英文字符;作为结束符。 形如:
ok\r
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号