当前位置:   article > 正文

手把手教用matlab做无人驾驶(六)-路径规划RRT_无人车路径规划matlab

无人车路径规划matlab

这里介绍路径规划算法RRT应用在2D环境,这里算法步骤:

1.产生随机点q_rand,matlab程序实现如下:

  1. for i = 1:1:numNodes
  2. q_rand = [floor(rand(1)*x_max) floor(rand(1)*y_max)];
  3. plot(q_rand(1), q_rand(2), 'x', 'Color', [0 0.4470 0.7410])

2.通过q_rand找到 最近的q_near 节点(就是随机产生q_rand,然后从nodes找到离q_rand最近的点)

  1. ndist = [];
  2. for j = 1:1:length(nodes)
  3. n = nodes(j);
  4. tmp = dist(n.coord, q_rand);
  5. ndist = [ndist tmp];
  6. end
  7. [val, idx] = min(ndist);
  8. q_near = nodes(idx);

3.指引q_near 到q_rand,如果距离太远,就通过steer产生新的q_new,然后通过判断是不是障碍物,产生q_new

  1. q_new.coord = steer(q_rand, q_near.coord, val, EPS);
  2. if noCollision(q_rand, q_near.coord, obstacle)
  3. line([q_near.coord(1), q_new.coord(1)], [q_near.coord(2), q_new.coord(2)], 'Color', 'k', 'LineWidth', 2);
  4. drawnow
  5. hold on
  6. q_new.cost = dist(q_new.coord, q_near.coord) + q_near.cost;

 

4.通过nodes和给定半径r,找到q_new附件的点q_nearnest(目的就是为接下来找到最小代价路径)

  1. q_nearest = [];
  2. r = 60;
  3. neighbor_count = 1;
  4. for j = 1:1:length(nodes)
  5. if noCollision(nodes(j).coord, q_new.coord, obstacle) && dist(nodes(j).coord, q_new.coord) <= r
  6. q_nearest(neighbor_count).coord = nodes(j).coord;
  7. q_nearest(neighbor_count).cost = nodes(j).cost;
  8. neighbor_count = neighbor_count+1;
  9. end
  10. end

 

5.q_nearest找到以q_new为中心,半径r中,nodes中的点到q_new最小代价路径

  1. for k = 1:1:length(q_nearest)
  2. if noCollision(q_nearest(k).coord, q_new.coord, obstacle) && q_nearest(k).cost + dist(q_nearest(k).coord, q_new.coord) < C_min
  3. q_min = q_nearest(k);
  4. C_min = q_nearest(k).cost + dist(q_nearest(k).coord, q_new.coord);
  5. line([q_min.coord(1), q_new.coord(1)], [q_min.coord(2), q_new.coord(2)], 'Color', 'g');
  6. hold on
  7. end
  8. end
  9. % Update parent to least cost-from node
  10. for j = 1:1:length(nodes)
  11. if nodes(j).coord == q_min.coord
  12. q_new.parent = j;
  13. end
  14. end

6.增加到q_new到node

  nodes = [nodes q_new];

 

7.继续循环产生随机数,直到完成

 

最后完成如下,红色就是最终路径。黑色就是通过q_near,q_rand 找到的q_new。绿色就是通过半径r,q_nearest中的nodes最优路径

具体代码地址:https://download.csdn.net/download/caokaifa/10680028

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/848769
推荐阅读
相关标签
  

闽ICP备14008679号