Skip to content

ROS2のトピック通信、サービス通信、アクションのテンプレートプログラム

Notifications You must be signed in to change notification settings

DaikiMin/ros2_template_programs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ROS2 Template Programs

ROS2のトピック通信、サービス通信、アクションのテンプレートプログラム

Packages

ros2_template_programs

  • ROS2のトピック通信、サービス通信、アクションのテンプレートプログラム
  • Launchファイル

ros2_custom_msg

  • カスタムメッセージやサービス
    ※ 同じCMakeプロジェクトでrosidl_generate_interfacesament_python_install_packageを呼び出すとうまくいきません。
    ※ メッセージの生成は別のパッケージに分離するのがベストプラクティスです。

Topic

std_msgs/String型のmessageをtopic通信

C++

$ ros2 launch ros2_template_programs topic_template_launch.xml

Python

$ ros2 launch ros2_template_programs topic_template_py_launch.xml

Service

計算式を送り,計算結果を返すサービス通信

C++

$ ros2 launch ros2_template_programs service_template_launch.xml

Call a service from the callback function

  • コールバック関数からサービスを呼び出そうとすると,rclcpp::spin_until_future_complete(this->get_node_base_interface(), future)でスタックします
  • これは,サービスの処理よりも早くコールバック関数が呼ばれる可能性があるからです
  • そこで新たにcallbackRresponse関数を用意して,そこで結果を読み取ることで解決します
$ ros2 launch ros2_template_programs service_client_from_callback_template_launch.xml

Callback Groups

$ ros2 launch ros2_template_programs service_client_callback_group_template_launch.xml

Python

$ ros2 launch ros2_template_programs service_template_py_launch.xml

Call a service from the callback function

  • コールバック関数からサービスを呼び出そうとすると,rclpy.spin_until_future_complete(self, future)でスタックします
  • これは,サービスの処理よりも早くコールバック関数が呼ばれる可能性があるからです
  • そこで新たにspin関数を用意して,そこで結果を読み取ることで解決します
$ ros2 launch ros2_template_programs service_client_from_callback_template_py_launch.xml

Callback Groups

$ ros2 launch ros2_template_programs service_client_callback_group_template_py_launch.xml

Action

指定した時間だけ待機するアクション

C++

$ ros2 launch ros2_template_programs action_template_launch.xml

Python

$ ros2 launch ros2_template_programs action_template_py_launch.xml

Component

std_msgs/String型のmessageをゼロコピーでtopic通信

C++

$ ros2 launch ros2_template_programs topic_component_template_launch.xml
  or
$ ros2 launch ros2_template_programs topic_component_template.launch.py

Dynamic Reconfigure

動的パラメータ設定機能

C++

$ ros2 launch ros2_template_programs dynamic_reconfigure_template_launch.xml

※rqt_reconfigureでパラメータが表示されない場合は、Refreshボタンをクリック

補足

パッケージの作成方法

# ament_cmake
$ ros2 pkg create package_name --build-type ament_cmake --dependencies rclcpp rclpy std_msgs
# ament_python
$ ros2 pkg create package_name --build-type ament_python --dependencies rclcpp rclpy std_msgs

ビルド

# 全パッケージのビルド
$ colcon build
# 指定パッケージのビルド
$ colcon build --symlink-install --packages-up-to package_name
  • --symlink-install
    • 可能な限りリンクを使用して2重にファイルをつくらない?
  • --packages-up-to [package1 package2 ...]
    • 指定されたパッケージとそれに依存関係のあるパッケージのみをビルドする.
    • 複数指定する場合にはスペース区切りとする.

Reference

Topic

Service

Action

Component

Parameter

Launch

Custom msg

Callback Group

Package

About

ROS2のトピック通信、サービス通信、アクションのテンプレートプログラム

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published