Download Latest Version mysql-connector-java-3.0.17-ga-bin.jar (246.3 kB)
Email in envelope

Get an email when there's a new version of Database Driven RoboCup Rescue Server

Home / DDRRSv1.1 / oldsims / traffic
Name Modified Size InfoDownloads / 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
Source: README.ja.txt, updated 2010-06-12