# robo-ns3 **Repository Path**: eiclpy/robo-ns3 ## Basic Information - **Project Name**: robo-ns3 - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-07-24 - **Last Updated**: 2020-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RoboMaster NS-3 仿真器 ## 运行样例 ``` ./waf configure ./waf --run run ``` ### 样例说明 一队机器人无动作。另一队通过lte通讯,主节点控制机器人向目标基地移动,有机器人发现敌方机器人后发包通知主节点告知敌方位置,主节点决策进行攻击。 ## 编写代码 在src目录下使用`python create-robo.py {team name}`创建模块或仿造样例teama创建模块,修改scratch/run.cc中的`EntryPoint*`函数名为对应函数名。 `EntryPoint*`函数中进行初始化(构建网络拓扑,添加控制策略等) ## API ### 实体基类 RoboActor 实体包括场上所有具有体积的物体。实体具有碰撞检测功能,当检测到碰撞时会调用所有添加的碰撞回调函数。实体周期更新自身状态,更新时调用所有周期更新回调函数。 #### 回调函数类型定义 ##### 碰撞回调 `typedef Callback> CollisionCallback;`\ 返回void,参数Ptr\为碰撞到的实体 ##### 周期更新回调 `typedef Callback UpdateCallback;`\ 返回void,参数float为更新周期 #### 函数定义 |函数定义|功能| |-|-| |`FVector GetGlobalLocation (void) const;`|返回当前位置向量| |`FAngle GetGlobalRotation (void) const;`|返回当前朝向角| |`Ptr GetMobility ();`|返回移动控制器| |`uint32_t AddCollisionCallback (CollisionCallback cb);`|添加碰撞回调,返回回调下标| |`uint32_t AddUpdateCallback (UpdateCallback cb);`|添加周期更新回调,返回回调下标| ### 机器人基类 RoboBase 机器人基类继承实体,为所有场上机器人的基类,包括基地。机器人基类具有射击,复活,升级等功能。不同机器人初始状态,移动模型均不同。 #### 机器人参数 ##### 虚拟护盾 机器人受到攻击时优先扣除虚拟护盾,除基地虚拟护盾为50外其他机器人均为10,虚拟护盾每10s恢复 ##### 每12s经验自然增长 英雄0.4,步兵0.2 ##### 升级经验 |等级|英雄|步兵| |-|-|-| |1|0|0| |2|8|3| |3|12|6| ##### 击毁获得经验 |等级|英雄|步兵|哨兵|工程| |-|-|-|-|-| |1|7.5|2.5|7.5|5| |2|10|5|7.5|5| |3|15|7.5|7.5|5| ##### 最大生命值等级 |等级|英雄|步兵|哨兵|工程|无人机|基地| |-|-|-|-|-|-|-| |1|200|100|600|500|INF|1500| |2|300|200|600|500|INF|1500| |3|500|300|600|500|INF|1500| |4|700|500|600|500|INF|1500| ##### 最大射击速度等级 |等级|17mm弹药|42mm弹药| |-|-|-| |1|10|8| |2|12|10| |3|15|12| |4|30|16| ##### 射击超速减少生命值 17mm弹药超速小于5m/s减少最大生命值10%,超速大于5m/s小于10m/s减少最大生命值50%,超速大于10m/s减少最大生命值100%。 42mm弹药速度小于最大速度1.1倍减少最大生命值10%,速度大于1.1倍小于1.2倍减少最大生命值20%,超速大于1.2倍减少最大生命值50%。 #### 类型定义 ##### 位置告知回调 `typedef Callback IndicateLocationCallback;` 返回void,参数为发现的机器人的编号及位置。可通过RoboJudge::Get()->QueryRobo(机器人编号)获得机器人状态RoboInfo。 #### 函数定义 |函数定义|功能|入参| |-|-|-| |`uint8_t GetUid (void) const;`|获得机器人的编号|无| |`uint8_t GetTeam (void) const;`|获得机器人的队伍编号|无| |`RoboType GetRoboType (void) const;`|获得机器人的类型|无| |`std::string GetName (void) const;`|获得机器人的名称|无| |`int GetLife (void) const;`|获得机器人的生命值|无| |`int GetLevel (void) const;`|获得机器人的等级|无| |`int GetExp (void) const;`|获得机器人的经验值|无| |`int GetHeat (AmmoType ammoType) const;`|获得机器人的枪管热量|枪管对应子弹类型| |`int GetMaxHeat (AmmoType ammoType) const;`|获得机器人的枪管热量最大值|枪管对应子弹类型| |`bool ShootAmmo (FVector speed, AmmoType ammoType);`|射击|子弹速度向量,子弹类型| |`bool GiveAmmoTo (uint8_t targetId, int num, AmmoType ammoType);`|转移子弹|转移目标,数量,子弹类型| |`int GetAmmoNum (AmmoType ammoType) const;`|获得子弹数量|子弹类型| |`bool UpgradeLifeLevel (void);`|升级生命值等级|无| |`bool UpgradeMaxAmmoSpeed (void);`|升级最大子弹速度|无| |`void Resurrection (uint8_t target);`|复活其他机器人|目标编号| |`uint32_t AddIndicateLocationCallback (IndicateLocationCallback cb);`|设置位置告知回调|位置告知回调函数|