基于Unity的虚拟模拟环境,用于新兴移动系统,称为信息与决策科学实验室的缩小智能数字城市(IDS 3D City)(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

摘要:
随着互联和自动驾驶车辆的新兴移动系统需求不断增加,迫使我们必须建立高质量的测试环境来支持它们的发展。本文介绍了一个基于Unity的虚拟模拟环境,用于新兴移动系统,称为信息与决策科学实验室的缩小智能数字城市(IDS 3D City),旨在与其物理对应体和其已建立的控制框架并行运行。通过利用机器人操作系统、AirSim和Unity,我们构建了一个模拟环境,能够比在物理试验台上进行实验设计更快地迭代。这个环境提供了一个中间步骤,用来验证我们控制算法的有效性,以便在物理试验台上实施之前。IDS 3D City还使我们能够证明我们的控制算法独立于底层车辆动力学的运作,因为AirSim引入的车辆动力学与我们的缩小智能城市的运作规模不同。最后,我们通过在虚拟和物理环境中进行实验并比较它们的输出,展示了我们数字环境的行为。

📚2 运行结果

部分代码:

%extract the hostnames of the vehicles used in the experiment, form is "manta_XXX"
hostnamesOpt = dataOpt{1,2:11:end};
hostnamesBsl = dataBsl{1,2:11:end};

% 111, 120, 131 are the ego vehicle IDs. Pick the vehicles to plot.
desired = "manta_120";


%extract the data corresponding to each vehicle from the optimal and baseline data sets
idx = find(hostnamesOpt == desired, 1);
start = 1 + (idx-1)*11;

tOpt =  dataOpt{:,start};
pxOpt = dataOpt{:,start+2};
pyOpt = dataOpt{:,start+3};
vOpt  = dataOpt{:,start+6};
rOpt  = dataOpt{:,start+9};
segOpt= dataOpt{:,start+10};

idx = find(hostnamesBsl == desired, 1);
start = 1 + (idx-1)*11;

tBsl  = dataBsl{:,start};
pxBsl = dataBsl{:,start+2};
pyBsl = dataBsl{:,start+3};
vBsl  = dataBsl{:,start+6};
rBsl  = dataBsl{:,start+9};
segBsl= dataBsl{:,start+10};


%delete any data saved before the cars started
bad = find(segOpt == "");
tOpt(bad)=[]; pxOpt(bad)=[]; pyOpt(bad)=[];vOpt(bad)=[];rOpt(bad)=[];segOpt(bad)=[];

bad = find(segBsl == "");
tBsl(bad)=[]; pxBsl(bad)=[]; pyBsl(bad)=[];vBsl(bad)=[];rBsl(bad)=[];segBsl(bad)=[];


% calculate the cumulative distance travelled along the road, r
cumROpt = ExtractR(rOpt,segOpt);
cumRBsl = ExtractR(rBsl,segBsl);

% only get R from A102 to S29 -- these are the segments where the experiment takes place
segStart = 'S40';
segEnd = 'S29';
startOpt = find( ismember(segOpt, segStart), 1);
endOpt = find( ismember(segOpt, segEnd), 1, 'last');
startBsl = find( ismember(segBsl, segStart), 1);
endBsl = find( ismember(segBsl, segEnd), 1, 'last');


%set t = 0 at the start of segment A102
fprintf("Start at: %g\n", tOpt(startOpt))
tEnter = tOpt(startOpt);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

Raymond M. Zayas, Logan E. Beaver. 

🌈4 Matlab代码、数据、文章

  • 25
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值