【问题标题】:GettingAltitude (Heading) in Veins simulation静脉模拟中的GettingAltitude(航向)
【发布时间】:2016-12-29 07:23:56
【问题描述】:

我将 Veins 4.4 与 Omnet 4.6 和 Sumo 0.25 一起使用。

我想获取有关车辆高度的信息。 我刚刚在 TraCICommandInterface 类中找到了 getLonLat() 方法。 有没有关于高度的方法或其他方式来获取这种信息?谢谢

我尝试将上述功能修改如下:

std::list<double> TraCICommandInterface::getLonLatAlt(const Coord& coord) {
    TraCIBuffer request;
    request << static_cast<uint8_t>(POSITION_CONVERSION) << std::string("sim0")
            << static_cast<uint8_t>(TYPE_COMPOUND) << static_cast<int32_t>(2)
            << connection.omnet2traci(coord)
            << static_cast<uint8_t>(TYPE_UBYTE) << static_cast<uint8_t>(POSITION_LON_LAT_ALT);
    TraCIBuffer response = connection.query(CMD_GET_SIM_VARIABLE, request);


    uint8_t cmdLength; response >> cmdLength;
    if (cmdLength == 0) {
        uint32_t cmdLengthX;
        response >> cmdLengthX;
    }
    uint8_t responseId; response >> responseId;
    ASSERT(responseId == RESPONSE_GET_SIM_VARIABLE);
    uint8_t variable; response >> variable;
    ASSERT(variable == POSITION_CONVERSION);
    std::string id; response >> id;
    uint8_t convPosType; response >> convPosType;
    ASSERT(convPosType == POSITION_LON_LAT_ALT);
    double convPosLon; response >> convPosLon;
    double convPosLat; response >> convPosLat;
    double convPosAlt; response >> convPosAlt;

    std::list<double> geo_coordinates;
    std::list<double>::iterator it;

    geo_coordinates.insert(it,0,convPosLon);
    geo_coordinates.insert(it,1,convPosLat);
    geo_coordinates.insert(it,2,convPosAlt);

    return geo_coordinates;
}

但在调试模式下运行,它返回此错误:

线程 1“opp_run”收到信号 SIGSEGV,分段错误。 0x00007ffff5ea5543 in std::__detail::_List_node_base::_M_transfer(std::__detail::_List_node_base*, std::__detail::_List_node_base*) () 来自 /usr/lib/x86_64-linux-gnu/libstdc++.so.6 Python 异常找不到类型 std::__cxx11::list >::const_iterator::_Node: Python 异常找不到类型 std::__cxx11::list >::const_iterator::_Node: Python 异常找不到类型 std::__cxx11::list >::const_iterator::_Node:

【问题讨论】:

  • 我不太明白您所说的“标题”是什么意思。你能详细说明一下吗?
  • @ChristophSommer 我编辑了帖子,它含糊不清。我的意思是车辆位置的高度。其实我还需要车辆的航向,这是汽车交换的基本安全信息的一个字段。

标签: omnet++ veins sumo


【解决方案1】:

您的修改在语义上是正确的,但在语法上是错误的。

您错误地使用了std::list::insert。您使用的表单需要一个插入位置(在这里,您的代码似乎提供了一个未初始化的迭代器)、一个重复计数(在这里您的代码似乎提供了一个位置偏移量)和一个要插入的值。

使用push_backinsert 语句更改为三个语句会产生工作代码(但请注意,演示模拟会产生缺失值,因为没有定义位置映射和高度值)。

【讨论】:

  • @ChristopSommer 您的意思是它们没有在我的代码中或一般在 Veins 中定义?感谢您的建议,我解决了语法错误,但实际上我得到的高度值为零,这不是 rea
  • Veins 自带的演示地图不包含高程数据。如果您为 SUMO 创建自己的地图,请参阅 sumo.dlr.de/wiki/Networks/Elevation 上的说明
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多