如何在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
生成的动画如下:
我希望在显示点的同时展示节点间的连线,但未能实现,恳请帮助。
解决方案
要实现节点连线的动画,核心是利用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
相关产品推荐
相关产品推荐

