✅【トラブル解決】ROS2 humbleで「spdlog.soのImportError」が出る場合の対処法(Isaac Simとの共存環境)
- M K
- 2024年10月2日
- 読了時間: 2分
更新日:4月14日
■ 実行環境
OS:Ubuntu 22.04.5 LTS
ROS2:humble
他ソフトウェア:NVIDIA Isaac Sim
🛠️ 起動エラーの概要
ROS2 humble および Isaac Sim をインストールした環境で、ROS2 単体を起動しようとしたところ、以下のようなエラーが発生することがあります。
ImportError: /opt/ros/humble/lib/librcl_logging_spdlog.so: undefined symbol: ZN6spdlog7details7logmsgC1...
これは librcl_logging_spdlog.so のライブラリが破損しているか、互換性のない spdlog バージョンを読み込んでいることが原因で発生します。
💡 原因とポイント
このエラーは通常、ROS2の再インストールで解消されることが多いですが、Isaac Simをインストールしている場合、Isaac Sim にバンドルされた ROS2 (humble) のライブラリが先に読み込まれることがあります。
つまり、Isaac Sim 側の ROS2 が壊れている可能性があるのです。
🧩 解決策:Isaac Sim の ROS2 を読み込まないようにする
Isaac Sim のチュートリアルに従って環境構築をしている場合、~/.bashrc に以下のようなエクスポート設定が追加されているはずです。
source /path/to/isaac_sim/ros2_workspace/install/setup.bash
これをコメントアウト(または削除)して、Isaac Sim 側の ROS2 を読み込まないようにしましょう。
✔ 手順
ターミナルで .bashrc を編集
vi ~/.bashrc
以下のような行を見つけて、先頭に # を付けてコメントアウト
# source ~/isaac_sim/ros2_workspace/install/setup.bash
.bashrc を保存して閉じる
ターミナルを再起動、または .bashrc を再読み込み
source ~/.bashrc
🚀 結果:ROS2が正常起動
上記の変更後、ターミナルで ros2 コマンドを実行してもエラーが出ず、正常に起動するようになります。
✉️ 補足
Isaac SimとROS2を同時に利用する環境では、環境変数の管理が非常に重要です。プロジェクトごとに仮想環境やコンテナを活用するのも有効な選択肢です。
Comments