3.2.c RRT代码解析
category
type
status
slug
date
summary
tags
password
icon
放手一搏,还是要等到年华老去,心中充满遗憾,孤独的迈向黄泉?
—《盗梦空间》
🏰代码及环境配置:请参考 环境配置和代码运行!
本节提供了RRT和RRT Star算法的代码测试.
两个算法运行的环境(地图和障碍物分布均相同),并通过函数实现(这一部分可根据自己需求进行修改):
3.2.c.1 RRT算法实现
在
tests/sampling_based_planning/rrt.py
中给定start point和goal point,在上述构建的地图环境中进行测试,代码如下:get_random_node
: 获取随机点get_nearest_node_index
:在已有 的node list中找到最近点steer
:按照一定的步长往前计算得到新节点check_if_outside_play_area
:判断新节点是否出了地图check_collision
:判断是否节点和边有碰撞calc_dist_to_goal
:判断是否到终点了,即算法结束generate_final_course
:使用回溯的方式得到最终的路径测试结果如下,可以看到RRT算法可以找到一条从起点到终点的路径(但不是最优的)。
3.2.c.2 RRT Star算法实现
RRT Star的算法实现和RRT的算法实现大体相同,为了保证代码的独立性,将其定义在
tests/sampling_based_planning/rrt_star.py
中,并在上述构建的地图环境中进行测试,代码如下:除了与RRT算法中相同的函数,此处不再赘述,其他的函数定义如下:
new_node.cost
:每个节点定义了cost,此处用的是欧式距离choose_parent
:给新节点重新寻找父节点rewite
:随机树的重布线search_best_goal_node
:在当前的迭代情况下,找寻最优的目标节点测试结果如下,可以看到RRT Star算法得到的路径相比RRT算法得到的路径更优。
上一篇
动手学控制理论
下一篇
端到端-理论与实战视频课程
Loading...