翻出了自己以前的小程序,居然还有人要,就共享一下
1、程序要求
平面上有布满障碍物,设定起始点和终点。一个机器人从起点运动到终点,经过最短路径不与障碍物发生碰撞。起点和终点由用户指定,障碍物的个数和形状可以随机生成,存储在文件中读出或者由用户指定生成。机器人为圆型机器人,在头部正中配有7个传感器,以正中为界限跟别为0度,+-5度,+-15度,+-90度,传感器感知范围为3个机器人直径长度。机器人性能为速度最大为机器人直径,转角最大为+-30度。要求应用模糊决策方法实现,需要构造知识库。
评分标准:
1.实现基本操作:中等
2.实现改进算法:良好
3.完成五个机器人在障碍物群体中避障行走:优秀
2、模糊控制模块的设计
2.1确定输入量和输出量极其模糊语言描述
模糊控制模块的输入是超声波传感器的距离信息、移动机器人当前的运动速度和目标的方向信息,输出是移动机器人的加速度和旋转角度信息.移动机器人系统结构如图1所示.移动机器人,正如程序要求,机器人头部正中配有7个传感器,以正中为界限跟别为0度,+-5度,+-15度,+-90度,传感器感知范围为3个机器人直径长度。利用传感器获取机器人左方距离,前方距离和右方距离信息,其中,0度,+-5度中最小距离确定前方距离。-15度和-90度确定左方距离,15度和90度确定右方距离。
图1机器人示意图
模糊机器人有五个输入量,分别为:左方距离LD、前方距离FD、右方距离RD、当前速度v和距目标的夹角θ。输出量为:机器人的加速度a和机器人的旋转角度β (注:实际控制小车时,输出变量设置为小车左右轮加速度将更加方便)。使用连续型论域,采用简单的线性化处理方法,将距离输入变量模糊语言变量定为:{Near, Far},将当前速度定义为{Slow, Fast},将夹角定义为{Left, Front, Right},将加速度定义为{BN, SN, Z, SP, BP},(符号说明:{Big Negative, Small Negative, Zero, Small Positive, Big Positive})。
2.2 确定输入输出变量的隶属度函数
取各个语言变量的隶属度函数形状为对称的三角形且模糊分割是对称的。规定当目标在机器人的右前方时为正值反之为负。各变量的隶属度函数如下图所示:
图2 各变量的隶属度函数
2.3 设计模糊控制规则库
模糊控制规则的建立是模糊控制的核心问题。模糊控制系统是用一系列基于专家知识的语言来描述的, 用一系列模糊条件描述的模糊控制规则就构成了模糊控制规则库。
根据FuzzySet 理论, 建立定性推理规则, 模糊规则反映了输入输出量之间的关系. 按照模糊逻辑进行推理的基本理论, 规定五个定性的输入信号,两个定性的输出信号, 整个系统就构成了一个有五个输入、两个输出的多输入多输出模糊系统。当同一区域内出现两个或两个以上障碍物信息时, 则只考虑最近的障碍物。
机器人路径是依据障碍物位置、目标位置的传感器信息和机器人当前运动速度来给出到达目标的策略. 当探测到障碍物接近机器人时, 机器人将改变运动轨迹, 以避免碰撞. 机器人转向的基本原则是: 当探测到机器人左( 右) 和前方出现障碍物时, 机器人应即时转向右( 左) 方向. 机器人转向的改变是靠左右轮速度的改变来控制的, 并且速度的改变还能有效控制机器人运动的时效性. 根据上面所确定的输入输出集, 模糊规则的一般形式可以If(条件)then( 结果) 描述。
根据不同的机器人轨迹图和目标方位,可以制定一系列的模糊规则,本程序中使用的模糊规则库如下表所示:
表1 模糊规则知识库
规则编号 |
输入 |
输出 |
|||||
LD |
FD |
RD |
θ |
v |
a |
θ |
|
1 |
Far |
Far |
Far |
Right |
Slow |
SP |
Right |
2 |
Far |
Far |
Far |
Right |
Fast |
SP |
Right |
3 |
Far |
Far |
Far |
Left |