2016-12-20 26 views
0

我使用靜脈4.4與4.6 OMNET和相撲0.25。GettingAltitude(標題)在靜脈模擬

我想獲得關於車輛的高度信息。 我剛剛在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在標準:: __詳細:: _ List_node_base :: _ M_transfer(STD :: __詳細:: _ List_node_base *,性病:: __詳細:: _ List_node_base *)()從/usr/lib/x86_64-linux-gnu/libstdc++.so。 6 Python異常無法找到類型std :: __ cxx11 :: list> :: const_iterator :: _節點: Python異常無法找到類型std :: __ cxx11 :: list> :: const_iterator :: _節點: Python異常找不到類型std :: __ cxx11 :: list> :: const_iterator :: _節點:

+0

我不太明白你的意思是「標題」。你能詳細說明一下嗎? –

+0

@ChristophSommer我編輯了這篇文章,它很模糊。我的意思是車輛位置的高度。其實我也需要車輛的標題,這是汽車交換的基本安全信息的一個領域。 – FMA

回答

0

您的修改在語義上是合理的,但語法錯誤。

您正在使用std::list::insert不正確。你使用的表單需要一個插入位置(在這裏,你的代碼似乎提供了一個未初始化的迭代器),一個重複計數(這裏你的代碼似乎提供了似乎是位置偏移量)和一個要插入的值。

使用push_backinsert語句更改爲三個語句會產生工作代碼(但請注意,由於沒有定義位置映射和沒有定義高度值,所以演示模擬會產生缺失值)。

+0

@ChristopSommer你的意思是他們沒有在我的代碼或一般靜脈中定義?感謝您的建議,我解決了syntatix錯誤,但實際上得到零作爲海拔高度值,這不是真的 – FMA

+0

Veins自帶的演示地圖不包含高程數據。如果您爲SUMO創建了自己的地圖,請參閱http://sumo.dlr.de/wiki/Networks/Evation –