剩余任务功能分解
航弹院项目:
-
解决移动问题
-
界面-图表-指令发送界面-配置等等
-
使用套接字发送指令与图片
-
功能分解:
-
指令控制功能:
- 设计指令数据包.
- 写到配置文件里并实时读取配置
- 在飞机里增加套接字,用于针对性的发送指令
- 写一个下拉菜单调用发送指令的功能
-
实验科目功能
- 读取配置文件,初始化实验场地
- 在gamemode蓝图中?进行读取并放置的操作
-
-
通信配置界面功能
- 配置基础通信(基本实现)
-
数据显示界面
- 接受外部信息 动力学 节点数量 需要单开一个套接字
- 读取图片并显示
-
一期未完成功能
- 地图问题(增加一个海洋,已有解决方案)
1.三维仿真运行是实时的,和飞机导弹等同步展示
2.三维场景下的飞机只需要展示飞机的状态轨迹携带两种弹药的数量 没写这个飞机携带的弹药数量
手搓激光雷达
手搓照相
应该是64线120°,角分辨利率0.18°,具体可以查查RSM1激光雷达的参数
动态导入:
RuntimeMeshLoader
gITFRuntime
下一步任务:
实现这个实验科目功能.
-
设计配置文件内的保存结构1
-
配置文件:读取实验科目的数量,然后生成对应数量的实验科目列表项.选第几个,就读取几号的配置.默认去读一号的位置1
-
发现问题:在选择科目的时候,不同科目之间的飞机数量可能不同,而如果飞机是成组接收的话这个值也要变化。1
-
逻辑:选择科目(默认科目1)-》读取场地中的无人机位置,清空原本的场地中的飞机导弹等-》根据读取到的科目里的飞机数量,修改一下套接字里的飞机数量1
实现这个控制指令功能
-
创建一个发送的udp,用于发送指令1
-
思考指令应该是什么,问gpt
-
在udp套接字里留一个发送指令的接口1
-
**指令设计**
数据包格式:
[数据包标识 (1 byte), 目标无人机 (1 byte), 指令类型 (1 byte), 指令参数 (1 byte)]
1. 起飞指令
- 数据包标识:
0x05 - 目标无人机: 例如
0x01(表示第1架无人机) - 指令类型:
0x01(起飞指令) - 指令参数:
0x00(起飞指令无额外参数,填充为0x00) - 总长度: 4 bytes
- 格式:
[0x05, 0x01, 0x01, 0x00] - 解释:
0x05表示指令数据包,0x01表示目标无人机,0x01表示起飞,0x00表示无额外参数。
2. 模式选择指令
- 数据包标识:
0x05 - 目标无人机: 例如
0x01(表示第1架无人机) - 指令类型:
0x04(模式选择指令) - 指令参数: 模式编号
0x01姿态模式(Stabilize Mode)0x02高度保持模式(AltHold Mode)0x03自动模式(Auto Mode)0x04悬停模式(Loiter Mode)0x05引导模式(Guided Mode)
- 示例格式(高度保持模式):
[0x05, 0x01, 0x04, 0x02] - 解释:
0x05表示指令数据包,0x01表示目标无人机,0x04表示模式选择,0x02表示高度保持模式。
3. 返航指令
- 数据包标识:
0x05 - 目标无人机: 例如
0x01(表示第1架无人机) - 指令类型:
0x02(返航指令) - 指令参数:
0x00(返航指令无额外参数,填充为0x00) - 总长度: 4 bytes
- 格式:
[0x05, 0x01, 0x02, 0x00] - 解释:
0x05表示指令数据包,0x01表示目标无人机,0x02表示返航,0x00表示无额外参数。
4. 降落指令
- 数据包标识:
0x05 - 目标无人机: 例如
0x01(表示第1架无人机) - 指令类型:
0x03(降落指令) - 指令参数:
0x00(降落指令无额外参数,填充为0x00) - 总长度: 4 bytes
- 格式:
[0x05, 0x01, 0x03, 0x00] - 解释:
0x05表示指令数据包,0x01表示目标无人机,0x03表示降落,0x00表示无额外参数。
5. 队形切换指令
- 数据包标识:
0x05 - 目标无人机: 例如
0x01(表示第1架无人机) - 指令类型:
0x05(队形切换指令) - 指令参数: 队形编号
0x01队形10x02队形20x03队形3
- 示例格式(切换到队形2):
[0x05, 0x01, 0x05, 0x02] - 解释:
0x05表示指令数据包,0x01表示目标无人机,0x05表示队形切换,0x02表示切换到队形2。
···
bool SendCommand(uint8 TargetDrone, uint8 CommandType, const TArray& Params)
{
TArrayDataToSend;
DataToSend.Add(0x05); // 数据包标识
DataToSend.Add(TargetDrone); // 目标无人机
DataToSend.Add(CommandType); // 指令类型
DataToSend.Append(Params); // 指令参数return SendBytes(DataToSend); // 通过UDP发送}
</details> - 数据包标识:
实现载具移动功能
场景中事先有载具 /动态生成 通信部分增加接收载具的部分具体留白 目前复用了导弹的信息
游戏开始创建一个套接字并绑定载具管理对象 1
实现能够接受多个套接字不同ip和端口接受数据的功能1
多创建几个套接字并命名,然后管理类绑定多个套接字1
设置界面对应更新,配置功能对应更新1
统计信息显示:通过UDP通信的方式接收来自外部的实验参数信息,如动力学数据(质量、转动惯量等),飞行状态(位置、姿态、速度等),不同节点数量(数字、半实物、实飞); 设计一个包1
区域删除功能1
这个统计信息展示部分,发来的动力学数据、飞行姿态等是和无人机
更新飞机收到的信息解析与委托。1
更新区域删除的信息 1
导弹和载具更新后 他们的删除操作重写1
通信协议
udp
飞机 包标志位uint8 1 飞机id uint8 飞机类型(侦察机/载机/布撒器) uint8 节点类型(数组/半实物/实飞)uint8 动力学数据(质量float、转动惯量float) 飞行状态(位置、姿态、速度 double9)
导弹 包标志位uint8 2 导弹id uint8 导弹类型uint8 导弹状态uint8 导弹位置double3
载具 包标志位uint8 3 载具id uint8 载具类型uint8 载具状态uint8 载具位置double*3
mavlink
目标区域
目标点
GPS干扰区域
通信干扰区域
高威胁区