博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
esmini接入外部ego车控制
阅读量:4149 次
发布时间:2019-05-25

本文共 1137 字,大约阅读时间需要 3 分钟。

 

1. esmini 在Server.cpp中提供了外部控制ego车的方式,以UDP的方式接收外部数据然后驱动ego运动。为了开启UDP数据接收线程,只需要命令行增加--server参数即可。

2. ScenarioGateway 类中保存了所有车辆的当前数据,UDP线程接收到数据后需要调用reportObject函数来上报数据。

3. ScenarioEngine 类中的step函数中,每一帧开始会调用ScenarioGateway的getObjectStateById函数来获取车辆数据,然后在每一帧结束会通过reportObject来上报数据。如果开启外部控制的话,UDP线程的reportObject和step的reportObject会冲突。

可以按以下方法修改:

1. ScenarioEngine类增加一个bool变量egoExternalCtl_作为控制开关,并增加设置函数。并且需要在构造函数中初始化为false

void SetEgoExternal(bool isCtrl) { egoExternalCtl_ = isCtrl; }bool egoExternalCtl_;

2. 修改ScenarioEngine的step函数,给reportObject调用的地方加上这个开关,并判断是否是ego车。

// Report state to the gatewayif(!egoExternalCtl_ || obj->name_ != "Ego")	scenarioGateway.reportObject(obj->id_, obj->name_, static_cast
(obj->type_), obj->category_, obj->model_id_, obj->GetActivatedControllerType(), obj->boundingbox_, simulationTime_, obj->speed_, obj->wheel_angle_, obj->wheel_rot_, &obj->pos_);

3. 在ScenarioPlayer的初始化函数中,当读取到--server参数时,会设置launch_server,在开启UDP的线程的地方,调用ScenarioEngine的SetEgoExternal即可。

if (launch_server){	// Launch UDP server to receive external Ego state	StartServer(scenarioEngine);	scenarioEngine->SetEgoExternal(true);}

 

转载地址:http://bfpti.baihongyu.com/

你可能感兴趣的文章
九度:题目1012:畅通工程
查看>>
九度:题目1017:还是畅通工程
查看>>
九度:题目1034:寻找大富翁
查看>>
第六章 背包问题——01背包
查看>>
51nod 分类
查看>>
1136 . 欧拉函数
查看>>
面试题:强制类型转换
查看>>
Decorator模式
查看>>
Template模式
查看>>
Observer模式
查看>>
高性能服务器设计
查看>>
性能扩展问题要趁早
查看>>
MySQL-数据库、数据表结构操作(SQL)
查看>>
OpenLDAP for Windows 安装手册(2.4.26版)
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
Pentaho BI开源报表系统
查看>>
Pentaho 开发: 在eclipse中构建Pentaho BI Server工程
查看>>
JSP的内置对象及方法
查看>>
android中SharedPreferences的简单例子
查看>>
android中使用TextView来显示某个网址的内容,使用<ScrollView>来生成下拉列表框
查看>>