【问题标题】:How to access the SUMO vehicles from highway_overtake.py in Webots?如何从 Webots 中的 Highway_overtake.py 访问 SUMO 车辆?
【发布时间】:2020-05-24 03:24:17
【问题描述】:

我正在修改 Highway_overtake.py 控制器,以便能够跟踪相邻 SUMO 车辆(以透明彩色框突出显示的车辆)的位置和速度。如何访问林肯汽车附近的 SUMO 车辆信息?我想获得在林肯汽车附近突出显示的 SUMO 汽车的位置、加速度、速度等。到目前为止,这是我尝试过的:

  • 我已将林肯 MKZ 车辆节点的高速公路超车世界中的“主管”字段更改为 TRUE。
  • 我从我的 higway_overtake.py 控制器文件中的控制器导入了 Supervisor。
  • 我尝试调用 traci 函数 getIDList() 和 getPosition() 但它给出的错误是控制器没有任何此类属性。

我相信可以从 SumoSupervisor.py 文件中检索到此信息,该文件是 Sumo 接口的控制器文件。但我也不知道如何在我的highway_overtake.py 脚本中访问这个文件。

任何可以帮助我解决这个问题的信息都会非常有帮助! 提前致谢。

【问题讨论】:

    标签: sumo webots


    【解决方案1】:

    如果是为了调试,你可以使用这个监控函数来获取模拟中所有汽车的位置,然后找出哪一辆车靠近你的目标车(你知道哪个 ID)。 https://cyberbotics.com/doc/guide/supervisor-programming#tracking-the-position-of-robots

    否则,如果您只想使用实际机器可用的功能,请尝试发射器/接收器设备。您或许可以将信号强度用作接近度的代理,或者,如果有同步的滴答声,则将信号接收时间用作接近度检测器。

    或者在每辆车上使用 GPS 模块(具有足够高的分辨率)并比较坐标。

    【讨论】:

    • 您分享的链接中的代码是“WbNodeRef robot_node = wb_supervisor_node_get_from_def("MY_ROBOT");”。我已经在 python 中尝试了它的等价物“node = driver.getFromDef("SUMO INTERFACE")”。我在highway-overtake.wbt 中寻找相扑接口的DEF 名称,但找不到,所以我只是试了一下“SUMO INTERFACE”。以下是有关驱动程序对象的更多信息:它被声明为“driver = Car()”,为此我已导入“from vehicle import Car”。
    • 我猜我应该传递的 DEF 名称是林肯汽车的名称,但由于我实际上对 SumoSupervisor/Sumo 接口的数据感兴趣,因此获取汽车的对象句柄而不是相扑接口。我实际上对实时跟踪相扑车的速度、加速度、位置等感兴趣。你能告诉我我必须如何调用该函数来获取句柄吗?提前致谢!
    • @Bot_potato 请将此标记为已完成,因为我认为最初的问题已得到解答,如果您需要有关 parcing 节点的帮助,请为该问题添加一个新问题,以便其他人也可以帮助您.
    • 仍然不清楚如何使用主管功能,但我会将其标记为完成。 ://
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    相关资源
    最近更新 更多