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