Readme修正

Readme针对上一个commit进行修正,Onehot编码控制从MLAgentsCustomController转到CommonParameterContainer。
This commit is contained in:
Koha9 2023-12-31 09:16:18 +09:00
parent bf1d1d8d3b
commit 142c0e44b5
3 changed files with 8 additions and 9 deletions

View File

@ -12,6 +12,7 @@ public class CommonParameterContainer : Singleton<CommonParameterContainer>
public int timeLimit = 30; public int timeLimit = 30;
public bool lockCameraX = false; public bool lockCameraX = false;
public bool lockCameraY = true; public bool lockCameraY = true;
public bool oneHotRayTag = false;
public bool spawnAgentInAllMap = true; public bool spawnAgentInAllMap = true;
public int spinRecordMax = 40; public int spinRecordMax = 40;
public float spinPenaltyThreshold = 10; public float spinPenaltyThreshold = 10;

View File

@ -14,9 +14,6 @@ public class MLAgentsCustomController : Agent
[SerializeField] private GameObject worldUIControllerObj; [SerializeField] private GameObject worldUIControllerObj;
[SerializeField] private GameObject hudObj; [SerializeField] private GameObject hudObj;
[Header("Env")]
public bool oneHotRayTag = true;
// script // script
private AgentController agentController; private AgentController agentController;
@ -114,7 +111,7 @@ public override void CollectObservations(VectorSensor sensor)
sensor.AddObservation(remainTime); // (1) sensor.AddObservation(remainTime); // (1)
sensor.AddObservation(agentController.gunReadyToggle); // (1) save gun is ready? sensor.AddObservation(agentController.gunReadyToggle); // (1) save gun is ready?
sensor.AddObservation(myObserve); // (4)自机位置xyz+朝向 float[](4,1) sensor.AddObservation(myObserve); // (4)自机位置xyz+朝向 float[](4,1)
if (oneHotRayTag) if (commonParamCon.oneHotRayTag)
{ {
sensor.AddObservation(rayTagResultOnehot); // 探测用RayTag结果 float[](raySensorNum,1) sensor.AddObservation(rayTagResultOnehot); // 探测用RayTag结果 float[](raySensorNum,1)
} }

View File

@ -49,12 +49,13 @@ Python侧则使用[mlagents-envs 0.30.0](https://pypi.org/project/mlagents-envs/
| 8 | Agent坐标 | 3 | 0~47 | 描述Agent的连续空间坐标取值范围为0到47之间的连续值 | | 8 | Agent坐标 | 3 | 0~47 | 描述Agent的连续空间坐标取值范围为0到47之间的连续值 |
| 9 | Agent朝向 | 1 | 0~10 | 描述Agent的正面朝向取值范围为0到10映射到0~360度的旋转每增加1代表增加36度 | | 9 | Agent朝向 | 1 | 0~10 | 描述Agent的正面朝向取值范围为0到10映射到0~360度的旋转每增加1代表增加36度 |
### RaycastState射线探测状态 ### RaycastState射线探测状态
`RaycastState`记录了视野内发射的射线探测到的结果及其距离、由[`RaySensors`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/RaySensors.cs)类管理。它实现了射线的非均匀分布默认视野中间15%的区域射线分布更密集两侧则较为稀疏默认中间密集部分共射出5条两侧稀疏部分各7条每个射线可探测的对象最远距离为100个单位超过探测距离则返回0。其中视野中间区域的覆盖范围区域内RayCast数量以及可探测距离均可以在每个`Agent`GameObject的Inspector中进行调整。 `RaycastState`记录了视野内发射的射线探测到的Object的Tag及其距离、其中Tag可以通过Label Encoding和OneHot Encoding两种方式来记录默认使用Label Encoding可以在Object`CommonParameterContainer`中进行调整。`RaycastState`由[`RaySensors`](https://koha9.asuscomm.com/yurugit/Koha9/Aimbot-ParallelEnv/src/branch/main/Assets/Script/GameScript/RaySensors.cs)类管理。它实现了射线的非均匀分布默认视野中间15%的区域射线分布更密集两侧则较为稀疏默认中间密集部分共射出5条两侧稀疏部分各7条每个射线可探测的对象最远距离为100个单位超过探测距离则返回0。其中视野中间区域的覆盖范围区域内RayCast数量以及可探测距离均可以在每个`Agent`GameObject的Inspector中进行调整。
<img src="./ReadmeImages/RayCastLayout.png" alt = "射线分布方式" width="500" height = "auto"> <img src="./ReadmeImages/RayCastLayout.png" alt = "射线分布方式" width="500" height = "auto">
| Num | Observation | Size | State Space | Description | | Num | Observation | Size | State Space | Description |
|-----------------------|-------------|--------------------|---------------|----------------------------------------------------------------------------------| |------------------------------------------------------------------|-----------------|--------------------|---------------|----------------------------------------------------------------------------------|
| 10~n+10 | TagType | n | 0, 1, 2 | 描述Raycast所探测到物体的Tag1=Wall2=Enemy0=Nothing | | 10~Raynum+10 | TagType(Label) | Number of Raycasts | 0, 1, 2 | 描述Raycast所探测到物体的Tag, 0=Wall, 1=Enemy, 2=Player, -1=Nothing |
| n+11~2*n+11 | Distance | n | 0~MaxDistance | 描述Raycast所探测到物体的距离取值范围在0~MaxDistance | | 10~Raynum * 3+10 | TagType(Onehot) | Raynum * 3 | 0, 1 | 描述Raycast所探测到物体的Tag, 使用Onehot编码记录 |
| Raynum+11~2* Raynum+11(Label),<br>3* Raynum+11~4* Raynum+11(OneHot) | Distance | Number of Raycasts | 0~MaxDistance | 描述Raycast所探测到物体的距离取值范围在0~MaxDistance其中MaxDistance默认为100 |
*注n为每个Agent的RayCast数量MaxDistance为每个Agent的RayCast最大探测距离* *注n为每个Agent的RayCast数量MaxDistance为每个Agent的RayCast最大探测距离*