JP5493097B2 - Robot self-localization system - Google Patents
Robot self-localization system Download PDFInfo
- Publication number
- JP5493097B2 JP5493097B2 JP2010087682A JP2010087682A JP5493097B2 JP 5493097 B2 JP5493097 B2 JP 5493097B2 JP 2010087682 A JP2010087682 A JP 2010087682A JP 2010087682 A JP2010087682 A JP 2010087682A JP 5493097 B2 JP5493097 B2 JP 5493097B2
- Authority
- JP
- Japan
- Prior art keywords
- robot
- entity
- angle
- data
- association
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012937 correction Methods 0.000 claims description 100
- 238000013500 data storage Methods 0.000 claims description 31
- 238000001514 detection method Methods 0.000 claims description 31
- 230000005540 biological transmission Effects 0.000 claims description 21
- 230000033001 locomotion Effects 0.000 claims description 18
- 238000004364 calculation method Methods 0.000 claims description 17
- 230000007613 environmental effect Effects 0.000 claims description 9
- 238000000034 method Methods 0.000 description 131
- 230000008569 process Effects 0.000 description 129
- 230000006854 communication Effects 0.000 description 50
- 238000004891 communication Methods 0.000 description 45
- 238000012545 processing Methods 0.000 description 45
- 230000006870 function Effects 0.000 description 26
- 239000002245 particle Substances 0.000 description 20
- 210000005252 bulbus oculi Anatomy 0.000 description 19
- 210000001508 eye Anatomy 0.000 description 15
- 210000000323 shoulder joint Anatomy 0.000 description 13
- 230000014509 gene expression Effects 0.000 description 9
- 230000008859 change Effects 0.000 description 8
- 210000002310 elbow joint Anatomy 0.000 description 7
- 230000009471 action Effects 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 6
- 238000006073 displacement reaction Methods 0.000 description 6
- 210000000245 forearm Anatomy 0.000 description 6
- 210000003128 head Anatomy 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 230000004807 localization Effects 0.000 description 5
- 238000009745 resin transfer moulding Methods 0.000 description 5
- 238000005259 measurement Methods 0.000 description 4
- 241000282412 Homo Species 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 241000220317 Rosa Species 0.000 description 1
- 241001290864 Schoenoplectus Species 0.000 description 1
- 210000001015 abdomen Anatomy 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 210000000887 face Anatomy 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
Images
Description
この発明は、ロボット自己位置同定システムに関し、特にたとえば、ロボットが存在する空間においてそのロボットを自己位置同定する、ロボット自己位置同定システムに関する。 The present invention relates to a robot self-position identification system, and more particularly to a robot self-position identification system that self-identifies a robot in a space where the robot exists.
非特許文献1には、個別のIDが割り振られたRFIDタグが発する電波を受信し、電波強度を検出することで、RFIDタグを付けた人物の位置を推定し、人物を識別する技術が開示されている。
Non-Patent
また、特許文献1には、位置検出装置が検出する位置情報を、適正に補正する位置補正装置が開示されている。位置検出装置は、GPSを利用しており、たとえば車両に取り付けられる。そして、位置補正装置は、GPSの測位に基づいて推定される推定車両速度と車両速度とから、車両の位置情報を補正する。
近年、様々なロボット自己位置同定システムが開発されている。そして、その一例として、非特許文献1の技術を応用し、RFIDタグをロボットに取り付けることでロボットを自己位置同定するシステムが開発されている。
In recent years, various robot self-position identification systems have been developed. As an example, a system for self-locating a robot by applying the technology of Non-Patent
ところが、上記したシステムではロボットにRFIDタグを取り付け、さらには環境にRFIDタグを受信するアンテナを設けなければならず、容易にロボットを自己位置同定することができない。また、広く一般的に利用されているGPSを利用すれば位置を検出することができるが、GPSの位置検出精度は低く、特許文献1で開示された技術を利用して位置補正を行ったとしても、ロボット自己位置同定システムには利用できない。
However, in the above-described system, an RFID tag must be attached to the robot, and an antenna for receiving the RFID tag must be provided in the environment. In addition, the position can be detected by using a GPS that is widely used in general, but the position detection accuracy of the GPS is low, and the position correction is performed using the technique disclosed in
それゆえに、この発明の主たる目的は、新規な、ロボット自己位置同定システムを提供することである。 Therefore, the main object of the present invention is to provide a novel robot self-localization system.
この発明の他の目的は、容易にロボットを自己位置同定することができる、ロボット自己位置同定システムを提供することである。 Another object of the present invention is to provide a robot self-position identification system capable of easily self-locating a robot.
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために記述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。 The present invention employs the following configuration in order to solve the above problems. The reference numerals in parentheses, supplementary explanations, and the like indicate the corresponding relationship with the embodiments described in order to help understanding of the present invention, and do not limit the present invention.
第1の発明は、自身の移動に関して自身の位置データを少なくとも含む状態データを出力できるロボットを、それが存在する空間内において自己位置同定する、ロボット自己位置同定システムであって、ロボットから順次取得した複数の状態データを記憶する状態データ記憶手段、空間内に存在する実体をセンシングする環境センサ、環境センサの出力に基づいて実体の位置を検出する位置検出手段、位置検出手段によって検出された実体の複数の位置データを記憶する位置データ記憶手段、状態データ記憶手段によって記憶されたロボットの位置データおよび位置データ記憶手段によって記憶された実体の位置データに基づいて、ロボットと実体とを関連付ける関連付手段、およびロボットと関連付けられた実体の位置データに基づいて、状態データに含まれる位置データを補正する補正データを、ロボットに送信する送信手段を備え、ロボットは、補正データに従って、自身の位置データを補正する、ロボット自己位置同定システムである。 A first invention is a robot self-position identification system that self-identifies a robot capable of outputting state data including at least its own position data regarding its own movement in a space in which the robot exists, and sequentially acquires from the robot State data storage means for storing a plurality of state data, an environmental sensor for sensing an entity existing in space, a position detection means for detecting the position of the entity based on the output of the environmental sensor, and an entity detected by the position detection means And associating the robot with the entity based on the position data storage means for storing the plurality of position data, the position data of the robot stored by the state data storage means, and the position data of the entity stored by the position data storage means. Based on the means and position data of the entity associated with the robot, The correction data for correcting the position data included in the status data, a transmitting means for transmitting to the robot, the robot, in accordance with correction data, for correcting its position data, a robot self-localization system.
第1の発明では、ロボット自己位置同定システム(100)は、空間(検出領域F)に存在するロボット(18a,18b,18c)を、その空間内で自己位置同定する。また、ロボットは、自身の移動に関して自身の位置データを少なくとも含む状態データを出力できる。 In the first invention, the robot self-position identification system (100) identifies the robot (18a, 18b, 18c) existing in the space (detection region F) within the space. Further, the robot can output state data including at least its own position data regarding its movement.
状態データ記憶手段(20,S9)は、たとえばメモリ(22)のバッファにロボットから順次取得した状態データを記憶する。環境センサ(12)は、たとえばLRF(Laser Range Finder)などであり、空間内に存在する人間やロボットなどの実体(Ea,Eb,Ec,Ed)をセンシングする。位置検出手段(20,S89)は、環境センサの出力に対して、たとえばパーティクルフィルタを利用することで実体の位置を検出する。位置データ記憶手段(20,S91)は、たとえば状態データ記憶手段と同様、メモリのバッファに、検出された実体の位置データを記憶する。関連付手段(20,S49)は、バッファに記憶されたロボットの複数の位置データおよび実体の複数の位置データから、たとえば速度を求めることで、ロボットと実体とを関連付ける。そして、ロボットの位置データおよび実体の位置データは、空間における同じ平面座標系の値で示される。 The state data storage means (20, S9) stores the state data sequentially obtained from the robot, for example, in a buffer of the memory (22). The environmental sensor (12) is, for example, an LRF (Laser Range Finder) or the like, and senses an entity (Ea, Eb, Ec, Ed) such as a human being or a robot existing in the space. The position detection means (20, S89) detects the actual position of the output from the environmental sensor by using, for example, a particle filter. The position data storage means (20, S91) stores the detected entity position data in a memory buffer, for example, in the same manner as the state data storage means. The associating means (20, S49) associates the robot and the entity by, for example, obtaining a speed from the plurality of position data of the robot and the plurality of position data of the entity stored in the buffer. Then, the position data of the robot and the position data of the substance are indicated by values in the same plane coordinate system in the space.
送信手段(20,S15,S19)は、ロボットと関連付けられた実体の位置データに基づいて、たとえば空間の位置を示す座標データを、補正データとしてロボットに送信する。そして、ロボットは、たとえば補正データを受け取ると、自身の位置データを補正する。 The transmission means (20, S15, S19) transmits, for example, coordinate data indicating the position of the space to the robot as correction data based on the position data of the entity associated with the robot. When the robot receives correction data, for example, it corrects its own position data.
第1の発明によれば、容易に設置可能な環境センサと、ロボットが一般的に出力可能な状態データとを利用することで、ロボットの現在位置を容易に検出できるようになる。そのため、検出された実体の位置をロボットに送信することで、容易にロボットを自己位置同定することができるようになる。 According to the first aspect of the present invention, it is possible to easily detect the current position of the robot by using the environmental sensor that can be easily installed and the state data that the robot can generally output. Therefore, by transmitting the detected position of the entity to the robot, it becomes possible to easily identify the position of the robot.
第2の発明は、第1の発明に従属し、状態データは、自身の角度データをさらに含み、状態データ記憶手段は、角度データを含む状態データを記憶し、状態データ記憶手段によって記憶されたロボットの複数の状態データおよび位置データ記憶手段によって記憶された実体の複数の位置データに基づいて、次の位置における角度を推定する角度推定手段、および角度推定手段によって推定された角度および状態データ記憶手段によって記憶された状態データに含まれる角度データに基づいて、状態データに含まれる角度データを補正する角度補正データを算出する角度補正算出手段をさらに備え、送信手段は、補正データおよび角度補正データを、ロボットに送信する第1送信手段を含み、ロボットは、補正データおよび角度補正データに従って、自身の位置データおよび角度データを補正する。 The second invention is dependent on the first invention, the state data further includes its own angle data, and the state data storage means stores the state data including the angle data, and is stored by the state data storage means. Based on a plurality of state data of the robot and a plurality of position data of the entity stored by the position data storage means, an angle estimation means for estimating an angle at the next position, and an angle and state data storage estimated by the angle estimation means Angle correction calculation means for calculating angle correction data for correcting the angle data included in the state data based on the angle data included in the state data stored by the means, and the transmission means includes the correction data and the angle correction data. and it includes a first transmission means for transmitting to the robot, the robot follow the correction data and the angle correction data Te, it corrects the position data and angular data itself.
第2の発明では、状態データ記憶手段は、ロボット自身の角度データをさらに含む、状態データを記憶する。角度推定手段(20,S261−S277)は、たとえば実体の複数の位置データおよびロボットの複数の状態データからロボットの位置を予測することで、次の位置のロボットの角度を推定する。角度補正算出手段(20,S279)は、たとえば現在の状態データに含まれる角度データと推定された角度(θ^k)との角度差を、角度補正データとして算出する。第1送信手段(20,S19)は、補正データおよび角度補正データを、ロボットに送信する。 In the second invention, the state data storage means stores state data further including angle data of the robot itself. The angle estimation means (20, S261-S277) estimates the angle of the robot at the next position, for example, by predicting the position of the robot from a plurality of position data of the entity and a plurality of state data of the robot. The angle correction calculation means (20, S279) calculates, for example, an angle difference between the angle data included in the current state data and the estimated angle (θ ^ k) as angle correction data. First transmission means (20, S19) the corrected data and the angle correction data, and transmits to the robot.
第2の発明によれば、ロボットの角度も補正することで、自己位置同定の精度を高めることができる。 According to the second invention, the accuracy of self-position identification can be improved by correcting the angle of the robot.
第3の発明は、第2の発明に従属し、角度推定手段は、角度を推定するときに、推定角度誤差をあわせて算出し、推定角度誤差を補正精度として記憶する記憶手段をさらに備え、送信手段は、記憶手段によって記憶された補正精度が低いとき、補正データのみをロボットに送信する第2送信手段を含む。 A third invention is dependent on the second invention, and the angle estimation means further includes a storage means for calculating the estimated angle error when the angle is estimated, and storing the estimated angle error as a correction accuracy, The transmission unit includes a second transmission unit that transmits only the correction data to the robot when the correction accuracy stored by the storage unit is low.
第3の発明では、角度推定手段は、角度を推定すると共に、推定角度誤差(σ2 θ^k)を算出する。記憶手段(20,S281)は、推定角度誤差を補正精度として、バッファに記憶する。推定された角度の誤差が大きければ、第2送信手段(20,S15)は補正データのみをロボットに送信する。 In the third invention, the angle estimation means estimates the angle and calculates an estimated angle error (σ 2 θ ^ k ). The storage means (20, S281) stores the estimated angle error in the buffer as the correction accuracy. If the estimated angle error is large, the second transmission means (20, S15) transmits only the correction data to the robot.
第3の発明によれば、推定された角度の誤差を、補正精度として利用することで、ロボットの角度の補正が可能であるかを、判断できるようになる。 According to the third aspect, it is possible to determine whether the angle of the robot can be corrected by using the estimated angle error as the correction accuracy.
第4の発明は、第3の発明に従属し、角度推定手段は、状態データ記憶手段によって記憶されたロボットの複数の状態データおよび位置データ記憶手段によって記憶された実体の位置データに基づいて、ロボットの角度を観測する角度観測手段、および角度観測手段によって観測された角度の観測角度誤差を算出する観測角度誤差算出手段を含み、角度推定手段は、観測された角度、観測角度誤差、前回推定された角度および前回算出された推定角度誤差に基づいて、次の位置の角度を推定し、推定角度誤差を算出する。 The fourth invention is dependent on the third invention, and the angle estimation means is based on the plurality of state data of the robot stored by the state data storage means and the position data of the entity stored by the position data storage means, An angle observation means for observing the angle of the robot, and an observation angle error calculation means for calculating an observation angle error of the angle observed by the angle observation means. The angle estimation means includes an observed angle, an observation angle error, and a previous estimation. Based on the calculated angle and the previously calculated estimated angle error, the angle of the next position is estimated, and the estimated angle error is calculated.
第4の発明では、たとえば、角度観測手段(20,S261−S265)は、複数の状態データから次の位置を予測して予測角度を算出し、実体の位置データから検知角度を算出する。そして、角度観測手段は、検知角度から予測角度を減算することで、ロボットの角度を観測(算出)する。観測角度誤差算出手段(20,S267)は、たとえば、観測における位置の誤差(σ2 po)に対する実体の位置データの商に近似することで、観測角度誤差を算出する。 In the fourth invention, for example, the angle observation means (20, S261-S265) calculates a predicted angle by predicting the next position from a plurality of state data, and calculates a detection angle from the actual position data. The angle observation means observes (calculates) the angle of the robot by subtracting the predicted angle from the detected angle. The observation angle error calculation means (20, S267) calculates the observation angle error by approximating the quotient of the actual position data with respect to the position error (σ 2 po ) in the observation, for example.
たとえば、角度推定手段は、観測された角度、観測角度誤差、前回推定された角度および前回算出された推定角度誤差に基づいて、カルマンゲイン(Kk)を求めることで、次の位置の角度を推定し、推定角度誤差を算出する。 For example, the angle estimation means obtains the angle of the next position by obtaining the Kalman gain (K k ) based on the observed angle, the observed angle error, the previously estimated angle, and the previously calculated estimated angle error. Estimate and calculate the estimated angle error.
第4の発明によれば、カルマンフィルタを用いて、次の位置の角度を推定することができる。 According to the fourth invention, the angle of the next position can be estimated using the Kalman filter.
第5の発明は、第1の発明ないし第4の発明のいずれかに従属し、ロボットと実体との関連付けを維持するかを判断する判断手段、および判断手段によって維持しないと判断されたとき、ロボットと実体との関連付けを解除する解除手段をさらに備える。 The fifth invention is dependent on any one of the first to fourth inventions, and when it is judged by the judging means for judging whether to maintain the association between the robot and the entity, and when not judged to be maintained by the judging means, Release means for releasing the association between the robot and the entity is further provided.
第5の発明では、判断手段(20,S117,S119,S121)は、たとえばロボットと実体との速度差や距離などに基づいて、関連付けを維持するかを判断する。解除手段(20,S125)は、たとえばロボットと実体との速度差が大きかったり、ロボットと実体との距離が離れていたりすると、ロボットと実体との関連付けを解除する。 In the fifth invention, the determination means (20, S117, S119, S121) determines whether to maintain the association based on, for example, the speed difference or distance between the robot and the entity. The canceling means (20, S125) cancels the association between the robot and the entity when, for example, the speed difference between the robot and the entity is large or the distance between the robot and the entity is long.
第5の発明によれば、エラーの要因となるロボットと実体との関連付けを、解除できるようになる。 According to the fifth aspect, the association between the robot and the entity that causes the error can be canceled.
第6の発明は、第5の発明に従属し、空間には、少なくとも2つ以上の実体が存在し、関連付手段は、ロボットと実体との関連付けが解除されてから所定時間以内のとき、ロボットと各実体との第1速度差を算出する第1速度差算出手段、第1速度差算出手段によって算出された第1速度差が第1所定速度より大きいかを判断する第1速度判定手段、ロボットと各実体との距離が所定距離より離れているかを判定する距離判定手段、および第1速度判定手段によってロボットとの第1速度差が第1所定速度以下と判定され、かつ距離判断手段によってロボットとの距離が所定距離以内と判定された実体のうち、ロボットに最も近い実体とロボットとを関連付ける第1関連付手段を含む。 The sixth invention is dependent on the fifth invention, and there are at least two or more entities in the space, and the associating means is within a predetermined time after the association between the robot and the entities is released, First speed difference calculating means for calculating a first speed difference between the robot and each entity, and first speed determining means for determining whether the first speed difference calculated by the first speed difference calculating means is greater than a first predetermined speed. Distance determining means for determining whether the distance between the robot and each entity is greater than a predetermined distance; and the first speed determining means determines that the first speed difference with the robot is equal to or less than the first predetermined speed; and distance determining means The first associating means for associating the robot with the entity closest to the robot among the entities determined to be within the predetermined distance by the robot.
第6の発明では、空間には、たとえば4つの実体が存在することがある。第1速度差算出手段(20,S193)は、関連付けが解除されてから所定時間(5秒)以内のとき、たとえば5秒分のロボットの位置データおよび5秒分の実体の位置データから、第1速度差(RMS(Root Mean Square)速度差)を算出する。第1速度判定手段(20,S195)は、第1速度差が第1所定速度より大きいかを判断する。また、距離判定手段(20,S199)は、ロボットの位置データおよび実体の位置データから距離を求め、ロボットと各実体とが所定距離より離れているかを判定する。たとえば、第1関連付手段(20,S209)は、ロボットとの第1速度差が第1所定速度以下であり、かつロボットとの距離が所定距離以下の実体が複数ある場合、ロボットに最も近い実体とロボットとを関連付ける。 In the sixth invention, there may be, for example, four entities in the space. The first speed difference calculation means (20, S193) calculates the first time difference from the position data of the robot for 5 seconds and the position data of the entity for 5 seconds, for example, within a predetermined time (5 seconds) after the association is released. One speed difference (RMS (Root Mean Square) speed difference) is calculated. The first speed determining means (20, S195) determines whether the first speed difference is greater than the first predetermined speed. The distance determining means (20, S199) obtains a distance from the position data of the robot and the position data of the entity, and determines whether the robot and each entity are separated from the predetermined distance. For example, the first association means (20, S209) is closest to the robot when the first speed difference from the robot is equal to or less than the first predetermined speed and there are a plurality of entities whose distance from the robot is equal to or less than the predetermined distance. Associate an entity with a robot.
第6の発明によれば、関連付けが解除されて間もなければ、ロボットと実体とを容易に関連付け直すことができる。 According to the sixth aspect of the present invention, it is possible to easily reassociate the robot and the entity as soon as the association is released.
第7の発明は、第5の発明または第6の発明に従属し、空間には、少なくとも2つ以上の実体が存在し、関連付手段は、ロボットと実体との関連付けが解除されてから所定時間が経過したとき、ロボットと各実体との第2速度差を算出する第2速度差算出手段、第2速度差算出手段によって算出された第2速度差が第2所定速度より大きいかを判定する第2速度判定手段、および第2速度判定手段によってロボットの第2速度差が第2所定速度以下と判定された実体が1つだけであるとき、その実体とロボットとを関連付ける第2関連付手段を含む。 The seventh invention is dependent on the fifth invention or the sixth invention, and there are at least two or more entities in the space, and the associating means is predetermined after the association between the robot and the entities is released. When the time has elapsed, a second speed difference calculating means for calculating a second speed difference between the robot and each entity, and determining whether the second speed difference calculated by the second speed difference calculating means is greater than a second predetermined speed The second speed determining means, and when there is only one entity for which the second speed difference of the robot is determined to be equal to or less than the second predetermined speed by the second speed determining means, a second association for associating the entity with the robot Including means.
第7の発明では、第6の発明と同様、空間には4つの実体が存在することがある。たとえば、第2速度差算出手段(20,S233)は、関連付けが解除されてから所定時間が経過していれば、300秒分のロボットの位置データおよび300秒分の実体の位置データから、第2速度差(RMS速度差)を算出する。第2速度判定手段(20,S235)は、第2速度差が第2所定速度より大きいかを判定する。たとえば、第2関連付手段(20,S247)は、ロボットとの第2速度差が第2所定速度以下の実体が1つだけであれば、その実体とロボットとを関連付ける。 In the seventh invention, as in the sixth invention, there may be four entities in the space. For example, the second speed difference calculation means (20, S233) determines that the first time from the position data of the robot for 300 seconds and the position data of the entity for 300 seconds if the predetermined time has passed since the association was released. Two speed difference (RMS speed difference) is calculated. The second speed determining means (20, S235) determines whether the second speed difference is greater than the second predetermined speed. For example, if there is only one entity whose second speed difference with the robot is equal to or less than the second predetermined speed, the second association means (20, S247) associates the entity with the robot.
第7の発明によれば、関連付けが解除されて所定時間が経過したとしても、ロボットと実体とを関連付け直すことができる。 According to the seventh invention, even if the association is canceled and a predetermined time has elapsed, the robot and the entity can be associated again.
この発明によれば、容易に設置可能な環境センサおよびロボットが一般的に出力可能な状態データを利用して、ロボットの位置を検出することができるため、容易にロボットを自己位置同定することができる。 According to the present invention, since the position of the robot can be detected by using the environmental sensor that can be easily installed and the state data that the robot can generally output, it is possible to easily identify the position of the robot. it can.
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。 The above object, other objects, features, and advantages of the present invention will become more apparent from the following detailed description of embodiments with reference to the drawings.
図1を参照して、この実施例のロボット自己位置同定システム100は、たとえば自律移動型のロボット(以下、単に「ロボット」と言う。)18a,18b,18cを、それらのロボットが存在する空間内で自己位置同定(Localization(ローカライゼーション)と言うこともある。)するためのシステムである。なお、本実施例で言う「自己位置同定」とは、ロボット18a,18b,18c(以下、区別しない場合には「ロボット18」と言う。)が、その空間内における自身の位置、角度および速度などのデータを、自身のセンサおよび環境センサなどを利用して取得することを意味する。
Referring to FIG. 1, a robot self-
ロボット自己位置同定システム100は、追跡サーバ10、遠隔操作装置14、計画サーバ16およびロボット18から構成されている。そして、ロボット18は、ネットワーク400を介して、追跡サーバ10、遠隔操作装置14および計画サーバ16に接続される。
The robot self-
追跡サーバ10は、環境センサである、LRF12a,12bを含む複数のLRFを備える。LRF12a,12bは人間およびロボット18が行動できる場所(環境)に設置される。そして、追跡サーバ10はLRF12a,12bを利用して、ロボット18および人間を含む実体をセンシングすることで、各実体の位置を検出する。たとえば、人間およびロボット18が行動できる場所とは、会社のフロア、博物館、ショッピングモールまたはアトラクション会場などである。なお、システムの管理者は、様々な場所において、LRF12a,12bを、容易に設置することができる。また、追跡サーバ10によって得られた位置データは、遠隔操作サーバ14および計画サーバ16に出力される。
The tracking
さらに、追跡サーバ10は、ローカライゼーション機能(ローカライゼーションモジュールと言うこともある。)を備えている。そのため、追跡サーバ10は、ロボット18との通信を確立し、ロボット18が出力する状態データを受信(取得)するとともに、ロボット18に対して位置および角度(向き)を補正するための補正データを送信する。状態データは、ロボット18自身の位置データ、角度データおよび速度データを含み、ロボット18が備えるセンサの出力に基づいて作成される。
In addition, the tracking
遠隔操作装置14は、追跡サーバ10から得た位置データを表示する操作端末を含み、オペレータによって操作される。また、オペレータは、操作端末に表示されるロボット18や人間の位置に基づいて、同時に複数のロボット18a,18b,18cを監視することができる。そして、オペレータは、必要に応じてロボット18を遠隔操作したり、動作命令を発行したりする。また、計画サーバ16は、追跡サーバ10から得た位置データを利用して、ロボット18が空間内に存在する人間とのコミュニケーション行動を行うように、経路を計算する。
The
ロボット18は、相互作用指向のロボットでもあり、人間のようなコミュニケーションの対象との間で、身振り手振りのような身体動作および音声の少なくとも一方を含むコミュニケーション行動を実行する機能を備えている。そのため、ロボット18は、遠隔操作装置14または計画サーバ16の命令に基づいて、人間に接近したり、コミュニケーション行動を行ったりする。
The
また、ロボット18は、先述した状態データを0.1秒〜0.3秒毎に出力する。さらに、各ロボット18は、文字列で構成されるロボットIDでそれぞれが識別(区別)される。
The
なお、ここでは簡単のため人間を1人、ロボット18を3台しか示していないが、追跡サーバ10は2人以上の人間および3台以上のロボット18を同時に検出することができる。また、追跡サーバ10、遠隔操作装置14および計画サーバ16と、ネットワーク400との接続は無線接続であってもよいし、有線接続であってもよい。さらに、各サーバおよび装置間の接続も、有線接続であってもよいし、無線接続であってもよい。
Here, for simplicity, only one human and three
図2は、追跡サーバ10の電気的な構成を示すブロック図である。図2を参照して、追跡サーバ10は、LRF12a−12fおよびプロセッサ20を含む。プロセッサ20は、RTC(Real Time Clock)20aを含んでおり、検出した位置データに対して、RTC20aから得られた時刻データを対応付けて、メモリ22のバッファに記憶する。
FIG. 2 is a block diagram showing an electrical configuration of the tracking
プロセッサ20は、マイクロコンピュータ或いはCPUとも呼ばれ、先述したLRF12aおよびLRF12bに加えて、LRF12c,LRF12d,LRF12eおよびLRF12fともそれぞれ接続される。さらに、プロセッサ20は、メモリ22、通信LANボード24、無線通信装置26および外部出力28とも接続される。なお、LRF12a−12fを区別する必要がない場合には、まとめて「LRF12」と言う。
The
LRF12は、レーザーを照射し、物体(実体も含む)に反射して戻ってくるまでの時間から当該物体との距離を計測するものである。たとえば、トランスミッタ(図示せず)から照射したレーザーを回転ミラー(図示せず)で反射させて、前方を扇状に一定角度(たとえば、0.5度)ずつスキャンする。ここで、LRF12としては、SICK社製のレーザーレンジファインダ(型式 LMS200)を用いることができる。このレーザーレンジファインダを用いた場合には、距離8mを±15mm程度の誤差で計測可能である。
The
メモリ22は、図示は省略をするが、ROM,HDDおよびRAMを含み、ROMおよびHDDには、追跡サーバ10の動作を制御するための制御プログラムが予め記憶される。たとえば、LRF12による人間の検出に必要なプログラムなどが記録される。また、RAMは、ワークメモリやバッファメモリとして用いられる。
Although not shown, the
通信LANボード24は、たとえばDSPで構成され、プロセッサ20から与えられた送信データを無線通信装置26に与え、無線通信装置26は送信データを、ネットワーク400を介してロボット18に送信する。また、送信データは補正データなどである。一方、通信LANボード24は、無線通信装置26を介してデータを受信し、受信したデータをプロセッサ20に与える。また、受信データはロボット18が出力する状態データなどである。なお、受信した状態データは、メモリ22のバッファに記憶される。
The
外部接続28は、遠隔操作装置14および計画サーバ16と接続するためのポートであり、たとえばLANケーブル、SCSIケーブルまたはUSBケーブルなどの有線ケーブルが接続される。そして、プロセッサ20は、実体の位置データを外部出力28に与え、外部出力28は位置データを遠隔操作装置14および計画サーバ16に出力する。
The
図3はこの実施例のロボット18の外観を示す正面図である。図3を参照して、ロボット18は台車30を含み、台車30の下面にはロボット18を自律移動させる右車輪32a、左車輪32b(特に区別しない場合には、「車輪32」と言う)および1つの従輪34が設けられる。右車輪32aおよび左車輪32bは、右車輪モータ36aおよび左車輪モータ36b(図4参照)によってそれぞれ独立に駆動され、台車30すなわちロボット18を前後左右の任意方向に動かすことができる。また、従輪34は車輪32を補助する補助輪である。したがって、ロボット18は、配置された空間内を自律制御によって移動可能である。
FIG. 3 is a front view showing the appearance of the
台車30の上には、円柱形のセンサ取り付けパネル38が設けられ、このセンサ取り付けパネル38には、多数の赤外線距離センサ40が取り付けられる。これらの赤外線距離センサ40は、センサ取り付けパネル38すなわちロボット18の周囲の物体(人間や障害物など)との距離を測定するものである。
A cylindrical
なお、この実施例では、距離センサとして、赤外線距離センサを用いるようにしてあるが、赤外線距離センサに代えて、小型のLRFや、超音波距離センサおよびミリ波レーダなどを用いることもできる。 In this embodiment, an infrared distance sensor is used as the distance sensor, but a small LRF, an ultrasonic distance sensor, a millimeter wave radar, or the like can be used instead of the infrared distance sensor.
センサ取り付けパネル38の上には、胴体42が直立するように設けられる。また、胴体42の前方中央上部(人の胸に相当する位置)には、上述した赤外線距離センサ40がさらに設けられ、ロボット18の前方の主として人間との距離を計測する。また、胴体42には、その側面側上端部のほぼ中央から伸びる支柱44が設けられ、支柱44の上には、全方位カメラ46が設けられる。全方位カメラ46は、ロボット18の周囲を撮影するものであり、後述する眼カメラ70とは区別される。この全方位カメラ46としては、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。なお、これら赤外線距離センサ40および全方位カメラ46の設置位置は、当該部位に限定されず適宜変更されてもよい。
A
胴体42の両側面上端部(人の肩に相当する位置)には、それぞれ、肩関節48Rおよび肩関節48Lによって、上腕50Rおよび上腕50Lが設けられる。図示は省略するが、肩関節48Rおよび肩関節48Lは、それぞれ、直交する3軸の自由度を有する。すなわち、肩関節48Rは、直交する3軸のそれぞれの軸廻りにおいて上腕50Rの角度を制御できる。肩関節48Rの或る軸(ヨー軸)は、上腕50Rの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。同様にして、肩関節48Lは、直交する3軸のそれぞれの軸廻りにおいて上腕50Lの角度を制御できる。肩関節48Lの或る軸(ヨー軸)は、上腕50Lの長手方向(または軸)に平行な軸であり、他の2軸(ピッチ軸およびロール軸)は、その軸にそれぞれ異なる方向から直交する軸である。
An
また、上腕50Rおよび上腕50Lのそれぞれの先端には、肘関節52Rおよび肘関節52Lが設けられる。図示は省略するが、肘関節52Rおよび肘関節52Lは、それぞれ1軸の自由度を有し、この軸(ピッチ軸)の軸回りにおいて前腕54Rおよび前腕54Lの角度を制御できる。
In addition, an elbow joint 52R and an elbow joint 52L are provided at the respective distal ends of the
前腕54Rおよび前腕54Lのそれぞれの先端には、人の手に相当する球体56Rおよび球体56Lがそれぞれ固定的に設けられる。ただし、指や掌の機能が必要な場合には、人間の手の形をした「手」を用いることも可能である。また、図示は省略するが、台車30の前面、肩関節48Rと肩関節48Lとを含む肩に相当する部位、上腕50R、上腕50L、前腕54R、前腕54L、球体56Rおよび球体56Lには、それぞれ、接触センサ58(図4で包括的に示す)が設けられる。台車30の前面の接触センサ58は、台車30への人間や他の障害物の接触を検知する。したがって、ロボット18は、その自身の移動中に障害物との接触が有ると、それを検知し、直ちに車輪32の駆動を停止してロボット18の移動を急停止させることができる。また、その他の接触センサ58は、当該各部位に触れたかどうかを検知する。なお、接触センサ58の設置位置は、当該部位に限定されず、適宜な位置(人の胸、腹、脇、背中および腰に相当する位置)に設けられてもよい。
A
胴体42の中央上部(人の首に相当する位置)には首関節60が設けられ、さらにその上には頭部62が設けられる。図示は省略するが、首関節60は、3軸の自由度を有し、3軸の各軸廻りに角度制御可能である。或る軸(ヨー軸)はロボット18の真上(鉛直上向き)に向かう軸であり、他の2軸(ピッチ軸、ロール軸)は、それぞれ、それと異なる方向で直交する軸である。
A neck joint 60 is provided at the upper center of the body 42 (a position corresponding to a person's neck), and a
頭部62には、人の口に相当する位置に、スピーカ64が設けられる。スピーカ64は、ロボット18が、それの周辺の人間に対して音声ないし音によってコミュニケーションを取るために用いられる。また、人の耳に相当する位置には、マイク66Rおよびマイク66Lが設けられる。以下、右のマイク66Rと左のマイク66Lとをまとめてマイク66と言うことがある。マイク66は、周囲の音、とりわけコミュニケーションを実行する対象である人間の音声を取り込む。さらに、人の目に相当する位置には、眼球部68Rおよび眼球部68Lが設けられる。眼球部68Rおよび眼球部68Lは、それぞれ眼カメラ70Rおよび眼カメラ70Lを含む。以下、右の眼球部68Rと左の眼球部68Lとをまとめて眼球部68と言うことがある。また、右の眼カメラ70Rと左の眼カメラ70Lとをまとめて眼カメラ70と言うことがある。
The
眼カメラ70は、ロボット18に接近した人間の顔や他の部分ないし物体などを撮影して、それに対応する映像信号を取り込む。また、眼カメラ70は、上述した全方位カメラ46と同様のカメラを用いることができる。たとえば、眼カメラ70は、眼球部68内に固定され、眼球部68は、眼球支持部(図示せず)を介して頭部62内の所定位置に取り付けられる。図示は省略するが、眼球支持部は、2軸の自由度を有し、それらの各軸廻りに角度制御可能である。たとえば、この2軸の一方は、頭部62の上に向かう方向の軸(ヨー軸)であり、他方は、一方の軸に直交しかつ頭部62の正面側(顔)が向く方向に直行する方向の軸(ピッチ軸)である。眼球支持部がこの2軸の各軸廻りに回転されることによって、眼球部68ないし眼カメラ70の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。なお、上述のスピーカ64、マイク66および眼カメラ70の設置位置は、当該部位に限定されず、適宜な位置に設けられてよい。
The
このように、この実施例のロボット18は、車輪32の独立2軸駆動、肩関節48の3自由度(左右で6自由度)、肘関節52の1自由度(左右で2自由度)、首関節60の3自由度および眼球支持部の2自由度(左右で4自由度)の合計17自由度を有する。
As described above, the
図4はロボット18の電気的な構成を示すブロック図である。この図4を参照して、ロボット18は、プロセッサ80を含む。プロセッサ80は、マイクロコンピュータ或いはCPUとも呼ばれ、バス82を介して、メモリ84、モータ制御ボード86、センサ入力/出力ボード88および音声入力/出力ボード90に接続される。プロセッサ80は、RTC80aを含んでおり、作成した状態データに対して時刻データを対応付ける。
FIG. 4 is a block diagram showing an electrical configuration of the
メモリ84は、図示は省略をするが、SSD(Solid State Drive),ROMおよびRAMを含む。SSD,ROMには、ロボット18の動作を制御するための制御プログラムが予め記憶される。たとえば、各センサの出力(センサ情報)を検知するための検知プログラムや、外部コンピュータ(追跡サーバ10、遠隔操作装置14および計画サーバ16)との間で必要なデータやコマンドを送受信するための通信プログラムなどが記録される。また、RAMは、ワークメモリやバッファメモリとして用いられる。
Although not shown, the
モータ制御ボード86は、たとえばDSPで構成され、各腕や首関節および眼球部などの各軸モータの駆動を制御する。すなわち、モータ制御ボード86は、プロセッサ80からの制御データを受け、右眼球部68Rの2軸のそれぞれの角度を制御する2つのモータ(図4では、まとめて「右眼球モータ92」と示す。)の回転角度を制御する。同様に、モータ制御ボード86は、プロセッサ80からの制御データを受け、左眼球部68Lの2軸のそれぞれの角度を制御する2つのモータ(図4では、まとめて「左眼球モータ94」と示す。)の回転角度を制御する。
The
また、モータ制御ボード86は、プロセッサ80からの制御データを受け、肩関節48Rの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Rの角度を制御する1つのモータとの計4つのモータ(図4では、まとめて「右腕モータ96」と示す。)の回転角度を制御する。同様に、モータ制御ボード86は、プロセッサ80からの制御データを受け、肩関節48Lの直交する3軸のそれぞれの角度を制御する3つのモータと肘関節52Lの角度を制御する1つのモータとの計4つのモータ(図4では、まとめて「左腕モータ98」と示す。)の回転角度を制御する。
The
さらに、モータ制御ボード86は、プロセッサ80からの制御データを受け、首関節60の直交する3軸のそれぞれの角度を制御する3つのモータ(図4では、まとめて「頭部モータ110」と示す。)の回転角度を制御する。そして、モータ制御ボード86は、プロセッサ80からの制御データを受け、右車輪32aを駆動する右車輪モータ36a、左車輪32bを駆動する左車輪モータ36bの回転角度を、それぞれ個別に制御する。なお、この実施例では、車輪モータ36を除くモータは、制御を簡素化するためにステッピングモータ(すなわち、パルスモータ)を用いる。ただし、車輪モータ36と同様に直流モータを用いるようにしてもよい。また、ロボット18の身体部位を駆動するアクチュエータは、電流を動力源とするモータに限らず適宜変更されてもよい。たとえば、他の実施例では、エアアクチュエータなどが適用されてもよい。
Further, the
センサ入力/出力ボード88は、モータ制御ボード86と同様に、DSPで構成され、各センサからの信号を取り込んでプロセッサ80に与える。すなわち、赤外線距離センサ40のそれぞれからの反射時間に関するデータがこのセンサ入力/出力ボード88を通じてプロセッサ80に入力される。また、全方位カメラ46からの映像信号が、必要に応じてセンサ入力/出力ボード88で所定の処理を施してからプロセッサ80に入力される。眼カメラ70からの映像信号も、同様に、プロセッサ80に入力される。また、上述した複数の接触センサ58(図4では、まとめて「接触センサ58」と示す。)からの信号がセンサ入力/出力ボード88を介してプロセッサ80に与えられる。
Similar to the
また、センサ入力/出力ボード88には、右車輪32aの回転速度(車輪速)を検出する右車輪速センサ112a、左車輪32bの回転速度を検出する左車輪速センサ112bがさらに接続される。そして、右車輪速センサ112aおよび左車輪速センサ112bからのそれぞれから、一定時間における右車輪32aおよび左車輪32bの回転数(車輪速)に関するデータが、センサ入力/出力ボート88を通じて、プロセッサ80に入力される。
The sensor input /
音声入力/出力ボード90も、他の入力/出力ボードと同様にDSPで構成され、プロセッサ80から与えられる音声合成データに従った音声または声がスピーカ64から出力される。また、マイク66からの音声入力が、音声入力/出力ボード90を介してプロセッサ80に与えられる。
The voice input /
また、プロセッサ80は、バス82を介して通信LANボード114に接続される。通信LANボード114は、たとえばDSPで構成され、プロセッサ80から与えられた送信データを無線通信装置116に与え、無線通信装置116は送信データを、ネットワーク400を介して外部コンピュータ(追跡サーバ10、遠隔操作装置14、計画サーバ16)に送信する。また、通信LANボード114は、無線通信装置116を介してデータを受信し、受信したデータをプロセッサ80に与える。たとえば、送信データとしては、全方位カメラ46および目カメラ70によって撮影された周囲の映像データや、状態データであったりする。
The
ここで、状態データに含まれる位置データは、右車輪速センサ112aおよび左車輪速センサ112bが出力する車輪32の回転数に基づいて求められる。また、状態データに含まれる角度データは、右車輪速センサ112aおよび左車輪速度センサ112bの回転比率に基づいて求められる。さらに、状態データに含まれる速度データは、右車輪速センサ112aが出力する車輪速データおよび左車輪速センサ112bが出力する車輪速データから構成される。つまり、ロボット18は、状態データに含まれる速度データとして、右車輪32aの車輪速データおよび左車輪32bの車輪速データを追跡サーバ10に送信する。そして、追跡サーバ10では、受信した左右の車輪速データに基づいて、ロボット18の速度を算出する。
Here, the position data included in the state data is obtained based on the rotation speed of the wheel 32 output from the right
次にLRF12について詳細に説明する。図5を参照して、LRF12の計測範囲は、半径R(R≒8m)の半円形状(扇形)で示される。つまり、LRF12は、その正面方向を中心とした場合に、左右90°の方向を所定の距離(R)以内で計測可能である。
Next, the
また、使用しているレーザーは、日本工業規格 JIS C 6802「レーザー製品の安全基準」におけるクラス1レーザーであり、人の眼に対して影響を及ぼさない安全なレベルである。また、この実施例では、LRF12のサンプリングレートを37Hzとした。これは、移動したり、停止したりする実体の位置を連続して検出するためである。
The laser used is a
さらに、先述したように、LRF12は、様々な場所に配置される。具体的には、LRF12a−12fの各々は、計測領域が重なるように配置され、図示は省略するが、床面から約90cmの高さに固定される。この高さは、人間の胴体と腕(両腕)とを検出可能とするためであり、たとえば、日本人の成人の平均身長から算出される。したがって、遠隔操作装置14を設ける場所(地域ないし国)や人間の年齢ないし年代(たとえば、子供,大人)に応じて、LRF12を固定する高さを適宜変更するようにしてよい。なお、本実施例では、設定されるLRF12は6台としたが、2台以上であれば、任意の台数のLRF12を設置してもよい。
Further, as described above, the
このような構成の追跡サーバ10では、プロセッサ20がLRF12からの出力(距離データ)に基づいて、パーティクルフィルタを用いて、人間およびロボット18の現在位置の変化を推定する。なお、本実施例では、人間とロボット18とでは速度や形状が異なるため、人形状のモデル(人形状モデル)またはロボット形状のモデル(ロボット形状モデル)を採用して、パーティクルフィルタの尤度の計算量を軽減している。
In the tracking
たとえば、LRF12によってスキャンされると、人間などの実体が存在しない可視領域(open)、実体が存在する陰領域(shadow)および実体のエッジ(edge)が検出される。
For example, when scanned by the
ここで、空間に均等にばら撒くパーティクルを識別する変数をmとし、パーティクルの状態(位置と速度)をXとし、或る時刻tの状態Xtのときに観測される観測値ベクトルをZtとしたとき、各RLF12の尤度pi(Zt|Xt[m])は数1に従って算出される。ただし、[m]はパーティクルを個別に識別するための添え字である。また、表現の都合上、数式以外では[m]を上付きにしないで記載する。以下、同様である。
Here, a variable that identifies a uniformly rose sprinkle particles in space and m, particle state (position and velocity) and X, the observed value vector that is observed in the state Xt certain time t and Z t Then, the likelihood p i (Z t | X t [m]) of each
[数1]
[Equation 1]
つまり、尤度pi(Zt|Xt[m])は、可視領域では一定値(popen)とし、陰領域では一定値(pshadow)とエッジの尤度pedge(Zt|Xt[m])との和となる。 That is, the likelihood p i (Z t | X t [m]) is a constant value (p open ) in the visible region, and the constant value (p shadow ) and the edge likelihood p edge (Z t | X) in the shadow region. t [m]).
さらに、LRF12の数をnsensorsとしたとき、数1で求めた各LRF12の尤度を統合した統合尤度p(Zt|Xt[m])は、数2に従って算出される。なお、陰領域に2人の人間が存在することがあるので、2つのパーティクルが同じ実体を追跡しないようにするために、各RLF12の尤度pi(Zt|Xt[m])から補正値Pcollocationが減算される。
Further, when the number of LRFs 12 is n sensors , the integrated likelihood p (Z t | X t [m]) obtained by integrating the likelihoods of the
[数2]
[Equation 2]
このようにして求められた統合尤度p(Zt|Xt[m])に基づいて、各パーティクルが更新され、人間またはロボット18の現在位置の変化が推定される。そして、推定された現在位置の変化に基づいて、ロボット18または人間の位置データを求め、その位置データがバッファに記憶される。また、本実施例では、バッファに記憶された全ての位置データをまとめて「位置履歴データ」と言う。
Based on the integrated likelihood p (Z t | X t [m]) obtained in this way, each particle is updated, and a change in the current position of the human or the
なお、パーティクルフィルタを利用した人物追跡については、特開2008−6105号公報に詳細が開示されている。 Details of person tracking using a particle filter are disclosed in Japanese Patent Laid-Open No. 2008-6105.
図6は、LRF12a−12fが設置された或る環境の地図を示す図解図である。図6を参照して、地図が表す場所は或るショッピングモールである。LRF12a,12c,12dの3台は地図の上側の位置に対応して設置されており、LRF12b,12e,12fの3台は地図の下側の位置に対応して設定されている。そして、2台以上のLRF12の計測領域が重なる領域は、検出領域Fとして示され、図6では斜線の領域である。なお、検出領域Fにおける位置は、図6における左下を原点とする平面座標系で示される。
FIG. 6 is an illustrative view showing a map of a certain environment where the
検出領域F(空間)内では、ロボット18a、ロボット18b、ロボット18cおよび人間は、実体Ea、実体Eb、実体Ecおよび実体Ed(区別しない場合は「実体E」と言う。)として検出される。また、図6では、各実体Eに対応する位置履歴データに基づいて、移動軌跡Mを示す。つまり、実体Eaの位置履歴データは移動軌跡Maで示され、実体Ebの位置履歴データは移動軌跡Mbで示され、実体Ecの位置履歴データは移動軌跡Mcで示され、実体Edの位置履歴データは移動軌跡Mdで示される。
In the detection area F (space), the
図7は追跡サーバ10によって検出された複数の位置データ、つまり位置履歴データを示す図解図である。図7を参照して、各位置データは、位置を検出した時刻(T)および検出領域Fの平面座標を示す数値(X,Y)から構成される。そして、各位置履歴データは、実体E毎に分けて記憶される。たとえば、追跡サーバ10のメモリ22のバッファには、実体Eaの位置履歴データ、実体Ebの位置履歴データ、実体Ecの位置履歴データおよび実体Edの位置履歴データが記憶される。
FIG. 7 is an illustrative view showing a plurality of position data detected by the tracking
図8は追跡サーバ10が受信した複数の状態データ、つまり状態履歴データを示す図解図である。図8を参照して、各状態データは、受信した時刻(t)、検出領域Fにおける平面座標を示す数値(x,y)、ロボット18の向きを示す角度(d)、ロボット18の右車輪32aの速度(rv)およびロボット18の左車輪32bの速度(lv)から構成される。そして、位置履歴データと同様に、各状態履歴データは、ロボット18毎に分けて記憶される。たとえば、メモリ22のバッファには、ロボット18aの状態履歴データ、ロボット18bの状態履歴データおよびロボット18cの状態履歴データが記憶される。
FIG. 8 is an illustrative view showing a plurality of state data received by the tracking
なお、位置データおよび状態データは、一定時間(たとえば、360秒)が経つと、古いデータから削除(上書き)される。つまり、位置履歴データおよび状態履歴データがメモリ22のメモリ容量を圧迫することは無い。
Note that the position data and the state data are deleted (overwritten) from the old data after a certain period of time (for example, 360 seconds). That is, the position history data and the state history data do not press the memory capacity of the
また、上記した平面座標を示す数値(X,Y)および(x,y)において、1座標の変化は1cmの距離変化に対応する。たとえば、実体Eの位置データが(X,Y)である場合に、実体Eが右に1cm移動すると、実体Eの座標が(X+1,Y)に変化する。 In the numerical values (X, Y) and (x, y) indicating the plane coordinates described above, a change in one coordinate corresponds to a distance change of 1 cm. For example, if the position data of the entity E is (X, Y) and the entity E moves 1 cm to the right, the coordinates of the entity E change to (X + 1, Y).
図9は、各ロボット18のRTMから構成されたRTMデータの図解図である。この実施例では、追跡サーバ10が状態データを受信するために各ロボット18との通信を確立すると、ロボット18毎にRTMを作成する。そして、各ロボット18に対して送信される補正データがこのRTMに基づいて決められる。そのため、各RTMは現在のロボット18の位置、角度および速度の値を含む。
FIG. 9 is an illustrative view of RTM data composed of the RTM of each
図9を参照して、RMTデータは、各ロボット18に割り振られたロボットIDに対応づけて記憶される。たとえば、ロボットIDが「001」であるロボット18aのRTMは、(RX1,RY1)が位置を示し、RD1が角度を示し、RV1が速度を示す。
Referring to FIG. 9, RMT data is stored in association with the robot ID assigned to each
ここで、追跡サーバ10がロボット18から状態データを受信すると、そのロボット18に対応するRTMの位置、角度および速度が更新される。たとえば、ロボット18aから受信した状態データにおいて、位置が(x1,y1)、角度がd1、速度がrv1,lv1であれば、ロボットID「001」のRTMにおいて、(RX1,RY1),RD1,RV1が、受信した状態データの数値に更新される。なお、速度RV1は、rv1およびrv1に基づいて算出された速度に更新される。
Here, when the tracking
ところが、ロボット18の車輪32は、ロボット18が停止したり、曲がったりする度に、地面に対して僅かに滑るため、車輪32の回転から求める位置および角度と、実際の位置および角度とに誤差が生じる。そして、ロボット18が移動するにつれて、その誤差は増大するため、ロボット18が移動するにつれて、状態データに含まれる位置データおよび角度データの信頼性は低くなる。そのため、ロボット18が出力する状態データだけに基づいて、そのロボット18に対するRTMを更新すると、RTMが正しいロボット18の状態(位置、角度および速度)を示せなくなってしまう。
However, the wheel 32 of the
そこで、本実施例では、検出領域F内で検出された実体Eと検出領域F内を移動するロボット18とを関連付け、LRF12を利用して検出された実体Eの位置データおよび関連付けられたロボット18の状態データに基づいてRTMを更新する。これにより、各RTMは、ロボット18の正しい状態を示すことができるようになる。
Therefore, in this embodiment, the entity E detected in the detection region F is associated with the
まず、ロボット18と実体Eとの関連付けについて説明する。本願発明では、実体Eおよびロボット18の1秒毎の移動距離、つまり速度に着目する。なお、各実体Eおよびロボット18aの速度は、三平方の定理に基づいて、或る時刻の座標と1秒後の座標とから距離(mm)を求めることで、速度(mm/s)を求めることができる。
First, the association between the
図10の運動履歴グラフは、縦軸に距離(mm)をとり、横軸に時間(秒:s)をとるグラフである。そして、運動履歴グラフは、実体Ea−実体Edの15秒間の速度の変化と、ロボット18aの速度の変化とを示す。この運動履歴グラフにおいて、実体Ea、実体Eb、実体Ecおよび実体Edの速度に対応するグラフは、実線La、実線Lb、実線Lcおよび実線Ldで示される。また、ロボット18aの速度に対応するグラフは点線DLで示される。
The exercise history graph of FIG. 10 is a graph in which distance (mm) is taken on the vertical axis and time (seconds: s) is taken on the horizontal axis. The exercise history graph shows a change in the speed of the entity Ea-entity Ed for 15 seconds and a change in the speed of the
たとえば、運動履歴グラフからは、点線DL(ロボット18aの速度)の変化は、実線La(実体Eaの速度)、実線Lc(実体Eaの速度)および実線Ld(実体Eaの速度)の変化とは異なっているが、実線Lb(実体Ebの速度)の変化とは類似していることが分かる。
For example, from the motion history graph, changes in dotted line DL (speed of
そこで、ロボット18aの速度と各実体Eの速度とのRMS(Root Mean Square:二乗平均)誤差を、以下の数3に示す式に基づいて求めると、図11に示すRMS誤差グラフを求めることができる。なお、本実施例におけるRMS誤差は、RMS速度差と言う場合もある。
Therefore, when an RMS (Root Mean Square) error between the speed of the
[数3]
[Equation 3]
図11を参照して、RMS誤差グラフは、縦軸がRMS誤差、横軸が実体IDのグラフであり、各RMS誤差は数3のRTを15(秒)として算出されている。まず、RMS誤差グラフにおいて、実体Ea、実体Ecおよび実体EdのRMS誤差に着目すると、実体IDが「001」の実体Eaとロボット18aとのRMS誤差は330mmである。また、実体IDが「003」の実体Ecとロボット18aとのRMS誤差は500mmであり、実体IDが「004」の実体Edとロボット18aとのRMS誤差は600mmである。これに対して、実体IDが「002」の実体Ebとロボット18aとのRMS誤差は30mmである。つまり、速度の変化が類似するロボット18aと実体EbとのRMS誤差は、他の実体Ea,Ec,EdとのRMS誤差に比べて小さいことが分かる。
Referring to FIG. 11, the RMS error graph is a graph in which the vertical axis represents the RMS error and the horizontal axis represents the entity ID, and each RMS error is calculated with RT of
そのため、本実施例では、或るロボット18に対して、RMS誤差、つまりRMS速度差(第1速度差)が350mm/s(第1所定速度)以下であり、かつ現在の速度差が350mm/s以下の実体Eが1つだけであれば、或るロボット18とその実体Eとを関連付ける。
Therefore, in this embodiment, an RMS error, that is, an RMS speed difference (first speed difference) is 350 mm / s (first predetermined speed) or less and a current speed difference is 350 mm / If there is only one entity E below s, a
たとえば、図11を参照して、ロボット18aにおいて、RMS速度差が350mm/s以下の実体Eは、実体Eaおよび実体Ebである。さらに、図10を参照して、15秒の時点を現在の速度として考えると、現在の速度差が350mm/s以下の実体Eは、実体Ebだけである。そのため、このような場合にはロボット18aと実体Ebとが関連付けられる。そして、プロセッサ20は、各ロボット18に対して上述した判断を行うことで、他のロボット18と他の実体Eとを関連付ける。
For example, referring to FIG. 11, in
また、プロセッサ20が上述した判断を実行する際には、図12に示す追跡実体リストを用いる。図12を参照して、追跡実体リストは、実体IDおよびフラグの列から構成されている。そして、フラグの列には、先述した条件を満たしていれば「1」が設定され、満たしていなければ「0」が設定される。
When the
たとえば、プロセッサ20は、ロボット18aに対して、実体E毎に条件を満たすか否かを判断し、その判断結果をフラグの列に記録する。そして、全ての実体Eに対して判断が終了すれば、プロセッサ20は、追跡実体リストのフラグの列において「1」が設定された実体IDが1つだけであるか否かを判断する。このとき、フラグが「1」に設定された実体IDが「002」、つまり実体Ebだけであれば、プロセッサ20はロボット18aと実体Ebとを関連付ける。
For example, the
また、プロセッサ20は、関連付けた結果を図13に示す関連付テーブルに記録する。関連付けテーブルは、ロボットIDを示す列と実体IDを示す列とから構成される。たとえば、プロセッサ20は、関連付テーブルにおいて、ロボット18aのロボットID「001」に対して、実体Ebの実体ID「002」を設定する。
Further, the
本実施例では、このような処理を経てロボット18と実体Eとを関連付ける処理を、「グローバル関連付処理」と言う。なお、上記説明では、簡単のためにRTを15としてRSM速度差を算出していたが、実際のグローバル関連付処理では、RTが300に設定される。
In the present embodiment, the process of associating the
次に、RTMの更新について説明する。RTMの位置は、関連付けられた実体の位置データに基づいて更新される。たとえば、ロボット18aに関連付けられた実体Ebの最新の位置データが、(30,40)であれば、ロボット18aに対応するRTMの位置は(30,40)に更新される。
Next, RTM update will be described. The location of the RTM is updated based on the location data of the associated entity. For example, if the latest position data of the entity Eb associated with the
また、RTMの角度は、実体Eの位置データおよびロボット18の状態データから、カルマンフィルタを利用して次の位置で推定される角度(推定角度)および推定角度誤差量を求めることで、更新できる。具体的には、図14を参照して、受信したロボット18の状態データから次の位置を予測し、予測された位置(予測位置)と前回位置とから予測角度を計算する。また、追跡サーバ10から現在の位置を取得し、前回位置と現在位置とから検出角度を計算する。そして、検出角度および予測角度から、観測角度Zkを算出(観測)する。ただし、「Zk」が下付き添え字である場合については、表現の都合上、数式以外では「k」を「Z」の添え字とせず、まとめて下付きの添え字にして記載する。以下、同様である。
The angle of the RTM can be updated by obtaining an angle (estimated angle) and an estimated angle error amount estimated at the next position using the Kalman filter from the position data of the entity E and the state data of the
さらに、追跡サーバ10の観測には常に位置誤差量σ2 poが含まれている。そのため、観測角度誤差量σ2 Zkは、数4に従って近似することができる。
Furthermore, the position error amount σ 2 po is always included in the observation of the tracking
[数4]
[Equation 4]
ここで、数4において、変位量dsは位置履歴データにおける前回位置から現在位置までの距離であり、角度誤差量σ2 Zkはその変位量dsが大きい場合に小さくなる。つまり、実体Eの移動距離が大きいほど、角度誤差量σ2 Zkが小さくなる。
Here, in
また、前回の推定角度誤差量σ2 θ-kおよび角度誤差量σ2 Zkから、カルマンゲインKkを数5に従って算出する。そして、そのカルマンゲインKk、観測角度Zkおよび前回の推定角度θ− kを、数6に従う式に代入することで、推定角度θ^ kを算出できる。 Further, the Kalman gain K k is calculated from the previous estimated angle error amount σ 2 θ-k and angle error amount σ 2 Zk according to Equation 5. Then, the Kalman gain K k, the observation angle Z k and the previous estimated angle theta - the k, by substituting the equation according to Equation 6, it calculates the estimated angle theta ^ k.
ただし、「θ−k」が下付きの添え字である場合については、表現の都合上、数式以外では「−」を「θ」の添え字とせず、まとめて下付きの添え字にして記載する。さらに、添え字「^」は、数式では「θ」の上に付されるが、表現の都合上、数式以外では「θ」の上付き添え字として記載する。以下、同様である。 However, when “θ − k” is a subscript, for reasons of expression, “−” is not a subscript of “θ” except for mathematical expressions, and is described as a subscript. To do. Further, the subscript “^” is added above “θ” in mathematical expressions, but for convenience of expression, it is described as a superscript “θ” except for mathematical expressions. The same applies hereinafter.
[数5]
[Equation 5]
[数6]
[Equation 6]
さらに、カルマンゲインKk、前回の推定角度θ− kおよび時間毎のプロセスノイズσ2 prを数7に従う式に代入することで、推定角度誤差量σ2 θ^kを算出することができる。なお、本実施例ではノイズσ2 prを0.0001ラジアンとして計算する。
Furthermore, the Kalman gain K k, the previous estimated angle theta - By substituting the equation according to k and the
[数7]
[Equation 7]
このようにして、推定角度θ^ kが算出されると、現在のRTMの角度との角度差を算出して、RTMの角度を推定角度に補正し、算出した角度差を補正角度データとして記憶する。 When the estimated angle θ ^ k is calculated in this way, the angle difference from the current RTM angle is calculated, the RTM angle is corrected to the estimated angle, and the calculated angle difference is stored as corrected angle data. To do.
なお、前回値が存在しない場合、たとえば1回目の角度補正処理では、前回の推定角度θ− kおよび推定角度誤差量σ2 θ^kの代わりに所定値を、数5−7の数式に代入して推定角度θ^ kおよび推定角度誤差量σ2 θ^kを算出する。また、所定値は、「0」であってもよいし、ロボット18の初期状態に応じた値であってもよい。
Incidentally, if the previous value does not exist, for example, by the first angle correction process, the previous estimated angle theta - the predetermined value in place of k and the estimated angular error amount sigma 2 theta ^ k, the formula of several 5-7 substituting Then, the estimated angle θ ^ k and the estimated angle error amount σ 2 θ ^ k are calculated. Further, the predetermined value may be “0” or a value corresponding to the initial state of the
そして、本実施例では、ロボット18から状態データを受信(取得)したときに、追跡サーバ10はロボット18に対して記憶した補正角度データとRTMが示す位置データを、補正データとしてロボット18に送信する。そして、ロボット18は、受信した位置データおよび補正角度データに従って、自身の位置および角度を補正する。これにより、追跡サーバ10は、ロボット18を、検出領域F内において自己位置同定することができる。
In this embodiment, when the status data is received (acquired) from the
このように、ロボット自己位置同定システム100は、位置だけでなく、ロボット18の角度も補正することで、自己位置同定の精度を高めることができる。また、本実施例では、カルマンフィルタを用いて、推定角度θ^ kを求めることができる。
Thus, the robot self-
なお、追跡サーバ10は、算出した推定角度誤差量σ2 θ^kを補正精度として記憶して置き、この補正精度が低い場合、つまり推定角度誤差量σ2 θ^kが大きい場合には、角度の補正データをロボット18に送信しない。つまり、ロボット18には、位置を補正するための補正データのみが送信される。このように、推定角度誤差量σ2 θ^kを補正精度として利用することで、角度の補正が可能であるかを判断できるようになる。
The tracking
また、本実施例では、ロボット18と実体Eとを関連付けた後に、ローカル追跡エラーまたはグローバル追跡エラーが生じることが有る。ローカル追跡エラーは、追跡サーバ10に問題が起きたり、実体Eを追跡するパーティクルフィルタが少しの間、消えてしまったりしたときに生じる。また、グローバル追跡エラーは、特定の環境下で、ロボット18と実体Eとが誤って関連付けられたときに生じる。
In this embodiment, a local tracking error or a global tracking error may occur after associating the
そこで、本実施例では、ローカル追跡エラーおよびグローバル追跡エラーを除去するために、次の3つの条件のうち1つでも満たされる場合に、1組のロボット18と実体Eとの関連付けを解除する。すなわち、3つの条件は、(1)関連付けられた実体Eがすでに追跡されていない、(2)ロボット18と関連付けられた実体Eとが離れている(たとえば、2m)、(3)ロボット18の速度と関連付けられた実体Eの速度が異なる(たとえば、0.35mm/s)である。
Therefore, in this embodiment, in order to eliminate the local tracking error and the global tracking error, the association between the set of
つまり、ロボット自己位置同定システム100は、エラーの要因となるロボット18と実体Eとの関連付けを解除できる。
That is, the robot self-
そして、ロボット18と実体との関連付けが解除されて、所定時間(たとえば、5秒)以内であれば、追跡サーバ10は「ローカル関連付処理」を実行して、関連付けが解除されたロボット18を、他の実体Eと関連付ける。
Then, if the association between the
ローカル関連付処理は、RMS速度差(第2速度差)が350mm/s(第2所定速度)以下であり、かつ現在の速度差が350mm/s以下であり、かつロボット18と実体Eとの距離が1m(所定距離)以下の実体Eが複数存在していれば、ロボット18と最も近い実体Eが、ロボット18と関連付けられる。
In the local association process, the RMS speed difference (second speed difference) is 350 mm / s (second predetermined speed) or less, the current speed difference is 350 mm / s or less, and the
また、ローカル関連付処理は、数3に示すRTを5(秒)として計算するため、先述したグローバル関連付け処理に比べて処理の速度が速い。以下、関連付けの解除およびローカル関連付け処理について、具体例を示して説明する。
Further, since the local association processing calculates RT shown in
図15(A)は、人間とロボット18との位置関係を示す図解図である。また、図15(A)に示す状態では、グローバル関連付処理が実行されていない。検出領域F内において、ロボット18は人間に対してコミュニケーション行動を行っている。このとき、追跡サーバ10は、(200,300)の位置でロボット18を検出し、(250,300)の位置で人間を検出する。そして、ロボット18は、位置データ(240,300)および速度データ(0mm/s)を含む、状態データを出力する。
FIG. 15A is an illustrative view showing a positional relationship between a human and the
この状態でグローバル関連付処理が実行されると、図15(B)に示すように、人間に対応する実体Eとロボット18とが誤って関連付けられる。つまり、コミュニケーション行動が行われていれば、ロボット18と人間とは動かないため、停止している人間またはロボット18が他に存在しなければ、図15(B)に示すように、人間に対応する実体Eとロボット18とが誤って関連付けられる。そして、ロボット18におけるRTMの位置は、人間の位置(250,300)に補正される。
When the global association process is executed in this state, as shown in FIG. 15B, the entity E corresponding to the human and the
ところが、コミュニケーション行動が終了して、人間がロボット18の前から立ち去ると、図15(C)に示すような状態になる。つまり、ロボット18が出力する状態データは位置データが(250,300)となるが、人間に対応する実体Eの位置データが(500,300)となり、RTMの位置と人間の位置とで、距離が250cm(=500−250)離れていることなる。このとき、上記した関連付け解除の条件(2)を満たすことになるため、人間に対応する実体Eとロボット18との関連付けは解除される。
However, when the communication action is finished and the person leaves from the front of the
そして、関連付けが解除され、所定時間以内であれば、ローカル関連付処理が実行される。たとえば、図15(C)に示す状態では、ロボット18に対応する実体Eがローカル関連付けの条件(1)−(3)を満たすため、その実体Eとロボット18とが正しく関連付けられる。このように、関連付けが解除されて間もなければ、ロボット18と実体Eとを容易に関連付け直すことができる。
Then, if the association is released and within a predetermined time, the local association process is executed. For example, in the state shown in FIG. 15C, the entity E corresponding to the
また、ローカル関連付処理を実行しても、5秒以内にロボット18と実体Eとを関連付けられなければ、グローバル関連付処理が実行される。つまり、関連付けが解除されて所定時間が経過したとしても、ロボット18と実体Eとを関連付け直すことができる。
Further, even if the local association process is executed, if the
図16は、図2に示すメモリ22のメモリマップ300の一例を示す図解図である。図16に示すように、メモリ22はプログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、追跡サーバ10を動作させるためのプログラムとして、通信プログラム312および補正プログラム314などが記憶される。なお、通信プログラム312および補正プログラム314などの処理によって、ローカライゼーション機能が有効になる。
FIG. 16 is an illustrative view showing one example of a
通信プログラム312は、ロボット18から状態データを受信し、補正データをロボット18に送信するためのプログラムである。補正プログラム314は、RTMデータを補正するためのプログラムであり、追跡プログラム314a、関連付解除プログラム314b、関連付プログラム314cおよび角度補正プログラム314dのサブルーチンを含む。
The
追跡プログラム314aは、パーティクルフィルタの尤度を更新し、実体Eの位置を検出するためのプログラムである。関連付解除プログラム314bは、ロボット18と実体Eとの関連付けを解除するためのプログラムである。関連付プログラム314cは、ロボット18と実体Eとを関連付けるためのプログラムであり、さらにローカル関連付プログラム316およびグローバル関連付プログラム318のサブルーチンを含む。そして、角度補正プログラム314dは、上述したカルマンフィルタによって角度を推定し、角度の補正データを求めるためのプログラムである。
The
なお、図示は省略するが、追跡サーバ10を動作させるためのプログラムとしては、関連付けなどが解除されたときに時間をカウントするプログラム、追跡サーバ10とロボット18との時刻を同期するためのプログラムなどを含む。
Although not shown in the drawings, the program for operating the tracking
また、図17を参照して、データ記憶領域304には、LRFバッファ330、位置履歴バッファ332、状態履歴バッファ334、追跡実体リストバッファ336、補正角度バッファ338、補正精度バッファ340および前回値バッファ342が設けられる。また、データ記憶領域340には、関連付テーブルデータ344およびRTMデータ346が記憶されるとともに、初回フラグ348、初期起動カウンタ350および解除カウンタ352も設けられる。
Referring to FIG. 17, the
LRFバッファ330は、各LRF12によって計測された距離データが一時記憶されるバッファである。位置履歴バッファ332は、図7に示す位置履歴データが一時的に記憶されるバッファである。状態履歴バッファ334は、図8に示す状態履歴データが一時的に記憶されるバッファである。追跡実体リストバッファ336は、図12に示す追跡実体リストのデータが一時的に記憶されるバッファである。補正角度バッファ338は、推定角度θ^ kとRTMの角度との角度差が、補正角度データとして一時的に記憶されるバッファである。補正精度バッファ340は、推定角度誤差量σ2 θ^kを補正精度データとして一時的に記憶するためのバッファである。前回値バッファ342は、角度補正処理で算出された推定角度θ^ kおよび推定角度誤差量σ2 θ^kを、前回の推定角度θ− kおよび推定角度誤差量σ2 θ^kとして一時的に記憶するためのバッファである。
The
関連付けテーブルデータ344は、図13に示す関連付テーブルのデータである。RTMデータ346は、図9に示すように、各ロボット18に対応する複数のRTMから構成されるデータである。
The
初回フラグ348は、追跡サーバ10が実行されてから一定時間が経過したか否かを判断するためのフラグである。たとえば初回フラグ348は1ビットのレジスタで構成される。初回フラグ348がオン(成立)されると、レジスタにはデータ値「1」が設定される。一方、初回フラグ348がオフ(不成立)されると、レジスタにはデータ値「0」が設定される。また、初回フラグ348は、追跡サーバ10が起動されるとオンになり、追跡サーバ10が起動してから一定時間が経過するとオフになる。
The
初期起動カウンタ350は、追跡サーバ10が起動してから一定時間が経過するまで時間をカウントするためのカウンタである。解除カウンタ352は、ロボット18と実体とEとの関連付けが解除されてからの時間をカウントするためのカウンタである。
The
なお、図示は省略するが、データ記憶領域304には、遠隔操作装置14および計画サーバ16とのデータ通信の結果を一時的に記憶するバッファや、カルマンフィルタの計算結果が一時的に記憶されるバッファなどが設けられると共に、追跡サーバ10の動作に必要な他のカウンタやフラグなども設けられる。
Although not shown, the
以下、追跡サーバ10によって実行される本願発明のフロー図について説明する。また、図18および図19のフロー図は、通信プログラム312による処理を示し、図20のフロー図は補正プログラム314による処理を示す。また、図21および図22のフロー図は追跡プログラム314aによる処理を示し、図23のフロー図は関連付解除プログラム314bによる処理を示す。さらに、図24のフロー図は関連付プログラム314cによる処理を示し、図25のフロー図はローカル関連付プログラム316による処理を示し、図26のフロー図はグローバル関連付プログラム318による処理を示し、図27のフロー図は角度補正プログラム314dによる処理を示す。
Hereinafter, a flowchart of the present invention executed by the tracking
図18を参照して、たとえば、追跡サーバ10の電源がオンにされると、通信処理が実行される。そして、プロセッサ20は、ステップS1では各ロボット18との通信を確立する。たとえば、検出領域F内にロボット18a−18cが存在していれば、それらのロボット18との通信を確立する。続いて、ステップS3では、通信を確立しているロボット18の数を変数Rnに設定する。たとえば、3台のロボット18(18a,18b,18c)との通信が確立されていれば、変数Rnには「3」が設定される。なお、変数Rnは、通信が確立されているロボット18の総数を示す変数として定義されている。続いて、ステップS5では、Rn個のRTMを作成する。たとえば、変数Rnに「3」が設定されていれば、3つのRTMを作成する。つまり、RTMデータ346には、作成された3つのRTMが含まれる。
Referring to FIG. 18, for example, when the tracking
続いて、図19を参照して、ステップS7では、ロボット18が出力した状態データを取得する。たとえば、ロボット18aが状態データを発信していれば、その状態データを受信する。続いて、ステップS9では、ロボットIDに基づいて状態データをバッファに記憶する。たとえば、ロボットIDが「001」である、ロボット18aの状態データを取得した場合、その状態データを状態履歴バッファ334に記憶する。また、ロボット18aの状態データは、ロボット18aの状態履歴データ(図8参照)に追加される。なお、ステップS9の処理を実行するプロセッサ20は、状態データ記憶手段として機能する。
Subsequently, referring to FIG. 19, in step S7, the state data output by the
続いて、ステップS11では、補正できるか否かを判断する。つまり、ロボット18と実体Eとが関連付けられているか否かを判断する。また、本実施例では、追跡サーバ10は起動してから一定時間が経過しなければ、ロボット18と実体Eとをまだ関連付けることができない。そのため、ステップS11では、起動してから一定時間が経過したことを示す初回フラグ348がオフであるか否かを判断する。ステップS11で“NO”であれば、つまり追跡サーバ10が起動してから一定時間が経過していなければ、ステップS17に進む。
Subsequently, in step S11, it is determined whether or not correction is possible. That is, it is determined whether the
また、ステップS11で“YES”であれば、つまり追跡サーバ10が起動してから一定時間が経過し、ロボット18と実体Eとが関連付けられていれば、ステップS13で補正精度が高いか否かを判断する。つまり、補正精度バッファ340に記憶された推定角度誤差量σ2 θ^kが閾値(たとえば、2度)以下であるか否かを判断する。ここで、ステップS13で“NO”であれば、つまり補正精度バッファ340に一時記憶された推定角度誤差量σ2 θ^kが閾値以下でなければ、ステップS15でRTMの位置データをロボットIDに基づいて送信する。たとえば、ロボットID「001」のロボット18aから状態データを取得していれば、同じロボットIDのロボット18aに対して、RTMの位置データを送信する。続いて、ステップS17では、ロボットIDに基づいてRTMを更新する。つまり、取得された状態データに含まれる角度データに基づいて、RTMの角度および速度を更新する。たとえば、ロボット18aの状態データにおいて、角度データが30度であれば、ロボット18aのRTMの角度が30度に更新される。
If “YES” in the step S11, that is, if a predetermined time has elapsed since the tracking
また、ステップS13で“YES”であれば、つまり補正精度バッファ340に一時記憶された推定角度誤差量σ2 θ^kが閾値以下であれば、ステップS19でRTMの位置データおよび補正角度データをロボットIDに基づいて送信する。たとえば、状態データを受信したロボット18のロボットIDに基づいて、RTMの位置データおよび補正角度データが送信される。なお、ロボット18に送信される補正角度データは、補正角度バッファ338から読み出される。
If “YES” in the step S13, that is, if the estimated angle error amount σ 2 θ ^ k temporarily stored in the
続いて、ステップS21では、取得した角度および補正角度データから現在の角度を計算する。たとえば、状態データの角度データが25度であり、補正角度データが−2度であれば、現在の角度が23度(=25−2)になる。そして、ステップS17では、RTMの角度はステップS21で計算された角度に更新される。たとえば、RTMの角度が30度であれば、ステップS21で算出された23度に更新される。 Subsequently, in step S21, the current angle is calculated from the acquired angle and correction angle data. For example, if the angle data of the state data is 25 degrees and the correction angle data is −2 degrees, the current angle is 23 degrees (= 25−2). In step S17, the RTM angle is updated to the angle calculated in step S21. For example, if the RTM angle is 30 degrees, the angle is updated to 23 degrees calculated in step S21.
なお、ステップS15またはステップS19の処理を実行するプロセッサ20は、送信手段として機能する。また、特にステップS15の処理を実行するプロセッサ20は第2送信手段として機能し、ステップS19の処理を実行するプロセッサ20は第1送信手段として機能する。
The
ここで、ステップS11で“NO”と判断された場合には、ステップS17では、状態データに含まれる位置データ、角度データおよび速度データに基づいて、RTMの位置、角度および速度が更新される。つまり、ロボット18と実体Eとが関連付けられていない状態では、ロボット18が出力する状態データに基づいてRTMが更新される。
If “NO” is determined in step S11, the position, angle, and speed of the RTM are updated in step S17 based on the position data, angle data, and speed data included in the state data. That is, in a state where the
ステップS23では、各ロボット18との通信が継続しているか否かを判断する。たとえば、ロボット18a−18dとの通信が継続しているか否かを判断する。ステップS23で“NO”であれば、つまりロボット18との通信が途切れていれば、ステップS25で通信が途切れたロボットIDに基づいてRTMを削除する。たとえば、ロボットIDが「004」のロボット18dとの通信が途切れていれば、RTMデータ346を構成する、ロボットID「004」のRTMが削除される。そして、ステップS25の処理が終了すれば、ステップS3に戻る。つまり、変数Rnをディクリメントして、RTMデータ346に含まれるRTMの数と変数Rnの数値とを一致させる。
In step S23, it is determined whether or not communication with each
また、ステップS23で“YES”であれば、つまり各ロボット18との通信が継続していれば、ステップS27で新しいロボット18との通信が確立されたか否かを判断する。たとえば、5台目のロボット18が検出領域Fに入ったか否かを判断する。ステップS27で“NO”であれば、つまり新たなロボット18との通信が確立されなければ、ステップS7に戻る。一方、ステップS27で“YES”であれば、たとえば5台目のロボット18との通信が確立されれば、ステップS3に戻る。つまり、変数Rnを更新して、RTMデータ346に新しいRTMを追加する。
If “YES” in the step S23, that is, if communication with each
図20には補正プログラム314の処理を示すフロー図が示される。たとえば、追跡サーバ10の電源がオンにされると、プロセッサ20は、ステップS41で追跡処理を実行する。この追跡処理については、図21および図22に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
FIG. 20 is a flowchart showing the processing of the
続いて、ステップS43では、1度目の処理か否かを判断する。つまり追跡サーバ10が起動してから、補正処理が実行されるのが1度目であるか否かを判断する。また、具体的には、初回フラグ348がオンであるか否かを判断する。ステップS43で“NO”であれば、つまり初回フラグ348がオフであれば、ステップS47に進む。一方、ステップS43で“YES”であれば、つまり初回フラグ348がオンであれば、ステップS45で一定時間が経過したか否かを判断する。たとえば、一定時間は300秒であり、ステップS45では追跡サーバ10が起動してから300秒経過したか否かを判断する。また、具体的には、追跡サーバ10が起動してからの時間をカウントする初期起動カウンタ350の値が300秒を示す値を超えているか否かを判断する。
Subsequently, in step S43, it is determined whether or not the process is the first time. That is, it is determined whether or not correction processing is executed for the first time after the tracking
ステップS45で“NO”であれば、つまり追跡サーバ10が起動してから一定時間が経過していなければ、ステップS41に戻る。つまり、位置データおよび状態データが記憶されるまでは、ロボット18と実体Eとを関連付けることができないため、ステップS41−S45の処理が繰り返し実行される。
If “NO” in the step S45, that is, if a predetermined time has not elapsed since the tracking
また、ステップS45で“YES”であれば、つまり追跡サーバ10が起動してから一定時間が経過すれば、初回フラグ348をオフにしてステップS47で関連付解除処理を実行する。なお、ステップS47の関連付解除処理については、図23に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。また、1度目の処理では、関連付解除処理が実行されたとしても、ロボット18と実体Eとの関連付けが解除されることはない。
If “YES” in the step S45, that is, if a certain time has elapsed since the tracking
続いて、ステップS49では関連付処理が実行される。この関連付処理については、図24に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。また、ステップS49の処理を実行するプロセッサ20は、関連付手段として機能する。
Subsequently, an association process is executed in step S49. Since this association processing will be described later with reference to the flowchart shown in FIG. 24, detailed description thereof is omitted here. The
続いて、ステップS51では、変数ixを初期化する。この変数ixは、ロボットIDを指定するための変数である。そのため、変数ixが初期化されると「1」が設定される。なお、以下の説明では、ロボットIDが「ix」のロボット18は「ロボットix」と記述する。たとえば、ロボットIDが「001」のロボット18は「ロボット1」と記述される。これは、図面でも同じである。
Subsequently, in step S51, the variable ix is initialized. This variable ix is a variable for designating the robot ID. Therefore, when the variable ix is initialized, “1” is set. In the following description, the
続いて、ステップS53では、ロボットixに対応するRTMの位置を更新する。たとえば、変数ixが「1」であれば、ロボットIDが「001」のロボット18aのRTMの位置が更新される。また、更新するための位置データは、位置履歴バッファ332に記憶される、ロボット1の位置履歴データから読み出される。従って、ロボット1の位置履歴データにおいて最新の位置が(300,400)であれば、ロボット1のRTMの位置が(300,400)に更新される。続いて、ステップS55では、角度補正処理を実行する。なお、この角度補正処理については、図27に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
Subsequently, in step S53, the position of the RTM corresponding to the robot ix is updated. For example, if the variable ix is “1”, the RTM position of the
続いて、ステップS57では、変数ixをインクリメントする。つまり、次のロボットIDを指定するために、変数ixはインクリメントされる。続いて、ステップS59では、変数ixが変数Rnより大きいか否かを判断する。つまり、ロボット18の総数を示す変数Rnよりも、ロボットIDを指定する変数ixが大きいか否かを判断する。これにより、全てのロボット18に対して、RTMの位置および角度が更新されたか否かを判断することができる。ステップS59で“NO”であれば、つまり変数ixが変数Rn以下であれば、ステップS53に戻る。つまり、他のロボット18のRTMの位置および角度を更新するためにステップS53に戻る。一方、ステップS59で“YES”であれば、つまり変数ixが変数Rnより大きければ、ステップS41に戻る。つまり、全てのロボット18のRTMの位置および角度が更新されると、補正処理が再び実行される。
Subsequently, in step S57, the variable ix is incremented. That is, the variable ix is incremented to specify the next robot ID. Subsequently, in step S59, it is determined whether or not the variable ix is larger than the variable Rn. That is, it is determined whether or not the variable ix for specifying the robot ID is larger than the variable Rn indicating the total number of the
図21には追跡プログラム314aの処理を示すフロー図が示される。プロセッサ20は、ステップS41で追跡処理が実行されると、ステップS71でLRFデータを取得する。つまり、LRFバッファ330に一時記憶される、各LRF12によって計測された距離のデータを取得する。続いて、ステップS73では、新しい実体Eを検出したか否かを判断する。たとえば、検出領域F内で、実体Ea−Edとは別の実体Eが検出されたか否かを判断する。ステップS73で“NO”であれば、つまり新たな実体Eが検出されていなければ、ステップS79に進む。一方、ステップS73で“YES”であれば、つまり検出領域F内で新たな実体Eが検出されれば、ステップS75で実体Eの数を変数Enに設定する。たとえば、検出領域F内で、4つの実体Ea,Eb,Ec,Edが検出されていれば、変数Enには「4」が設定される。なお、変数Enは、検出されている実体Eの総数を示す変数として定義されている。
FIG. 21 is a flowchart showing the processing of the
続いて、ステップS77では、En個の位置履歴データを作成する。たとえば、変数Enに「4」が設定されていれば、図7に示すように、位置履歴バッファ332に4つの位置履歴データが作成される。続いて、ステップS79では、変数IXを初期化する。この変数IXは、実体IDを指定するための変数である。そのため、変数IXが初期化されると「1」が設定される。なお、以下の説明では、実体IDが「IX」の実体Eは「実体IX」と記述する。たとえば、実体IDが「001」の実体Eは、「実体1」と記述される。これは、図面でも同じである。
Subsequently, in step S77, En position history data are created. For example, if “4” is set in the variable En, four position history data are created in the
続いて、図22を参照して、ステップS81では、実体IXにロボット18が関連付けられているか否かを判断する。たとえば、変数IXに「1」が設定されていれば、関連付けテーブルを参照し、実体IDが「001」の実体Eaにロボット18が関連付けられているか否かを判断する。ステップS81で“YES”であれば、つまり実体IXにロボッ18が関連付けられていれば、ロボット形状モデルを利用して、パーティクルフィルタの尤度を更新する。つまり、ステップS83では、ロボット18に適したモデルを使用して、数1および数2に示す式に従って、パーティクルフィルタの尤度を更新する。一方、ステップS81で“NO”であれば、つまり実体IXにロボット18が関連付けられていなければ、ステップS85で人形状モデルを利用して、パーティクルフィルタの尤度を更新する。つまり、ステップS85では、人間に適したモデルを利用して、数1および数2に示す式に従って、パーティクルフィルタの尤度を更新する。
Subsequently, referring to FIG. 22, in step S81, it is determined whether or not the
続いて、ステップS87では、パーティクルの位置を更新する。つまり、ステップS83およびステップS85の処理で、算出されたパーティクルフィルタの尤度に基づいてパーティクルの位置が更新される。続いて、ステップS89では、実体IXの位置を検出する。つまり、移動したパーティクルの位置に基づいて、実体IXの位置、つまり検出領域F内の平面座標を検出する。なお、ステップS89の処理を実行するプロセッサ20は、位置検出手段として機能する。
Subsequently, in step S87, the position of the particle is updated. That is, the position of the particle is updated based on the calculated likelihood of the particle filter in the processing of step S83 and step S85. Subsequently, in step S89, the position of the entity IX is detected. That is, the position of the entity IX , that is, the plane coordinates in the detection area F is detected based on the position of the moved particle. The
続いてステップS91では、検出された実体IXの位置をバッファに記憶する。つまり、位置データは、位置履歴バッファ332に記憶される位置履歴データにおいて、実体ID「IX」に基づいて追加される。たとえば、変数IXに「1」が設定されていれば、実体IDが「001」の位置履歴データに、実体1の位置データが追加される。なお、ステップS91の処理を実行するプロセッサ20は、位置データ記憶手段として機能する。
Subsequently, in step S91, the position of the detected entity IX is stored in the buffer. That is, the position data is added based on the entity ID “IX” in the position history data stored in the
続いて、ステップS93では、変数IXをインクリメントする。つまり、次の実体IDを指定するために、変数IXはインクリメントされる。続いて、ステップS95では、変数IXが変数Enよりも大きいか否かを判断する。つまり、実体Eの総数を示す変数Enよりも、実体IDを指定する変数IXが大きいか否かを判断する。これにより、全ての実体Eに対して位置が検出されたか否かを判断することができる。ステップS95で“NO”であれば、つまり全ての実体Eに対して位置が検出されていなければ、ステップS81に戻る。一方、ステップS95で“YES”であれば、つまり全ての実体Eに対して位置が検出されれば、追跡処理を終了して、補正処理に戻る。 Subsequently, in step S93, the variable IX is incremented. That is, the variable IX is incremented to specify the next entity ID. Subsequently, in step S95, it is determined whether or not the variable IX is larger than the variable En. That is, it is determined whether or not the variable IX specifying the entity ID is larger than the variable En indicating the total number of entities E. Thereby, it is possible to determine whether or not positions have been detected for all entities E. If “NO” in the step S95, that is, if positions have not been detected for all the entities E, the process returns to the step S81. On the other hand, if “YES” in the step S95, that is, if positions are detected for all the entities E, the tracking process is ended and the process returns to the correction process.
図23には、関連付解除プログラム314bの処理を示すフロー図が示される。ステップS47で関連付処理が実行されると、プロセッサ20は、ステップS111でロボット18が関連付けられているか否かを判断する。つまり、関連付テーブルデータ344が読み出され、少なくとも1台のロボット18が実体Eと関連付けられているか否かを判断する。ステップS111で“NO”であれば、つまり全てのロボット18が実体Eと関連付けられていなければ、関連付解除処理を終了して、補正処理に戻る。たとえば、追跡サーバ10が起動し、ステップS49の関連付処理が一度も実行されていない状態では、ステップS111で“NO”と判断される。
FIG. 23 is a flowchart showing the processing of the
一方、ステップS111で“YES”であれば、つまり少なくとも1台のロボット18が実体Eと関連付けられていれば、ステップS113で関連付けられたロボット18の数を変数ARnに設定する。たとえば、実体Eと関連付けられているロボット18が3台であれば、変数ARnには「3」が設定される。また、変数ARnは、実体Eと関連付けられているロボット18の総数を示す変数として定義されている。
On the other hand, if “YES” in the step S111, that is, if at least one
続いて、ステップS115では、変数Dxを初期化する。たとえば、関連付け解除処理では、関連付けられているロボット18には、第1ローカルIDが付与される。そして、変数Dxは、その第1ローカルIDを指定するための変数である。そのため、変数Dxが初期化されると、第1ローカルIDの最初のIDを示す「1」が設定されている。
Subsequently, in step S115, the variable Dx is initialized. For example, in the association cancellation process, the first local ID is assigned to the associated
なお、第1ローカルIDは、関連付解除処理が実行される毎に付与される。つまり、同じロボット18であっても、必ずしも同じ第1ローカルIDが付与されるとは限らない。また、ロボットIDと第1ローカルIDとも必ずしも一致するとは限らない。そして、変数ixと同様に、以下の説明では、第1ローカルIDが「Dx」のロボット18は、「ロボットDx」と記述する。そして、この記述は図23でも同じである。
The first local ID is given every time the association release process is executed. That is, the same first local ID is not necessarily given even for the
次のステップS117では、ロボットDxと関連付けられた実体Eがまだ追跡されている否かを判断する。つまり、関連付テーブルデータ344に基づいて、ロボットDxに対応する実体Eの実体IDを読み出す。そして、位置履歴バッファ332を参照して、読み出した実体IDに対応する位置履歴データが存在するか否かを判断する。ステップS117で“NO”であれば、つまりロボットDxと関連付けられた実体Eが検出領域F内に存在していなければ、ステップS125に進む。
In the next step S117, it is determined whether or not the entity E associated with the robot Dx is still being tracked. That is, the entity ID of the entity E corresponding to the robot Dx is read based on the
また、ステップS117で“YES”であれば、つまりロボットDxと関連付けられた実体Eが検出領域F内に存在していれば、ステップS119で、ロボットDxと関連付けられた実体Eが離れているか否かを判断する。たとえば、ステップS117と同様、ロボットDxに対応する実体IDを読み出し、読み出した実体IDに対応する位置履歴データの最新の位置データを、位置履歴バッファ332から取得する。さらに、ロボットIDが「Dx」の状態データから最新の状態データに含まれる位置データを、状態履歴バッファ334から取得する。そして、読み出された状態データの位置データと、位置履歴データの位置データとを比較して、たとえば2m以上離れているか否かを判断する。ステップS119で“YES”であれば、つまりロボットDxと関連付けられた実体Eが離れていれば、ステップS125に進む。
If “YES” in the step S117, that is, if the entity E associated with the robot Dx exists in the detection region F, whether or not the entity E associated with the robot Dx is separated in the step S119. Determine whether. For example, as in step S117, the entity ID corresponding to the robot Dx is read, and the latest position data of the position history data corresponding to the read entity ID is acquired from the
また、ステップS119で“NO”であれば、たとえばロボットDxと関連付けられた実体Eが2m以内に存在していれば、ステップS121でロボットDxと関連付けられた実体Eとの速度が異なるか否かを判断する。ステップS119と同様に、位置履歴データから現在の位置および1秒前の位置を取得して、実体Eの速度を算出する。また、ステップS119と同様に、状態履歴データから現在の位置および1秒前の位置を取得して、ロボットDxの速度を算出する。そして、ロボットDxの速度と、関連付けられた実体Eの速度との差が、たとえば0.35mm/s以上であるか否かを判断する。ステップS121で“YES”であれば、たとえば0.35mm/s以上の速度差があれば、ステップS125に進む。また、ステップS121で“NO”であれば、たとえば0.35mm/s以上の速度差がなければ、ステップS123でロボットDxの関連付けを維持する。たとえば、ステップS123では、ロボットDxの関連付けを解除する必要がないことを示すフラグをオンにする。そして、ステップS123の処理が終了すると、ステップS127に進む。 If “NO” in the step S119, for example, if the entity E associated with the robot Dx exists within 2 m, whether or not the speed of the entity E associated with the robot Dx in the step S121 is different. Judging. As in step S119, the current position and the position one second before are acquired from the position history data, and the speed of the entity E is calculated. Similarly to step S119, the current position and the position one second before are acquired from the state history data, and the speed of the robot Dx is calculated. Then, it is determined whether or not the difference between the speed of the robot Dx and the speed of the associated entity E is 0.35 mm / s or more, for example. If “YES” in the step S121, for example, if there is a speed difference of 0.35 mm / s or more, the process proceeds to a step S125. If “NO” in the step S121, for example, if there is no speed difference of 0.35 mm / s or more, the association of the robot Dx is maintained in a step S123. For example, in step S123, a flag indicating that it is not necessary to cancel the association of the robot Dx is turned on. Then, when the process of step S123 ends, the process proceeds to step S127.
ここで、ステップS117で“NO”、ステップS119で“YES”またはステップS121で“YES”と判断され、ステップS125の処理が実行されると、ロボットDxの関連付けを解除する。つまり、ステップS125では、関連付テーブルデータ344において、ロボットDxと関連付けられている実体IDを削除する。また、ステップS125で関連付けが解除されると、解除カウンタ352によって、関連付けが解除されてからの時間が計測される。
If “NO” is determined in step S117, “YES” is determined in step S119, or “YES” is determined in step S121, and the process of step S125 is executed, the association of the robot Dx is released. That is, in step S125, the entity ID associated with the robot Dx is deleted from the
なお、ステップS117,S119,S121の処理を実行するプロセッサ20は判断手段として機能する。また、ステップS125の処理を実行するプロセッサ20は、解除手段として機能する。
The
続いて、ステップS127では、変数Dxをインクリメントする。つまり次の第1ローカルIDを指定するために、変数Dxはインクリメントされる。続いて、ステップS129では、変数Dxが変数ARnより大きいか否かを判断する。つまり、実体Eと関連付けられたロボット18の総数を示す変数ARnよりも、第1ローカルIDを指定する変数Dxが大きいか否かを判断する。これにより、実体Eと関連付けられた全てのロボット18に対して、関連付けの解除が必要であるか否かを判断することができる。
Subsequently, in step S127, the variable Dx is incremented. That is, the variable Dx is incremented to specify the next first local ID. Subsequently, in step S129, it is determined whether or not the variable Dx is larger than the variable ARn. That is, it is determined whether or not the variable Dx specifying the first local ID is larger than the variable ARn indicating the total number of
ステップS129で“NO”であれば、つまり変数Dxが変数ARn以下であれば、ステップS117に戻る。つまり、他のロボット18において、関連付けの解除が必要であるか否かを判断するためにステップS117に戻る。一方、ステップS129で“YES”であれば、つまり変数Dxが変数ARnより大きければ、関連付解除処理を終了して、補正処理に戻る。
If “NO” in the step S129, that is, if the variable Dx is equal to or less than the variable ARn, the process returns to the step S117. That is, the process returns to step S117 in order to determine whether or not the
なお、解除カウンタ352は、関連付けが解除される度にリセットされて、時間が計測される。たとえば、関連付解除処理において、2つのロボット18の関連付けが解除された場合には、後に関連付けが解除されたロボット18に対してのみ、関連付けが解除されてからの時間が計測される。
The
図24には関連付プログラム314cの処理を示すフロー図が示される。ステップS49で関連付処理が実行されると、プロセッサ20は、ステップS151で関連付けられていないロボット18があるか否かを判断する。つまり、関連付テーブルデータ344が読み出され、実体Eが関連付けられていないロボット18があるか否かを判断する。ステップS151で“NO”であれば、つまり全てのロボット18が実体Eと関連付けられていれば、関連付処理を終了して、補正処理に戻る。
FIG. 24 is a flowchart showing the processing of the
一方、ステップS151で“YES”であれば、つまり実体Eと関連付けられていないロボット18があれば、ステップS153で関連付けられていないロボット18の数を変数DRnに設定する。たとえば、実体Eと関連付けが解除されたロボット18が1台であれば、変数DRnには「1」が設定される。なお、変数DRnは、実体Eと関連付けが解除されたロボット18の総数を示す変数として定義されている。
On the other hand, if “YES” in the step S151, that is, if there is the
続いて、ステップS155では、変数axを初期化する。たとえば、関連付処理では、関連付けられていないロボット18には、第2ローカルIDが付与される。そして、変数axは、第2ローカルIDを指定するための変数である。そのため、変数axが初期化されると、第2ローカルIDの最初のIDを示す「1」が設定される。
Subsequently, in step S155, the variable ax is initialized. For example, in the association process, the second local ID is assigned to the
なお、第2ローカルIDは、第1ローカルIDと同様に、関連付処理が実行される毎に付与される。つまり、同じ第2ローカルIDが、同じロボット18に付与されるとは限らない。また、変数Dxと同様に、以下の説明では、第2ローカルIDが「ax」のロボット18を「ロボットax」と記述する。そして、この記述は図面でも同じである。
Note that the second local ID is assigned every time the association process is executed, similarly to the first local ID. That is, the same second local ID is not always given to the
続いて、ステップS157では、追跡実体リストを作成する。たとえば、図12に示す追跡実体リストを、実体Eの総数を示す変数Enに基づいて作成する。そして、作成した追跡実体リストを追跡実体リストバッファ336に格納する。続いて、ステップS159では、5秒(所定時間)以内に関連付けが解除されたか否かを判断する。つまり、5秒以内に実体Eとロボット18との関連付けが解除されたか否かを判断する。また、具体的には、解除カウンタ352の値が5秒を示す値以下であるか否かを判断する。ステップS159で“NO”であれば、つまり実体Eとロボット18との関連付けが解除されて5秒を超えていれば、ステップS171に進む。
Subsequently, in step S157, a tracking entity list is created. For example, the tracking entity list shown in FIG. 12 is created based on the variable En indicating the total number of entities E. The created tracking entity list is stored in the tracking
一方、ステップS159で“YES”であれば、つまり実体Eとロボット18との関連付けが解除されてから5秒以内であれば、ステップS161で変数IXを初期化する。つまり、後述するローカル関連付処理で、全ての実体Eを識別する必要があるため、変数IXを初期化する。なお、初期化された変数IXには「1」が設定される。続いて、ステップS163では、追跡実体リストを初期化する。つまり、追跡実体リストのフラグの列の全てを「1(オン)」に設定する。
On the other hand, if “YES” in the step S159, that is, if it is within 5 seconds after the association between the entity E and the
続いて、ステップS165では、ローカル関連付処理を実行する。なお、ステップS165のローカル関連付処理については、図25に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。続いて、ステップS167では、変数axをインクリメントする。つまり、次の第2ローカルIDを指定するために、変数axはインクリメントされる。続いて、ステップS169では、変数axが変数DRnより大きいか否かを判断する。つまり、関連付けられていないロボット18の総数を示す変数DRnよりも、第2ローカルIDを指定する変数axの方が大きいか否かを判断する。これにより、関連付けられていない全てのロボット18に対して、ローカル関連付処理が実行されたか否かを判断することができる。
Subsequently, in step S165, local association processing is executed. Note that the local association processing in step S165 will be described later with reference to the flowchart shown in FIG. 25, and thus detailed description thereof is omitted here. Subsequently, in step S167, the variable ax is incremented. That is, the variable ax is incremented to specify the next second local ID. Subsequently, in step S169, it is determined whether or not the variable ax is larger than the variable DRn. That is, it is determined whether or not the variable ax specifying the second local ID is larger than the variable DRn indicating the total number of
ステップS169で“NO”であれば、つまり変数axが変数DRn以下であれば、ステップS161に戻る。つまり、関連付けられていない他のロボット18に対してローカル関連付け処理を実行するために、ステップS161に戻る。一方、ステップS169で“YES”であれば、つまり変数axが変数DRnより大きければ、関連付け処理を終了して、補正処理に戻る。
If “NO” in the step S169, that is, if the variable ax is equal to or less than the variable DRn, the process returns to the step S161. That is, the process returns to step S161 in order to execute the local association process for the
ここで、ロボット18と実体Eとの関連付けが5秒以内に解除されていなければ、ステップS171−S179の処理を実行する。なお、ステップS171−S179で、ステップS161−S169と同じ処理については、詳細な説明を省略する。
Here, if the association between the
ステップS171では、変数IXを初期化し、ステップS173では追跡実体リストを初期化する。続いて、ステップS175では、グローバル関連付処理を実行する。このグローバル関連付け処理については、図26に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。 In step S171, the variable IX is initialized, and in step S173, the tracking entity list is initialized. Subsequently, in step S175, a global association process is executed. Since this global association process will be described later with reference to the flowchart shown in FIG. 26, a detailed description thereof is omitted here.
続いて、ステップS177では、変数axをインクリメントし、ステップS179では、変数axが変数DRnより大きいか否かを判断する。つまり、ステップS179では、関連付けられていない全てのロボット18に対して、グローバル関連付処理が実行されたか否かを判断する。ステップS179で“NO”であれば、つまり実体Eと関連付けられていない全てのロボット18に対してグローバル関連付処理が実行されていなければ、ステップS171に戻る。一方、ステップS179で“YES”であれば、つまり実体Eと関連付けられていない全てのロボット18に対してグローバル関連付処理が実行されていれば、関連付処理を終了する。
Subsequently, in step S177, the variable ax is incremented, and in step S179, it is determined whether or not the variable ax is larger than the variable DRn. That is, in step S179, it is determined whether global association processing has been executed for all the
図25にはローカル関連付プログラム316の処理を示すフロー図が示される。ステップS165でローカル関連付処理が実行されると、プロセッサ20は、ステップS191で実体IXが他のロボット18に関連付けられているか否かを判断する。つまり、関連付テーブル344が読み出され、実体IXと他のロボット18とが関連付けられているか否かを判断する。ステップS191で“YES”であれば、つまり実体IXが他のロボット18と関連付けられていれば、ステップS201に進む。一方、ステップS191で“NO”であれば、つまり実体IXが他のロボット18と関連付けられていなければ、ステップS193で実体IXとロボットaxとの5秒間(第1時間)のRMS速度差(第1速度差)を算出する。つまり、ステップS193では、位置履歴バッファ332から、5秒分の実体IXの位置履歴データを読み出し、状態履歴バッファ334から、5秒分のロボットaxの状態履歴データを読み出す。そして、数3においてRTを5として、RMS速度差を算出する。なお、ステップS193の処理を実行するプロセッサ20は、第1速度差算出手段として機能する。
FIG. 25 is a flowchart showing the processing of the
続いて、ステップS195では、実体IXとロボットaxとのRMS速度差が大きいか否かを判断する。たとえば、ステップS193で算出されたRMS速度差が第1所定速度(350mm/s)より大きいか否かを判断する。ステップS195で“YES”であれば、つまりRMS速度差が第1所定速度より大きければ、ステップS201に進む。なお、ステップS195の処理を実行するプロセッサ20は第1速度判定手段として機能する。
Subsequently, in step S195, it is determined whether the RMS speed difference between the entity IX and the robot ax is large. For example, it is determined whether or not the RMS speed difference calculated in step S193 is greater than a first predetermined speed (350 mm / s). If “YES” in the step S195, that is, if the RMS speed difference is larger than the first predetermined speed, the process proceeds to a step S201. The
一方、ステップS195で“NO”であれば、つまりRMS速度差が第1所定速度以下であれば、ステップS197で実体IXとロボットaxとの現在の速度差が大きいか否かを判断する。つまり、ステップS193で読み出された実体IXの位置履歴データおよびロボットaxの状態履歴データから、実体IXの速度およびロボットaxの速度を算出して、現在の速度差を求める。そして、現在の速度差が、たとえば350mm/sより大きいか否かを判断する。ステップS197で“YES”であれば、つまり現在の速度差が350mm/sより大きければ、ステップS201に進む。 On the other hand, if “NO” in the step S195, that is, if the RMS speed difference is equal to or less than the first predetermined speed, it is determined whether or not the current speed difference between the entity IX and the robot ax is large in a step S197. That is, the current speed difference is obtained by calculating the speed of the entity IX and the speed of the robot ax from the position history data of the entity IX and the state history data of the robot ax read in step S193. Then, it is determined whether or not the current speed difference is larger than 350 mm / s, for example. If “YES” in the step S197, that is, if the current speed difference is larger than 350 mm / s, the process proceeds to a step S201.
また、ステップS197で“NO”であれば、つまり現在の速度差が350mm/s以下であれば、ステップS199で実体IXとロボットaxとが離れているか否かを判断する。つまり、ステップS199では、ステップS193で読み出された実体IXの位置履歴データおよびロボットaxの状態履歴データから、実体IXの位置データおよびロボットaxの位置を取得する。そして、実体IXとロボットaxとの距離が、たとえば1mより大きいか否かをステップS199で判断する。ステップS199で“NO”であれば、つまり実体IXとロボットaxとが離れていなければ、ステップS203に進む。なお、ステップS199の処理を実行するプロセッサ20は、距離判定手段として機能する。
If “NO” in the step S197, that is, if the current speed difference is 350 mm / s or less, it is determined whether or not the entity IX is separated from the robot ax in a step S199. That is, in step S199, the position data of the entity IX and the position of the robot ax are acquired from the position history data of the entity IX and the state history data of the robot ax read in step S193. Then, in step S199, it is determined whether or not the distance between the entity IX and the robot ax is greater than 1 m, for example. If “NO” in the step S199, that is, if the entity IX is not separated from the robot ax , the process proceeds to a step S203. Note that the
一方、ステップS199で“YES”であれば、つまり実体IXとロボットaxとが離れていれば、ステップS201で追跡実体リストにおける、実体IXのフラグをオフにする。たとえば、変数IXが「1」であれば、実体Eaに対応するフラグの欄において、「0(オフ)」が設定される。 On the other hand, if “YES” in the step S199, that is, if the entity IX is separated from the robot ax , the flag of the entity IX in the tracking entity list is turned off in a step S201. For example, if the variable IX is “1”, “0 (off)” is set in the flag field corresponding to the entity Ea.
続いて、ステップS203では、変数IXをインクリメントする。つまり、次の実体IDを指定するために、変数IXはインクリメントされる。続いて、ステップS205では、変数IXが変数Enより大きいか否かを判断する。つまり、全ての実体Eに対して、ステップS191からステップS201の処理が実行されたか否かを判断する。ステップS205で“NO”であれば、つまり全ての実体Eに対して、ステップS191からステップS201の処理が実行されていなければステップS191に戻る。一方、ステップS205で“YES”であれば、つまり全ての実体Eに対して、ステップS191からステップS201の処理が実行されていれば、ステップS207でフラグがオンの実体Eがあるか否かを判断する。つまり、追跡実体リストにおいて、フラグの列に「1」が設定された実体Eがあるか否かを判断する。 Subsequently, in step S203, the variable IX is incremented. That is, the variable IX is incremented to specify the next entity ID. Subsequently, in step S205, it is determined whether or not the variable IX is larger than the variable En. That is, it is determined whether or not the processing from step S191 to step S201 has been executed for all entities E. If “NO” in the step S205, that is, if the processing from the step S191 to the step S201 is not executed for all the entities E, the process returns to the step S191. On the other hand, if “YES” in the step S205, that is, if the processing from the step S191 to the step S201 is executed for all the entities E, it is determined whether or not there is an entity E whose flag is turned on in the step S207. to decide. That is, it is determined whether or not there is an entity E for which “1” is set in the flag column in the tracking entity list.
ステップS207で“YES”であれば、つまり追跡実体リストにおいて、フラグの列に「1」が設定された実体Eがあれば、ステップS209で最も近い実体Eをロボットaxに関連付ける。つまり、位置履歴バッファ332から、追跡実体リストにおいてフラグがオンの実体Eの現在の位置データを読み出す。また、状態履歴バッファ334から、ロボットaxの最新の位置データを読み出す。そして、フラグがオンの実体Eのそれぞれと、ロボットaxの距離を算出し、最も距離が短い実体Eとロボットaxとを関連付ける。また、ステップS209で関連付けられた結果が関連付テーブルに記録される。
If “YES” in the step S207, that is, if there is an entity E for which “1” is set in the flag column in the tracking entity list, the closest entity E is associated with the robot ax in a step S209. That is, the current position data of the entity E whose flag is on in the tracking entity list is read from the
たとえば、実体Eaおよび実体Ebのフラグがオンであり、ロボットaxがロボット18aであれば、実体Eaおよび実体Ebのそれぞれと、ロボット18aとの距離が算出される。そして、ロボット18aと実体Ebとの距離の方が短ければ、ロボット18aと実体Ebとが関連付けられる。これにより、図13に示す関連付テーブルのように、ロボット18aのロボットIDに対して、実体Ebの実体IDが記録される。なお、ステップS209の処理を実行するプロセッサ20は第1関連付手段として機能する。
For example, if the flags of the entity Ea and the entity Eb are on and the robot ax is the
一方、ステップS207で“NO”であれば、つまりフラグがオンの実体Eが追跡実体リストになければ、ステップS211でロボットaxに実体Eを関連付けない。つまりステップS211が実行されると、関連付テーブルに対して実体IDが記録されない。 On the other hand, if “NO” in the step S207, that is, if the entity E whose flag is on is not in the tracking entity list, the entity E is not associated with the robot ax in the step S211. That is, when step S211 is executed, the entity ID is not recorded in the association table.
そして、ステップS209またはステップS211の処理が終了すれば、ローカル関連付処理を終了して、関連付処理に戻る。 And if the process of step S209 or step S211 is complete | finished, a local correlation process will be complete | finished and it will return to a correlation process.
図26にはグローバル関連付プログラム318の処理を示すフロー図が示される。ここで、グローバル関連付処理において、ローカル関連付処理と同じ処理については、詳細な説明を省略する。
FIG. 26 is a flowchart showing the processing of the
ステップS175でグローバル関連付け処理が実行されると、ステップS231では、実体IXが他のロボット18と関連付けられているか否かを判断する。ステップS231で“YES”であれば、つまり実体IXが他のロボット18と関連付けられていれば、ステップS239に進む。一方、ステップS231で“NO”であれば、つまり実体IXが他のロボット18と関連付けられていなければ、ステップS233で実体IXとロボットaxとの300秒間(第2時間)のRMS速度差(第2速度差)を算出する。なお、ステップS233の処理を実行するプロセッサ20は第2速度差算出手段として機能する。
When the global association process is executed in step S175, it is determined in step S231 whether the entity IX is associated with another
続いて、ステップS235では実体IXとロボットaxとのRMS速度差が大きいか否かを判断する。たとえば、実体IXとロボットaxとのRMS速度差が第2所定速度(350mm/s)より大きいか否かを判断する。ステップS235で“YES”であれば、つまり実体IXとロボットaxとのRMS速度差が第2所定速度より大きければ、ステップS239に進む。なお、ステップS235の処理を実行するプロセッサ20は、第2速度判定手段として機能する。
In step S235, it is determined whether the RMS speed difference between the entity IX and the robot ax is large. For example, it is determined whether or not the RMS speed difference between the entity IX and the robot ax is greater than the second predetermined speed (350 mm / s). If “YES” in the step S235, that is, if the RMS speed difference between the entity IX and the robot ax is larger than the second predetermined speed, the process proceeds to a step S239. The
一方、ステップS235で“NO”であれば、つまり実体IXとロボットaxとのRMS速度差が第2所定速度以下であれば、ステップS237で実体IXとロボットaxとの現在の速度差が大きいか否かを判断する。たとえば、現在の速度差が350mm/sより大きいか否かを判断する。 On the other hand, if “NO” in the step S235, that is, if the RMS speed difference between the entity IX and the robot ax is equal to or smaller than the second predetermined speed, whether the current speed difference between the entity IX and the robot ax is large in a step S237. Judge whether or not. For example, it is determined whether or not the current speed difference is greater than 350 mm / s.
ステップS237で“YES”であれば、つまり現在の速度差が350mm/sより大きければ、ステップS239で追跡実体リストにおける実体IXのフラグをオンにして、ステップS241に進む。一方、ステップS237で“NO”であれば、つまり現在の速度差が350mm/s以下であれば、ステップS241で変数IXをインクリメントし、ステップS243で変数IXが変数Enより大きいか否かを判断する。ステップS243で“NO”であれば、つまり変数IXが変数En以下であれば、ステップS231に戻る。一方、ステップS243で“YES”であれば、つまり変数IXが変数Enよりも大きければ、ステップS245でフラグがオンの実体Eが1つだけか否かを判断する。つまり、ステップS245では、追跡実体リストのフラグの列において、「1」が設定された実体Eが1つだけであるか否かを判断する。 If “YES” in the step S237, that is, if the current speed difference is larger than 350 mm / s, the flag of the entity IX in the tracking entity list is turned on in a step S239, and the process proceeds to the step S241. On the other hand, if “NO” in the step S237, that is, if the current speed difference is 350 mm / s or less, the variable IX is incremented in a step S241, and it is determined whether or not the variable IX is larger than the variable En in a step S243. To do. If “NO” in the step S243, that is, if the variable IX is equal to or less than the variable En, the process returns to the step S231. On the other hand, if “YES” in the step S243, that is, if the variable IX is larger than the variable En, it is determined whether or not there is only one entity E whose flag is turned on in a step S245. That is, in step S245, it is determined whether or not there is only one entity E for which “1” is set in the flag column of the tracking entity list.
ステップS245で“NO”であれば、ステップS247でフラグがオンの実体Eにロボットaxを関連付ける。たとえば、ロボットaxがロボット18bを示し、追跡実体リストで実体Ecのフラグのみがオンであれば、図13に示す関連付テーブルのように、ロボットID「002」に対して、実体ID003が記録される。なお、ステップS247の処理を実行するプロセッサ20は第2関連付手段として機能する。
If “NO” in the step S245, the robot ax is associated with the entity E whose flag is turned on in a step S247. For example, if the robot ax indicates the
一方、ステップS245で“NO”であれば、つまり、フラグがオンの実体Eが1つだけでなければ、ステップS211と同様に、ステップS249でロボットaxに実体Eを関連付けない。 On the other hand, if “NO” in the step S245, that is, if there is not only one entity E whose flag is on, the entity E is not associated with the robot ax in the step S249 similarly to the step S211.
そして、ステップS247またはステップS249の処理が終了すれば、グローバル関連付け処理を終了して、関連付け処理に戻る。 And if the process of step S247 or step S249 is complete | finished, a global correlation process will be complete | finished and it will return to a correlation process.
図27には角度補正プログラム314dの処理を示すフロー図が示される。ステップS55の角度補正処理が実行されると、プロセッサ20は、ステップS261で次の位置を予測する。具体的には、ロボットixの状態履歴データから、最新の位置および1秒前の位置を読み出し、縦(Y)軸および横(X)軸方向の位置変位量を算出する。そして、ロボットixのRTMにおいて、前回の位置(前回位置)に対して、算出した位置変位量を加えることで、図14に示すような予測位置を求める。
FIG. 27 is a flowchart showing the processing of the
続いて、ステップS263では、予測角度および検出角度を算出する。具体的には、予測角度は、ステップS261で求めた予測位置と前回位置との角度を、横軸を基準(0度)にして算出する。また、検出角度については、まず位置履歴バッファ332から、ロボットixに関連付けられた実体Eにおける、現在の位置(データ)を読み出す。次に、ロボットixに関連付けられた実体Eにおける、現在の位置と前回位置との角度を検出角度とし、横軸を基準にして算出する。続いて、ステップS265では、検出角度および予測角度から観測角度Zkを算出する。たとえば、図14に示すように、検出角度から予測角度を減算することで、観測角度Zkを算出(観測)する。なお、ステップS261−S265の処理を実行するプロセッサ20は角度観測手段として機能する。
Subsequently, in step S263, a predicted angle and a detected angle are calculated. Specifically, the predicted angle is calculated from the angle between the predicted position obtained in step S261 and the previous position with reference to the horizontal axis (0 degree). As for the detected angle, first, the current position (data) in the entity E associated with the robot ix is read from the
続いて、ステップS267では、観測における位置誤差量σ2 poおよび変位量dsに基づいて、観測角度誤差量σ2 Zkを近似する。つまり、数4に従って、角度誤差量σ2 Zkを、位置誤差量σ2 poおよび変位量dsの商から近似する。なお、ステップS267の処理を実行するプロセッサ20は観測角度誤差算出手段として機能する。
Subsequently, in step S267, the observation angle error amount σ 2 Zk is approximated based on the position error amount σ 2 po and the displacement amount ds in the observation. That is, according to Equation 4, the angular error amount σ 2 Zk is approximated from the quotient of the position error amount σ 2 po and the displacement amount ds. The
続いて、ステップS269では、前回値があるか否かを判断する。つまり、前回値バッファ342に前回の推定角度θ− kおよび前回の推定角度誤差量σ2 θ-kが格納されているか否かを判断する。ステップS269で“NO”であれば、たとえば追跡サーバ10が起動してから角度補正処理が実行されるのが1度目であれば、ステップS271で観測角度誤差量σ2 Zkと所定値とに基づいてカルマンフィルタを更新する。つまり、数5において、前回の推定角度誤差量σ2 θ-kにかえて所定値(たとえば、0)を代入して、カルマンゲインKkを算出する。
Subsequently, in step S269, it is determined whether or not there is a previous value. In other words, the previous estimated angle theta to the
続いて、ステップS273では、所定値を利用して、推定角度誤差量σ2 θ^kおよび推定角度θ^ kを算出し、ステップS279に進む。つまり、ステップS273では、数6に示す式において、前回の推定角度θ− kに代えて所定値を代入して、推定角度θ^ kを算出する。また、数7に示す式において、前回の推定角度誤差量σ2 θ-kに代えて所定値を代入して、推定角度誤差量σ2 θ^kを算出する。
Subsequently, in step S273, an estimated angle error amount σ 2 θ ^ k and an estimated angle θ ^ k are calculated using predetermined values, and the process proceeds to step S279. That is, in step S273, an estimated angle θ ^ k is calculated by substituting a predetermined value in the equation shown in Equation 6 instead of the previous estimated angle θ - k . Further, in the equation shown in
また、ステップS269で“YES”であれば、つまり前回値バッファ342に前回の推定角度θ− kおよび前回の推定角度誤差量σ2 θ-kが格納されていれば、ステップS275で観測角度誤差量σ2 Zkと前回値とに基づいてカルマンフィルタを更新する。つまり、数5において、前回値バッファ342から読み出された前回の推定角度誤差量σ2 θ-kを代入して、カルマンゲインKkを算出する。続いて、ステップS277では、前回値を利用して推定角度誤差量σ2 θ^kおよび推定角度θ^ kを算出する。つまり、ステップS277では、数6に示す式において、前回値バッファ342から読み出された前回の推定角度θ− kを代入して推定角度θ^ kを算出する。また、数7に示す式において、前回値バッファ342から読み出された前回の推定角度誤差量σ2 θ-kを代入して推定角度誤差量σ2 θ^kを算出する。
Furthermore, if "YES" in the step S269, that is the previous estimated angle theta to the
なお、ステップS261−S277の処理を実行するプロセッサ20は、角度推定手段として機能する。
In addition, the
続いて、ステップS279では、推定角度θ^ kと、ロボットixのRTMの角度との角度差を算出する。たとえば、ロボットixのRTMの角度が32度であり、推定角度θ^ kが30度であれば、角度差として−2度(=30−32)が算出される。なお、ステップS279の処理を実行するプロセッサ20は、角度補正算出手段として機能する。
Subsequently, in step S279, an angle difference between the estimated angle θ ^ k and the RTM angle of the robot ix is calculated. For example, if the RTM angle of the robot ix is 32 degrees and the estimated angle θ ^ k is 30 degrees, −2 degrees (= 30−32) is calculated as the angle difference. Note that the
続いて、ステップS281では、推定角度誤差量σ2 θ^kを補正精度とし、算出された角度差を補正角度データとして一時記憶する。つまり、推定角度誤差量σ2 θ^kは補正精度バッファ340に格納され、算出された角度差は補正角度バッファ338に格納される。なお、ステップS281の処理を実行するプロセッサ20は記憶手段として機能する。
Subsequently, in step S281, the estimated angle error amount σ 2 θ ^ k is set as the correction accuracy, and the calculated angle difference is temporarily stored as correction angle data. That is, the estimated angle error amount σ 2 θ ^ k is stored in the
続いて、ステップS283では、推定角度θ^ kに基づいて、ロボットixのRTMの角度を更新する。たとえば、推定角度θ^ kが30度であれば、ロボットixのRTMの角度が30度にされる。そして、ステップS283の処理が終了すれば、角度補正処理を終了する。 Subsequently, in step S283, the RTM angle of the robot ix is updated based on the estimated angle θ ^ k . For example, if the estimated angle θ ^ k is 30 degrees, the RTM angle of the robot ix is set to 30 degrees. And if the process of step S283 is complete | finished, an angle correction process will be complete | finished.
なお、角度差および推定角度誤差量σ2 θ^kには、ロボットixのロボットIDが対応付けられる。つまり、補正角度バッファ338および補正精度バッファ340には複数の角度補正データおよび補正精度が格納されるため、それぞれを識別可能にするため、ロボットIDが対応付けられる。
Note that the robot ID of the robot ix is associated with the angle difference and the estimated angle error amount σ 2 θ ^ k . That is, a plurality of angle correction data and correction accuracy are stored in the
また、角度補正処理では、前回の補正角度データが今回の状態データに含まれる角度データに反映される。たとえば、前回の角度補正処理で補正角度データが−2度と算出され、かつロボット18に送信されていなければ、今回の処理では、状態データに含まれる角度データから−2度が反映されたうえで実行される。ただし、補正角度データがロボット18に送信された場合には、補正角度バッファ338はリセットされる。つまり、補正角度データがロボット18に送信された場合に限り、前回の補正角度データが今回の状態データに含まれる角度データに反映される。
In the angle correction process, the previous correction angle data is reflected in the angle data included in the current state data. For example, if the correction angle data is calculated as -2 degrees in the previous angle correction process and is not transmitted to the
この実施例によれば、ロボット自己位置同定システム100は、ネットワーク400を介して接続された追跡サーバ10およびロボット18を含む。追跡サーバ10はLRF12によって検出領域F内の実体Eをセンシングすることで実体Eを追跡し、ロボット18は状態データを出力する。
According to this embodiment, the robot self-
追跡サーバ10は、ロボット18が出力する状態データおよび検出された実体Eの位置データをメモリ22のバッファに記憶する。また、追跡サーバ10は関連付処理を実行し、記憶した位置履歴データおよび状態履歴データに基づいて、各ロボット18と各実体Eとを関連付ける。さらに、追跡サーバ10は、各ロボット18に対応するRTMを、位置履歴データおよび状態履歴データに基づいて更新し、そのRTMに基づく補正データをロボット18に送信する。そして、ロボット18は、追跡サーバ10が送信した補正データに基づいて、自身の位置および角度を補正する。
The tracking
このように、本実施例では、容易に設置可能なLRF12およびロボット18が一般的に出力可能な状態データを利用して、ロボット18と実体Eとを関連付けることができるため、容易にロボット18を自己位置同定することができる。
As described above, in this embodiment, the
なお、ロボット自己位置同定システム100では、各サーバおよびロボット18に設定される時刻が一定時間(たとえば、20秒)毎に同期される。つまり、ロボット18が出力する状態データおよび追跡サーバ10が記憶する位置データに対応付けられる時刻データは、同時刻を示す。
In the robot self-
また、遠隔操作装置14のオペレータが、ロボット18の位置データを修正してもよい。この場合、ロボット18は、追跡サーバ10に対してリセット信号を送信する。そして、ロボット18は、リセット信号を送信したときには、追跡サーバ10が送信した補正データに基づいて位置および角度を補正しない。さらに、追跡サーバ10は、リセット信号を受信した場合には、リセット信号が途絶した直後に取得した状態データに基づいてRTMを補正する。つまり、オペレータによってロボット18の位置が修正された場合には、追跡サーバ10が送信する補正データが、一時的に無効にされる。
Further, the operator of the
また、ロボット自己位置同定システム100には、ローカライゼーション機能専用のサーバが含まれていてもよい。さらに、ロボット自己位置同定システム100は、遠隔操作装置14および計画サーバ16を含んでいなくてもよい。
The robot self-
また、本実施例のロボット自己位置同定システム100は、本実施例のロボット18だけに限らず、様々な種類のロボットを同時に自己位置同定することができる。そのため、ロボット18が出力する状態データの位置および角度などは、車輪速センサ112だけでなく、様々なセンサを利用して検出されてもよい。
Further, the robot self-
また、本実施例の数値(所定時間、第1所定速度、第2所定速度、第1速度差、第2速度差、第1時間、第2時間、所定距離など)は、ロボット自己位置同定システム100が設置される環境に応じて、任意に変更されてもよい。 The numerical values (predetermined time, first predetermined speed, second predetermined speed, first speed difference, second speed difference, first time, second time, predetermined distance, etc.) of the present embodiment are the robot self-position identification system. It may be arbitrarily changed according to the environment in which 100 is installed.
また、カルマンフィルタ以外にも、パーティクルフィルタおよび拡張カルマンフィルタなど、ロボット18の状態を推定することができるフィルタ(状態推定フィルタ)を利用して角度を補正することができる。
In addition to the Kalman filter, the angle can be corrected using a filter (state estimation filter) that can estimate the state of the
また、他の実施例では、RMSの代わりに相関係数を利用して、ロボット18と実体Eとを関連付けてもよい。
In another embodiment, the
10 …追跡サーバ
12a−12f …LRF
18 …ロボット
20 …プロセッサ
22 …メモリ
24 …通信LANボード
26 …無線通信装置
32a,32b …車輪
36a,36b …車輪モータ
100 …ロボット自己位置同定システム
112 …車輪速センサ
114 …通信LANボード
116 …無線通信装置
400 …ネットワーク
10 ...
DESCRIPTION OF
Claims (7)
前記ロボットから順次取得した複数の状態データを記憶する状態データ記憶手段、
前記空間内に存在する実体をセンシングする環境センサ、
前記環境センサの出力に基づいて前記実体の位置を検出する位置検出手段、
前記位置検出手段によって検出された実体の複数の位置データを記憶する位置データ記憶手段、
前記状態データ記憶手段によって記憶された前記ロボットの複数の位置データおよび前記位置データ記憶手段によって記憶された前記実体の複数の位置データに基づいて、前記ロボットと前記実体とを関連付ける関連付手段、および
前記ロボットと関連付けられた前記実体の位置データに基づいて、前記状態データに含まれる位置データを補正する補正データを、前記ロボットに送信する送信手段を備え、
前記ロボットは、前記補正データに従って、自身の位置データを補正する、ロボット自己位置同定システム。 A robot self-position identification system for self-locating a robot capable of outputting state data including at least its own position data with respect to its movement in a space in which the robot exists.
State data storage means for storing a plurality of state data sequentially obtained from the robot;
An environmental sensor for sensing an entity existing in the space;
Position detecting means for detecting the position of the entity based on the output of the environmental sensor;
Position data storage means for storing a plurality of position data of an entity detected by the position detection means;
Association means for associating the robot with the entity based on the plurality of position data of the robot stored by the state data storage unit and the plurality of position data of the entity stored by the position data storage unit; Transmission means for transmitting correction data for correcting position data included in the state data to the robot based on position data of the entity associated with the robot;
The robot self-position identification system in which the robot corrects its own position data according to the correction data.
前記状態データ記憶手段は、前記角度データを含む状態データを記憶し、
前記状態データ記憶手段によって記憶された前記ロボットの複数の状態データおよび前記位置データ記憶手段によって記憶された前記実体の複数の位置データに基づいて、次の位置における角度を推定する角度推定手段、および
前記角度推定手段によって推定された角度および状態データ記憶手段によって記憶された状態データに含まれる角度データに基づいて、前記状態データに含まれる角度データを補正する角度補正データを算出する角度補正算出手段をさらに備え、
前記送信手段は、前記補正データおよび前記角度補正データを、前記ロボットに送信する第1送信手段を含み、
前記ロボットは、前記補正データおよび前記角度補正データに従って、自身の位置データおよび角度データを補正する、請求項1記載のロボット自己位置同定システム。 The state data further includes its own angle data,
The state data storage means stores state data including the angle data,
An angle estimation means for estimating an angle at the next position based on a plurality of state data of the robot stored by the state data storage means and a plurality of position data of the entity stored by the position data storage means; and Angle correction calculation means for calculating angle correction data for correcting the angle data included in the state data based on the angle estimated by the angle estimation means and the angle data included in the state data stored in the state data storage means. Further comprising
The transmission means includes first transmission means for transmitting the correction data and the angle correction data to the robot,
The robot self-position identification system according to claim 1, wherein the robot corrects its own position data and angle data according to the correction data and the angle correction data.
前記推定角度誤差を補正精度として記憶する記憶手段をさらに備え、
前記送信手段は、前記記憶手段によって記憶された補正精度が低いとき、前記補正データのみを前記ロボットに送信する第2送信手段を含む、請求項2記載のロボット自己位置同定システム。 The angle estimating means calculates an estimated angle error when estimating the angle,
Storage means for storing the estimated angle error as correction accuracy;
3. The robot self-position identification system according to claim 2, wherein the transmission unit includes a second transmission unit that transmits only the correction data to the robot when the correction accuracy stored by the storage unit is low.
前記角度推定手段は、前記観測された角度、前記観測角度誤差、前回推定された角度および前回算出された推定角度誤差に基づいて、次の位置の角度を推定し、推定角度誤差を算出する、請求項3記載のロボット自己位置同定システム。 The angle estimation means observes the angle of the robot based on the plurality of state data of the robot stored by the state data storage means and the position data of the entity stored by the position data storage means. And an observation angle error calculation means for calculating an observation angle error of an angle observed by the angle observation means,
The angle estimation means estimates the angle of the next position based on the observed angle, the observed angle error, the previously estimated angle, and the previously calculated estimated angle error, and calculates an estimated angle error. The robot self-position identification system according to claim 3.
前記判断手段によって維持しないと判断されたとき、前記ロボットと前記実体との関連付けを解除する解除手段をさらに備える、請求項1ないし4のいずれかに記載のロボット自己位置同定システム。 A determination unit that determines whether to maintain the association between the robot and the entity, and a release unit that cancels the association between the robot and the entity when the determination unit determines not to maintain the association. The robot self-position identification system according to any one of 1 to 4.
前記関連付手段は、前記ロボットと前記実体との関連付けが解除されてから所定時間以内のとき、前記ロボットと各実体との第1速度差を算出する第1速度差算出手段、前記第1速度差算出手段によって算出された第1速度差が第1所定速度より大きいかを判断する第1速度判定手段、前記ロボットと各実体との距離が所定距離より離れているかを判定する距離判定手段、および前記第1速度判定手段によって前記ロボットとの第1速度差が前記第1所定速度以下と判定され、かつ前記距離判断手段によって前記ロボットとの距離が所定距離以内と判定された実体のうち、前記ロボットに最も近い実体と前記ロボットとを関連付ける第1関連付手段を含む、請求項5記載のロボット自己位置同定システム。 There are at least two entities in the space,
The association means includes a first speed difference calculation means for calculating a first speed difference between the robot and each entity within a predetermined time after the association between the robot and the entity is canceled, and the first speed First speed determining means for determining whether the first speed difference calculated by the difference calculating means is greater than a first predetermined speed; distance determining means for determining whether the distance between the robot and each entity is greater than a predetermined distance; And an entity in which a first speed difference with the robot is determined to be less than or equal to the first predetermined speed by the first speed determining means, and a distance from the robot is determined to be within a predetermined distance by the distance determining means, 6. The robot self-position identification system according to claim 5, further comprising first association means for associating an entity closest to the robot with the robot.
前記関連付手段は、前記ロボットと前記実体との関連付けが解除されてから所定時間が経過したとき、前記ロボットと各実体との第2速度差を算出する第2速度差算出手段、前記第2速度差算出手段によって算出された第2速度差が第2所定速度より大きいかを判定する第2速度判定手段、および前記第2速度判定手段によって前記ロボットの第2速度差が前記第2所定速度以下と判定された実体が1つだけであるとき、その実体と前記ロボットとを関連付ける第2関連付手段を含む、請求項5または6記載のロボット自己位置同定システム。 There are at least two entities in the space,
The association means includes second speed difference calculation means for calculating a second speed difference between the robot and each entity when a predetermined time has elapsed since the association between the robot and the entity is canceled, Second speed determination means for determining whether the second speed difference calculated by the speed difference calculation means is greater than a second predetermined speed, and the second speed difference of the robot is determined by the second speed determination means to be the second predetermined speed. The robot self-position identification system according to claim 5 or 6, further comprising: a second associating unit that associates the entity with the robot when only one entity is determined as follows.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010087682A JP5493097B2 (en) | 2010-04-06 | 2010-04-06 | Robot self-localization system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010087682A JP5493097B2 (en) | 2010-04-06 | 2010-04-06 | Robot self-localization system |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011221631A JP2011221631A (en) | 2011-11-04 |
JP5493097B2 true JP5493097B2 (en) | 2014-05-14 |
Family
ID=45038577
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010087682A Active JP5493097B2 (en) | 2010-04-06 | 2010-04-06 | Robot self-localization system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP5493097B2 (en) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6432825B2 (en) * | 2014-08-22 | 2018-12-05 | 株式会社Ihi | Method and apparatus for aligning three-dimensional point cloud data and moving body system thereof |
KR20230091335A (en) * | 2021-12-16 | 2023-06-23 | 엘지전자 주식회사 | Autonomous robot, cloud device and method of correcting position |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3686379T2 (en) * | 1985-08-30 | 1993-03-11 | Texas Instruments Inc | CONTROLLER FOR A REMOTE CONTROLLED VEHICLE USING THE DELAYED ABSOLUTE POSITION DATA FOR STEERING AND NAVIGATION. |
US4940925A (en) * | 1985-08-30 | 1990-07-10 | Texas Instruments Incorporated | Closed-loop navigation system for mobile robots |
JP2000275321A (en) * | 1999-03-25 | 2000-10-06 | Ushio U-Tech Inc | Method and system for measuring position coordinate of traveling object |
JPWO2002023297A1 (en) * | 2000-09-11 | 2004-01-22 | 高瀬 國克 | Mobile object movement control system |
JP4056777B2 (en) * | 2002-03-29 | 2008-03-05 | 綜合警備保障株式会社 | Autonomous mobile object traveling system and autonomous mobile object position correction method |
JP2008260107A (en) * | 2007-04-13 | 2008-10-30 | Yaskawa Electric Corp | Mobile robot system |
JP2010224755A (en) * | 2009-03-23 | 2010-10-07 | Toyota Motor Corp | Moving object and position estimating method of the same |
-
2010
- 2010-04-06 JP JP2010087682A patent/JP5493097B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2011221631A (en) | 2011-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11092975B2 (en) | Control method, control device, and carrier system | |
JP5324286B2 (en) | Network robot system, robot control apparatus, robot control method, and robot control program | |
JP5747191B2 (en) | Mobile remote control system and control program therefor | |
JP5768273B2 (en) | A robot that predicts a pedestrian's trajectory and determines its avoidance behavior | |
WO2012027845A2 (en) | System and method for tracking | |
US20190184569A1 (en) | Robot based on artificial intelligence, and control method thereof | |
US20180329409A1 (en) | Portable mobile robot and operation thereof | |
KR20180080498A (en) | Robot for airport and method thereof | |
WO2016031105A1 (en) | Information-processing device, information processing method, and program | |
WO2004052597A1 (en) | Robot control device, robot control method, and robot control program | |
JP2010231470A (en) | Information providing system | |
KR20180063719A (en) | Unmanned Aerial Vehicle and the Method for controlling thereof | |
JP2012111011A (en) | Mobile robot | |
CN112236733A (en) | Computerized system for guiding mobile robot to docking station and using method thereof | |
JP6640779B2 (en) | Autonomous mobile device and mobile control system | |
JP2012208782A (en) | Move prediction apparatus, robot control device, move prediction program and move prediction method | |
JP2015066621A (en) | Robot control system, robot, output control program and output control method | |
JP2009151419A (en) | Method and apparatus for specifying target | |
US20180329424A1 (en) | Portable mobile robot and operation thereof | |
JP5493097B2 (en) | Robot self-localization system | |
KR20180074403A (en) | Robot for airport and method thereof | |
JP5552710B2 (en) | Robot movement control system, robot movement control program, and robot movement control method | |
TW201831920A (en) | Auto moving device | |
WO2021078203A1 (en) | Obstacle avoidance method for aircraft, and aircraft, flight system, and storage medium | |
US20210316452A1 (en) | Information processing device, action decision method and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130122 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20131218 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20131224 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140108 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140128 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140203 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5493097 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |