蓝牙的使用

通过蓝牙向D1发送移动控制指令

D1 的物理参数

  • wheel_diameter: 0.1260    //轮子直径,单位:米
  • wheel_track: 0.3500     //两个轮子的间距,单位:米
  • encoder_resolution: 1200   //编码器分辨率, 轮子转一圈,编码器产生的脉冲数
  • PID_RATE: 30         //PID调节PWM值的频率

速度控制指令

基本的速度指令格式,如下:

z 20 -20;

说明:指令用于设置在单位时间(1/PID_RATE 秒)内 D1 移动期望编码器的脉冲数。

第一个参数用于设置左轮的速度,第二参数用于设置右轮的速度, 正数代表向前移动,负数代表向后移动。

注意:这里所说的速度不是以m/s的速度, 而是需要一定的计算来和m/s进行换算。

只有线速度

  • 假如 D1 以0.3m/s的速度前进,指令的参数计算方法如下:
    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次。所以,指令的参数计算方法为:

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 向左转弯,就需要一个轮子向前转,一个轮子向后转。例如,需要 D1 以V1=1弧度/秒的速度转动,V2=0.2m/s的速度前进。计算方法如下:
左轮 vl = V2 + V1 * wheel_track / 2.0
右轮 vr = V2 - V1 * wheel_track / 2.0

然后,按公式 int(V * ticks_per_meter / PID_RATE) 分别计算左轮和右轮的速度参数。

若以1弧度/秒的速度转动,指令输入为

z 40 3;

注意:当需要 D1 持续运动是,需要不断地下发指令,如果下位机2秒内没收到指令,D1 将停止运行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值