slma_toolboxのセットアップ方法
この記事は、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 ワークスペースのセットアップ
-
ワークスペースの作成(まだの場合):
mkdir -p ~/zeuscar_ros2_ws/src cd ~/zeuscar_ros2_ws
-
必要なパッケージ(例:robot_description, zeuscar_robot_package など)を
src
に配置。 -
ビルド実行
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 ワークスペースのセットアップ」で特にエラーが出ていない場合は不要です。
-
slam_toolbox だけを個別にビルド:
colcon build --packages-select slam_toolbox --symlink-install --parallel-workers 1
-
ビルドログは
~/zeuscar_ros2_ws/log/latest_build/slam_toolbox
に記録されるので、エラーがないか確認する。 -
ビルド完了後、インストールディレクトリ (
~/zeuscar_ros2_ws/install
) にslam_toolbox
のディレクトリが生成されることを確認する。
5. 実行とテスト
-
LiDARノードの起動:
source /opt/ros/humble/setup.bash source ~/zeuscar_ros2_ws/install/setup.bash ros2 launch sllidar_ros2 sllidar_a1_launch.py
-
slam_toolboxの起動:
source /opt/ros/humble/setup.bash ros2 launch slam_toolbox online_sync_launch.py
-
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 パネルの操作
- RViz を起動したら、画面左下(または左側)の 「Displays」パネル で 「Add」 ボタンをクリックします。
- 「By display type」タブから 「TF」 を選択します。
- 「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()
を渡す必要があります - 既にアップストリームでパッチが公開されていれば、最新版に更新すること
- ROS2 Humble 以降、
8. 引き継ぎ時の注意事項
- tmux の活用: ビルド中の SSH 切断を防ぐため、tmux を必ず利用すること。
- 依存関係: Ceres Solver など、slam_toolbox の依存パッケージは事前に確認すること。
-
ログの確認: ビルドログやエラーログ(
~/zeuscar_ros2_ws/log
)を定期的にチェックし、問題があれば早期に対応すること。
この資料を元に、slam_toolbox のセットアップがスムーズに引き継がれるようお願いします。
Discussion