跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

RRT 算法详细介绍(Python)

综述由AI生成RRT 算法即快速扩展随机树,属于采样式路径规划算法,通过随机采样构建搜索树探索空间并寻找可行路径。该算法适用于机器人运动规划、自动驾驶等高维场景,具有实现简单、对复杂环境适应力强等特点,但存在路径非最优和随机性强的缺点。文中提供了算法核心思想、基本流程、伪代码及 Python 简化实现示例,并对比了改进版 RRT* 的优势。

imJackJia发布于 2026/3/23更新于 2026/6/721 浏览
RRT 算法详细介绍(Python)

RRT(Rapidly-exploring Random Tree)快速扩展随机树是一种采样式路径规划算法,广泛应用于机器人运动规划、自动驾驶、无人机路径设计等领域。它特别适用于高维空间中的路径规划问题。下面是对 RRT 算法的详细介绍:

一、RRT 算法的核心思想

RRT 的核心思想是通过在空间中随机采样点并逐步构建一棵树形结构(搜索树),来快速探索空间并找到从起点到终点的可行路径。 RRT 偏向于快速探索未被探索的空间区域,从而快速覆盖整个搜索空间。

二、基本流程

输入:
  • 起点 q_start
  • 终点 q_goal
  • 空间约束(如障碍物、边界等)
  • 步长 Δq
  • 最大迭代次数 N
步骤:
  1. 初始化一棵树 T,树的根节点为起点 q_start。
  2. 对于每次迭代:
    • 随机采样一个点 q_rand(可以是完全随机,也可以有一定概率采样为 q_goal,称为'目标偏向')。
    • 在树中找到距离 q_rand 最近的节点 q_nearest。
    • 从 q_nearest 向 q_rand 移动一个固定步长 Δq,得到新的节点 q_new。
    • 如果 q_new 不在障碍物中,则将其加入树中,并将其父节点设为 q_nearest。
    • 如果 q_new 距离 q_goal 很近,可以认为找到了可行路径。
  3. 如果找到路径,沿父节点回溯得到路径;否则直到达到最大迭代次数。

三、RRT 算法伪代码

def RRT(q_start, q_goal, N, Δq):
    T = Tree(q_start)
    for i in range(N):
        q_rand = random_sample()
        q_nearest = nearest_node(T, q_rand)
        q_new = steer(q_nearest, q_rand, Δq)
        if is_valid(q_nearest, q_new):
            T.add_node(q_new, parent=q_nearest)
            if distance(q_new, q_goal) < threshold:
                return extract_path(T, q_new)
    return failure

四、Python 实现

下面提供了一个简化版的 Python 实现示例,并配合图示说明 RRT 的执行过程。

import numpy as np
import matplotlib.pyplot as plt
import random

 :
     ():
        .x = x
        .y = y
        .parent = 

 ():
     np.hypot(n1.x - n2.x, n1.y - n2.y)

 ():
     random.random() < goal_sample_rate:
         Node(goal.x, goal.y)
     Node(random.uniform(, ), random.uniform(, ))

 ():
    dist = distance(from_node, to_node)
    theta = np.arctan2(to_node.y - from_node.y, to_node.x - from_node.x)
    new_x = from_node.x + extend_length * np.cos(theta)
    new_y = from_node.y + extend_length * np.sin(theta)
    new_node = Node(new_x, new_y)
    new_node.parent = from_node
     new_node

 ():
    
     

 ():
    nodes = [start]
     _  (max_iter):
        rnd = get_random_node(goal_sample_rate, goal)
        nearest = (nodes, key= n: distance(n, rnd))
        new_node = steer(nearest, rnd)
          is_collision(new_node):
            nodes.append(new_node)
             distance(new_node, goal) < :
                goal.parent = new_node
                nodes.append(goal)
                
     nodes

 ():
    path = []
    node = last_node
     node:
        path.append((node.x, node.y))
        node = node.parent
    path = path[::-]
    plt.plot([x  x, y  path], [y  x, y  path], )

 ():
     node  nodes:
         node.parent:
            plt.plot([node.x, node.parent.x], [node.y, node.parent.y], )

start = Node(, )
goal = Node(, )
nodes = rrt(start, goal)
draw_tree(nodes)
draw_path(goal)
plt.plot(start.x, start.y, , label=)
plt.plot(goal.x, goal.y, , label=)
plt.legend()
plt.grid()
plt.axis([, , , ])
plt.title()
plt.show()
class
Node
def
__init__
self, x, y
self
self
self
None
def
distance
n1, n2
return
def
get_random_node
goal_sample_rate, goal
if
return
return
0
100
0
100
def
steer
from_node, to_node, extend_length=5.0
return
def
is_collision
node
# 简化处理:假设无障碍物
return
False
def
rrt
start, goal, max_iter=500, goal_sample_rate=0.05
for
in
range
min
lambda
if
not
if
5.0
break
return
def
draw_path
last_node
while
1
for
in
for
in
'-r'
def
draw_tree
nodes
for
in
if
'-g'
10
10
90
90
"bs"
"Start"
"gs"
"Goal"
True
0
100
0
100
"RRT Path Planning (No Obstacles)"

五、运行结果

运行上面代码后会出现如下图所示效果:

  • 绿色的线表示 RRT 生成的搜索树结构。
  • 红色路径表示最终从起点到终点的规划路径。
  • 蓝色起点,绿色终点。

六、注意事项

  • 每一步都从树中最近节点往随机点延伸。
  • 最终形成一条从起点连到终点的路径。
  • 可在 is_collision() 中添加障碍物检测逻辑以模拟真实环境。

七、RRT 的特点

优点:
  • 非常适合高维空间的路径规划。
  • 易于实现。
  • 对复杂环境有良好的适应能力。
缺点:
  • 路径不最优,常常是'锯齿状'路径。
  • 随机性强,规划时间不稳定。
  • 在障碍物密集区域效果不佳。

八、改进版本:RRT*

RRT*(RRT Star)是 RRT 的优化版本,加入了'路径优化'的机制:

  • 在每次加入新节点时,不仅连接最近点,还会尝试重新连接周围节点,以获得更短路径。
  • 理论上可以得到渐近最优解。

九、应用场景

  • 机器人路径规划
  • 无人机自主导航
  • 自动驾驶车辆的避障与路径生成
  • 多自由度机械臂的运动规划

目录

  1. 一、RRT 算法的核心思想
  2. 二、基本流程
  3. 输入:
  4. 步骤:
  5. 三、RRT 算法伪代码
  6. 四、Python 实现
  7. 五、运行结果
  8. 六、注意事项
  9. 七、RRT 的特点
  10. 优点:
  11. 缺点:
  12. 八、改进版本:RRT*
  13. 九、应用场景
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • PlatformIO 基础配置文件 platformio.ini 详解
  • Python 列表 append 与 extend 方法详解
  • Linux diff 与 patch 命令实战指南
  • Kimi Code:Moonshot AI 智能编程助手及 CLI 集成
  • Ollama 本地大模型部署与使用指南
  • 多 AI 模型并行内容生成与对比分析工作流构建与解析
  • 如何在 Cursor 中使用 MCP 服务
  • Web 安全渗透测试入门与进阶学习路线指南
  • 灵感画廊 AI 绘画工具体验:比 Midjourney 更简单
  • 基于 Rust+Tauri 构建 OpenClaw 安全沙箱清理工具
  • 米家 API 使用指南:智能家居设备控制
  • Claude Code Agent Teams:重构 AI 研发范式的并行智能协作体系
  • Java 实现文件夹及子目录内容的完整复制
  • 企业微信 Java SDK 集成开发指南
  • Spring Boot 与 JDK、Maven、MyBatis-Plus、Tomcat 版本对应
  • 基于 Qwen3-TTS 和 Whisper ASR 的双向语音对话系统搭建
  • VSCode 远程 SSH 下 Copilot Claude 模型与 Agent 模式配置指南
  • Mac 新手指南:__MACOSX 文件夹来源与删除方法
  • 2025年AI写作工具实战测评:寻找真正适配网文创作的工具
  • DooTask 轻量级项目管理与 AI 协同功能解析

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online