学生休息室

分享学生如何在日常项目中使用MATLAB和Simulink的技术和现实例子#学生成功#万博1manbetx

美国太阳能挑战赛:横跨中西部的一场艰苦的战斗

在今天的帖子中,山姆Reinsel和我们一起来谈谈美国太阳能挑战赛.交给你了,山姆。
随着电动汽车进入行业前沿,能效方面的创新和新方法很可能成为量产汽车的下一个大战场。今天,你不需要寻找很远就能找到突破极限的汽车。像光年一正在推动效率和技术的极限,他们直接在汽车上使用太阳能电池板。
光年的团队并不是完全从零开始的:他们的太阳能之旅是从参加太阳能汽车比赛的学生开始的。其中一个比赛是美国太阳能挑战ASC 2021刚刚结束,在看到reddit上的一篇文章详细介绍了今年从堪萨斯城到圣达菲的路线后,我想调查一下太阳能汽车需要做多少额外的工作才能爬上落基山脉的边缘。
Picture1.png
如果你不熟悉太阳能赛车,这是一个迷人的工程挑战。车队必须根据严格的规定来建造他们的车辆,这些规定限制了他们可以使用的太阳能电池板的面积(这也限制了他们可以捕获的能量)。这些车辆在几天内穿越现实世界的道路,进行1000多英里的越野拉力赛,只允许使用从太阳捕获的能量来维持它们。我在下面展示的分析只是这些比赛的策略和计划的冰山一角,还有所有的工程工作。

绘制航线图

首先,请记住在reddit上发布的路线(https://www.reddit.com/r/solarracing/comments/oij0sc/asc_2021_route_map/)并不是官方路线(最终会根据任何施工或其他问题而改变),但这是一个很好的地方,可以开始看看车队将面对什么。当我下拉.kml文件时,已经发现了一些问题,所以它不是完美无缺的。然而,在估算总里程时,与官方路线书相比,我每条腿的总里程不到0.1英里,所以对我来说,这已经足够好了。
在我们做任何花哨的事情之前,我们可能应该从谷歌地图中抓取路线开始。我将它下载为.kml文件,我使用文件交换提交将其读入MATLAB,该文件交换提交大约与我使用MATLAB: kml2struct的时间一样长//www.tianjin-qmedu.com/matlabcentral/fileexchange/35642-kml2struct
使用这个函数,我们可以将数据带入并开始分析路线,它被分为9个部分(3个是可选循环),并将其绘制在基本的街道地图上:
ascFile = kml2struct(“ASC 2021. kml”);
lineSegs = ascFile(strcmp({ascFile。几何},“行”));
数字
Gx =地轴;
持有
ind = 1: number (lineSegs)
geoplot (gx lineSegs(印第安纳州). lat lineSegs .Lon(印第安纳州),“线宽”5)
结束
geobasemap (gx“街道”
Picture2.png
这给了我们一个很好的路线概览,但它并不比我们在谷歌地图上得到的多。为了更好地了解攀登的能量需求,我们需要得到该地区的数字高程地图。

找到正确的地图

为了简化工作流程(并避免将文件下载到我工作的所有pc上),我使用了映射工具箱导入的webmap。首先,我需要搜索该地区有海拔数据的网络地图服务器。我还将过滤我的搜索,以确保我实际上会得到海拔数据:
layerSearch = wmsfind(“高度”“searchfield”“layername”“Latlim”(30、45),“Lonlim”(-110、90));
serverList = layerSearch.servers;
thisServer = WebMapServer(serverList{5});
capabilities = getCapabilities(thisServer);
layers = capabilities.Layer(11);
请求= WMSMapRequest(图层,thisServer);
一旦我有了符合搜索条件的服务器和层列表,我就可以开始寻找我需要的webmap了。这里有一些试验和错误,以确保我对我所拉的地图感到满意,但最终我确定了一个https://elevation.nationalmap.gov/我想在海拔数据中找到一个粒度更大的,但现在这个已经满足了我的需要。现在我只需要构建我的数据请求。我需要指定我想要的地图的层(在本例中,我只需要一个层)、我请求的纬度和经度限制,以及我将返回的数据的分辨率。我选择了3000×3000映像,主要是出于性能较弱的机器上的性能原因。
thisServer = WebMapServer(serverList{4});
capabilities = getCapabilities(thisServer);
layers = capabilities.Layer(11);
请求= WMSMapRequest(图层,thisServer);
请求。Latlim = [35 40];
请求。Lonlim = [-106 -94];
请求。ImageHeight = 3000;
请求。ImageWidth = 3000;
请求。ImageFormat =“图像/ jpeg”
A = getMap(thisServer,request.RequestURL);
R = request.RasterReference;
现在我有了高程数据,我可以创建一个新版本的地图。对于这个特定的webmap,数据是作为图像而不是仰角数据本身传递回来的,所以我需要将它从灰度图像(值范围为0到255)转换为实际的仰角数据。我经常发现自己写这样的重映射,所以我在文件交换中有另一个文件,以避免每次需要时都重写这段代码。//www.tianjin-qmedu.com/matlabcentral/fileexchange/61213-mapfun-value-fromlow-fromhigh-tolow-tohigh
我喜欢保留这样的实用程序文件,以避免重写常用函数,避免拼写错误或弄乱公式。下面我已经写出了代码,但一旦完成,我们可以用海拔数据来绘制我们的路线:
数字
wm = worldmap(A,R);
一个使用mapfun文件交换帖子的例子
% mapElevation = mapfun(double(A(:,:, 1)), 0,255, - 60.3041,3922.47);
%和手工编码版本:
mapElevation =(双((:,:1))- 0)。*(3922.47 - -60.3041)。/ (255 - 0)+ -60.3041;
geoshow (mapElevation, R,“DisplayType”“texturemap”
colormap涡轮增压
C = colorbar;
c.Label.String =“高程,m”
持有
ind = 1: number (lineSegs)
geoshow (lineSegs(印第安纳州). lat lineSegs .Lon(印第安纳州),“线宽”3,“颜色”,兰德(1、3))
结束
持有
Picture3.png
很明显,太阳能汽车前面有一个相当大的垂直爬坡,这需要很多能量来克服。在你的日常通勤中,电动汽车可以在下山途中用再生制动来弥补一些额外的上坡噪音,而太阳能汽车则不需要往返,从而实现平衡。在所有路段中,高度变化最大的是E段,车辆需要爬升近1公里。如果我们放大高程地图的这部分,我们可以更详细地看到涉及最多高程变化的区域:
Picture4.png
纵观整条路线的海拔变化,这部分攀登很容易是最费力的(尽管即使在这里,平均道路坡度也没有那么严重,只是更加一致)。
Picture5.png

对能源消耗的影响

最终,我好奇的是,在平坦的道路上克服地形需要多少能量,这不仅需要绘制高程地图,还需要通过车辆模型来运行。我没有任何一辆单独的太阳能汽车的近似值,所以我用一辆普通的电动汽车作为我比较的基础。就总能量消耗而言,这是不正确的(在我的模型中,我们说的是几千磅的额外重量),但应该给我们一个体面的比较,即海拔变化对所需能量的影响有多大。
因为我只是在寻找一个基线,而不是使用一个成熟的车辆模型,所以我建立了一个可配置的一些常见电动汽车的功率损失模型。我们已经在我们的车辆建模系列中讨论过这种模型,所以如果你感兴趣,你应该看看这些视频://www.tianjin-qmedu.com/videos/matlab-and-万博1manbetxsimulink-racing-lounge-vehicle-modeling-part-1-simulink-1502466996305.html
为了确保模型足够准确,我将其与已发表的模型进行了比较EPA能源消耗数据在主城区和高速公路上驾车循环。这些数字不是相当标签你在经销商的车窗贴纸上看到的燃油经济性:这个标签需要多次驾驶循环和一些修正因素才能确定更多的实际结果。我使用的EPA数据是单个周期内未经调整的原始数据,这与我们模型的能源消耗也将未经调整的数据相比要好得多。我的功率损耗模型并不完美:对于一些电动汽车,我只能在~15%左右,其他电动汽车在大多数驱动循环中都在2-3%以内。如果我要构建一个更复杂、更高保真的模型,最后那几个%会让我感到困扰:但对于我的快速分析,我很满意能达到这样的接近。
那么,要爬上落基山脉的山麓,还需要多少动力呢?我进行了两次模拟:一次考虑了成绩,一次没有。由此产生的功率差异相对温和:通常只有几千瓦的差异。在E段,由于其显著较高的平均等级,我们的额外功率达到近35kW的峰值
Picture6.png
那么这对能源消耗到底有多大的影响呢?通过我的模拟,我发现总能耗增加了约7千瓦时,比没有分级的跑步多5%左右。虽然这不是一个巨大的增长,但在太阳能竞赛的背景下,增加5%的能量(全部来自太阳!)是很重要的。
我的模型的一个限制是,我重复使用美国HWFET认证周期作为我的速度配置文件,因为我还没有找到一个简单的速度限制来源。我考虑过使用GPS路线来估计道路曲率,以调整目标车辆速度,作为生成速度轨迹的另一种方法,但我决定专注于利用我所拥有的时间来改进功率损失模型。即使有速度限制,太阳能汽车本身也是非常流线型的车辆,对功率有严格的限制,所以它们不能像乘用车那样加速或保持高速。
在这条路线上,团队还必须考虑许多其他因素:云层覆盖、路线如何遮挡太阳、风速等等。每个团队都有各自的策略来完成比赛:但希望你能从我在这里介绍的探索中看到,如何以相对简单的方式开始考虑这些方面,只需要很少的数据就可以开始得出关于我们需要考虑高级别战略决策的结论。

|
  • 打印
  • 发送电子邮件

评论

如欲留言,请点击在这里登录您的MathWorks帐户或创建一个新帐户。