我正在寻找一些交通模拟作为一个辅助项目,但我无法想出如何代表道路本身的想法。我喜欢使用一系列航点(使用纬度/长坐标的直线)的想法,但似乎很难用这种方法表示不同的交通车道。我也一直在研究其他一些交通仿真问题,其中一个提到使用位图,但我无法确定这将如何让我轻松地将实际长度分配给路段和车道宽度等。有没有人有任何有用的提示或其他想法,允许汽车存在于道路上的特定点,并能够切换车道等?
答案 0 :(得分:2)
我将从连接节点的网格开始。一个节点将代表道路状况的变化,如交叉路口,起点或终点车道,道路本身的加宽等。您是否进行了存储所有信息的复杂连接(两个方向的车道?每个方向有多少车道?车道属性等)或者为每个通道保存一个连接。为了确保节点不同侧的2个连接与同一个通道相关,可以在每个节点基础上使用lane-id。
通过这种方式,您可以运行一个可以运行计算的图表,并且您拥有可视化整个网络的所有数据。
答案 1 :(得分:1)
这实际上取决于你想对你的模型做什么,所以很难在这里提出“正确”的答案。
如果您想对拥塞进行建模,则可能根本不需要网络。你可以在一条环形道路上模拟它。
你真的需要车道的概念吗?如果你这样做,你可以将它们建模为节点之间的单独线,或者仅仅存储每条道路的车道数就足够了。
无论如何,我所得到的是,在开始考虑确切的数据模型之前,你应该首先考虑一下你想要实现的目标。
答案 2 :(得分:1)
在之前的工作中,我是驾驶模拟器的首席开发人员,特别是道路网络建模。我建造了我所谓的逻辑道路网,它是用于跟踪道路上车辆的道路网络的抽象描述。
lane 只是一条跟随道路的路径,但偏离了中心路径的正负距离。每条道路都是直的或弯曲的部分,并且基本上是中心顶点的路径,其中任一侧具有一个或多个偏移车道。然后自动驾驶汽车可以沿着车道行驶。
简而言之,构成道路的多边形是围绕道路的中央路径建造的,例如。
*------*------*
|\ |\ |
| \ | \ |
| \ | \ |
| \ | \ |
| \ | \ |
| \| \|
*------*------*
其中*是一个顶点,为这个简单的直路段创建了4个多边形。
沿路径的2个顶点之间的插值提供了一种在给定方向上移动车辆的简单方法。在这条简单的路径之上,我们为自动驾驶汽车引入了一些模糊性,以便出现小路径的偏差(创造更真实的交通)。从逻辑上讲,车辆被添加到路段并从中移除,车辆可以检查该段以查看前方,后方或不同车道上的其他车辆。这允许每辆车内有一定程度的人工智能,这样他们就可以在另一辆车后面减速或等待迎面而来的车辆通过,然后转弯。
不确定这是否正是您所追求的,但我希望它有所帮助: - )