🤖

slma_toolboxのセットアップ方法

2025/02/09に公開

この記事は、ROS2 Humble 環境(Raspberry Pi 上)での slam_toolbox のセットアップ、ビルド、テストの全体の流れをまとめたものです。

※ワークスペース名はzeuscar_ros2_wsという前提で解説しています。


1. 環境準備

  • OS: Ubuntu 22.04 (Raspberry Pi 4/5)
  • ROS2 ディストリビューション: Humble
  • システム更新を実施:
    sudo apt update && sudo apt upgrade
    

1.1. リポジトリの有効化

Universe リポジトリが有効であることを確認・有効化:

sudo add-apt-repository universe
sudo apt update

2. 依存関係のインストール

2.1. Ceres Solver(エラーが出る場合のみ実施してください)

slam_toolbox の一部機能では Ceres Solver が必要です。
Raspberry Pi の場合、公式パッケージが提供されていない可能性もあるため、まず以下を試してください:

sudo apt install libceres-solver-dev

もし「Unable to locate package」などのエラーが出る場合は、Ceres Solver GitHub の手順に従い、ソースからビルドしてください。

2.2. slam_toolbox パッケージのインストール

ROS2 Humble 用の slam_toolbox は公式リポジトリからインストール可能です:

sudo apt-get install ros-humble-slam-toolbox

インストール済みの場合は最新版が表示されます。


3. ROS2 ワークスペースのセットアップ

  1. ワークスペースの作成(まだの場合):

    mkdir -p ~/zeuscar_ros2_ws/src
    cd ~/zeuscar_ros2_ws
    
  2. 必要なパッケージ(例:robot_description, zeuscar_robot_package など)を src に配置。

  3. ビルド実行

    colcon build --symlink-install --parallel-workers 1
    

    ※ ビルド中に SSH セッションが切断されないよう、tmux の利用を推奨:

    • 新規セッション作成:
      tmux new -s build_session
      
    • セッション内でビルド実行:
      colcon build --symlink-install --parallel-workers 1
      
    • SSH 切断後、再接続してセッションに戻る:
      tmux attach -t build_session
      

4. slam_toolbox の個別ビルドと検証

「3. ROS2 ワークスペースのセットアップ」で特にエラーが出ていない場合は不要です。

  1. slam_toolbox だけを個別にビルド:

    colcon build --packages-select slam_toolbox --symlink-install --parallel-workers 1
    
  2. ビルドログは ~/zeuscar_ros2_ws/log/latest_build/slam_toolbox に記録されるので、エラーがないか確認する。

  3. ビルド完了後、インストールディレクトリ (~/zeuscar_ros2_ws/install) に slam_toolbox のディレクトリが生成されることを確認する。


5. 実行とテスト

  1. LiDARノードの起動:

    source /opt/ros/humble/setup.bash
    source ~/zeuscar_ros2_ws/install/setup.bash
    ros2 launch sllidar_ros2 sllidar_a1_launch.py
    
  2. slam_toolboxの起動:

    source /opt/ros/humble/setup.bash
    ros2 launch slam_toolbox online_sync_launch.py
    
  3. RViz2 でマップやセンサーデータが正しく可視化されるか確認する。

    cd ~/zeuscar_ros2_ws
    source install/setup.bash
    ros2 launch robot_description display.launch.py
    

6.RViz で TF ツリーを可視化する手順

ROS 2 で座標フレーム同士のつながり(TF ツリー)を可視化したい場合、RViz の「TF」ディスプレイを利用します。以下の手順に従って設定してください。

6.1. Displays パネルの操作

  1. RViz を起動したら、画面左下(または左側)の 「Displays」パネル「Add」 ボタンをクリックします。
  2. 「By display type」タブから 「TF」 を選択します。
  3. 「OK」ボタンを押すと、左側の Displays 一覧に「TF」という項目が追加されます。

6.2. 3Dビュー上で座標軸を確認

  • 追加した「TF」ディスプレイにより、3Dビュー上に各フレームの座標軸(赤= X軸、緑= Y軸、青= Z軸)が表示されます。
  • たとえば base_link, odom, map, lidar_link といったフレームがシステム内で配信されていると、それらの相対的な位置関係を視覚的に確認できます。

6.3. RobotModel ディスプレイとの比較

  • RobotModel ディスプレイ: URDF/Xacro の情報をもとにロボット形状を可視化する
  • TF ディスプレイ: フレーム(座標軸)の位置関係を可視化する

両方同時に利用すると、「実際のロボットモデル」と「各フレームのつながり」をまとめて確認できるため、デバッグや調整に大変便利です。


7. よくあるエラーと対策

7.1. Ceres Solver 関連エラー

  • エラー内容: fatal error: ceres/autodiff_manifold.h: No such file or directory
  • 対策:
    • sudo apt install libceres-solver-dev を実施
    • もし公式パッケージが利用できない場合は、ソースから Ceres Solver をビルドする

7.2. message_filters のコンストラクタ不一致エラー

  • エラー内容: no matching function for call to message_filters::Subscriber(…)
  • 対策:
    • ROS2 Humble 以降、rclcpp::SensorDataQoS の代わりに rclcpp::SensorDataQoS().get_rmw_qos_profile() を渡す必要があります
    • 既にアップストリームでパッチが公開されていれば、最新版に更新すること

8. 引き継ぎ時の注意事項

  • tmux の活用: ビルド中の SSH 切断を防ぐため、tmux を必ず利用すること。
  • 依存関係: Ceres Solver など、slam_toolbox の依存パッケージは事前に確認すること。
  • ログの確認: ビルドログやエラーログ(~/zeuscar_ros2_ws/log)を定期的にチェックし、問題があれば早期に対応すること。

この資料を元に、slam_toolbox のセットアップがスムーズに引き継がれるようお願いします。

Discussion