You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Veins5.1中TraCIMobility无getCurrentPosition()如何获取节点当前位置

问题原因

Veins 5.1版本的TraCIMobility类已经移除了getCurrentPosition()接口,所以你调用该方法会提示不存在。

解决方案

你现有代码中使用的getPositionAt(simTime())本身就是官方指定的替代方法,如果你调用该方法仍然报错,按以下步骤排查修改:

1. 修正命名空间缺失问题

你头文件中定义mobility_veins时没有加veins命名空间,会导致编译器无法正确识别类类型,修改头文件对应代码:

// 修改前
TraCIMobility* mobility_veins;
// 修改后
veins::TraCIMobility* mobility_veins;

同时确认已经引入对应头文件:

#include <veins/modules/mobility/traci/TraCIMobility.h>

2. 更稳定的两种获取位置的替代方案

你代码中已经声明了其他可用的指针,可以直接调用更易用的接口,不需要依赖TraCIMobility:

  • 方案A:通过VeinsInetMobility指针获取
    VeinsInetMobility封装了适配INET框架的位置接口,直接调用getCurrentPosition()即可:
    veins::Coord veh_pos = mobility->getCurrentPosition();
    
  • 方案B:通过TraCI车辆接口直接查询
    你已经初始化了traciVehicle指针,可以直接从SUMO侧查询车辆实时位置:
    veins::Coord veh_pos = traciVehicle->getPosition();
    

以上两种方案不需要额外引入头文件,兼容性更强,推荐优先使用。

内容的提问来源于stack exchange,提问作者Nehal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 11:54:03