最新消息:

DashgoD1底盘新指南-3.1 下位机

ROBOTS/其他机器人 少儿编程 1382浏览 0评论
DashgoD1底盘新指南

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 )获取波特率的值

输入:br
输出:115200r
  • 说明:D1 默认设置好下位机和上位机通讯的串口比特率为115200, 所以该指令(b)总是会返回固定值115200。

  • 该指令(b)主要用于验证刚开机时下位机和上位机通讯是否正常。

( 2 )读取编码器当前值

输入:er
输出:20 20r
  • 输出类型:int

  • 说明:指令(e)返回 D1 左右轮编码器当前值。

  • 根据编码器的分辨率(encoder_resolution),就可以推算出底盘移动的距离、朝向、单位时间内的线速度和角速度。

注意:编码器当前值是累加的,输出类型为int, 取值范围在-32768到+32767之间,需处理最大和最小值溢出问题。

( 3 )重置编码器的值

输入:rr
输出:okr
  • 说明:指令(r)用于把左右轮编码的计数值重置为零。

  • 每次开机时需要重置下左右轮编码的计数值,防止起始值不正确导致推算出错误的底盘状态。

( 4 )设置速度的期望值

输入:z 20 -20;
输出:okr
  • 说明:指令(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 )超声波测距

   输入:pr
   输出:179 340 10 240r
  • 输出距离单位: 厘米(cm)

  • 前面3个超声波,后面1个超声波。输出的值顺序是:前面左边、前面中间、前面右边、后面中间。

( 6 )更新电机控制PID

   输入:u 10:12:0:50r
   输出:okr
  • 输出默认值(Kp:Kd:Ki:Ko)100:0:0:1000

  • 说明:该参数用于电机对期望速度的自我调整,一般情况下不需要改动。

注意事项:

  • 每个指令都有输入和输出

  • 输入指令的格式:以小写字母开头,跟若干个参数,每个参数之间以空格分隔,最后以单字符r(相当于“回车”)作为结束符。 形如:

   z 20 -20;
  • 输出指令的格式: 一个或多个返回值,以空格分隔最后以单字符r或英文字符;作为结束符。 形如:
   okr

您必须 登录 才能发表评论!