硬件资料设定:小车驱动来自于两个相同的电机,转向依靠两轮差速实现,小车前后左右安装超声波传感器,前后各一个,左右各两个;

功能目标:假设小车左侧有墙壁,通过超声波测距实现按指定距离沿墙行驶

参数设定:车轮半径r=3cm,车轮间距wd=10cm,车身长length=16cm,侧边超声波传感器前后各一个,假设一个在车头一个在车尾,间距=车身=length=16cm,小车线速度恒定v = 0.2m/s,距离墙d=10cm,假设超声波传感器以10Hz的频率采集距离。

在以上条件下,设定小车出发点,方向与墙平行,距离30cm,根据以上参数,设计小车控制算法。

1、根据超声波测距结果f_dist和b_dist计算车辆与墙的夹角θ与距离dist

由上图关系可知:

dist = f_dist*cos(θ)

tan(θ) = (b_dist-f_dist)/length

--> θ=arctan(b_dist-f_dist)/length)

--> dist = f_dist*cos(arctan(b_dist-f_dist)/length))

到这里,我们通过超声波测距对小车的位姿进行了计算,得到了dist和θ

2、计算线速度v、角速度omega,与车轮转速的关系

车轮通过电机控制,电机通过PWM控制,上位机可以控制的是电机PWM控制的占空比,再进一步,就是上位机可以直接控制车轮的转速,假设左右车轮转速分别为omega_l和omega_r,那么对应两个轮子的线速度分别是v_l和v_r,二者关系为:

v_l = 2*pi*r*(omega_l/2/pi) = omega_l*r

同理:v_r = omega_r*r

小车通过两轮差速驱动,车轮速度一致时走直线,不一致时走弧线,走弧线时,两个轮子所走弧线以及车实际的轨迹是3个同心圆,而单位时间内走过的轨迹如下图:

上图中,v_l和v_r是单位时间内两个轮走过的轨迹,v是车辆实际速度,R是内车轮轨迹半径,wd为两个轮子的距离,omega为单位时间内车辆转过额角度,实际就是车辆角速度,这些参数有以下关系:

v_r/R = v_l/(R+wd)=v/(R+wd/2)=omega

--> v_r = R*omega

v_l = R*omega+wd*omega

v = omega*R + wd*omega/2

--> omega = (v_l-v_r)/wd = (v-v_r)*2/wd

v在上文我们设定为固定值0.2m/s,那么:

--> v_r = v - omega *wd/2

v_l = v + omega *wd/2

到此为止,我们得到了设定车辆角速度v,线速度omega时,科技计算出车轮线速度,根据线速度和车轮角速度关系,可以计算出上位机应该给车轮下达怎样的指令。

3、厘清各参数关系之后,我们来实现通过pid实现闭环控制小车,也就是通过第一步计算出的θ和dist,目标距离d,计算小车控制参数v(固定值0.2m/s)和omega:

首先看一下控制逻辑,下图控制逻辑是靠传感器数据驱动的,也可以设置为定时驱动,传感器数据采集以后放到固定位置,程序设置定时循环驱动计算和控制:

在上图中,dist和θ是即时计算出来的,

d_err = dist-d

phi_err = θ

另设:

Δt:车辆控制命令发送间隔

d_I_err:横向偏差积分项,每一轮+=d_err *Δt 需要设定范围,避免积分项太大

phi_I_err:航向角度偏差积分项,每一轮+=phi_err *Δt 需要设定范围,避免积分项太大

d_K:横向偏差比例系数

d_I:横向偏差积分系数

phi_K:航向角度偏差比例系数

phi_I:航向角度偏差积分系数

那么,在每一次控制循环中需要进行以下计算:
d_err = dist-d

phi_err = θ

d_I_err += d_err *Δt

判断积分项是否在范围内,超出范围则设为范围边界值

phi_I_err += phi_err *Δt

判断积分项是否在范围内,超出范围则设为范围边界值

omega = d_K*d_err+d_I*d_I_err+phi_K*phi_err +phi_I*phi_I_err

其中4个比例系数都需要通过设其它比例系数为0的情况下,计算omega和系数相关参数的关系来判定系数的符号,然后就根据车辆运行状态来调节各项参数。

若有收获,就点个赞吧

两轮差速小车循线控制原理分析相关推荐

  1. 四种两轮差速驱动机器人底盘特性分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/Mj5iLR_4TKeJiaOVqJf6Vg(包含原文PDF百度云下载链 ...

  2. 差分轮式机器人模型matlab,两轮差速机器人运动学分析和控制研究

    龙源期刊网 http://www.qikan.com.cn 两轮差速机器人运动学分析和控制研究 作者:王维新 来源:<现代电子技术>2012年第10期 摘 要:对两轮差速机器人的运动控制进 ...

  3. 一种开环控制的两轮差速驱动小车的设计

    内容摘要:为了让电磁屏蔽效能自动测试装置能够在屏蔽室中按照已给定的路径运动,设计了一种开环控制的两轮差速驱动小车,对其运动学进行了分析,并采用双圆弧拟合曲线方法使小车实现按照给定曲线行走.通过大量运动 ...

  4. 四轮驱动移动机器人(SSMR)与两轮差速驱动机器人、car-like robot的对比分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/Fzrpn5_3TB6apqG2Ds1v5Q(包含原文PDF百度云下载链 ...

  5. car-like robot与两轮差速驱动机器人异同分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/hCAzGJDSZFsFHoC5hTVsjA(包含原文PDF百度云下载链 ...

  6. 两轮差速驱动机器人运动模型及应用分析

    关注同名微信公众号"混沌无形",有趣好文! 原文链接:https://mp.weixin.qq.com/s/Mj5iLR_4TKeJiaOVqJf6Vg 原文摘要:本文从分析两轮差 ...

  7. 两轮差速运动模型推导过程

    下面这张图片是从网络上拷贝过来,以这张图片为模型,我们来一步一步论证推导两轮差速运动模型,以下是原来网络上对这张图片的描述.         下图是移动机器人在两个相邻时刻的位姿,其中 是两相邻时刻移 ...

  8. 自动驾驶—两轮差速机器人基于PID控制下轨迹跟踪

    机器人轨迹跟踪一般有两种方式,一是基于PID,二是基于MPC模型预测控制方法.本文主要介绍了PID控制,这里我只采用了航向角的控制,对速度没有控制,因为,我认为,小车只要能到达目标点即可,复杂的我后续 ...

  9. 两轮差速机器人运动学模型

    两轮差速底盘 1.1.底盘说明 两轮差速底盘由两个动力轮位于底盘左右两侧,两轮独立控制速度,通过给定不同速度实现底盘转向控制.一般会配有一到两个辅助支撑的万向轮. 主要底盘有: 1.Turtlebot ...

最新文章

  1. Microbiome:首个地球微生物“社会关系”网络在浙大绘制!
  2. Linux监控   Nagios
  3. 【循序渐进学Python】14.数据库的支持
  4. java forkjoin MySQL_Java并发fork-join框架
  5. oracle空例程,2018.5.29 Oracle连接到空闲例程
  6. 02-print的用法
  7. 计算机技能大赛图形试题,图形图像处理技能大赛竞赛试题试卷.doc
  8. matlab 中pid tuning,PID Tuning Algorithm
  9. [GO]并发实现聊天室服务器
  10. 什么是群体决策支持系统
  11. PPT图形的多种玩法(师从于珞珈老师)
  12. 深度残差网络_深度残差收缩网络:借助注意力机制实现特征的软阈值化
  13. 微信HOOK协议软件,已实现云控,将微信的效率最大化
  14. 焦点较中的网络视频相关
  15. Directions Reduction-方向减少
  16. 五年级上册《桂花雨》教案
  17. 35岁的程序员:第24章,兼职项目
  18. swift4.0 方法监听Selector写法总结
  19. 线性链表实现对二进制数加1运算
  20. 安装spss破解版以及spss安装之后提示我程序无法启动,因为应用程序的并行配置不正确

热门文章

  1. Red Giant Shooter Suite 13 for Mac(红巨人后期流程插件套装)
  2. Wind River Workbench 3.x VxWorks项目类型
  3. OSG读取obj模型坐标变化的问题
  4. 智能问答系统:问句预处理、检索和深度语义匹配技术
  5. Arduino重磅更新!IDE 2.0来了
  6. 并联串联混合的电压和电流_干货 | 聊聊电阻串并联的特点及区别
  7. ios客户端学习笔记(七):iOS客户端的UI设计
  8. 矩阵的实现(矩阵相加)
  9. 5-DOF机械臂课程设计(二)之视觉引导
  10. php平台cdn搭建,PHP 搭建一个网站配置CDN产品?