You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MATLAB中实现带节点连线的RRT路径规划动画?

问题

我正在深入学习使用MATLAB进行路径规划算法,通过视频了解到RRT(快速扩展随机树)的节点及连线形成动画,希望制作类似动画以更清晰理解节点生成过程。

已尝试操作

我参考了MATLAB官方RRT示例,修改代码实现了点的动画:

%% Plot the path

show(occGrid)
hold on
hold on
size_tree = size(solnInfo.TreeData)

for x = 1:size_tree(1)
    % Plot the entire search tree
    plot(solnInfo.TreeData(x,1), solnInfo.TreeData(x,2),'.');
    
    drawnow

% pause(0.5)
end

生成的动画如下:
animation RRT

我希望在显示点的同时展示节点间的连线,但未能实现,恳请帮助。

解决方案

要实现节点连线的动画,核心是利用solnInfo.TreeData中存储的父节点索引(通常为第三列),每生成一个新节点时,找到它的父节点坐标并绘制两者的连线。修改后的代码如下:

%% Plot the path with connection lines
show(occGrid)
hold on
% 获取树的节点总数
nodeCount = size(solnInfo.TreeData, 1);

for idx = 1:nodeCount
    % 获取当前节点坐标
    currX = solnInfo.TreeData(idx, 1);
    currY = solnInfo.TreeData(idx, 2);
    % 绘制当前节点
    plot(currX, currY, 'b.', 'MarkerSize', 8);
    
    % 根节点无父节点,从第二个节点开始绘制连线
    if idx > 1
        % 获取父节点索引(TreeData第三列默认存储父节点ID)
        parentIdx = solnInfo.TreeData(idx, 3);
        parentX = solnInfo.TreeData(parentIdx, 1);
        parentY = solnInfo.TreeData(parentIdx, 2);
        % 绘制父节点与当前节点的连线
        plot([parentX, currX], [parentY, currY], 'g-', 'LineWidth', 0.5);
    end
    
    drawnow;
    % 可选:添加暂停时间,调整动画节奏
    % pause(0.1);
end
hold off

关键说明

  • solnInfo.TreeData的第三列默认记录每个节点的父节点索引,根节点(第一个节点)无父节点,因此跳过连线绘制。
  • 通过plot([parentX, currX], [parentY, currY], 'g-')实现两点间连线,颜色、线宽可根据需求调整。
  • drawnow确保每次循环刷新图形,实现逐节点生成的动画效果;若动画过快,可取消注释pause语句调整间隔。

内容的提问来源于stack exchange,提问作者Swarup

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 04:55:19