1.一种能耗最优下最优节点轮式移动机器人路径规划方法,包括Ep表示电机效率损失的能量、Eh表示地面起伏时的势能、Ef表示滚动摩擦阻力消耗的能量、Ek表示速度变化和转弯消耗的能量,从起始节点到n节点的实际代价g(n),从n节点到目标节点的预估代价h(n),对于评估节点n的估价函数f(n),有f(n)=g(n)+h(n),其特征在于,从起始节点到n节点的实际代价g(n)的计算模型如下:
其中,轮式移动机器人在作业过程中,能耗受约于因素包括电机效率损失的能量地面起伏时的势能Eh=mgΔh、滚动摩擦阻力消耗的能量Ef=μmgcosθScn、速度变化和转弯消耗的能量 η表示电机效率;P表示电机功率;Scn表示从n节点的父节点到n节点之间的路程;vn表示n节点的速度;vn‑1表示n节点的父节点的速度;m表示轮式移动机器人的质量;g表示重力加速度;Δh表示当前点到下个点的高度差;μ表示摩擦系数;θ表示坡道与水平面之间的夹角;I表示转动惯量;ω表示角速度;从n节点到目标节点的预估代价h(n)的计算模型如下:其中,S(n)表示n(x1,y1,z1)节点和目标节点ngoal(x2,y2,z2)之间的预估距离采用对角线距离;实际代价S(n)的计算模型如下:其中,Sdiagonal(n)和Sstraight(n)的计算模型如下:Sdiagonal(n)=min(|x1‑x2|,|y1‑y2|,|z1‑z2|)Sdiagonal(n)=min(|x1‑x2|,|y1‑y2|,|z1‑z2|)其中,min表示取最小值,Sdiagonal(n)和Sstraight(n)分别表示沿着对角线移动的距离和曼哈顿距离;在搜索过程中,拥有openlist表和closelist表,其中openlist表中存储待被搜索的节点,closelist表中存储已被搜索过的节点;在把当前节点的8个邻近节点中未被放入openlist表中的可通行节点放入openlist表后,再将其放入每次寻找新的当前节点后都会被清空的caculist表中,同时把已在openlist表中,但g(n)值更低的节点也放入caculist表中,再从caculist表中找到f(n)值最小的节点作为预选节点np;判断该预选节点是否在障碍范围内,若在,则找出障碍范围内f(n)值最小的节点n′p,与np的f(n)值相比,较小者作为当前节点;若不在,预选节点np直接作为当前节点,从而避免局部最优的情况出现;若caculist表为空,再在openlist表中找f(n)值最小的节点作为当前节点;在此情形下,大多数是最多会从8个点中找到最优节点,而不是从openlist表中找到最优节点,从而提高算法的运行速度;一种能耗最优下最优节点轮式移动机器人路径规划方法流程如下:步骤一:如果是首次循环,NC表示循环次数,其迭代计算公式是NC=NC+1,令NC=1,则起点作为当前节点n,跳转至步骤五,否则继续往下执行;
步骤二:如果caculist表是空表,从openlist表找到离目标点最近的f(n)值最小的节点作为当前节点n,跳转至步骤五,否则继续往下执行;
步骤三:找到caculist表中f(n)值最小的节点,将该f(n)值最小的节点作为预选节点np;
步骤四:判断预选节点np是否在障碍范围内,若在,找出障碍范围内f(n)值最小的节点n′p,与np的f(n)值比较,选取n′p与np对应f(n)值最小者的节点为 当前节点n;
步骤五:将当前节点n放入closelist表中,之后的循环中,该节点将不会再被当作当前节点;
步骤六:设置空表caculist表;
步骤七:若当前节点n是目标节点,则寻路成功,或者openlist表已为空表,则寻路失败,算法结束,否则继续往下执行;
步骤八:依次搜寻点n的8个邻近节点,若是为不可越过点,则邻近节点放入closelist表中;
步骤九:如果某邻近节点中,既没有在openlist表,也不在closelist表中,将其放入openlist表,计算出该邻近节点的f(n)值,并设父节点为n;如果已在openlist表中,判断其g(n)值是否更小,若是,则用更小的g(n)值替换原来的g(n)值,同时在预估代价值h(n)前引入比例因子α,重新计算f(n)值,并设父节点为n,否则查看其它邻近节点,将邻近节点放入caculist表中;
步骤十:所有邻近节点查看完毕后,跳回步骤二。