@@ -130,81 +130,96 @@ python main.py
130130
131131## ` Human Detector ` モジュールの実装で使用するクラス・メソッド
132132
133- ### WorldInfo
134-
135- ` WorldInfo ` クラスは,エージェントが把握している情報とそれに関する操作をおこなうメソッドをもったクラスです. エージェントはこのクラスのインスタンスを通して,他のエージェントやオブジェクトの状態を確認します.
133+ ### Entity
136134
137- モジュール内では, ` WorldInfo ` クラスのインスタンスを ` self._world_info ` として保持しています .
135+ ` Entity ` クラスは,エンティティの基底クラスです. このクラスは,エンティティの基本情報を保持します .
138136
139- ### AgentInfo
137+ RRS上のエンティティは下図のように ` Entity ` を継承したクラスで表現されています. 赤枠で囲まれたクラスは,クラスの意味がそのままRRSの直接的な構成要素を表しています.
140138
141- ` AgentInfo ` クラスは,エージェント自身の情報とそれに関する操作をおこなうメソッドをもったクラスです. エージェントはこのクラスのインスタンスを通して,エージェント自身の状態を取得します .
139+ 例: Road クラスのインスタンスの中には, Hydrant クラスを継承してない通常の道路を表すものも存在しています .
142140
143- モジュール内では, ` AgentInfo ` クラスのインスタンスを ` self._agent_info ` として保持しています.
141+ ![ エンティティの継承関係 ] ( ./../../images/entity.png )
144142
145143### EntityID
146144
147145` EntityID ` クラスは,全てのエージェント/オブジェクトを一意に識別するためのID(識別子)を表すクラスです. RRSではエージェントとオブジェクトをまとめて,エンティティと呼んでいます.
148146
149- - 自分自身のエンティティIDを取得する
147+ ### Civilian
148+
149+ ` Civilian ` クラスは,市民を表すクラスです.このクラスからは,エージェントの位置や負傷の進行状況を取得することができます.
150+
151+ - ` entity ` が市民であるかどうかを判定する
150152
151153``` python
152- self ._agent_info.get_entity_id( )
154+ isinstance (entity, Civilian )
153155```
154156
155- ### Entity
157+ - エンティティIDを取得する
156158
157- ` Entity ` クラスは,エンティティの基底クラスです. このクラスは,エンティティの基本情報を保持します.
159+ ``` python
160+ entity.get_id()
161+ ```
158162
159- - エンティティIDからエンティティを取得する
163+ - 市民が生きているかどうかを判定する
160164
161165``` python
162- self ._world_info.get_entity(entity_id)
166+ hp: Optional[int ] = entity.get_hp()
167+ if hp is None or hp <= 0 :
168+ return False
163169```
164170
165- - 同じクラスのエンティティを全て取得する
171+ - 市民が埋まっているかどうかを判定する
166172
167173``` python
168- self ._world_info.get_entities_by_type([Building, Road])
174+ buriedness: Optional[int ] = entity.get_buriedness()
175+ if buriedness is None or buriedness <= 0 :
176+ return False
169177```
170178
171- ### Civilian
179+ ### WorldInfo
172180
173- ` Civilian ` クラスは,市民を表すクラスです.このクラスからは,エージェントの位置や負傷の進行状況を取得することができます .
181+ ` WorldInfo ` クラスは,エージェントが把握している情報とそれに関する操作をおこなうメソッドをもったクラスです. エージェントはこのクラスのインスタンスを通して,他のエージェントやオブジェクトの状態を確認します .
174182
175- - ` entity ` が市民であるかどうかを判定する
183+ モジュール内では,` WorldInfo ` クラスのインスタンスを ` self._world_info ` として保持しています.
184+
185+ - エンティティIDからエンティティを取得する
176186
177187``` python
178- isinstance (entity, Civilian )
188+ self ._world_info.get_entity(entity_id )
179189```
180190
181- - 市民が生きているかどうかを判定する
191+ - 指定したクラスのエンティティを全て取得する
182192
183193``` python
184- hp: Optional[int ] = entity.get_hp()
185- if hp is None or hp <= 0 :
186- return False
194+ self ._world_info.get_entities_by_type([Building, Road])
187195```
188196
189- - 市民が埋まっているかどうかを判定する
197+ - エージェントの位置から指定したエンティティまでの距離を取得する
190198
191199``` python
192- buriedness: Optional[int ] = entity.get_buriedness()
193- if buriedness is None or buriedness <= 0 :
194- return False
200+ self ._world_info.get_distance(me, civilian.get_id())
195201```
196202
197- ### entityの継承
203+ [ 詳細はこちら] ( ../../adf_core_python.core.agent.info.rst )
204+
205+ ### AgentInfo
198206
199- RRS上のエンティティは下図のように Entity を継承したクラスで表現されています. 赤枠で囲まれたクラスは,クラスの意味がそのままRRSの直接的な構成要素を表しています .
207+ ` AgentInfo ` クラスは,エージェント自身の情報とそれに関する操作をおこなうメソッドをもったクラスです. エージェントはこのクラスのインスタンスを通して,エージェント自身の状態を取得します .
200208
201- 例: Road クラスのインスタンスの中には, Hydrant クラスを継承してない通常の道路を表すものも存在しています .
209+ モジュール内では, ` AgentInfo ` クラスのインスタンスを ` self._agent_info ` として保持しています .
202210
203- ![ エンティティの継承関係] ( ./../../images/entity.png )
211+ - 自分自身のエンティティIDを取得する
212+
213+ ``` python
214+ self ._agent_info.get_entity_id()
215+ ```
216+
217+ [ 詳細はこちら] ( ../../adf_core_python.core.agent.info.rst )
204218
205219## ` Human Detector ` モジュールの実装
206220
207221` Human Detector ` モジュールの実装を行います.
222+ 以下のコードを` fire_brigade_human_detector.py ` に記述してください。
208223
209224``` python
210225from typing import Optional
@@ -289,3 +304,12 @@ class SampleHumanDetector(HumanDetector):
289304 """
290305 return self ._result
291306```
307+
308+ シミュレーションサーバーを起動し,エージェントを実行してみましょう.
309+
310+ ``` bash
311+ cd WORKING_DIR/< your_team_name>
312+ python main.py
313+ ```
314+
315+ 埋没している市民を消防隊エージェントが救出できるようになっていれば成功です.
0 commit comments