Help us understand the problem. What is going on with this article?

ROS2 Windows版のexample実行時にエラーが出たらOpenSSLのバージョンを疑ってみる

はじめに

公式ページのWindows版ROS2のバイナリ版インストール方法のページ(例えばInstalling ROS 2 Eloquent Elusor) を見ながらインストールしたのに、下記のようにexampleのtalkerとlistenerを実行するとrmw_fastrtps_cpp.dll という文字列が含まれたエラーが発生することがあります。

より詳細には、これらを実行すると、

> ros2 run demo_nodes_cpp talker
> ros2 run demo_nodes_py listener

こんなエラーメッセージが出力されまます。

Traceback (most recent call last):
  File "C:\dev\ros2_eloquent\lib\demo_nodes_py\listener-script.py", line 11, in <module>
    load_entry_point('demo-nodes-py==0.8.4', 'console_scripts', 'listener')()
  File "C:\dev\ros2_eloquent\Lib\site-packages\demo_nodes_py\topics\listener.py", line 32, in main
    rclpy.init(args=args)
  File "C:\dev\ros2_eloquent\Lib\site-packages\rclpy\__init__.py", line 73, in init
    return rclpy_implementation.rclpy_init(args if args is not None else sys.argv, context.handle)
RuntimeError: Failed to initialize init_options: failed to load shared library of rmw implementation. Exception: Cannot load library: C:\dev\ros2_eloquent\bin/rmw_fastrtps_cpp.dll, at C:\J\workspace\ci_packaging_windows\ws\src\ros2\rmw_implementation\rmw_implementation\src\functions.cpp:137, at C:\J\workspace\ci_packaging_windows\ws\src\ros2\rcl\rcl\src\rcl\init_options.c:55

確認すべきこと

上記のようなエラーが出たら、もう一度インストール方法のページを注意深く読みます。
そこにはこんな文章があります。

Install OpenSSL
Download an OpenSSL installer from this page. Scroll to the bottom of the page and download Win64 OpenSSL v1.0.2

ここで最も大事なのがOpenSSLのバージョン v1.0.2_ です。
OpenSSLのインストーラにはいくつかのバージョンが存在するのですが、v1.0.2 と書かれていたら、それに忠実に従う必要があります。

再挑戦

既にインストール済みのOpenSSLをアンインストールして、指定されたバージョンをインストールして、ついでに

setx -m OPENSSL_CONF C:\OpenSSL-Win64\bin\openssl.cfg

も念押しで実行して、再度talkerとlistenerを起動してみましょう。
どうでしょうか? 次のようなメッセージが出力されれば成功です。

> ros2 run demo_nodes_cpp talker
[INFO] [talker]: Publishing: 'Hello World: 1'
> ros2 run demo_nodes_py listener
[INFO] [listener]: I heard: [Hello World: 1]
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした