1. はじめに
MacにROS2をインストールする際に、インストールは特に問題なく終わったのですが、デモを実行した時に大量のエラーが出て動かなかった時に対処した方法を備忘録として残しておきます。
2. 環境
Mac : Mojave 10.14.6
ROS2 : Dashing
3. インストール
インストールはROS2のインストールドキュメントの通りに行いました。
4. 症状
インストール後の動作確認として以下のコマンドを実行したところで、エラーが発生しました。
実行コマンド
$ ros2 run demo_nodes_cpp talker
エラーメッセージの一部
The C extension '/Users/"ユーザー名"/ros2_install/ros2-osx/lib/python3.7/site-packages/rclpy/_rclpy.cpython-37m-darwin.so' fai
led to be imported while being present on the system. Please refer to 'https://index.ros.org/doc/ros2/Troubleshooting/#im
port-failing-even-with-library-present-on-the-system' for possible solutions
dyld: Library not loaded: /usr/local/opt/poco/lib/libPocoFoundation.63.dylib
Referenced from: /Users/"ユーザー名"/ros2_install/ros2-osx/lib/librosidl_typesupport_c.dylib
Reason: image not found
「/usr/local/opt/poco/lib/libPocoFoundation.63.dylib」がロードできないと言われているので、確認してみると、libPocoFoundation.63.dylibはなく、「/usr/local/opt/poco/lib/libPocoFoundation.64.dylib」がありました。
とりあえず以下のコマンドでシンボリックリンクを貼ったところ怪しいメッセージは出つつもデモが動作しました。
シンボリックを貼るコマンド
$ ln -s libPocoFoundation.64.dylib libPocoFoundation.63.dylib
再度デモを実行した時の状態
$ ros2 run demo_nodes_cpp talker
Failed to load entry point 'test': No module named 'yaml'
Failed to load entry point 'launch': No module named 'yaml'
Failed to load entry point 'send_goal': No module named 'yaml'
Failed to load entry point 'list': No module named 'yaml'
Failed to load entry point 'load': No module named 'yaml'
Failed to load entry point 'standalone': No module named 'yaml'
Failed to load entry point 'types': No module named 'yaml'
Failed to load entry point 'unload': No module named 'yaml'
Failed to load entry point 'delete': No module named 'yaml'
Failed to load entry point 'get': No module named 'yaml'
Failed to load entry point 'set': No module named 'yaml'
Failed to load entry point 'create': No module named 'catkin_pkg'
Failed to load entry point 'create_key': No module named 'lxml'
Failed to load entry point 'create_keystore': No module named 'lxml'
Failed to load entry point 'create_permission': No module named 'lxml'
Failed to load entry point 'distribute_key': No module named 'lxml'
Failed to load entry point 'generate_artifacts': No module named 'lxml'
Failed to load entry point 'generate_policy': No module named 'lxml'
Failed to load entry point 'list_keys': No module named 'lxml'
Failed to load entry point 'call': No module named 'yaml'
Failed to load entry point 'echo': No module named 'yaml'
Failed to load entry point 'pub': No module named 'yaml'
[INFO] [talker]: Publishing: 'Hello World: 1'
[INFO] [talker]: Publishing: 'Hello World: 2'
[INFO] [talker]: Publishing: 'Hello World: 3'
完全な対症療法でとりあえず動きましたが、原因はなんなのか良くわかっていないので、気が向いたら調べてみようと思います。Ubuntu18.04ではサクッと動いたのに・・・。