ロボット掃除機やドローン、自動運転車、ARグラスに共通して必要なのが「自分は今どこにいるのか」という問いへの答えである。GPSは屋内やビル街では使えず、そもそも地図が最初から与えられているとも限らない。Visual-SLAM(ビジュアルスラム)は、この問いにカメラ映像だけ(場合によっては安価な補助センサーを併用)で答えようとする技術である。この記事では、なぜ自己位置が分からなくなるのかという問題設定から出発し、特徴点の追跡、カメラ幾何の数式、Visual OdometryとSLAMの違い、代表アルゴリズムの系譜、実用上の選び方までを一気に体系立てて見ていく。
0. この記事で分かること
- Visual-SLAMとは何か、なぜカメラだけで自己位置推定ができるのか
- Visual Odometry(VO)とSLAMがどう違うのか
- ORB-SLAM/LSD-SLAM/DSO/SVO/DROID-SLAMといった主要アルゴリズムがそれぞれ何を工夫しているのか
- Feature-based/Direct/Learning-basedという3つの設計思想の違い
- Visual-SLAMが苦手とする環境と、その理由
- ロボット・ドローン・AR/VR・自動運転それぞれで、実際にどの手法を選ぶべきか
1. まず結論:Visual-SLAMとは何か
一言で言えば、Visual-SLAMとは、カメラが撮影する連続した画像列だけから、カメラ自身の移動軌跡(Localization)と、周囲の環境の3次元構造(Mapping)を同時に推定する技術である。
SLAMという名前自体が Simultaneous Localization And Mapping(自己位置推定と地図構築の同時実行)の略であり、この「同時に」という部分が本質的に重要になる。地図が先に分かっていれば自分の位置を求めるのは比較的簡単な問題になるし、逆に自分の位置が正確に分かっていれば地図を作るのも簡単になる。だがVisual-SLAMが直面するのは、そのどちらも最初は分かっていないという状況——地図を作るには自分の位置が必要で、位置を求めるには地図が必要という、鶏と卵のような依存関係を、同じ観測データから同時に解きほぐさなければならない問題である。
入力はカメラが撮影する時系列の画像(単眼・ステレオ・RGB-Dのいずれか)であり、出力は各時刻でのカメラの6自由度の姿勢(位置3自由度+向き3自由度)と、周囲の環境を表す地図(疎な特徴点の集合、あるいは密な3次元形状)の2つである。ロボット掃除機が部屋の間取りを覚えながら掃除ルートを決める場面や、ドローンがGPSの届かない屋内・地下でホバリングを安定させる場面、ARグラスが現実空間に仮想オブジェクトをズレなく重ねる場面は、いずれもこのVisual-SLAMが裏側で動いている典型例である。
2. なぜ「自分の位置」が分からないのか
Visual-SLAMが解決しようとしている問題の本質を理解するには、まず「なぜロボットは自分の位置が分からなくなるのか」を具体的に考える必要がある。
第一に、GPSがない、あるいは信頼できない環境が広く存在する。屋内、地下、トンネル、高層ビルに囲まれた都市部の谷間(マルチパスで測位誤差が大きくなる)、あるいは水中や惑星探査のような衛星測位網そのものが存在しない環境では、絶対位置を直接与えてくれる手段がない。
第二に、そもそも地図が存在しない問題がある。新築の建物、災害現場、未探査の惑星表面など、あらかじめ整備された地図データが使えない状況は珍しくない。地図がなければ、自分がどこにいるかを「地図と照合する」という方法自体が使えない。
第三に、そしてもっとも本質的なのが、センサーの1回の観測だけでは絶対位置が原理的に決まらないという点である。カメラは今この瞬間、自分の周りに何が見えるかしか教えてくれない。1枚の画像を見て「これはリビングの、あの壁から2.3メートルの位置だ」と即座に分かるわけではない——その壁が「あの壁」だと分かるためには、以前にもその壁を見たことがあり、かつそのときの自分の位置を覚えている必要がある。つまり、現在の観測を意味のある位置情報に変換するには、過去の観測との対応関係(今どこにいるかは、これまでどこを通ってきたかに依存する)が不可欠であり、この対応関係こそが地図の役割を果たす。
SLAM問題の本質は、この「今の観測」と「過去の観測(地図)」の対応関係を、外部からの絶対的な位置情報なしに、観測データ自体から一貫性を保ちながら組み立て続けることにある。1回でも対応関係を誤ると、その誤差はそれ以降の推定すべてに伝播していく——この誤差の蓄積をいかに抑え、いかに後から修正するかが、Visual-SLAMのアルゴリズム設計の中心的なテーマになる。
3. カメラから何を見つけるのか
カメラの生の出力は、単なるピクセル値(輝度・色)の格子でしかない。ここから「自分がどう動いたか」を求めるための最初の一歩が、画像の中から追跡可能な手がかりを見つけ出すことである。
Feature(特徴点)とは、画像中で周囲と区別しやすく、かつ視点が変わっても再現よく検出できる局所的な点——角、コーナー、エッジの交点のような、輝度勾配が複数方向に強く変化する場所を指す。空の一様な青色の領域のような、周囲と見分けがつかない部分は特徴点として使えない。
Feature Detection(特徴点検出)は、1枚の画像の中からこうした特徴点の候補を見つけ出す処理である。ORB(Oriented FAST and Rotated BRIEF)やSIFT、FASTコーナー検出器などのアルゴリズムが、画像中のどのピクセルが「特徴点らしいか」を判定し、さらにその点周辺の見た目を数値化した記述子(descriptor)を計算する。
Feature Tracking(特徴点追跡)は、この特徴点を、時間的に連続する次のフレームでも見つけ出し、対応づける処理である。方式は大きく2つある。1つは検出した特徴点同士を記述子の類似度で照合する方式(Feature Matching)、もう1つは前フレームの特徴点の位置を起点に、次フレームで近傍を探索して追跡する方式(Optical Flow、代表的にはLucas-Kanade法)である。
この「同じ実世界の点が、異なるフレームのどこに写っているか」という対応関係をCorrespondence(対応点)と呼ぶ。Visual-SLAMのほぼすべての幾何計算は、この対応点の集合を入力として成り立っている——対応点が1つも見つからなければ、カメラがどう動いたかを計算する手がかりが原理的に存在しないことになる。
Optical Flow(オプティカルフロー)は、特徴点に限らず画像上の各点(あるいは疎な点群)が、フレーム間でどれだけ・どの方向に動いたかを表すベクトル場である。特徴点ベースの手法が「際立った点だけ」を追跡するのに対し、Optical Flowはより広い範囲の動きの情報を扱える一方、計算コストは一般に高くなる。
4. カメラの動きをどう計算するのか
対応点が求まれば、そこから「カメラがどう動いたか」を幾何学的に計算できる。この計算の土台になるのがEpipolar Geometry(エピポーラ幾何)である。
図1 — 2つのカメラ視点O_1・O_2と空間中の点X、それぞれの画像平面上への投影点x_1・x_2の関係を表すエピポーラ幾何。x_1に対応するx_2は、画像平面上の1本の直線(エピポーラ線)上に必ず存在する。
同じ空間中の1点Xを2つの異なる視点から撮影すると、片方の画像上の点\mathbf{x}_1に対応する、もう片方の画像上の点\mathbf{x}_2は、画像全体のどこにでもありうるわけではなく、必ず1本の直線(エピポーラ線)上に存在する。この幾何学的な拘束を表す行列がEssential Matrix(基本行列)Eである。カメラの内部パラメータが既知のとき、正規化されたカメラ座標での対応点は次の関係を満たす。
ここでRと\mathbf{t}はカメラ1からカメラ2への回転と並進、[\mathbf{t}]_{\times}は並進ベクトル\mathbf{t}から作られる歪対称行列(外積を行列積として表す演算子)である。この式の意味するところは、「対応点\mathbf{x}_1と\mathbf{x}_2、そしてカメラの相対的な回転・並進の間には、常にこの拘束が成り立つ」ということであり、逆に言えば、十分な数の対応点(最低5〜8点)からこの式を満たすEを求めれば、そこから回転Rと並進\mathbf{t}を(並進の長さを除いて)復元できる。カメラの内部パラメータが未知、あるいはピクセル座標をそのまま使う場合には、内部パラメータ行列Kを含めたFundamental Matrix(基礎行列)F = K_2^{-\top} E K_1^{-1}が同じ役割を果たす。
Essential Matrixから得られる並進\mathbf{t}は、実際の距離の単位(メートルなど)を持たない——2つの画像だけからは、カメラが1メートル動いたのか、2メートル動いたのかを区別できない、スケール不定性という制約がある。これはVisual-SLAM、特に単眼カメラを使う構成に固有の問題であり、5節で改めて扱う。
対応点の3次元的な位置そのもの、つまり空間中の点Xの座標を求める処理をTriangulation(三角測量)と呼ぶ。2つの視点それぞれから点Xへ向かう視線(光線)を延ばすと、理想的にはこの2本の光線は空間中の1点Xで交差する——この交点を求めることで、対応点の3次元位置が復元される(実際には観測誤差により厳密には交わらないため、最小二乗的に最も交点に近い点を求める)。
すでに3次元位置が分かっている地図点(ランドマーク)が画像上のどこに写っているかという対応が得られれば、そこからカメラの姿勢を直接求めることもできる。これがPnP(Perspective-n-Point)問題であり、n個の3次元点とその画像上の投影位置の対応から、カメラの位置・姿勢を求める。地図がすでに存在する状況では、PnPは新しいフレームごとのカメラ姿勢を求める中心的な手段になる。
5. Visual Odometry
ここまでに見た「対応点からカメラの動きを求める」という処理を、フレームごとに逐次繰り返していくだけでも、カメラの移動軌跡を求めることができる。これがVisual Odometry(VO、視覚オドメトリ)である。
VOは、直前のフレーム(あるいは直近の数フレーム)との相対的な動きだけを次々に積み重ねて、カメラの軌跡を推定する。地図を保持し続けたり、過去に訪れた場所を再認識したりする仕組みは、基本的には持たない——「今、直前と比べてどれだけ動いたか」だけを計算し続ける、車のオドメーター(走行距離計)に近い発想の技術である。
VOとSLAMの違いは、この「地図を保持し、過去との整合性を取り戻す仕組みを持つかどうか」にある。VOは軽量で実装がシンプルな反面、次のフレームの推定が常に直前の推定に依存するため、小さな誤差が時間とともに際限なく積み重なっていく。この蓄積誤差をDrift(ドリフト)と呼ぶ。ロボットが同じ場所を1周して戻ってきても、VOだけでは「今、出発点に戻った」と気づく手段がなく、推定された軌跡はスタート地点からズレたまま閉じない。
もう1つ、VO(特に単眼カメラ構成のVO)に固有の問題が、4節でも触れたScale(スケール)問題である。単眼カメラの画像だけからは、実世界の絶対的な長さの単位を復元できない——「2メートル動いて2倍の大きさに写った」のか「4メートル動いて4倍の大きさに写った」のかを、画像の見た目だけから区別する手がかりが存在しないためである。ステレオカメラ(2つのカメラ間の既知の距離を基準にできる)やRGB-Dカメラ(深度センサーから実寸の距離が直接得られる)、あるいはIMUとの併用(実寸の加速度情報からスケールを推定できる、詳しくは「VIO/LIO入門」参照)を使うことで、このスケール不定性を解消できる。
6. SLAMにすると何が増えるのか
VOに、次の要素を加えたものがSLAMだと理解すると分かりやすい。
Map(地図)は、これまでに観測した特徴点の3次元位置(あるいは密な3次元形状)を蓄積した表現である。VOのように直前のフレームとしか比較しないのではなく、地図に蓄積されたすべての観測と照合できるようになる。
Landmark(ランドマーク)は、地図を構成する個々の要素——多くの場合、3次元位置を持つ特徴点——を指す。新しいフレームが得られるたびに、そのフレームで見えているランドマークとの対応を取ることで、直前のフレームだけでなく、もっと過去に作られた地図全体との整合性を保ちながらカメラ姿勢を推定できる。
Loop Closure(ループクロージャ)は、SLAMがVOに対して持つ、もっとも本質的な優位性である。ロボットが移動して、以前に訪れた場所へ戻ってきたことを画像の類似性から検出し、「今の位置」と「過去にその場所を訪れたときの位置」を結びつける拘束を新たに地図へ追加する。この拘束が加わることで、それまで蓄積してきたドリフトを、ループを構成する経路全体に配分し直して補正できる。
この補正の結果として得られるのがGlobal Consistency(大域的な整合性)である。ループクロージャ以前は、蓄積した誤差のせいで「本来は同じ場所であるはずの2つの地図上の位置」が、少しずつズレた別の場所として記録されてしまっている。ループクロージャによる補正は、このズレを検出し、地図全体を辻褄が合う形に作り直す——SLAMが単なる「動きの記録」ではなく「一貫した地図」を提供できる理由は、このループクロージャの仕組みにある。
7. Visual-SLAMの基本構成
ここまでの要素を組み合わせると、現代の代表的なVisual-SLAMシステムに共通する、次のようなパイプラインが見えてくる。
図2 — Cameraから得た画像を追跡(Feature/Direct Tracking)し、姿勢推定(Pose Estimation)・局所地図の更新(Local Mapping)を経て、ループを検出したときにLoop Closingが発火し、Optimization層(Bundle Adjustment/Pose Graph)が姿勢と地図を一貫した形に補正する。
Camera(カメラ)から得られた画像は、まずFeature/Direct Tracking(3節・8節で扱うFeature-based/Direct、いずれかの方式)によって前フレームとの対応が取られる。この対応から、Pose Estimation(4節のEpipolar幾何・PnPを用いたカメラ姿勢の推定)が行われ、同時にLocal Mapping(直近の観測範囲での地図点の追加・更新)が進む。ループが検出されるとLoop Closingが発火し、蓄積された姿勢と地図全体をBackend(10節)のOptimizationが一貫した形に補正する。この一連の処理を経て、最終的な出力であるPose(カメラの軌跡)とMap(周囲の3次元構造)が得られる。
8. 主要アルゴリズム
Visual-SLAMの歴史は、「どこまでを明示的に設計し、どこから先を学習に任せるか」という軸で見ると理解しやすい。
PTAM(Parallel Tracking and Mapping、Klein & Murray、2007年)は、Tracking(姿勢推定)とMapping(地図構築)を別々のスレッドで並列に走らせるという設計を導入した先駆的な手法である。Trackingは毎フレーム高速に実行される一方、Mappingは計算コストの高いBundle Adjustmentを、時間的な余裕のあるバックグラウンドスレッドで実行する——この「TrackingとMappingを分離する」という発想は、後続の多くのVisual-SLAMシステムに受け継がれた。
ORB-SLAM(Mur-Artal・Montiel・Tardós、2015年)は、ORB特徴点を軸に、Tracking・Local Mapping・Loop Closingの3スレッド構成、そしてPlace Recognition(Bag-of-Wordsによる過去フレームとの照合)を組み合わせ、単眼カメラでの実用的な性能を達成した。ORB-SLAM2(Mur-Artal・Tardós、2017年)は、この枠組みを単眼だけでなくステレオ・RGB-Dカメラにも拡張した。ORB-SLAM3(Campos・Elvira・Gómez Rodríguez・Montiel・Tardós、2021年)は、IMUとの密結合(Visual-Inertial SLAM)、そして複数の地図を保持し必要に応じて統合するMulti-Map SLAMを新たに導入し、現在も特徴点ベースSLAMの事実上の標準的な参照実装として広く使われている。
LSD-SLAM(Large-Scale Direct monocular SLAM、Engel・Schöps・Cremers、2014年)は、特徴点を検出せず、画像の輝度情報を直接使ってカメラ姿勢を推定するDirect法を、大規模な環境でも動く形で示した代表例である。特徴点抽出という処理そのものを省略できるため、特徴点が乏しい環境でも情報を活用しやすいという利点がある。
DSO(Direct Sparse Odometry、Engel・Koltun・Cremers、2016年発表・2018年出版)は、Direct法でありながら、LSD-SLAMのような半密な(semi-dense)推定ではなく、疎な(sparse)点集合に絞って輝度誤差を最小化する設計を採り、精度と計算効率を両立させた。
SVO(Fast Semi-Direct Monocular Visual Odometry、Forster・Pizzoli・Scaramuzza、2014年)は、特徴点検出とDirect法を組み合わせた半直接(semi-direct)方式であり、特徴点周辺のパッチに対して輝度ベースの追跡を行うことで、高フレームレートでの高速な動作を実現した。ドローンのような計算資源が限られる機体での利用を念頭に設計されている。
DROID-SLAM(Teed & Deng、2021年)は、特徴点抽出・マッチングという明示的な工程そのものを深層学習に置き換え、相関ボリュームと再帰的な更新演算子、微分可能なBundle Adjustment層によってカメラ姿勢とピクセル単位の深度を推定する、Learning-basedの代表例である(手法の内部動作の詳細は「Visual-SLAMの技術動向」で扱っている)。
9. Feature-based/Direct/Learning-based比較
これらのアルゴリズムは、突き詰めると3つの設計思想のいずれかに分類できる。
| 観点 | Feature-based(代表: ORB-SLAM3) | Direct(代表: DSO/LSD-SLAM) | Learning-based(代表: DROID-SLAM) |
|---|---|---|---|
| 原理 | 特徴点を検出・記述子化し、対応点の幾何関係から姿勢を求める | 特徴点を経ず、画像の輝度そのものを直接最小化して姿勢を求める | ニューラルネットワークが特徴抽出・対応推定・姿勢/深度推定を学習ベースで代替する |
| 精度 | 特徴点が豊富な環境で高精度、疎な地図になりやすい | 輝度勾配があれば動作、半密〜密な地図を作れる | テクスチャに乏しい環境でも比較的頑健、密な深度が得やすい |
| 計算量 | 中程度(特徴点抽出・記述子計算・マッチングのコスト) | 実装により幅があるが一般に軽量(DSOは特に効率重視) | 高い(推論だけでも数GB〜十数GBのGPUメモリを要することが多い) |
| ロバスト性 | 低テクスチャ環境や動的物体に弱いが、照明変化には比較的強い | 輝度変化(自動露出・照明変化)に敏感 | 学習データの範囲内では強いが未知環境への汎化に限界がある場合も |
| 実装難易度 | 実績豊富なオープンソース実装が多く導入しやすい | 数学的な取り扱い(輝度の線形化)がやや複雑 | 学習済みモデルの利用は容易だが、内部の再学習・調整は専門性を要する |
Feature-basedは長年の実績があり組み込み機器での動作実績も豊富、Directは特徴点の乏しい環境での粘り強さに強み、Learning-basedは近年急速に精度を伸ばしているが計算資源の要求が重い、という大まかな棲み分けが現状である。
10. Backend
Visual-SLAMの精度を最終的に決めるのは、フロントエンド(特徴抽出・追跡・姿勢推定)だけでなく、蓄積した観測全体を辻褄の合う形に磨き上げるBackend(バックエンド)の役割である。
Bundle Adjustment(バンドル調整)は、カメラ姿勢と地図点(ランドマーク)の3次元位置を同時に、観測全体との整合性が最大になるように最適化する処理である。地図点\mathbf{X}_iをカメラ姿勢(R_j, \mathbf{t}_j)で画像へ投影した位置と、実際に観測された特徴点の画像上の位置\mathbf{u}_{ij}との食い違い(再投影誤差)の総和を最小化する。
\pi(\cdot)はカメラの内部パラメータに基づく3次元点から画像平面への投影関数である。すべてのフレーム・すべての地図点を同時に最適化するGlobal Bundle Adjustmentは高精度だが計算コストが高く、実運用では直近の数フレームだけを対象にするLocal Bundle Adjustmentと組み合わせて計算量を抑える設計が一般的である。
ループクロージャが検出されたときに使われるのがPose Graph(姿勢グラフ)最適化である。すべての地図点を含めて最適化するBundle Adjustmentとは異なり、カメラの各時刻の姿勢だけをノードとし、フレーム間の相対姿勢の拘束をエッジとしたグラフを構築して、姿勢だけを高速に最適化する。ループクロージャで新たに追加された拘束が、蓄積されたドリフトをループ全体に配分し直す役割を果たす。
これらはいずれもNonlinear Optimization(非線形最適化)の枠組みで解かれる。投影関数\pi(\cdot)やロボットの回転を含む姿勢の合成が本質的に非線形であるため、Gauss-Newton法やLevenberg-Marquardt法といった反復的な最適化手法が使われ、g2oやCeres SolverといったライブラリがVisual-SLAM実装の内部で広く利用されている。
11. Visual-SLAMが苦手な環境
Visual-SLAMはカメラという受動的なセンサーに依存する以上、いくつかの状況で系統的に精度が落ちる。
- 暗所: 十分な光量がなければ画像自体のS/N比が悪化し、特徴点の検出やDirect法の輝度勾配計算そのものが不安定になる。赤外線投光器付きのRGB-Dカメラなどで補うことはできるが、屋外の暗所では効果が限られる。
- 低テクスチャ: 白い壁、単色の床、ガラス面のように、輝度勾配に乏しい領域では、特徴点が見つからない、あるいはDirect法の最小化が不良設定(局所解に落ちやすい)になる。
- 高速運動: カメラの移動・回転が速いと、フレーム間で対応点を探索する範囲が広がり、Motion Blur(後述)とも相まって追跡が破綻しやすい。IMUとの併用(VIO)がこの弱点を補う代表的な手段になる。
- 動的物体: 歩行者や車のように動く物体上の特徴点を、静止した環境の一部として扱ってしまうと、カメラ自身の動きの推定に誤差が混入する。動的物体を検出して除外する前処理や、動的物体を明示的にモデル化する拡張が必要になる。
- Motion Blur(モーションブラー): 露光時間中にカメラや被写体が動くことで画像がブレる現象で、特徴点の記述子が不安定になり、対応づけの精度が落ちる。グローバルシャッター方式のカメラや、露光時間を短縮できる高照度環境では影響を抑えられる。
これらはいずれも「カメラが十分な視覚的手がかりを得られない」という共通点を持つ。LiDARのような能動的な測距センサー(「LiDAR-SLAM入門」参照)は、この種の弱点の多くを原理的に回避できる一方、別の弱点(2節参照)を抱えている——どちらか一方が万能ということはなく、この相補性がSensor Fusion(「Sensor Fusion入門」参照)の必要性につながっている。
12. 実用上の選び方
Visual-SLAMをどう選ぶかは、搭載できるセンサー構成、計算資源、要求される精度・リアルタイム性によって大きく変わる。
- ロボット(屋内サービスロボット・掃除ロボット): 低コストなカメラ構成が求められることが多く、Feature-basedのORB-SLAM系や、RGB-Dカメラを使った密なマッピングが実用的な選択肢になる。低テクスチャな廊下・壁が多い環境では、LiDARとの併用も検討に値する。
- ドローン: 搭載できる計算資源・重量に厳しい制約があるため、SVOのような軽量な半直接法や、IMUとの密結合によるVIO構成(「VIO/LIO入門」参照)が広く使われる。
- AR/VR: リアルタイム性とレイテンシの低さが最優先され、ヘッドセット内蔵のIMUと組み合わせたVisual-Inertial構成が事実上の標準になっている。ARにおいては、地図の一貫性(Global Consistency)が仮想オブジェクトのズレに直結するため、Loop Closureの精度も重要になる。
- 自動運転: 単体のVisual-SLAMだけで使われることは少なく、LiDAR・Radar・GNSSとの多センサー統合(「Sensor Fusion入門」参照)の一部としてカメラベースの視覚情報が組み込まれる構成が一般的である。
- 屋内 vs 屋外: 屋内は光量変化が穏やかで構造物が多くFeature-basedが機能しやすい一方、屋外は照明変化・動的物体・広大なスケールへの対応が課題になり、ループクロージャの頑健性がより重要になる。
計算資源に余裕があり最高精度を追求できるならLearning-based、組み込み機器での実績と省リソースを重視するならFeature-based、テクスチャに乏しい環境での粘り強さが必要ならDirect、というのが2026年時点での大まかな判断軸である。最新の研究動向(3D Gaussian Splatting/NeRFによる地図表現の刷新、フィードフォワード3D基盤モデルなど)は「Visual-SLAMの技術動向」で扱っている。
13. まとめ
Visual-SLAMは、カメラ映像だけから対応点を追跡し、Epipolar幾何やPnPによってカメラの動きを求め、地図とループクロージャによって蓄積誤差を補正し続けることで、自己位置推定と地図構築を同時に実現する技術である。Feature-based(ORB-SLAM系)・Direct(DSO/LSD-SLAM系)・Learning-based(DROID-SLAM系)という3つの設計思想は、それぞれ異なるトレードオフの上に成り立っており、「特徴点を明示的に扱うか」「輝度を直接使うか」「どこまでを学習に任せるか」という軸で理解すると全体像がつかみやすい。実際にどれを選ぶかは、搭載できるセンサー・計算資源・求められる精度とリアルタイム性のバランスの中で決まる、用途固有の判断である。