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

MATLAB道路坐标提取代码验证、绘图及Simulink集成咨询

解决方案

1. 验证道路坐标提取代码的正确性

先给你一个标准的提取逻辑作为参考,对比你的代码排查问题:

function [roadX, roadY] = getRoadCoords()
    % 调用导出的场景生成函数
    scenario = yourExportedScenarioFunc();
    % 获取场景内所有道路对象
    allRoads = scenario.Roads;
    
    roadX = [];
    roadY = [];
    % 遍历每条道路提取路点
    for idx = 1:length(allRoads)
        waypoints = allRoads(idx).Waypoints;
        roadX = [roadX; waypoints(:,1)];
        roadY = [roadY; waypoints(:,2)];
    end
end

验证步骤:

  • 运行函数后,查看roadX和roadY的长度,是否和你在Designer中绘制的道路总点数匹配
  • 直接执行plot(roadX, roadY),观察绘制的形状是否与Designer里的道路完全一致,有没有遗漏支路、环岛等结构
  • 如果道路包含曲线段,确认代码是否提取到了曲线的离散采样点(Designer导出的道路默认会将曲线转换为离散点)

2. 生成X-Y路径图

提取坐标后,添加以下代码即可快速生成路径图:

% 先获取道路坐标
[rx, ry] = getRoadCoords();
% 绘制路径图
figure('Name','道路X-Y路径');
plot(rx, ry, 'b-', 'LineWidth', 2);
hold on;
% 标记起点与终点
plot(rx(1), ry(1), 'go', 'MarkerSize', 8, 'DisplayName','起点');
plot(rx(end), ry(end), 'ro', 'MarkerSize', 8, 'DisplayName','终点');
xlabel('X 坐标 (m)');
ylabel('Y 坐标 (m)');
grid on;
axis equal; % 保持坐标比例,避免道路变形
legend;

直接将这段代码复制到命令行或脚本中运行,就能得到真实比例的道路路径图。

3. 集成到Simulink环境

有两种实用方案,根据你的场景选择:

  • MATLAB Function模块实时生成:
    1. 在Simulink模型中拖拽一个MATLAB Function模块
    2. 将坐标提取代码粘贴到模块内部,设置输出端口为roadX和roadY(若需给自行车模型传递实时目标点,可添加输入参数控制路点选取)
    3. 将模块输出连接到运动学自行车模型的路径跟踪模块即可,适合需要动态调整道路的场景
  • 工作区变量传递:
    1. 先在MATLAB命令行运行坐标提取函数,将roadX和roadY保存到工作区
    2. 在Simulink中使用From Workspace模块读取这两个变量,或用Constant模块直接传入数组,适合固定道路的场景

4. 其他道路转MATLAB代码的方法

  • 手动定义坐标数组:针对简单道路(如直线、矩形赛道),直接在脚本中硬编码坐标:
    roadX = [0, 50, 50, 0, 0];
    roadY = [0, 0, 30, 30, 0];
    
  • 用Scenario API手动构建场景:无需GUI导出,直接用代码创建道路,灵活性更高:
    scenario = drivingScenario();
    % 创建带弯道的道路
    road(scenario, [0 0; 100 0; 150 50], 'RoadWidth', 3.5);
    % 用之前的逻辑提取坐标
    allRoads = scenario.Roads;
    
  • 导入OpenStreetMap数据:使用osmread导入真实地图,提取道路节点后转换为坐标数组,适合真实场景的道路建模

5. 集成到运动学自行车模型的关键点

  • 确保道路坐标的单位与自行车模型一致(统一为米,避免单位混乱)
  • 若做路径跟踪,需将XY坐标转换为模型适配的格式:比如用referencePath对象生成带曲率、航向角的参考路径,或拆分为离散的目标点序列
  • 可在Simulink中添加插值模块,根据自行车的行驶距离,实时从道路坐标数组中获取当前目标XY点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:00:53