せしまるです。
ROS2 ardentの時にopenspliceを使っていたので、crystalでもopenspliceを使おうと思いました。
追記 2019/01/30
ROS2をソースからビルドするときに、openspliceを入れ忘れたときの方法となります。
(せしまるはopenspliceいれてビルドしたと思い込んでいました)
環境
・ROS2 crystal
・ubuntu 16.04
ardentの時は?
.bashrcに下記一文を追加していただけなきがします?
export RMW_IMPLEMENTATION=rmw_opensplice_cpp
端末を再起動して、ソースコードのビルドを行い動かすという感じでした。
crystalだと?
最初はardentの時と同じように.bashrcに書いただけでした。
端末再起動してビルド~('ω')なんてしてたら
エラーでた
CMake Error at /opt/ros/crystal/rmw_implementation/share/rmw_implementation/cmake/rmw_implementation-extras.cmake:47 (message):
The RMW implementation has been specified as 'rmw_opensplice_cpp' through
the environment variable 'RMW_IMPLEMENTATION', however it is not in the
list of supported rmw implementations, which was specified when the
'rmw_implementation' package was built.
日本語訳
/opt/ros/crystal/rmw_implementation/share/rmw_implementation/cmake/rmw_implementation-extras.cmake:47(メッセージ)でのCMakeエラー:
RMW実装は、次のようにして「rmw_opensplice_cpp」として指定されています。
環境変数 'RMW_IMPLEMENTATION'です。
サポートされているRMW実装のリスト。
'rmw_implementation'パッケージが構築されました。
んー何がだめなんだろうと思い調べていると、crystalではやり方が違うことがわかりました。
追記 2019/01/30
ちなみにros2コマンドを叩いてもエラーが出ます。
これは、librmw_opensplice_cpp.soファイルが見つからないと言っていますね。
つまり、openspliceは入ってない・・・
libファイルがあるべき場所は「~/ros2_ws/install/rmw_opensplice_cpp/lib/」
openspliceを入れる
ここからopenspliceを入れていきます。
まずdebianパッケージからopenspliceを取得。
$ sudo apt install libopensplice69
その後、~/.bashrcに下記を追加します。
export OSPL_URI=file:///usr/etc/opensplice/config/ospl.xml
ROS2の再インストール
16.04なのでソースからのビルド&インストールになります。
ソースを落としてくるところから始まります。
// ros2インストールフォルダを削除
$ sudo rm -rf ~/ros2_ws/install
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws
$ wget https://raw.githubusercontent.com/ros2/ros2/release-latest/ros2.repos
$ vcs import src < ros2.repos
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro crystal -y --skip-keys "console_bridge fastcdr fastrtps libopensplice67 libopensplice69 python3-lark-parser rti-connext-dds-5.3.1 urdfdom_headers"
$ cd ~/ros2_ws/
$ colcon build --symlink-install --packages-ignore qt_gui_cpp rqt_guicpp
終わったら
「~/ros2_ws/install/rmw_opensplice_cpp/lib/librmw_opensplice_cpp.so」ファイルが存在するかを確認します。
opensplice適用
~/.bashrcに追記します。
export RMW_IMPLEMENTATION=rmw_opensplice_cpp
端末を再起動して、下記コマンドを実行
$ echo $RMW_IMPLEMENTATION
rmw_opensplice_cpp
rmw_opensplice_cppとでたら成功です。
colcon buildもエラーが出ずに通ります。
最後に
最初に書いていたものからだいぶ変わりました。申し訳ございません。
また、インストールする場所が同じなら--merge-installでもよかったのかな…
今回はここまでです。
ご意見等お待ちしております。