16
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Cartographer 全パラメータ&意訳コメント

Last updated at Posted at 2022-09-11

はじめに

Google の自己位置推定パッケージ Cartographer の全パラメータに、公式ガイドのコメント意訳を付け整理しました。
(日本語の意訳は DeepL 頼みで参考程度に…。 わかる範囲での全パラメータです。)

リファレンス的に使えると良いなと思って作りました。
公式ガイドは、ページ下部にリンクを置きました。

誤りや修正オススメなど、フィードバックのコメントを残してもらえれば嬉しいです。

全パラメータ&コメント

*.lua に書くパラメータです。パラメータの次行をコメントにしています。
代入値はデフォルト値。(cartographer/configuration_files にあるファイルより引用)

大項目として、options.、POSE_GRAPH.、TRAJECTORY_BUILDER_2D.、TRAJECTORY_BUILDER_3D.、TRAJECTORY_BUILDER. があります。
また、中項目として、パラメータの途中の文字列のコメントもページ下部に置いておきます。
小項目がひとつひとつのパラメータになります。

大項目.中項目.小項目 = true
-- パラメータの設定はこんな感じになります

通常は、必要なパラメータのみをまとめて、1つの lua ファイルに書き込む感じです。

(なお、以下は1行が長いので、横スクロールするには
  ・コード部をクリック後にキーボードの左右キーを押すか
  ・コード下部のスクロールバーを使うか
  ・マウスで右へ文字列をぐいっとドラッグするか
  ・あるいはスマホなら横スワイプ
   で見れます。)
(chrome なら [Ctrl + F] ページ検索なども利用してください。)

options 設定

options = {
  map_builder = MAP_BUILDER,
    -- >  [string ?] / ???
  trajectory_builder = TRAJECTORY_BUILDER,
    -- >  [???] / ???
  map_frame = "map",
    -- >  [string ?] / The ROS frame ID to use for publishing submaps, the parent
    -- >  frame of poses, usually “map”.
    -- >       サブマップの publish に使用するROSフレームID。
    -- >       poses の親フレームで、通常は "map"。
  tracking_frame = "imu_link",
    -- >  [string ?] / The ROS frame ID of the frame that is tracked by the SLAM
    -- >  algorithm. If an IMU is used, it should be at its position, although
    -- >  it might be rotated. A common choice is “imu_link”.
    -- >       SLAM時にトラッキングされるROSフレームID。
    -- >       IMUを使用する場合は、回転するとしてもその位置であるようにする。
    -- >       通常は "imu_link "。
  published_frame = "base_link",
    -- >  [string ?] / The ROS frame ID to use as the child frame for publishing
    -- >  poses. For example “odom” if an “odom” frame is supplied by a different
    -- >  part of the system. In this case the pose of “odom” in the map_frame will
    -- >  be published. Otherwise, setting it to “base_link” is likely appropriate.
    -- >       poses を publish するための子フレームとして使用する ROS フレーム ID。
    -- >       例えば "odom" フレームが他から提供されている場合は、"odom" となります。
    -- >       この場合、map_frame 内の "odom" の pose が publish されます。
    -- >       それ以外の場合は、"base_link" に設定するのが適切と思われます。
  odom_frame = "odom",
    -- >  [string ?] / Only used if provide_odom_frame is true. The frame between
    -- >  published_frame and map_frame to be used for publishing the
    -- >  (non-loop-closed) local SLAM result. Usually “odom”.
    -- >       provide_odom_frame の設定が true の場合のみ使用される。
    -- >       (非ループクローズドの)Local SLAM の結果を Publish するために使用する
    -- >       published_frame と map_frame の間のフレーム。
    -- >       通常は "odom"。
  provide_odom_frame = false,
    -- >  [bool] / If enabled, the local, non-loop-closed, continuous pose will be
    -- >  published as the odom_frame in the map_frame.
    -- >       有効にすると、Local の non-loop-closed かつ連続的な pose が、map_frame 内
    -- >       での odom_frame として publish されます。
  publish_frame_projected_to_2d = false,
    -- >  [bool] / If enabled, the published pose will be restricted to a pure 2D
    -- >  pose (no roll, pitch, or z-offset). This prevents potentially unwanted
    -- >  out-of-plane poses in 2D mode that can occur due to the pose extrapolation
    -- >  step (e.g. if the pose shall be published as a ‘base-footprint’-like frame)
    -- >       有効にすると、publish されるpose は純粋な2Dポーズに制限されます
    -- >      (ロール、ピッチ、z-オフセットなし)。これは、pose extrapolation step によって
    -- >       発生する可能性のある、2Dモードでの不要なポーズが面外になる事を防止します。
    -- >       (例:ポーズが 'base-footprint' 等のフレームとしてパブリッシュされる場合)
  use_pose_extrapolator = true,
    -- >  [bool] / ???
  use_odometry = false,
    -- >  [bool] / If enabled, subscribes to nav_msgs/Odometry on the topic “odom”.
    -- >  Odometry must be provided in this case, and the information will be
    -- >  included in SLAM.
    -- >       有効にすると、nav_msgs/Odometry 型の "odom" というトピックを subscribe する。
    -- >       この場合、オドメトリデータが提供されている必要があり、その情報はSLAMに利用される。
  use_nav_sat = false,
    -- >  [bool] / If enabled, subscribes to sensor_msgs/NavSatFix on the topic “fix”.
    -- >  Navigation data must be provided in this case, and the information will
    -- >  be included in the global SLAM.
    -- >       有効にすると、sensor_msgs/NavSatFix の "fix" というトピックを Subscribeする。
    -- >       この場合、ナビゲーションデータが提供されている必要があり、その情報はグローバルSLAMに利用される。
  use_landmarks = false,
    -- >  [bool] / If enabled, subscribes to cartographer_ros_msgs/LandmarkList on
    -- >  the topic “landmarks”. Landmarks must be provided, as
    -- >  cartographer_ros_msgs/LandmarkEntry within
    -- >  cartographer_ros_msgs/LandmarkList.
    -- >  If cartographer_ros_msgs/LandmarkEntry data is provided the information
    -- >  will be included in the SLAM accoding to the ID of the
    -- >  cartographer_ros_msgs/LandmarkEntry.
    -- >  The cartographer_ros_msgs/LandmarkList should be provided at a sample
    -- >  rate comparable to the other sensors. The list can be empty but has to
    -- >  be provided because Cartographer strictly time orders sensor data in
    -- >  order to make the landmarks deterministic. However it is possible to
    -- >  set the trajectory builder option “collate_landmarks” to false and
    -- >  allow for a non-deterministic but also non-blocking approach.
    -- >       有効にすると、cartographer_ros_msgs/LandmarkList 型のトピック "landmarks" を
    -- >       Subscribe するようになります。
    -- >       ランドマークは cartographer_ros_msgs/LandmarkList 内の
    -- >       cartographer_ros_msgs/LandmarkEntry として提供される必要があります。
    -- >       cartographer_ros_msgs/LandmarkEntry データが提供された場合、情報は
    -- >       cartographer_ros_msgs/LandmarkEntry の ID に従って SLAM に利用されます。
    -- >       cartographer_ros_msgs/LandmarkList は他のセンサーと同等のサンプルレートで
    -- >       提供される必要があります。リストは空でも構いませんが、Cartographer はランドマーク
    -- >       を決めるにあたりセンサーデータを厳密に時間順で並べるので、必ず提供されていなければ
    -- >       なりません。しかし、Trajectory Builderのオプション "collate_landmarks "をfalseに
    -- >       設定することで、非決定的な、しかしノンブロッキングなアプローチを可能にすることができます。
  num_laser_scans = 1,
    -- >  [int] / Number of laser scan topics to subscribe to. Subscribes to
    -- >  sensor_msgs/LaserScan on the “scan” topic for one laser scanner, or
    -- >  topics “scan_1”, “scan_2”, etc. for multiple laser scanners.
    -- >       Subscribe するレーザースキャントピックの数。
    -- >       1台のレーザースキャナの場合は "scan "トピック、複数のレーザースキャナの場合は
    -- >       "scan_1", "scan_2 "などのトピックで、sensor_msgs/LaserScan 型として Subscribe します。
  num_multi_echo_laser_scans = 0,
    -- >  [int] / Number of multi-echo laser scan topics to subscribe to.
    -- >  Subscribes to sensor_msgs/MultiEchoLaserScan on the “echoes” topic
    -- >  for one laser scanner, or topics “echoes_1”, “echoes_2”, etc. for
    -- >  multiple laser scanners.
    -- >       Subscribe するマルチエコーレーザースキャンのトピック数。
    -- >       sensor_msgs/MultiEchoLaserScan 型で、1台のレーザースキャナの場合は
    -- >       "echoes" トピック、複数台の場合は "echoes_1", "echoes_2" 等のトピックを Subscribe します。
  num_subdivisions_per_laser_scan = 1,
    -- >  [int] / Number of point clouds to split each received (multi-echo)
    -- >  laser scan into. Subdividing a scan makes it possible to unwarp scans
    -- >  acquired while the scanners are moving. There is a corresponding
    -- >  trajectory builder option to accumulate the subdivided scans into a
    -- >  point cloud that will be used for scan matching.
    -- >       受信した(マルチエコー)レーザースキャンを分割する点群の数。
    -- >       スキャンを分割することで、スキャナーの移動中に取得したスキャンを歪まないように
    -- >       することが可能になる。また、スキャンマッチングに使用する点群に分割されたスキャンを
    -- >       蓄積する Trajectory ビルダーオプションも用意されています。
  num_point_clouds = 0,
    -- >  [int] / Number of point cloud topics to subscribe to. Subscribes to
    -- >  sensor_msgs/PointCloud2 on the “points2” topic for one rangefinder,
    -- >  or topics “points2_1”, “points2_2”, etc. for multiple rangefinders.
    -- >       Subscribe する点群トピックの数。
    -- >       sensor_msgs/PointCloud2 型で、1台のレンジファインダーの場合は "points2 "トピック、
    -- >       複数台の場合は "points2_1", "point2_2" 等のトピックを Subscribe します。
  lookup_transform_timeout_sec = 0.2,
    -- >  [double] / Timeout in seconds to use for looking up transforms
    -- >  using tf2.
    -- >       tf2 の transform を検索する際のタイムアウト (秒)。
  submap_publish_period_sec = 0.3,
    -- >  [double] / Interval in seconds at which to publish the submap poses,
    -- >  e.g. 0.3 seconds.
    -- >       サブマップ poses を publish する間隔(秒)。例: 0.3 秒。
  pose_publish_period_sec = 5e-3,
    -- >  [double] / Interval in seconds at which to publish poses, e.g. 5e-3
    -- >  for a frequency of 200 Hz.
    -- >       poses を publish する間隔(秒) 例:200Hzの場合 5e-3
  trajectory_publish_period_sec = 30e-3,
    -- >  [double] / Interval in seconds at which to publish the trajectory
    -- >  markers, e.g. 30e-3 for 30 milliseconds.
    -- >       Trajectory マーカーを publish する間隔(秒)、例:30ミリ秒なら30e-3。
  rangefinder_sampling_ratio = 1.,
    -- >  [double] / Fixed ratio sampling for range finders messages.
    -- >       レンジファインダーメッセージ用のサンプリング比。
  odometry_sampling_ratio = 1.,
    -- >  [double] / Fixed ratio sampling for odometry messages.
    -- >       オドメトリメッセージ用のサンプリング比。
  fixed_frame_pose_sampling_ratio = 1.,
    -- >  [double] / ???
  imu_sampling_ratio = 1.,
    -- >  [double] / Fixed ratio sampling for IMU messages.
    -- >       IMU メッセージ用のサンプリング比。
  landmarks_sampling_ratio = 1.,
    -- >  [double] / Fixed ratio sampling for landmarks messages.
    -- >       ランドマークメッセージ用のサンプリング比。

  -- 下記ページから見つけた差分です。
  -- (https://google-cartographer-ros.readthedocs.io/en/latest/configuration.html)

  -- publish_to_tf = -- true/false, (デフォルト値は不明)
    -- >  [bool] / Enable or disable providing of TF transforms.
    -- >       TF 変換の提供の有効・無効を設定します。
  -- publish_tracked_pose = -- true/false, (デフォルト値は不明)
    -- >  [bool] / Enable publishing of tracked pose as a
    -- >  geometry_msgs/PoseStamped to topic “tracked_pose”.
    -- >       トラッキングした pose を geometry_msgs/PoseStamped 型として、
    -- >       "tracked_pose " トピックに publish できるようにします。
  -- fixed_frame_sampling_ratio = 1., (デフォルト値は不明) (使い方わからず)
    -- >  [double ?] / Fixed ratio sampling for fixed frame messages.
    -- >       fixed frame メッセージ用のサンプリング比。
}

Global (大域的) SLAM 設定

POSE_GRAPH. の名前で設定します。)

MAP_BUILDER.use_trajectory_builder_2d = false
  -- >  [bool] / Not yet documented.
MAP_BUILDER.use_trajectory_builder_3d = false
  -- >  [bool] / Not yet documented.
MAP_BUILDER.num_background_threads = 4
  -- >  [int32] / Number of threads to use for background computations.
  -- >       バックグラウンドでの計算に使用するスレッド数。
MAP_BUILDER.pose_graph = POSE_GRAPH
  -- >  [cartographer.mapping.proto.PoseGraphOptions] / Not yet documented.
MAP_BUILDER.collate_by_trajectory = false
  -- >  [bool] / ???
  -- >  (https://github.com/cartographer-project/cartographer/blob/master/cartographer/mapping/map_builder.cc)


POSE_GRAPH.optimize_every_n_nodes = 90
  -- >  [int32] / Online loop closure: If positive, will run the loop closure
  -- >  while the map is built.
  -- >       オンライン ループクロージャ: 正の値の場合、地図生成時に
  -- >       ループクロージャが実行されます。


POSE_GRAPH.constraint_builder.sampling_ratio = 0.3
  -- >  [double] / A constraint will be added if the proportion of added constraints
  -- >  to potential constraints drops below this number.
  -- >       潜在的な制約に対する追加された制約の割合が、この設定値より低くなると、
  -- >       制約が追加されることになります。
POSE_GRAPH.constraint_builder.max_constraint_distance = 15.
  -- >  [double] / Threshold for poses to be considered near a submap.
  -- >       サブマップと近い poses について、考慮する距離の閾値。
POSE_GRAPH.constraint_builder.min_score = 0.55
  -- >  [double] / Threshold for the scan match score below which a match is not
  -- >  considered. Low scores indicate that the scan and map do not look similar.
  -- >       スキャンマッチスコアの閾値で、これ以下ではマッチングが考慮されない。
  -- >       低いスコアは、スキャンとマップが似ていないことを示す。
POSE_GRAPH.constraint_builder.global_localization_min_score = 0.6
  -- >  [double] / Threshold below which global localizations are not trusted.
  -- >       global localization を信頼しないようにするスコア閾値。
POSE_GRAPH.constraint_builder.loop_closure_translation_weight = 1.1e4
  -- >  [double] / Weight used in the optimization problem for the translational
  -- >  component of loop closure constraints.
  -- >       ループクロージャー制約の"並進"成分に対する最適化問題で使用される重み。
POSE_GRAPH.constraint_builder.loop_closure_rotation_weight = 1e5
  -- >  [double] / Weight used in the optimization problem for the rotational
  -- >  component of loop closure constraints.
  -- >       ループクロージャー制約の"回転"成分に対する最適化問題で使用される重み。
POSE_GRAPH.constraint_builder.log_matches = true
  -- >  [bool] / If enabled, logs information of loop-closing constraints for debugging.
  -- >       有効にすると、ループクロージャー制約の情報をデバッグログに出力します。


POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.linear_search_window = 7.
  -- >  [double] / Minimum linear search window in which the best possible scan
  -- >  alignment will be found.
  -- >       最適なスキャンアライメントを見つけるための最小の線形探索 Window。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.angular_search_window = math.rad(30.)
  -- >  [double] / Minimum angular search window in which the best possible scan
  -- >  alignment will be found.
  -- >       最適なスキャンアライメントが得られる最小の角度探索 Window。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher.branch_and_bound_depth = 7
  -- >  [int32] / Number of precomputed grids to use.
  -- >       事前計算に使用するグリッドの数。


POSE_GRAPH.constraint_builder.ceres_scan_matcher.occupied_space_weight = 20.
  -- >  [double] / Scaling parameters for each cost functor.
  -- >       各コスト functor のスケーリング値
POSE_GRAPH.constraint_builder.ceres_scan_matcher.translation_weight = 10.
  -- >  [double] / Not yet documented.
POSE_GRAPH.constraint_builder.ceres_scan_matcher.rotation_weight = 1.
  -- >  [double] / Not yet documented.


POSE_GRAPH.constraint_builder.ceres_scan_matcher.ceres_solver_options.use_nonmonotonic_steps = true
  -- >  [bool] / Configure the Ceres solver. See the Ceres documentation for more
  -- >  information: https://code.google.com/p/ceres-solver/
  -- >       Ceres ソルバーの設定。
  -- >       おそらくここが参考になりそう
  -- >       http://ceres-solver.org/nnls_solving.html
POSE_GRAPH.constraint_builder.ceres_scan_matcher.ceres_solver_options.max_num_iterations = 10
  -- >  [int32] / Not yet documented.
POSE_GRAPH.constraint_builder.ceres_scan_matcher.ceres_solver_options.num_threads = 1
  -- >  [int32] / Not yet documented.


POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher_3d.branch_and_bound_depth = 8
  -- >  [int32] / Number of precomputed grids to use.
  -- >       事前計算に使用するグリッドの数。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher_3d.full_resolution_depth = 3
  -- >  [int32] / Number of full resolution grids to use, additional grids will reduce
  -- >  the resolution by half each.
  -- >       フル解像度グリッドに使う設定値。グリッドを追加すると、それぞれ解像度が半分になります。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher_3d.min_rotational_score = 0.77
  -- >  [double] / Minimum score for the rotational scan matcher.
  -- >       回転のためのスキャンマッチャーの最小スコア。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher_3d.min_low_resolution_score = 0.55
  -- >  [double] / Threshold for the score of the low resolution grid below which a match
  -- >  is not considered. Only used for 3D.
  -- >       低解像度でのグリッドにおける、これ以下ではマッチング考慮されなくなるスコア閾値。
  -- >       3D にのみ使用される。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher_3d.linear_xy_search_window = 5.
  -- >  [double] / Linear search window in the plane orthogonal to gravity in which the
  -- >  best possible scan alignment will be found.
  -- >       重力に直交する平面において、最適なスキャンアライメントが得られるための線形探索 window の数。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher_3d.linear_z_search_window = 1.
  -- >  [double] / Linear search window in the gravity direction in which the best possible
  -- >  scan alignment will be found.
  -- >       重力方向において、最適なスキャンアライメントが得られるための線形探索 window の数。
POSE_GRAPH.constraint_builder.fast_correlative_scan_matcher_3d.angular_search_window = math.rad(15.)
  -- >  [double] / Minimum angular search window in which the best possible scan
  -- >  alignment will be found.
  -- >       最適なスキャンアライメントが得られる最小の角度探索 Window。


POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.occupied_space_weight_0 = 5.
  -- >  [double] / Scaling parameters for each cost functor.
  -- >       各コスト functor のスケーリング値
POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.occupied_space_weight_1 = 30.
  -- >  [double] / Scaling parameters for each cost functor.
  -- >       各コスト functor のスケーリング値
POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.translation_weight = 10.
  -- >  [double] / Not yet documented.
POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.rotation_weight = 1.
  -- >  [double] / Not yet documented.
POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.only_optimize_yaw = false
  -- >  [bool] / Whether only to allow changes to yaw, keeping roll/pitch constant.
  -- >       ロール/ピッチを一定にして、ヨーのみを変化させるかどうか。


POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.ceres_solver_options.use_nonmonotonic_steps = false
  -- >  [bool] / Configure the Ceres solver. See the Ceres documentation for more
  -- >  information: https://code.google.com/p/ceres-solver/
  -- >       Ceres ソルバーの設定。
  -- >       おそらくここが参考になりそう
  -- >       http://ceres-solver.org/nnls_solving.html
POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.ceres_solver_options.max_num_iterations = 10
  -- >  [int32] / Not yet documented.
POSE_GRAPH.constraint_builder.ceres_scan_matcher_3d.ceres_solver_options.num_threads = 1
  -- >  [int32] / Not yet documented.


POSE_GRAPH.matcher_translation_weight = 5e2
  -- >  [double] / Weight used in the optimization problem for the translational component of
  -- >  non-loop-closure scan matcher constraints.
  -- >       非ループクロージャー制約の"並進"成分に対する最適化問題で使用される重み。
POSE_GRAPH.matcher_rotation_weight = 1.6e3
  -- >  [double] / Weight used in the optimization problem for the rotational component of
  -- >  non-loop-closure scan matcher constraints.
  -- >       非ループクロージャー制約の"回転"成分に対する最適化問題で使用される重み。


POSE_GRAPH.optimization_problem.huber_scale = 1e1
  -- >  [double] / Scaling parameter for Huber loss function.
  -- >       Huber loss function のスケーリング値
POSE_GRAPH.optimization_problem.acceleration_weight = 1.1e2
  -- >  [double] / Scaling parameter for the IMU acceleration term.
  -- >       IMU acceleration 期間のスケーリング値
POSE_GRAPH.optimization_problem.rotation_weight = 1.6e4
  -- >  [double] / Scaling parameter for the IMU rotation term.
  -- >       IMU 回転の期間のスケーリング値
POSE_GRAPH.optimization_problem.local_slam_pose_translation_weight = 1e5
  -- >  [double] / Scaling parameter for translation between consecutive nodes based
  -- >  on the local SLAM pose.
  -- >       ローカル SLAM の pose に基づく連続したノード間の"並進"のためのスケーリング値。
POSE_GRAPH.optimization_problem.local_slam_pose_rotation_weight = 1e5
  -- >  [double] / Scaling parameter for rotation between consecutive nodes based on
  -- >  the local SLAM pose.
  -- >       ローカル SLAM の pose に基づく連続したノード間の"回転"のためのスケーリング値。
POSE_GRAPH.optimization_problem.odometry_translation_weight = 1e5
  -- >  [double] / Scaling parameter for translation between consecutive nodes based
  -- >  on the odometry.
  -- >       オドメトリに基づく連続したノード間の"並進"のためのスケーリング値。
POSE_GRAPH.optimization_problem.odometry_rotation_weight = 1e5
  -- >  [double] / Scaling parameter for rotation between consecutive nodes based on
  -- >  the odometry.
  -- >       オドメトリに基づく連続したノード間の"回転"のためのスケーリング値。
POSE_GRAPH.optimization_problem.fixed_frame_pose_translation_weight = 1e1
  -- >  [double] / Scaling parameter for the FixedFramePose translation.
  -- >       FixedFramePose の"並進"のためのスケーリング値。
POSE_GRAPH.optimization_problem.fixed_frame_pose_rotation_weight = 1e2
  -- >  [double] / Scaling parameter for the FixedFramePose rotation.
  -- >       FixedFramePose の"回転"のためのスケーリング値。
POSE_GRAPH.optimization_problem.fixed_frame_pose_use_tolerant_loss = false
  -- >  [bool] / ??? (https://github.com/cartographer-project/cartographer/blob/master/cartographer/mapping/internal/optimization/optimization_problem_3d.cc)
POSE_GRAPH.optimization_problem.fixed_frame_pose_tolerant_loss_param_a = 1
  -- >  [int32 ?] / ??? (https://github.com/cartographer-project/cartographer/blob/master/cartographer/mapping/internal/optimization/optimization_problem_3d.cc)
POSE_GRAPH.optimization_problem.fixed_frame_pose_tolerant_loss_param_b = 1
  -- >  [int32 ?] / ??? (https://github.com/cartographer-project/cartographer/blob/master/cartographer/mapping/internal/optimization/optimization_problem_3d.cc)
POSE_GRAPH.optimization_problem.log_solver_summary = false
  -- >  [bool] / If true, the Ceres solver summary will be logged for every optimization.
  -- >       有効なら、Ceres ソルバーのサマリーはすべての最適化についてログに記録します。
POSE_GRAPH.optimization_problem.use_online_imu_extrinsics_in_3d = true
  -- >  [bool] / ??? (https://github.com/cartographer-project/cartographer_ros/issues/1486)
POSE_GRAPH.optimization_problem.fix_z_in_3d = false
  -- >  [bool] / ??? (https://github.com/cartographer-project/cartographer/issues/1160)


POSE_GRAPH.optimization_problem.ceres_solver_options.use_nonmonotonic_steps = false
  -- >  [bool] / Configure the Ceres solver. See the Ceres documentation for more
  -- >  information: https://code.google.com/p/ceres-solver/
  -- >       Ceres ソルバーの設定。
  -- >       おそらくここが参考になりそう
  -- >       http://ceres-solver.org/nnls_solving.html
POSE_GRAPH.optimization_problem.ceres_solver_options.max_num_iterations = 50
  -- >  [int32] / Not yet documented.
POSE_GRAPH.optimization_problem.ceres_solver_options.num_threads = 7
  -- >  [int32] / Not yet documented.


POSE_GRAPH.max_num_final_iterations = 200
  -- >  [int32] / Number of iterations to use in 'optimization_problem_options'
  -- >  for the final optimization.
  -- >       'optimization_problem options' で最終的な最適化に使用する反復回数
POSE_GRAPH.global_sampling_ratio = 0.003
  -- >  [double] / Rate at which we sample a single trajectory’s nodes for global
  -- >  localization.
  -- >       グローバルな Localization 時における、1つのトラジェクトリーのノードがサンプリングする速さ。
POSE_GRAPH.log_residual_histograms = true
  -- >  [bool] / Whether to output histograms for the pose residuals.
  -- >       pose 残差のヒストグラムを出力するかどうか。


POSE_GRAPH.global_constraint_search_after_n_seconds = 10.
  -- >  [double] / If for the duration specified by this option no global contraint
  -- >  has been added between two trajectories, loop closure searches will be performed
  -- >  globally rather than in a smaller search window.
  -- >       このオプションで指定された期間中に、2つの Trajectory 間にグローバルな拘束が追加
  -- >       されない場合、ループクロージャー検索は小さな検索窓ではなく、グローバルに実行されます。
POSE_GRAPH.overlapping_submaps_trimmer_2d.fresh_submaps_count = 1
  -- >  [int16 ?] / ???
  -- >  (https://github.com/cartographer-project/cartographer_ros/issues/1678)
POSE_GRAPH.overlapping_submaps_trimmer_2d.min_covered_area = 2
  -- >  [int16 ?] / ???
  -- >  (https://github.com/cartographer-project/cartographer_ros/issues/1678)
POSE_GRAPH.overlapping_submaps_trimmer_2d.min_added_submaps_count = 5
  -- >  [int16 ?] / ???
  -- >  (https://github.com/cartographer-project/cartographer_ros/issues/1678)

Local (局所的) SLAM (2D/3D 共通) 設定

TRAJECTORY_BUILDER. の名前で設定します。)

TRAJECTORY_BUILDER.collate_landmarks = true  -- (デフォルト値は不明)
  -- >  [bool] / ??? 
  -- >       Options.use_landmarks = true にした場合に関わってくる。
  -- >       ページ上部の Options.use_landmarks を参照。

Local (局所的) SLAM (2D) 設定

TRAJECTORY_BUILDER_2D. の名前で設定します。)

TRAJECTORY_BUILDER_2D.use_imu_data = true
  -- >  [bool] / True if IMU data should be expected and used.
  -- >       IMUデータを使用する場合は True。
TRAJECTORY_BUILDER_2D.min_range = 0.
  -- >  [float] / Rangefinder points outside these ranges will be dropped.
  -- >       この範囲外のレンジファインダーポイントのデータは破棄されます。
TRAJECTORY_BUILDER_2D.max_range = 30.
  -- >  [float] / Not yet documented.
TRAJECTORY_BUILDER_2D.min_z = -0.8
  -- >  [float] / Not yet documented.
TRAJECTORY_BUILDER_2D.max_z = 2.
  -- >  [float] / Not yet documented.
TRAJECTORY_BUILDER_2D.missing_data_ray_length = 5.
  -- >  [float] / Points beyond ‘max_range’ will be inserted with this length
  -- >  as empty space.
  -- >       'max_range' を超える点は、この長さで空白部として挿入される。
TRAJECTORY_BUILDER_2D.num_accumulated_range_data = 1
  -- >  [int32] / Number of range data to accumulate into one unwarped, combined range 
  -- >  data to use for scan matching.
  -- >       スキャンマッチングに使用するための、歪みが無く結合された1個の範囲データに
  -- >       蓄積する範囲データの数。
TRAJECTORY_BUILDER_2D.voxel_filter_size = 0.025
  -- >  [float] / Voxel filter that gets applied to the range data immediately
  -- >  after cropping.
  -- >       切り出し直後の範囲データに適用されるボクセルフィルタ。


TRAJECTORY_BUILDER_2D.adaptive_voxel_filter.max_length = 0.5
  -- >  [float] / ‘max_length’ of a voxel edge.
  -- >       ボクセルフィルタの 'max_length' 。
TRAJECTORY_BUILDER_2D.adaptive_voxel_filter.min_num_points = 200
  -- >  [float] / If there are more points and not at least 'min_num_points'
  -- >  remain, the voxel length is
  -- >  reduced trying to get this minimum number of points.
  -- >       点群数が多くありつつも、 'min_num_points' より少ない場合、この最小点数を得るために
  -- >       ボクセルフィルタ長が減少される。
TRAJECTORY_BUILDER_2D.adaptive_voxel_filter.max_range = 50.
  -- >  [float] / Points further away from the origin are removed.
  -- >       原点から遠く削除される点の距離。


TRAJECTORY_BUILDER_2D.loop_closure_adaptive_voxel_filter.max_length = 0.9
  -- >  [float] / ‘max_length’ of a voxel edge.
  -- >       ボクセルフィルタの 'max_length' 。
TRAJECTORY_BUILDER_2D.loop_closure_adaptive_voxel_filter.min_num_points = 100
  -- >  [float] / If there are more points and not at least ‘min_num_points’
  -- >  remain, the voxel length is reduced trying to get this minimum number of points.
  -- >       点群数が多くありつつも、 'min_num_points' より少ない場合、この最小点数を得るために
  -- >       ボクセルフィルタ長が減少される。
TRAJECTORY_BUILDER_2D.loop_closure_adaptive_voxel_filter.max_range = 50.
  -- >  [float] / Points further away from the origin are removed.
  -- >       原点から遠く削除される点の距離。


TRAJECTORY_BUILDER_2D.use_online_correlative_scan_matching = false
  -- >  [bool] / Whether to solve the online scan matching first using the correlative
  -- >  scan matcher to generate a good starting point for Ceres.
  -- >       Ceres の良い出発点を生成するために、相関スキャンマッチャーを使用して、
  -- >       最初にオンラインスキャンマッチングを解くかどうか。


TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.linear_search_window = 0.1
  -- >  [double] / Minimum linear search window in which the best possible scan
  -- >  alignment will be found.
  -- >       最適なスキャンアライメントを見つけるための最小の線形探索 Window。
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.angular_search_window = math.rad(20.)
  -- >  [double] / Minimum angular search window in which the best possible scan
  -- >  alignment will be found.
  -- >       最適なスキャンアライメントを見つけるための最小の角度探索 Window。
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 1e-1
  -- >  [double] / Weights applied to each part of the score.
  -- >       スコアの各パートに適用される重み。
TRAJECTORY_BUILDER_2D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1
  -- >  [double] / Not yet documented.


TRAJECTORY_BUILDER_2D.ceres_scan_matcher.occupied_space_weight = 1.
  -- >  [double] / Scaling parameters for each cost functor.
  -- >       各コスト functor のスケーリング値
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.translation_weight = 10.
  -- >  [double] / Not yet documented.
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.rotation_weight = 40.
  -- >  [double] / Not yet documented.


TRAJECTORY_BUILDER_2D.ceres_scan_matcher.ceres_solver_options.use_nonmonotonic_steps = false
  -- >  [bool] / Configure the Ceres solver. See the Ceres documentation for
  -- >  more information: https://code.google.com/p/ceres-solver/
  -- >       Ceres ソルバーの設定。
  -- >       おそらくここが参考になりそう
  -- >       http://ceres-solver.org/nnls_solving.html
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.ceres_solver_options.max_num_iterations = 20
  -- >  [int32] / Not yet documented.
TRAJECTORY_BUILDER_2D.ceres_scan_matcher.ceres_solver_options.num_threads = 1
  -- >  [int32] / Not yet documented.


TRAJECTORY_BUILDER_2D.motion_filter.max_time_seconds = 5.
  -- >  [double] / Threshold above which range data is inserted based on time.
  -- >       これ以上の時間の時に、範囲データが挿入される閾値(秒)。
TRAJECTORY_BUILDER_2D.motion_filter.max_distance_meters = 0.2
  -- >  [double] / Threshold above which range data is inserted based on linear motion.
  -- >       これ以上の距離の時に、線形移動に基づき範囲データが挿入される閾値。
TRAJECTORY_BUILDER_2D.motion_filter.max_angle_radians = math.rad(1.)
  -- >  [double] / Threshold above which range data is inserted based on rotational motion.
  -- >       これ以上の角度の時に、回転に基づいて範囲データが挿入される閾値(ラジアン)。


-- TODO(schwoere,wohe): Remove this constant. This is only kept for ROS.
TRAJECTORY_BUILDER_2D.imu_gravity_time_constant = 10.
  -- >  [double] / Time constant in seconds for the orientation moving average
  -- >  based on observed gravity via the IMU. It should be chosen so that the error 1.
  -- >  from acceleration measurements not due to gravity
  -- >  (which gets worse when the constant is reduced) and 2. from integration of angular velocities
  -- >  (which gets worse when the constant is increased) is balanced.
  -- >       IMU で観測された重力に基づく方位の移動平均の時定数(秒)。
  -- >       error 1. 重力によらない加速度測定による誤差(定数を小さくすると悪化する)と、
  -- >       error 2. 角速度の積分による誤差(定数を大きくすると悪化する)がバランスよくなるように
  -- >       する必要があります。


TRAJECTORY_BUILDER_2D.pose_extrapolator.use_imu_based = false
  -- >  [bool] / ??? (https://github.com/cartographer-project/cartographer/blob/master/cartographer/mapping/internal/2d/local_trajectory_builder_2d.cc)


TRAJECTORY_BUILDER_2D.pose_extrapolator.constant_velocity.imu_gravity_time_constant = 10.
  -- >  [double] / Time constant in seconds for the orientation moving average
  -- >  based on observed gravity via the IMU. It should be chosen so that the error 1.
  -- >  from acceleration measurements not due to gravity
  -- >  (which gets worse when the constant is reduced) and 2. from integration of angular velocities
  -- >  (which gets worse when the constant is increased) is balanced.
  -- >       IMU で観測された重力に基づく方位の移動平均の時定数(秒)。
  -- >       error 1. 重力によらない加速度測定による誤差(定数を小さくすると悪化する)と、
  -- >       error 2. 角速度の積分による誤差(定数を大きくすると悪化する)がバランスよくなるように
  -- >       する必要があります。
TRAJECTORY_BUILDER_2D.pose_extrapolator.constant_velocity.pose_queue_duration = 0.001
  -- >  [double ?] / ??? (http://docs.ros.org/en/indigo/api/cartographer/html/pose__extrapolator_8cc_source.html)


TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.pose_queue_duration = 5.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.gravity_constant = 9.806
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.pose_translation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.pose_rotation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.imu_acceleration_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.imu_rotation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.odometry_translation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.odometry_rotation_weight = 1.
  -- >  [double ?] / ??? 


TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.solver_options.use_nonmonotonic_steps = false;
  -- >  [bool] / Configure the Ceres solver. See the Ceres documentation for more information:
  -- >  https://code.google.com/p/ceres-solver/
  -- >       Ceres ソルバーの設定。
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.solver_options.max_num_iterations = 10;
  -- >  [int32] / Not yet documented.
TRAJECTORY_BUILDER_2D.pose_extrapolator.imu_based.solver_options.num_threads = 1;
  -- >  [int32] / Not yet documented.


TRAJECTORY_BUILDER_2D.submaps.num_range_data = 90
  -- >  [int32] / Number of range data before adding a new submap. Each submap will
  -- >  get twice the number of range data inserted: First for initialization without
  -- >  being matched against, then while being matched.
  -- >       新しいサブマップを追加する前の範囲データの数。各サブマップには2倍のレンジデータが挿入されます。
  -- >       最初はマッチングされずに初期化され、次にマッチングされます。


TRAJECTORY_BUILDER_2D.submaps.grid_options_2d.grid_type = "PROBABILITY_GRID"
  -- >  [???] / ??? (https://google-cartographer-ros.readthedocs.io/en/latest/algo_walkthrough.html)
TRAJECTORY_BUILDER_2D.submaps.grid_options_2d.resolution = 0.05
  -- >  [double] / Resolution of the map in meters.
  -- >       地図の解像度(メートル)。


TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.range_data_inserter_type = "PROBABILITY_GRID_INSERTER_2D"
  -- >  [???] / ??? (https://github.com/cartographer-project/cartographer/issues/1518)


TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.insert_free_space = true
  -- >  [bool] / If ‘false’, free space will not change the probabilities in the
  -- >  occupancy grid.
  -- >       'false' の時、フリーな空間は占有グリッドの確率を変更しない。
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.hit_probability = 0.55
  -- >  [double] / Probability change for a hit (this will be converted to odds and
  -- >  therefore must be greater than 0.5).
  -- >       hit した場合の確率の変化(オッズに変換されるため、0.5以上でなければならない)。
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.probability_grid_range_data_inserter.miss_probability = 0.49
  -- >  [double] / Probability change for a miss (this will be converted to odds and
  -- >  therefore must be less than 0.5).
  -- >       miss した場合の確率の変化(オッズに変換されるため、0.5未満でなければならない)。


TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.truncation_distance = 0.3
  -- >  [double ?] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.maximum_weight = 10.
  -- >  [double ?] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.update_free_space = false
  -- >  [bool] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)


TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.normal_estimation_options.num_normal_samples = 4
  -- >  [int32 ?] / ???
  -- >  (https://github.com/cartographer-project/cartographer/blob/master/cartographer/mapping/internal/2d/normal_estimation_2d.cc)
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.normal_estimation_options.sample_radius = 0.5
  -- >  [double ?] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)


TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.project_sdf_distance_to_scan_normal = true
  -- >  [bool] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.update_weight_range_exponent = 0
  -- >  [???] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.update_weight_angle_scan_normal_to_ray_kernel_bandwidth = 0.5
  -- >  [double ?] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)
TRAJECTORY_BUILDER_2D.submaps.range_data_inserter.tsdf_range_data_inserter.update_weight_distance_cell_to_hit_kernel_bandwidth = 0.5
  -- >  [double ?] / ???
  -- >  (http://docs.ros.org/en/indigo/api/cartographer/html/tsdf__range__data__inserter__2d_8cc_source.html)

Local (局所的) SLAM (3D) 設定

TRAJECTORY_BUILDER_3D. の名前で設定します。)

-- define

MAX_3D_RANGE = 60.
  -- >  [float] / for [TRAJECTORY_BUILDER_3D.max_range] and [TRAJECTORY_BUILDER_3D.low_resolution_adaptive_voxel_filter.max_range]
  -- >       [TRAJECTORY_BUILDER_3D.max_range] と
  -- >       [TRAJECTORY_BUILDER_3D.low_resolution_adaptive_voxel_filter.max_range] 
  -- >       のための値。
INTENSITY_THRESHOLD = 40
  -- >  [int32 ?] / 
  -- >  for [TRAJECTORY_BUILDER_3D.ceres_scan_matcher.intensity_cost_function_options_0.intensity_threshold] and 
  -- >  [TRAJECTORY_BUILDER_3D.submaps.range_data_inserter.intensity_threshold]
  -- >       [TRAJECTORY_BUILDER_3D.ceres_scan_matcher.intensity_cost_function_options_0.intensity_threshold] と
  -- >       [TRAJECTORY_BUILDER_3D.submaps.range_data_inserter.intensity_threshold]
  -- >       のための値。


TRAJECTORY_BUILDER_3D.min_range = 1.
  -- >  [float] / Rangefinder points outside these ranges will be dropped.
  -- >       この範囲外のレンジファインダーポイントのデータは破棄されます。
TRAJECTORY_BUILDER_3D.max_range = MAX_3D_RANGE
  -- >  [float] / Not yet documented.
TRAJECTORY_BUILDER_3D.num_accumulated_range_data = 1
  -- >  [int32] / Number of range data to accumulate into one unwarped, combined range
  -- >  data to use for scan matching.
  -- >       スキャンマッチングに使用するための、歪みが無く結合された1個の範囲データに
  -- >       蓄積する範囲データの数。
TRAJECTORY_BUILDER_3D.voxel_filter_size = 0.15
  -- >  [float] / Voxel filter that gets applied to the range data immediately
  -- >  after cropping.
  -- >       切り出し直後の範囲データに適用されるボクセルフィルタ。


TRAJECTORY_BUILDER_3D.high_resolution_adaptive_voxel_filter.max_length = 2.
  -- >  [float] / ‘max_length’ of a voxel edge.
  -- >       ボクセルフィルタの 'max_length' 。
TRAJECTORY_BUILDER_3D.high_resolution_adaptive_voxel_filter.min_num_points = 150
  -- >  [float] / If there are more points and not at least ‘min_num_points’
  -- >  remain, the voxel length is reduced trying to get this minimum number of points.
  -- >       点群数が多くありつつも、 'min_num_points' より少ない場合、この最小点数を得るために
  -- >       ボクセルフィルタ長が減少される。
TRAJECTORY_BUILDER_3D.high_resolution_adaptive_voxel_filter.max_range = 15.
  -- >  [float] / Points further away from the origin are removed.
  -- >       原点から遠く削除される点の距離。


TRAJECTORY_BUILDER_3D.low_resolution_adaptive_voxel_filter.max_length = 4.
  -- >  [float] / ‘max_length’ of a voxel edge.
  -- >       ボクセルフィルタの 'max_length' 。
TRAJECTORY_BUILDER_3D.low_resolution_adaptive_voxel_filter.min_num_points = 200
  -- >  [float] / If there are more points and not at least ‘min_num_points’
  -- >  remain, the voxel length is reduced trying to get this minimum number of points.
  -- >       点群数が多くありつつも、 'min_num_points' より少ない場合、この最小点数を得るために
  -- >       ボクセルフィルタ長が減少される。
TRAJECTORY_BUILDER_3D.low_resolution_adaptive_voxel_filter.max_range = MAX_3D_RANGE
  -- >  [float] / Points further away from the origin are removed.
  -- >       原点から遠く削除される点の距離。


TRAJECTORY_BUILDER_3D.use_online_correlative_scan_matching = false
  -- >  [bool] / Whether to solve the online scan matching first using the correlative
  -- >  scan matcher to generate a good starting point for Ceres.
  -- >       Ceres の良い出発点を生成するために、相関スキャンマッチャーを使用して、
  -- >       最初にオンラインスキャンマッチングを解くかどうか。


TRAJECTORY_BUILDER_3D.real_time_correlative_scan_matcher.linear_search_window = 0.15
  -- >  [double] / Minimum linear search window in which the best possible scan
  -- >  alignment will be found.
  -- >       最適なスキャンアライメントを見つけるための最小の線形探索 Window。
TRAJECTORY_BUILDER_3D.real_time_correlative_scan_matcher.angular_search_window = math.rad(1.)
  -- >  [double] / Minimum angular search window in which the best possible scan
  -- >  alignment will be found.
  -- >       最適なスキャンアライメントが得られる最小の角度探索 Window。
TRAJECTORY_BUILDER_3D.real_time_correlative_scan_matcher.translation_delta_cost_weight = 1e-1
  -- >  [double] / Weights applied to each part of the score.
  -- >       スコアの各パートに適用される重み。
TRAJECTORY_BUILDER_3D.real_time_correlative_scan_matcher.rotation_delta_cost_weight = 1e-1
  -- >  [double] / Not yet documented.


TRAJECTORY_BUILDER_3D.ceres_scan_matcher.occupied_space_weight_0 = 1.
  -- >  [double] / Scaling parameters for each cost functor.
  -- >       各コスト functor のスケーリング値
TRAJECTORY_BUILDER_3D.ceres_scan_matcher.occupied_space_weight_1 = 6.
  -- >  [double] / Scaling parameters for each cost functor.
  -- >       各コスト functor のスケーリング値


TRAJECTORY_BUILDER_3D.ceres_scan_matcher.intensity_cost_function_options_0.weight = 0.5
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.ceres_scan_matcher.intensity_cost_function_options_0.huber_scale = 0.3
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.ceres_scan_matcher.intensity_cost_function_options_0.intensity_threshold = INTENSITY_THRESHOLD
  -- >  [int32 ?] / ??? 


TRAJECTORY_BUILDER_3D.ceres_scan_matcher.translation_weight = 5.
  -- >  [double] / Not yet documented.
TRAJECTORY_BUILDER_3D.ceres_scan_matcher.rotation_weight = 4e2
  -- >  [double] / Not yet documented.
TRAJECTORY_BUILDER_3D.ceres_scan_matcher.only_optimize_yaw = false
  -- >  [bool] / Whether only to allow changes to yaw, keeping roll/pitch constant.
  -- >       ロール/ピッチを一定にして、ヨーのみを変化させるかどうか。


TRAJECTORY_BUILDER_3D.ceres_scan_matcher.ceres_solver_options.use_nonmonotonic_steps = false
  -- >  [bool] / Configure the Ceres solver. See the Ceres documentation for
  -- >  more information: https://code.google.com/p/ceres-solver/
  -- >       Ceres ソルバーの設定。
  -- >       おそらくここが参考になりそう
  -- >       http://ceres-solver.org/nnls_solving.html
TRAJECTORY_BUILDER_3D.ceres_scan_matcher.ceres_solver_options.max_num_iterations = 12
  -- >  [int32] / Not yet documented.
TRAJECTORY_BUILDER_3D.ceres_scan_matcher.ceres_solver_options.num_threads = 1
  -- >  [int32] / Not yet documented.


TRAJECTORY_BUILDER_3D.motion_filter.max_time_seconds = 0.5
  -- >  [double] / Threshold above which range data is inserted based on time..
  -- >       これ以上の時間の時に、範囲データが挿入される閾値(秒)。
TRAJECTORY_BUILDER_3D.motion_filter.max_distance_meters = 0.1
  -- >  [double] / Threshold above which range data is inserted based on linear motion.
  -- >       これ以上の距離の時に、線形移動に基づき範囲データが挿入される閾値。
TRAJECTORY_BUILDER_3D.motion_filter.max_angle_radians = 0.004
  -- >  [double] / Threshold above which range data is inserted based on rotational motion.
  -- >       これ以上の角度の時に、回転に基づいて範囲データが挿入される閾値(ラジアン)。


TRAJECTORY_BUILDER_3D.rotational_histogram_size = 120
  -- >  [int32] / Number of histogram buckets for the rotational scan matcher.
  -- >       回転スキャンマッチャーのための、ヒストグラムのバケット数。


-- TODO(schwoere,wohe): Remove this constant. This is only kept for ROS.
-- >       TODO: 削除、これはROS のためだけに残されています。

TRAJECTORY_BUILDER_3D.imu_gravity_time_constant = 10.
  -- >  [double] / Time constant in seconds for the orientation moving average
  -- >  based on observed gravity via the IMU. It should be chosen so that the error 1.
  -- >  from acceleration measurements not due to gravity
  -- >  (which gets worse when the constant is reduced) and 2. from integration of angular velocities
  -- >  (which gets worse when the constant is increased) is balanced.
  -- >       IMU で観測された重力に基づく方位の移動平均の時定数(秒)。
  -- >       error 1. 重力によらない加速度測定による誤差(定数を小さくすると悪化する)と、
  -- >       error 2. 角速度の積分による誤差(定数を大きくすると悪化する)がバランスよくなるように
  -- >       する必要があります。


TRAJECTORY_BUILDER_3D.pose_extrapolator.use_imu_based = false
  -- >  [bool] / ??? 


TRAJECTORY_BUILDER_3D.pose_extrapolator.constant_velocity.imu_gravity_time_constant = 10.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.constant_velocity.pose_queue_duration = 0.001
  -- >  [double ?] / ??? 


-- TODO(wohe): Tune these parameters on the example datasets.
-- >       TODO: これらのパラメータをサンプルデータセットで調整します。

TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.pose_queue_duration = 5.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.gravity_constant = 9.806
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.pose_translation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.pose_rotation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.imu_acceleration_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.imu_rotation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.odometry_translation_weight = 1.
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.odometry_rotation_weight = 1.
  -- >  [double ?] / ??? 


TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.solver_options.use_nonmonotonic_steps = false;
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.solver_options.max_num_iterations = 10;
  -- >  [double ?] / ??? 
TRAJECTORY_BUILDER_3D.pose_extrapolator.imu_based.solver_options.num_threads = 1;
  -- >  [double ?] / ??? 


TRAJECTORY_BUILDER_3D.submaps.high_resolution = 0.10
  -- >  [double] / Resolution of the ‘high_resolution’ map in meters used for
  -- >  local SLAM and loop closure.
  -- >       Local SLAM とループクロージャーに使用する 'high_resolution' 
  -- >       マップの解像度 (メートル)。
TRAJECTORY_BUILDER_3D.submaps.high_resolution_max_range = 20.
  -- >  [double] / Maximum range to filter the point cloud to before insertion
  -- >  into the ‘high_resolution’ map.
  -- >       'high_resolution' マップに挿入する前に、点群をフィルタする最大距離範囲。
TRAJECTORY_BUILDER_3D.submaps.low_resolution = 0.45
  -- >  [double] / Resolution of the ‘low_resolution’ version of the map in
  -- >  meters used for local SLAM only.
  -- >       Local SLAM のみに使用される 'low_resolution' 版のマップの解像度(メートル単位)。
TRAJECTORY_BUILDER_3D.submaps.num_range_data = 160
  -- >  [int32] / Number of range data before adding a new submap. Each submap will
  -- >  get twice the number of range data inserted: First for initialization without
  -- >  being matched against, then while being matched.
  -- >       新しいサブマップを追加する前の範囲データの数。各サブマップには2倍のレンジデータが挿入されます。
  -- >       最初はマッチングされずに初期化され、次にマッチングされます。


TRAJECTORY_BUILDER_3D.submaps.range_data_inserter.hit_probability = 0.55
  -- >  [double] / Probability change for a hit (this will be converted to odds and
  -- >  therefore must be greater than 0.5).
  -- >       hit した場合の確率の変化(オッズに変換されるため、0.5以上でなければならない)。
TRAJECTORY_BUILDER_3D.submaps.range_data_inserter.miss_probability = 0.49
  -- >  [double] / Probability change for a miss (this will be converted to odds and
  -- >  therefore must be less than 0.5).
  -- >       miss した場合の確率の変化(オッズに変換されるため、0.5未満でなければならない)。
TRAJECTORY_BUILDER_3D.submaps.range_data_inserter.num_free_space_voxels = 2
  -- >  [int32] / Up to how many free space voxels are updated for scan matching.
  -- >  0 disables free space.
  -- >       スキャンマッチングで更新されるフリーな空間のボクセルの最大数。
  -- >       0はフリーな空間を無効にします。
TRAJECTORY_BUILDER_3D.submaps.range_data_inserter.intensity_threshold = INTENSITY_THRESHOLD
  -- >  [int32 ?] / ??? 


TRAJECTORY_BUILDER_3D.use_intensities = false
  -- >  [bool] / When setting use_intensites to true, the intensity_cost_function_options_0
  -- >  parameter in ceres_scan_matcher has to be set up as well or otherwise
  -- >  CeresScanMatcher will CHECK-fail.
  -- >       use_intensites の設定を true にする場合、ceres_scan_matcher の
  -- >       intensity_cost_function_options_0 パラメータも設定しないと CeresScanMatcher は
  -- >       CHECK-fail するようになります。

pure localization mode 設定

-- for pure localization mode

TRAJECTORY_BUILDER.pure_localization_trimmer = {
        max_submaps_to_keep = 3,
    }
  -- >  [int32 ?] / ??? 
  -- >       (デフォルト値は不明) (この項目自体を追加することで、pure localization mode になるようです?)

中項目 設定

pose_graph
  -- >  型: [cartographer.mapping.proto.PoseGraphOptions]
  -- >    Not yet documented.
trajectory_builder_2d
  -- >  型: [cartographer.mapping_2d.proto.LocalTrajectoryBuilderOptions]
  -- >    Not yet documented.
trajectory_builder_3d
  -- >  型: [cartographer.mapping_3d.proto.LocalTrajectoryBuilderOptions]
  -- >    Not yet documented.

submaps
  -- >  型: [cartographer.mapping_2d.proto.SubmapsOptions]
  -- >  型: [cartographer.mapping_3d.proto.SubmapsOptions]
  -- >    Not yet documented.
constraint_builder
  -- >  型: [cartographer.mapping.pose_graph.proto.ConstraintBuilderOptions]
  -- >    Options for the constraint builder.
  -- >    制約ビルダーのオプション
optimization_problem
  -- >  型: [cartographer.mapping.pose_graph.proto.OptimizationProblemOptions]
  -- >    Options for the optimization problem.
  -- >    最適化問題のオプション
real_time_correlative_scan_matcher
  -- >  型: [cartographer.mapping_2d.scan_matching.proto.RealTimeCorrelativeScanMatcherOptions]
  -- >    Not yet documented.
loop_closure_adaptive_voxel_filter
  -- >  型: [cartographer.sensor.proto.AdaptiveVoxelFilterOptions]
  -- >    Voxel filter used to compute a sparser point cloud for finding loop closures.
  -- >    スパース(まばら?)な点群のループクローズ検索計算に用いる適応ボクセルフィルター
motion_filter
  -- >  型: [cartographer.mapping.proto.MotionFilterOptions]
  -- >    Not yet documented.
adaptive_voxel_filter
high_resolution_adaptive_voxel_filter
low_resolution_adaptive_voxel_filter
  -- >  型: [cartographer.sensor.proto.AdaptiveVoxelFilterOptions]
  -- >    Voxel filter used to compute a sparser point cloud for matching.
  -- >    スパース(まばら?)な点群のマッチング計算に用いる適応ボクセルフィルター

ceres_scan_matcher
  -- >  型: [cartographer.mapping_2d.scan_matching.proto.CeresScanMatcherOptions]
  -- >    Not yet documented.
ceres_scan_matcher_3d
  -- >  型: [cartographer.mapping_3d.scan_matching.proto.CeresScanMatcherOptions]
  -- >    Not yet documented.
ceres_solver_options
  -- >  型: [cartographer.common.proto.CeresSolverOptions]
  -- >    Configure the Ceres solver. See the Ceres documentation for more information: https://code.google.com/p/ceres-solver/
fast_correlative_scan_matcher
  -- >  型: [cartographer.mapping_2d.scan_matching.proto.FastCorrelativeScanMatcherOptions]
  -- >    Options for the internally used scan matchers.
fast_correlative_scan_matcher_3d
  -- >  型: [cartographer.mapping_3d.scan_matching.proto.FastCorrelativeScanMatcherOptions]
  -- >    Not yet documented.
range_data_inserter
  -- >  型: [cartographer.mapping_2d.proto.RangeDataInserterOptions]
  -- >  型: [cartographer.mapping_3d.proto.RangeDataInserterOptions]
  -- >    Not yet documented.

関連記事

公式パラメータガイド

(↑ 下の方に ceres solver のオプションの説明があります)

参考になるリンク

Cartographer ROS Documentation

(2D)

(2D / 3D)

16
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?