2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ROS2 Crystalでopenspliceに切り替える

Last updated at Posted at 2019-01-29

せしまるです。

ROS2 ardentの時にopenspliceを使っていたので、crystalでもopenspliceを使おうと思いました。

追記 2019/01/30
ROS2をソースからビルドするときに、openspliceを入れ忘れたときの方法となります。
(せしまるはopenspliceいれてビルドしたと思い込んでいました)

環境

・ROS2 crystal
・ubuntu 16.04

ardentの時は?

.bashrcに下記一文を追加していただけなきがします?

console
export RMW_IMPLEMENTATION=rmw_opensplice_cpp

端末を再起動して、ソースコードのビルドを行い動かすという感じでした。

crystalだと?

最初はardentの時と同じように.bashrcに書いただけでした。

端末再起動してビルド~('ω')なんてしてたら

エラーでた

console
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コマンドを叩いてもエラーが出ます。

console

これは、librmw_opensplice_cpp.soファイルが見つからないと言っていますね。
つまり、openspliceは入ってない・・・
libファイルがあるべき場所は「~/ros2_ws/install/rmw_opensplice_cpp/lib/」

openspliceを入れる

ここからopenspliceを入れていきます。
まずdebianパッケージからopenspliceを取得。

console
$ sudo apt install libopensplice69

その後、~/.bashrcに下記を追加します。

export OSPL_URI=file:///usr/etc/opensplice/config/ospl.xml

ROS2の再インストール

16.04なのでソースからのビルド&インストールになります。
ソースを落としてくるところから始まります。

console
// 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に追記します。

.bashrc
export RMW_IMPLEMENTATION=rmw_opensplice_cpp

端末を再起動して、下記コマンドを実行

console
$ echo $RMW_IMPLEMENTATION
rmw_opensplice_cpp

rmw_opensplice_cppとでたら成功です。
colcon buildもエラーが出ずに通ります。

最後に

最初に書いていたものからだいぶ変わりました。申し訳ございません。
また、インストールする場所が同じなら--merge-installでもよかったのかな…

今回はここまでです。
ご意見等お待ちしております。

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?