| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| object | 2010-06-12 | ||
| Blockade.java | 2010-06-12 | 365 Bytes | |
| Constants.java | 2010-06-12 | 2.5 kB | |
| CuttingLanes.java | 2010-06-12 | 893 Bytes | |
| DatabaseConnector.java | 2010-06-12 | 20.7 kB | |
| Destination.java | 2010-06-12 | 480 Bytes | |
| HeaderConstants.java | 2010-06-12 | 1.1 kB | |
| IO.java | 2010-06-12 | 5.9 kB | |
| Lane.java | 2010-06-12 | 2.1 kB | |
| Main.java | 2010-06-12 | 1.2 kB | |
| Makefile | 2010-06-12 | 73 Bytes | |
| mysql-connector-java-3.0.17-ga-bin.jar | 2010-06-12 | 246.3 kB | |
| Obstruction.java | 2010-06-12 | 793 Bytes | |
| README.ja.txt | 2010-06-12 | 16.7 kB | |
| README.txt | 2010-06-12 | 18.8 kB | |
| Route.java | 2010-06-12 | 4.8 kB | |
| Simulator.java | 2010-06-12 | 11.3 kB | |
| TCPIO.java | 2010-06-12 | 1.6 kB | |
| TurningPoint.java | 2010-06-11 | 654 Bytes | |
| UDPIO.java | 2010-06-11 | 3.4 kB | |
| Util.java | 2010-06-11 | 2.3 kB | |
| Viewer.java | 2010-06-11 | 7.8 kB | |
| WorldModel.java | 2010-06-11 | 13.6 kB | |
| Totals: 23 Items | 363.4 kB | 0 | |
Morimoto Traffic Simulator ver.0.21
for RoboCupRescue Prototype Simulation System ver.0.39
May. 11, 2002
ËÜ¥×¥í¥°¥é¥à¤Ï¡¤RoboCup2002 in Fukuoka/Busan ¤Î RoboCupRescue
Simulation League ¤Ç¤Î»ÈÍѤòÂè°ìÌÜŪ¤Ë³«È¯¤µ¤ì¤¿¡¤ RoboCupRescue
Prototype Simulation System ÍѸòÄÌ¥·¥ß¥å¥ì¡¼¥¿¤Ç¤¹¡¥
ËÜ¥×¥í¥°¥é¥à¤Ï Ver.0 ¤Çºî¤é¤ì¤Æ¤¤¤ë´û¸¤Î¥¨¡¼¥¸¥§¥ó¥È¤ÎÊØ¤ò¹Í¤¨¡¤°¯Èþ¸ò
ÄÌή¥·¥ß¥å¥ì¡¼¥¿¤È¤Î¸ß´¹À¤ò½Å»ë¤·¤Æ¤¤¤Þ¤¹¤¬¡¤°ìÉô¤Ë¡¤¥¨¡¼¥¸¥§¥ó¥ÈºîÀ®¤Ë
¾¯¤Ê¤«¤é¤Ì±Æ¶Á¤Î¤¢¤ë¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡¥°¯Èþ¸òÄÌή¥·¥ß¥å¥ì¡¼¥¿¤Ç³ÛÌÌÄ̤ê¤Ë°·
¤ï¤ì¤Æ¤¤¤Ê¤¤¤â¤Î¤ÏËÜ¥×¥í¥°¥é¥à¤Ç¤â³µ¤Í°·¤¤¤Þ¤»¤ó¡¥
I. Installation
To make this simulator, you simply type the following command:
% make
NOTE: JDK 1.3.0 is required
II. Usage
Synopsis is as follows:
java traffic.Main [ hostname [ port ] ]
hostname : kernel host name (default: localhost)
port : kernel port (default: 6000)
III. ¼Â¹Ô´Ä¶
1/10 ¥â¥Ç¥ë¤Î¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ç¤Ï¡¤·×»»Éé²Ù¤¬Â礤¤¤¿¤á¡¤¥×¥í¥°¥é¥à¤ò¾¯
¤Ê¤¯¤È¤â3Âæ¤Î¥Þ¥·¥ó¤Ë¡¤°Ê²¼¤Î¤è¤¦¤Ë¿¶¤êʬ¤±¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥
¡¦µßµÞÂâ/¾ÃËÉÂâ/ƻϩ·¼³«Â⥨¡¼¥¸¥§¥ó¥È
¡¦»Ô̱¥¨¡¼¥¸¥§¥ó¥È¡¤²ÐºÒ¥·¥ß¥å¥ì¡¼¥¿
¡¦¥«¡¼¥Í¥ë¡¤¤½¤Î¾¤Î¥·¥ß¥å¥ì¡¼¥¿ (ËÜ¥×¥í¥°¥é¥à¤ò´Þ¤à)
²ÐºÒ¤È¸òÄ̤Ϸ׻»¤¹¤ë»þ´ÖÂÓ¤¬½Å¤Ê¤Ã¤Æ¤ª¤ê¡¤Ê¬»¶¤µ¤»¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡¥¥¨¡¼
¥¸¥§¥ó¥È·²¤È¥µ¥Ö¥·¥ß¥å¥ì¡¼¥¿·²¤Ï·×»»¤¹¤ë»þ´ÖÂÓ¤¬°Û¤Ê¤ë¤¿¤á¡¤»Ô̱¥¨¡¼¥¸¥§
¥ó¥È¤È²ÐºÒ¥·¥ß¥å¥ì¡¼¥¿¤ò 1 Âæ¤Ç·×»»¤·¤Æ¤âÌäÂꤢ¤ê¤Þ¤»¤ó¡¥
¤Ê¤ª¡¤ËÜ¥×¥í¥°¥é¥à¤Ï°Ê²¼¤Î PC 3 Âæ¤ò»È¤¤Æ°ºî¤ò³Îǧ¤·¤Þ¤·¤¿¡¥
CPU : Pentium III 930MHz
MEM : 256MB
OS : Linux (Vine 2.1.5)
JDK : 1.3.0
IV. ¥¨¡¼¥¸¥§¥ó¥È³«È¯¤ËɬÍפʺÇÄã¸Â¤Î¾ðÊó
(1) ËÜ¥×¥í¥°¥é¥à¤Ï AK_MOVE/LOAD/UNLOAD ¤ò½èÍý¤·¤Þ¤¹¡¥ AK ¥³¥Þ¥ó¥É¤Î»ÅÍÍ
¤Ï´û¸¤Î¥·¥ß¥å¥ì¡¼¥¿¤ÈƱÍͤǤ¹¡¥
(1-1) °Üư¤¹¤ë (MovingObject ¤Î¤ß)
Header: AK_MOVE
Body: routePlan : an array of IDs (32 bit * number of route objects)
0 : a sentinel of the array (32 bit)
°Üư·ÐÏ© routePlan ¤Ë±è¤Ã¤Æ¡¤¥¨¡¼¥¸¥§¥ó¥È¤ò°Üư¤µ¤»¤Þ¤¹¡¥°Üư·ÐÏ©¤Ï¡¤¸½
ºßÃϤò»ÏÅÀ¤È¤¹¤ë 1¸Ä°Ê¾å¤Î MotionlessObject ¤Î ID ¤«¤é¹½À®¤µ¤ì¤ë¡¤²¼¿Þ¤Î
¤è¤¦¤Ê¥ª¡¼¥È¥Þ¥È¥ó¤¬¼õÍý¤¹¤ëÀµµ¬¸À¸ì¤Î¸ì¤Ç¤¹¡¥
n n
------> <------ OrgBldg
Road Node
<------ ------> DestBldg
r b
½é´ü¾õÂÖ | Road | Node | OrgBldg
----------+------+------+----------
¸½ºß°ÌÃÖ | Road | Node | Building
ÆþÎϵ¹æ | n | r | b
----------+------------------+------------------+----------------------
°Õ Ì£ | ÎÙÀܤ¹¤ëNode¤ÎID | ÎÙÀܤ¹¤ëRoad¤ÎID | ÎÙÀܤ¹¤ëBuilding¤ÎID
½ªÎ»¾õÂÖ : Á´¤Æ¤Î¾õÂÖ
(1-2) Éé½ý¼Ô¤òµßµÞ¼Ö¤Ë¾è¤»¤ë (AmbulanceTeam ¤Î¤ß)
Header: AK_LOAD
Body: target : an ID (32 bit)
Éé½ý¼Ô target ¤òµßµÞ¼Ö¤Ë¾è¤»¤Þ¤¹¡¥Éé½ý¼Ô¤ÏµßµÞÂâ¤ÈƱ¤¸¾ì½ê¤Ë¤¤¤Ê¤±¤ì¤Ð¤Ê
¤ê¤Þ¤»¤ó¡¥¤¿¤À¤·¡¤Æ»Ï©¤È¤½¤ÎüÅÀ¤ÏƱ¤¸°ÌÃ֤Ȥߤʤ·¤Þ¤¹¡¥
(1-3) Éé½ý¼Ô¤òµßµÞ¼Ö¤«¤é¹ß¤í¤¹ (AmbulanceTeam ¤Î¤ß)
Header: AK_UNLOAD
Body: Nothing
µßµÞ¼Ö¤Ë¾è¤»¤Æ¤¤¤ëÉé½ý¼Ô¤ò¹ß¤í¤·¤Þ¤¹¡¥¹ß¤í¤µ¤ì¤¿Éé½ý¼Ô¤Î°ÌÃ֤ϡ¤µßµÞÂâ¤È
Ʊ¤¸¤Ë¤Ê¤ê¤Þ¤¹¡¥
(2) Ä̲á¤Î²ÄÈÝ
°Üư·ÐÏ©¤ËÊĺɤä½ÂÂÚ¤¬¤¢¤ë¾ì¹ç¡¤¥¨¡¼¥¸¥§¥ó¥È¤Ï¤½¤Îƻϩ¤òÄ̲á¤Ç¤¤º¡¤ÊĺÉ
¤ä½ÂÂڤμêÁ°¤ÇÄä»ß¤·¤Þ¤¹¡¥
(2-1) ÊĺÉ
ƻϩ¤ÎÊĺɤⰯÈþ¸òÄÌή¥·¥ß¥å¥ì¡¼¥¿¤ÈƱÍͤǤ¢¤ê¡¤°Ê²¼¤Î¤è¤¦ÄêµÁ¤µ¤ì¤Þ¤¹¡¥
lineWidth := width / (linesToHead + linesToTail)
road.blockedlines := floor(road.block / road.lineWidth / 2 + 0.5)
road.aliveLinesTo... := max(0, road.linesTo... - road.blockedLines)
road.isPassableToHead :- road.aliveLinesToHead >= 1
or movingObject.positionExtra < road.length / 2
road.isPassableToTail :- road.aliveLinesToTail >= 1
or movingObject.positionExtra > road.length / 2
ÊÄºÉ¤ÏÆ»Ï©¤Î¿¿Ãæ¤Î 1 ÅÀ¤Ë¸ºß¤¹¤ë¤³¤È¤Ë¤·¤Þ¤¹¡¥¤Þ¤¿¡¤¼ÖÀþ¤¬Ê£¿ô¤¢¤ë¾ì¹ç
¤Ï¡¤³°Â¦¤Î¼ÖÀþ¤«¤é½ç¤ËÊĺɤ¹¤ë¤³¤È¤Ë¤·¤Þ¤¹¡¥ isPassableTo... ¤¬ true ¤Ç
¤¢¤ë¾õ¶·¤È¤Ï¡¤Æ»Ï©¤ÎÆâ¦¤ËÊĺɤ·¤Æ¤¤¤Ê¤¤¼ÖÀþ¤¬¤¢¤ë¤«¡¤¤¢¤ë¤¤¤Ï´û¤ËÊĺɤò
±Û¤¨¤¿°ÌÃ֤ˤ¤¤ë¾õ¶·¤ò°ÕÌ£¤·¤Þ¤¹¡¥
Êĺɤ·¤¿Æ»Ï©¤ÎÄ̲á¤Î²ÄÈݤϡ¤¼Ö¤â¿Í¤âƱÍͤËȽÄꤷ¤Þ¤¹¡¥
(2-2) ½ÂÂÚ
ËÜ¥×¥í¥°¥é¥à¤Ï¡¤¥¨¡¼¥¸¥§¥ó¥È¤ò¡¤Á°Êý¤Î¼Ö¤È¤Î¼Ö´Öµ÷Î¥¤ò°ÂÁ´¤ËÊݤÁ¤Ä¤Ä°Üư
¤µ¤»¤Þ¤¹¡¥¤³¤Î¤¿¤á¡¤¼Ö¤ä¿Í¤¬Ì©½¸¤¹¤ë¤È½ÂÂÚ¤¬È¯À¸¤·¤Þ¤¹¡¥
Á°Êý¤Î¼Ö¤Þ¤Ç¤ÎºÇû¤Î¼Ö´Öµ÷Î¥¤Ï MIN_SAFE_DISTANCE_BETWEEN_CARS¡¤
Á°Êý¤Î¿Í¤Þ¤Ç¤ÎºÇû¤Î´Ö³Ö¤Ï MIN_SAFE_DISTANCE_BETWEEN_CIVILIAN ¤Ç¤¹
(cf. Constants.java)¡¥
¤¿¤À¤·¡¤¼Ö (¶ÛµÞ¼Ö) ¤òÍ¥À褷¤Æ¡¤»Ô̱¤Ï¼Ö¤Ë¤Ò¤«¤ì¤Ê¤¤¤è¤¦¤ËÃí°Õ¿¼¤¯°Üư¤¹
¤ë¤È¹Í¤¨¡¤¼Ö¤Ï»Ô̱¤ò̵»ë¤·¤Æ°Üư¤Ç¤¤Þ¤¹¡¥¤Þ¤¿¡¤Á°Êý¤ËÄä»ß¤·¤Æ¤¤¤ë¼Ö¤ä¿Í
¤¬¤¤¤ë¾ì¹ç¤Ç¤â¡¤Ê̤μÖÀþ¤¬¶õ¤¤¤Æ¤¤¤ì¤Ð¼ÖÀþ¤òÊѹ¹¤Ç¤¤ë¤¿¤á¡¤Ä̲᤹¤ë¤³¤È
¤¬¤Ç¤¤Þ¤¹¡¥
(3) ¤½¤Î¾
(3-1) ¼Ö¤ÎºÇ¹â®ÅÙ¤Ï MAX_VELOCITY_PER_SEC [mm/sec]
(cf. Constants.java) ¤Ç¤¢¤ê¡¤ 1 cycle ¤Ç°Üư¤Ç¤¤ëºÇŵ÷Î¥¤Ï¹â¡¹
MAX_VELOCITY_PER_SEC * 60 [mm] ¤Ç¤¹¡¥
(3-2) Ver.0¤Ç¤Ï°Üư¤¹¤ë¼Ö¤Ï¶ÛµÞ¼Öξ¤Î¤ß¤Ê¤Î¤Ç¡¤¿®¹æ, ±¦º¸ÀÞ¤ÎÀ©¸Â¤Ï¹Í¤¨
¤Þ¤»¤ó¡¥
(3-3) °¯Èþ¸òÄÌή¥·¥ß¥å¥ì¡¼¥¿¤Ç»È¤ï¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿Ãæ±ûʬΥÂÓ¡¤Êâ¹Ô¼ÔÍÑÆ»Ï©
Éý¡¤¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿ carsPassTo...¡¤ humansPassTo...¤Ï¡¤ËÜ¥×¥í¥°¥é¥à
¤Ç¤â°·¤¤¤Þ¤»¤ó¡¥
V. ¤è¤ê¿¼¤¤¥¨¡¼¥¸¥§¥ó¥È³«È¯¤Î¤¿¤á¤Ë
(1) ¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î³µÍ×
ËÜ¥×¥í¥°¥é¥à¤Î½èÍý¤Ç¥¡¼¤È¤Ê¤ë¤Î¤Ï¡¤Æ»Ï©¤Ë¼ÖÀþ¤Î³µÇ°¤¬ÌÀ³Î¤Ë¤¢¤ë¤³¤È¤Ç¤¹¡¥
¥¨¡¼¥¸¥§¥ó¥È¤Ï¡¤·úʪ¤ÎÃæ¤Ë¤¤¤ë¾ì¹ç¤ò¤Î¤¾¤¤¤Æ¡¤¾ï¤Ë¼ÖÀþ¾å¤Ë¤¤¤Þ¤¹¡¥ËÜ¥×¥í
¥°¥é¥à¤¬¤ª¤³¤Ê¤¦½èÍý¤Ï¡¤
¼ÖÀþ¾å¤ò°Üư¤¹¤ë
·úʪ¤ËÆþ¤ë
Éé½ý¼Ô¤ò¾è¤»¤ë/¹ß¤í¤¹
¸òº¹ÅÀ¤òÄ̲᤹¤ë
Êĺɤò²óÈò¤¹¤ë
Ää»ß¼Öξ¤òÄɤ¤±Û¤¹
ž²ó¤¹¤ë
ÌÜŪÃÏÅþÃå¸å¤Ë¼Ö¤ò³°Â¦¤Î¼ÖÀþ¤Ë´ó¤»¤ë
·úʪ¤«¤éÏ©¾å¤Ë½Ð¤ë
¤Ç¤¢¤ê¡¤¤³¤Î¤¦¤Á²¼¤Î 6 ¤Ä¤Î½èÍý¤Ï¡¤¼ÖÀþÊѹ¹½èÍý¤Ëµ¢Ã夵¤ì¤Þ¤¹¡¥
Prototype Simulation System ¤Î»ÅÍ;塤¥¨¡¼¥¸¥§¥ó¥È¤Ë¤Ï¼«Ê¬¤¬¤É¤Î¼ÖÀþ¾å¤Ë
¤¤¤ë¤«¤òÃΤë½Ñ¤Ï¤¢¤ê¤Þ¤»¤ó¤¬¡¤½ÂÂڤβóÈò¤ä²ò¾Ã¤Î¤¿¤á¤Ë¤Ï¡¤¼ÖÀþ¤ò°Õ¼±¤·¤¿
¥¨¡¼¥¸¥§¥ó¥È¥×¥í¥°¥é¥ß¥ó¥°¤¬½ÅÍפˤʤë¤È¹Í¤¨¤é¤ì¤Þ¤¹¡¥¤³¤Î¾Ï¤Ç¤Ï¼ÖÀþ¤òÃæ
¿´¤Ë¡¤ËÜ¥×¥í¥°¥é¥à¤¬¹Ô¤¦¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î³µÍפòÀâÌÀ¤·¤Þ¤¹¡¥
(2) ¼ÖÀþ¾å¤Î°Üư
¥¨¡¼¥¸¥§¥ó¥È¤Î°Üư¤Ï¡¤¼ÖÀþ¾å¤Î°Üư¤È¼ÖÀþÊѹ¹¤Î·«¤êÊÖ¤·¤Ë¤è¤Ã¤Æ·×»»¤µ¤ì¤Þ
¤¹¡¥¤Ä¤Þ¤ê¡¤¾ã³²Êª (ÌÜŪÃϤä°Üư¤¹¤ë¼ÖÀþ¾å¤Ë¤¤¤ëÁ°Êý¤Î¼Öξ¤â´Þ¤à) ¤Þ¤Ç¼Ö
Àþ¾å¤òľ¿Ê¤·¡¤¾ã³²Êª¤ò±Û¤¨¤ë¤¿¤á¤Ë¼ÖÀþ¤òÊѹ¹¤¹¤ë¡¤¤È¤¤¤¦½èÍý¤ò¡¤ÌÜŪÃϤË
¤¿¤É¤êÃ夯¤Þ¤Ç·«¤êÊÖ¤·¤Þ¤¹¡¥
¥¨¡¼¥¸¥§¥ó¥È¤Ï¾ã³²Êª¤Î¼êÁ°¤Ç³Î¼Â¤ËÄä»ß¤Ç¤¤ë¤è¤¦¤Ë¡¤Â®ÅÙ¤òÍÞ¤¨¤Æ°Üư¤·¤Þ
¤¹¡¥Â®Å٤ϡ¤¸½ºß¤Î®Å٤˲îÅÙ¤ò²Ã¤¨¤ë¤³¤È¤Ç·èÄꤷ¡¤²Ã®ÅÙ a ¤Ï°Ê²¼¤ÎÊý
Äø¼° (1) ¤ò a ¤Ë¤Ä¤¤¤Æ²ò¤¯¤³¤È¤Ë¤è¤êµá¤á¤Þ¤¹¡¥
dx : distance from the forward object
ma : maximum acceleration
msd : minimum safe distance to forward object
v : velocity
a : acceleration
safeDistance = (v + a)^2 / (2 * ma) + msd
dx - safeDistance = v + a ... (1)
NOTE: t = (v + a) / ma : Ää»ß¤Þ¤Ç¤Ë¤«¤«¤ë»þ´Ö
(v + a) / 2 * t : Ää»ß¤Þ¤Ç¤Ë°Üư¤¹¤ëµ÷Î¥
¼Ö¤Î²Ã®Å٤ˤÏÀ©¸Â¤¬¤¢¤ê¡¤¼Ö¤ÏÄä»ß¾õÂÖ¤«¤éºÇ¹â®Å٤ˤʤë¤Þ¤Ç (¤½¤ÎµÕ¤âƱ
ÍÍ) ¤Ë¡¤¾¯¤Ê¤¯¤È¤â ACCELERATING_SEC [sec] (cf. Constants.java) ¤òÍפ·¤Þ
¤¹¡¥»Ô̱¤ÏÊ⤤¤Æ°Üư¤¹¤ë¤¿¤á¡¤²Ã®ÅÙ¤ËÀ©¸Â¤Ï¤¢¤ê¤Þ¤»¤ó¡¥
³Æ cycle ¤Î½é®¤Ë¤Ï¡¤Á°¤Î cycle ¤ÎºÇ½ªÂ®ÅÙ¤òÍѤ¤¤Þ¤¹¡¥¤¿¤À¤·¡¤¿·¤·¤¤
cycle ¤ÇÍ¿¤¨¤é¤ì¤¿¥¨¡¼¥¸¥§¥ó¥È¤Î¹ÔưÆâÍÆ¤¬¡¤°Üư¤Ç¤Ê¤«¤Ã¤¿¤ê¡¤µÕÊý¸þ¤Ø¤Î
°Üư¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï¡¤µÞÄä»ß¤·¤¿¤È¹Í¤¨¡¤½é®¤ò 0 [mm/sec] ¤Ë¤·¤Þ¤¹¡¥¤³¤ì¤Ï
¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î»þ´ÖγÅÙ 1 ʬ¤¬ÁƲ᤮¤ë¤¿¤á¤ä¤à¤òÆÀ¤Þ¤»¤ó¡¥
(3) ¼ÖÀþ¤ÎÊѹ¹
Àè¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¤°Ê²¼¤Î¹Ô°Ù
¸òº¹ÅÀ¤òÄ̲᤹¤ë
Êĺɤò²óÈò¤¹¤ë
Ää»ß¼Öξ¤òÄɤ¤±Û¤¹
ž²ó¤¹¤ë
ÌÜŪÃÏÅþÃå¸å¤Ë¼Ö¤ò³°Â¦¤Î¼ÖÀþ¤Ë´ó¤»¤ë
·úʪ¤«¤éÏ©¾å¤Ë½Ð¤ë
¤Ï¼ÖÀþÊѹ¹¤È¤·¤Æ½èÍý¤µ¤ì¤Þ¤¹¡¥
¼ÖÀþÊѹ¹¤Î½èÍý¤Ç¤Ï¡¤Êѹ¹Àè¤Î¸õÊä¤Î¼ÖÀþ·²¤Î³Æ¼ÖÀþËè¤Ë¡¤³ä¤ê¹þ¤ß¤Î²ÄÈݤòȽ
Äꤷ¡¤³ä¤ê¹þ¤ß²Äǽ¤Ê¤é¼ÖÀþ¤òÊѹ¹¤·¤Þ¤¹¡¥³ä¤ê¹þ¤ß¤¬²Äǽ¤Ê¾õ¶·¤È¤Ï¡¤³ä¤ê¹þ
¤ó¤Ç¤â¼ÖÀþ¤ÎÁ°Êý¤È¸åÊý¤Ë¤¤¤ë¼Ö¤È¤Î¼Ö´Öµ÷Î¥¤¬°ÂÁ´¤ËÊݤ¿¤ì¤ë¾õ¶·¤Ç¤¹¡¥Êѹ¹
¸õÊä¤Î¤É¤Î¼ÖÀþ¤Ë¤â³ä¤ê¹þ¤á¤Ê¤¤¾ì¹ç¤Ï¡¤³ä¤ê¹þ¤á¤ë¤Þ¤ÇÂÔµ¡¤·¤Þ¤¹¡¥
¤è¤êÂ礤ʤ¢¤ë¤¤¤ÏƱÅù¤Îƻϩ (¿Ê¹ÔÊý¸þ¤Î¼ÖÀþ¿ô¤¬Â¿¤¤¡¤¤Þ¤¿¤ÏÅù¤·¤¤Æ»Ï©
--- ¤Ä¤Þ¤ê¡¤Í¥ÀèÆ»Ï©) ¤È¸ò¤ï¤ë Node (ʬ´ô, ¹çή¤ò´Þ¤à) ¤ò¸òº¹ÅÀ¤È¸Æ¤Ó¤Þ
¤¹¡¥
(4) °Üư·ÐÏ©¤È¤½¤Î½èÍý
¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î½èÍýÆâÍÆ¤ÎÍý²ò¤ò½õ¤±¤ë¤¿¤á¤Ë¡¤°Üư·ÐÏ©¤Ë±þ¤¸¤¿½èÍýÆâÍÆ
¤Î¥¤¥á¡¼¥¸¤ò¿Þ¤òÍѤ¤¤Æ½Ò¤Ù¤Þ¤¹¡¥°Üư·ÐÏ©¤Ï°Ê²¼¤Îɽ¤Îµ¹æ¤Ë¤è¤Ã¤ÆÉ½¸½¤·¤Þ
¤¹¡¥
B | N | R
----------+------+------
Building | Node | Road
½èÍýÆâÍÆ¤Î¥¤¥á¡¼¥¸¤Ï°Ê²¼¤Îɽ¤Îµ¹æ¤Ë¤è¤Ã¤ÆÉ½¸½¤·¤Þ¤¹¡¥
[ ] | : | ---> | + | s | m
----------+------+------+----------+------------+--------------------
Building | Node | Lane | Blockade | self agent | other MovingObject
case 1:
route plan: {B}
# ²¿¤â¤·¤Ê¤¤
[s] [s]
before after
case 2:
route plan: {... R}
Ëô¤Ï AK_MOVE ¤ÏÁ÷¤é¤ì¤Æ¤Ê¤¤¤¬¡¤Road ¾å¤Ë¤¤¤ë
# ¾¤Î¼Ö¤Î˸¤²¤Ë¤Ê¤é¤Ê¤¤¤è¤¦¤Ë¡¤°ìÈÖ³°Â¦¤Î¼ÖÀþ¤Ë´ó¤ë
-------> ---s--->
---s---> ------->
<------- <-------
<------- <-------
before after
case 3:
route plan: {... N}
Ëô¤Ï AK_MOVE ¤ÏÁ÷¤é¤ì¤Æ¤Ê¤¤¤¬¡¤Node ¾å¤Ë¤¤¤ë
# ¾¤Î¼Ö¤Î˸¤²¤Ë¤Ê¤é¤Ê¤¤¤è¤¦¤Ë¡¤°ìÈÖ³°Â¦¤Î¼ÖÀþ¤Ë´ó¤ë
------->: ------->s
------->s ------->:
<-------: <-------:
<-------: <-------:
before after
case 4:
route plan: {B N}
# N ¤«¤é½Ð¤Æ¤¤¤ë¼ÖÀþ·²¤Ë¼ÖÀþÊѹ¹¤¹¤ë
[s] [ ]
| |
------->:-------> ------->s------->
<-------:<------- <-------:<-------
before after
case 5:
route plan: {B N B}
# N¤«¤é½Ð¤Æ¤¤¤ë¼ÖÀþ·²¤Ë¼ÖÀþÊѹ¹¤·¤¿¸å¡¤ÌÜŪ¤Î·úʪ¤ËÆþ¤ë
[s] [ ] [ ]
| | |
------->:-------> ------->s-------> ------->:-------->
<-------:<------- <-------:<------- <-------:<--------
| | |
[ ] [ ] [s]
before after more after
case 6:
route plan: {B N R} ({B R} is similar)
# N ¤«¤é½Ð¤Æ¤¤¤ë R¾å¤Î¼ÖÀþ·²¤Î»ÏÅÀ¤Ë¼ÖÀþÊѹ¹¤¹¤ë
[s] [ ]
| |
:-------> :s------>
:<------- :<-------
before after
case 7:
route plan: {... N B}
# B ¤ËÆþ¤ë
[ ] [s]
| |
------->s ------->:
<-------: <-------:
before after
case 8:
route plan: {... N R ...}
case 8-1: ... -> N -> R -> ...
case 8-1-1: N ¤«¤é R ¤Ëľ¿Ê²Äǽ
# ¿Ê¤à
s-------> :---s--->
before after
case 8-1-2: N ¤¬ R ¤Ø¤Î¸òº¹ÅÀ
# N ¤«¤é½Ð¤Æ¤¤¤ë R ¾å¤Î¼ÖÀþ·²¤Î»ÏÅÀ¤Ë¼ÖÀþÊѹ¹¤·¤¿¸å¡¤¿Ê¤à
:-------> :s------> :---s--->
s: : :
before after more after
case 8-2: -> -> N -> ...
... <- R <- <-
# N ¤«¤é½Ð¤Æ¤¤¤ë R ¾å¤Î¼ÖÀþ·²¤Î»ÏÅÀ¤Ë¼ÖÀþÊѹ¹¤·¤¿¸å¡¤¿Ê¤à
------->s-------> ------->:-------> ------->:------->
<-------: <------s: <---s---:
before after more after
case 9:
route plan: {... R N ...}
case 9-1: ... -> R -> N -> ...
case 9-1-1: R ¤«¤é N ¤Ëľ¿Ê²Äǽ
# ¿Ê¤à
---s--->: ------->s
before after
case 9-1-2: R ¤¬ Êĺɤ·¤Æ¤¤¤ë
case 9-1-2-1: ´û¤ËÊÄºÉ (ƻϩ¤ÎÃæ¿´) ¤ò²á¤®¤¿°ÌÃ֤ˤ¤¤ë
# ¿Ê¤à
---+s-->: ---+--->s:
before after
case 9-1-2-2: ÊĺɤμêÁ°¤Ë¤¤¤ë
# Á°¿Ê¤Ç¤¤ë¼ÖÀþ·²¤Ë¼ÖÀþÊѹ¹¤·¤¿¸å¡¤¿Ê¤à (¤Ê¤±¤ì¤Ð¤½¤³¤ÇÄä»ß)
--s+--->: ---+--->: ---+---> :
------->: --s---->: ------->s:
before after more after
case 9-1-3: °ÜưʪÂΤμêÁ°¤Ë¤¤¤ë
# Á°¿Ê¤Ç¤¤ë¼ÖÀþ·²¤Ë¼ÖÀþÊѹ¹¤·¤¿¸å¡¤¿Ê¤à (¤Ê¤±¤ì¤Ð¤½¤³¤ÇÄä»ß)
-s---m->: -----m->: -----m-> :
------->: -s----->: ------->s:
before after more after
case 9-2: -> -> R -> ...
... <- N <- <-
# N ¤Ë¸þ¤«¤¦ R¾å¤ÎÈ¿ÂмÖÀþ·²¤ÎƱ¤¸°ÌÃ֤˼ÖÀþÊѹ¹¤·¤¿¸å¡¤¿Ê¤à (== ž²ó)
:-------s-> :---------> : --------->
:<--------- :<------s-- :s<---------
before after more after
(5) AK_MOVE/LOAD/UNLOAD ½èÍýÍ¥ÀèÅÙ
AK_MOVE ¤òºÇÍ¥Àè¤Ç½èÍý¤·¤Þ¤¹¡¥AK_LOAD/UNLOAD ¤Ï¡¤¥¿¡¼¥²¥Ã¥È¤ÎÉé½ý¼Ô¤¬
AK_MOVE ¤òÁ÷¿®¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Î¤ß¹Ô¤¤¤Þ¤¹¡¥
Prototype Simulation System Ver.0.31 °ÊÁ°¤Ï¡¤AK_LOAD/UNLOAD ¤ÏMisc
Simulator ¤¬½èÍý¤·¤Æ¤¤¤Þ¤·¤¿¤¬¡¤Simulation System Ver.0.36 ¤Ç¤Ï¡¤
position, positionExtra, positionHistory ¥×¥í¥Ñ¥Æ¥£¤Î¶¥¹ç¤òËɤ°¤¿¤á¡¤¸ò
ÄÌ¥·¥ß¥å¥ì¡¼¥¿¤¬½èÍý¤·¤Þ¤¹¡¥
VI. ËÜ¥×¥í¥°¥é¥à¤Î³«È¯/Êݼé¤ËɬÍפʾðÊó
(1) ¥¨¡¼¥¸¥§¥ó¥È¤Î°ÌÃ֤˴ؤ¹¤ë°Ê²¼¤Î¥×¥í¥Ñ¥Æ¥£
MovingObject.position
MovingObject.positionExtra
MovingObject.positionHistory
¤Ï¡¤¸òÄÌ¥·¥ß¥å¥ì¡¼¥¿¤Î¤ß¤¬·èÄꤷ¡¤Â¾¤Î¥·¥ß¥å¥ì¡¼¥¿¤¬Êѹ¹¤·¤Ê¤¤¤³¤È¤òÁ°Äó
¤È¤·¤Þ¤¹¡¥¤³¤ì¤¬Êݾڤµ¤ì¤Ê¤¤¤È¡¤¥·¥ß¥å¥ì¡¼¥¿³°Éô¤Î¾õÂ֤ȡ¤ËÜ¥×¥í¥°¥é¥à¤¬
ÆâÉô¤ËÊݤäƤ¤¤ë¥¨¡¼¥¸¥§¥ó¥È¤Î¾õÂÖ (¼ÖÀþ¤ä®Å٤ʤÉ) ¤È¤Î´Ö¤Ë°ì´ÓÀ¤¬¤Ê¤¯
¤Ê¤ê¡¤¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î¥×¥í¥°¥é¥ß¥ó¥°¤¬º¤Æñ¤Ë¤Ê¤ê¤Þ¤¹¡¥
positionHistory ¤Ï°¯Èþ¸òÄÌή¥·¥ß¥å¥ì¡¼¥¿¤ÈƱÍͤǤ¢¤ê¡¤·ÐÏ©¾å¤Î Node ¤Î¥ê
¥¹¥È¤È¤·¤ÆÉ½¸½¤µ¤ì¤Þ¤¹¡¥
(2) Constants.java ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤ëÄê¿ôÃͤÎÊѹ¹¤Ë¤è¤ê¡¤ÀßÄ꤬Êѹ¹¤Ç¤¤Þ
¤¹¡¥
¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î·×»»Ã±°Ì»þ´Ö UNIT_SEC
¼Ö/¿Í¤Î®ÅÙ MAX_VELOCITY_PER_SEC
MAX_CIV_VELOCITY_PER_SEC
¼Ö¤ÎºÇ¹â®Å٤ޤǤˤ«¤«¤ë»þ´Ö ACCELERATING_SEC
¼Ö/¿Í¤ÎÄä»ß»þ¤Î°ÂÁ´¤Ê¼Ö´Öµ÷Î¥ MIN_SAFE_DISTANCE_BETWEEN_CARS
MIN_SAFE_DISTANCE_BETWEEN_CIVILIAN
¿Ê¹ÔÊý¸þ DRIVING_DIRECTION_IS_LEFT
·×»»¤òÂǤÁÀÚ¤ë»þ´Ö (cf. VI (3-3)) CALCULATING_LIMIT_MILLI_SEC
(3) ¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Îή¤ì
¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Ï¡¤¤Þ¤º¡¤
traffic.Simulator.Simulator(InetAddress kernelAddress, int kernelPort)
¤Ë¤è¤ê½é´ü²½¤ò¹Ô¤¤¡¤°Ê¸å¡¤
traffic.Simulator.simulate()
¤ò·«¤êÊÖ¤¹¤³¤È¤Ç¿Ê¹Ô¤·¤Þ¤¹¡¥
(3-1) traffic.Simulator.simulate() ¤Î³µÍ×
¥¨¡¼¥¸¥§¥ó¥È¤Î¹ÔưÆâÍÆ¤ò¼õ¿® traffic.io.receiveCommands()
AK_MOVE ¤ò½èÍý traffic.Simulator.move()
AK_LOAD/UNLOAD ¤ò½èÍý traffic.loadUnload()
¥·¥ß¥å¥ì¡¼¥·¥ç¥ó·ë²Ì¤òÁ÷¿® traffic.io.sendUpdate()
¥·¥ß¥å¥ì¡¼¥·¥ç¥ó·ë²Ì¤ò¼õ¿® traffic.io.receiveUpdate()
(3-2) ¥¨¡¼¥¸¥§¥ó¥È¤Î¹ÔưÆâÍÆ¤Î¥Á¥§¥Ã¥¯
¥¨¡¼¥¸¥§¥ó¥È¤Î¹ÔưÆâÍÆ¼õ¿®»þ¤Ë¡¤
traffic.WorldModel.parseCommands(int[] data)
¤Ë¤è¤ê¡¤¹ÔưÆâÍÆ¤Î²ò¼á¤ÈÂÅÅöÀ¤Î¥Á¥§¥Ã¥¯¤ò¹Ô¤¤¤Þ¤¹¡¥¹ÔưÆâÍÆ¤¬»ÅÍͤòËþ¤¿
¤·¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ï¡¤¤³¤ÎÃʳ¬¤Ç¤Ï¤¸¤¤Þ¤¹¡¥
(3-3) AK_MOVE ¤Î½èÍý¤Î³µÍ×
³Æ¥µ¥¤¥¯¥ë¤ÎºÇ½é¤Ë¡¤
traffic.object.MovingObject.initializeEveryCycle()
¤Ë¤è¤ê¡¤°Üư·ÐÏ©Åù¤ò½é´ü²½¤·¡¤UNIT_SEC (cf. VI (3-2)) ñ°Ì¤Ç¥¨¡¼¥¸¥§¥ó¥È
¤Î°Üư¤ò¥·¥ß¥å¥ì¡¼¥È¤·¤Þ¤¹¡¥1 ñ°Ì»þ´ÖËè¤Î¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤Î³µÍפϰʲ¼¤Î
¤È¤ª¤ê¤Ç¤¹¡¥
1) ¥·¥ß¥å¥ì¡¼¥·¥ç¥ó¤ÎÂǤÁÀÚ¤êȽÄê
CALCULATING_LIMIT_MILLI_SEC
2) °Üư¤¹¤ë¼ÖÀþ¤ÎÎó¤È¾ã³²Êª¤òÄ´¤Ù¤ë
traffic.object.MovingObject.setMotionlessObstructionAndMovingLaneList()
3) °Üư¼ÖÀþÎó¾å¤Ë¤¤¤ëÁ°Êý¼Öξ¤òÄ´¤Ù¤ë
traffic.object.MovingObject.setMovingObstruction()
4) ¾ã³²Êª¤Î¼ïÎà¤Ë±þ¤¸¤Æ¥¨¡¼¥¸¥§¥ó¥È¤ò»Åʬ¤±¤¹¤ë
traffic.Simulator.sortByObstruction()
5) Á°Êý¼Öξ¤Ë¹Ô¤¯¼ê¤òÁË¤Þ¤ì¤Æ¤¤¤ë¥¨¡¼¥¸¥§¥ó¥È¤ò°Üư¤µ¤»¤ë
traffic.Simulator.m_waitingNoChangeList
traffic.Simulator.moveBeforeForwardMvObj(MovingObject MovingObject mv)
6) Êĺɡ¤¼ÖÀþÊѹ¹¡¤Å¾²ó¤Î¼êÁ°¤Ë¤¤¤ë¥¨¡¼¥¸¥§¥ó¥È¤ò°Üư¤µ¤»¤ë
traffic.Simulator.m_waitingMap
traffic.Simulator.dispatch(ArrayList follows)
7) ·úʪ¤ÎÆþ¸ý¤«ÌÜŪÃϤμêÁ°¤Ë¤¤¤ë¥¨¡¼¥¸¥§¥ó¥È¤ò°Üư¤µ¤»¤ë
traffic.Simulator.m_noWaitingList
traffic.object.MovingObject.move()
8) ¾ã³²Êª¤¬¤Ê¤¤¥¨¡¼¥¸¥§¥ó¥È¤ò°Üư¤µ¤»¤ë
traffic.Simulator.m_noWaitingNoChageList
traffic.object.MovingObject.move()
1) ¤Ï¡¤¥·¥ß¥å¥ì¡¼¥·¥ç¥ó·ë²Ì¤ò¡¤Ë襵¥¤¥¯¥ë¡¤³Î¼Â¤Ë¥«¡¼¥Í¥ë¤ËÅÁ¤¨¤ë¤¿¤á¤Î¡¤
¤ä¤à¤òÆÀ¤Ì½èÃ֤Ǥ¹¡¥ºÇ½é¤Î¿ô¥¿¡¼¥ó¤È¡¤Â¿¿ô¤Î¥¨¡¼¥¸¥§¥ó¥È¤¬Ä¹µ÷Î¥°Üư¤¹¤ë
¤è¤¦¤Ê¾ì¹ç¤Ë¡¤·×»»¤òÂǤÁÀڤ뤳¤È¤¬¤¢¤ê¤Þ¤¹¡¥
6) ¤Î traffic.Simulator.dispatch(ArrayList follows) ¤Ç¼ÖÀþÊѹ¹¤¹¤ë¥¨¡¼¥¸¥§
¥ó¥È¤Î¿ô¤Ï¡¤1 ¤Ä¤Î¾ã³²Êª¤Ë¤Ä¤¡¤1 ñ°Ì»þ´ÖÅö¤¿¤ê 1 ¥¨¡¼¥¸¥§¥ó¥È¤Ë¸Â¤Ã¤Æ
¤¤¤Þ¤¹¡¥
VII. License Of Morimoto Traffic Simulator
(1) Neither the RoboCupRescue committee nor development staffs of this
program provide warranty. Use the software at your own risk.
(2) Copyright of all program code and documentation included in source
or binary package of this program belongs to Takeshi Morimoto.
(3) You can use this program for research and/or education purpose
only, commercial use is not allowed.
VIII. Author
Takeshi MORIMOTO
Ikuo Takeuchi Laboratory
Department of Computer Science
The University of Electro-Communications
Additional information can be found in:
http://ne.cs.uec.ac.jp/~morimoto/rescue/traffic/
Mail bug reports and suggestions to:
morimoto@takopen.cs.uec.ac.jp