ROS dashingでROS勉強会のROS2チュートリアル
目次
はじめに
ROS dashingが今までのROS2と比べてLTS(Long Time Support)期間が長くなって、自分の中でROS2を勉強する機運が高まってきました。
ROS Japan UG(User Group)が開催しているROS勉強会のROS2チュートリアルがcrysterl対応でdashingに対応してなかったので、勉強がてらdashingで動かしました。
ROS2勉強会@東京
rosjp.connpass.com
ROS2勉強会@大阪
rosjp.connpass.com
ROS2チュートリアル資料。これをやりました。
gbiggs.github.io
コード置き場
修正したコード。style_comparisonブランチにあります。
環境
ubuntu 18.04
トラブルシューティング
別に見る必要は無いです。一応書き残しときます。
問題1:rclcpp_register_node_pluginsコマンド
- エラーメッセージ
CMake Error at CMakeLists.txt:32 (rclcpp_register_node_plugins): Unknown CMake command "rclcpp_register_node_plugins".
- 対処法
dashingではrclcpp_register_node_pluginsコマンドの代わりにrclcpp_components_register_nodesコマンドになったので、CMakeListsを修正。 github.com
問題2:create_subscription関数
- 警告メッセージ
/home/sasaki/ros2_basics/src/displayer/src/displayer_component.cpp:17:66: warning・・・ /opt/ros/dashing/include/rclcpp/node_impl.hpp:139:1: note: declared here Node::create_subscription( ^~~~
- 対処法
ソース内のcreate_subscriptionの引数の修正。
以下、サイトより仕様変更の該当箇所。
ROS 2 Dashing Diademata (codename ‘dashing’; May 31st, 2019)
問題3:メッセージをpublishする際の警告
- 警告メッセージ
/home/sasaki/ros2_basics/src/rosjp_ros2_basics/greeter_ros2_style/src/greeter_component.cpp: In member function ‘void greeter_ros2_style::Greeter::broadcast_greeting()’: /home/sasaki/ros2_basics/src/rosjp_ros2_basics/greeter_ros2_style/src/greeter_component.cpp:44:25: warning:・・・ ・・・ /opt/ros/dashing/include/rclcpp/publisher.hpp:137:3: note: declared here publish(const std::shared_ptr<const MessageT> & msg) ^~~~~~~
- 対処法
/opt/ros/dashing/include/rclcpp/publisher.hppの137行を見に行ったら、 " If using a shared_ptr, use publish(*msg)." って書いてあったので、ソースのpublishしている部分を以下のように修正しました。
-publisher->publish(greeting) +publisher->publish(*greeting)
結果
左画面がpublisherのgreeterで、右画面がsubscriberのdisplayerです。