ROS2のnode libraryを作成し,内部の誰かに使ってもらうときのドキュメンテーションについて.
概要
内部の誰かが自分のプロジェクト(プログラム)を使用する時,主に以下の状況が考えられる.
- ROS2の勉強のため
- カスタマイズ・改変のため
- libraryを利用するため
1,2の場合,ソースを見ることになるが3の場合別にソースを見る必要はない.使えればよい.
ここでは,そのような人に向けたドキュメントの雛形を考える.
言わずもがな当研究室の独自ルールであるが,一般的なより良いお話があれば参考にしたいです.
必要な情報一覧
- パッケージ名
- package.xmlやCMakeLists.txtなどで必要
- node名とインクルードファイル
- std::make_sharedで実体化するのに必要
- parameter
- parameter利用のために必要
- yaml形式で表現するのが楽
- 提供するservice名と必要なsrvのクラス名,インクルードファイル
- service利用のために必要
- 提供するpublish名と必要なmsgのクラス名,インクルードファイル
- publish利用のために必要
- 必要な他のnodeとインクルードファイル
- 当該nodeの情報一覧へのリンクとして表現
- 内部で使用するclient/subscribeは,そのサービスを提供するnodeを知っておいて起動する必要があるので必要
ドキュメント
内部GitLabのwikisに書くのがよろし.
例えば「Info_for_user」のページを作成する.
「#や##」と「[](#...)」によってジャンプできるようにしている.
注意としては,[...](#...)の#以降について.
- 大文字は小文字に
- スペースはハイフン(-)に
- ピリオドなどは削除
- 二つ以上の-はひとつの-に
例えば
# QValues.srv
は[QValues.srv](#qvaluessrv)となる.
GitLabでの目次
[[TOC]]で目次をつくってくれる.
[[_TOC_]]
----
# "パッケージ名1"
## "ノード名1"
...
## "ノード名2"
* #include "package_name/hoge.hpp"
* "namespace::クラス名"
* param info
* [yaml]("リンク")
* service info
* "サービス名"
* 意味・概要
* ["srvファイル名"](#"srvファイル名")
* client info
* "使用するサービス名"
* ["提供を確認しているnode1"]("Info for userの当該node1へのリンク")
* ["提供を確認しているnode2"]("Info for userの当該node2へのリンク")
* ...
* publish info
* "トピック名"
* 意味・概要
* ["msgファイル名"](#"msgファイル名")
* subscribe info
* "使用するトピック名"
* ["提供を確認しているnode1"]("Info for userの当該node1へのリンク")
* ["提供を確認しているnode2"]("Info for userの当該node2へのリンク")
* ...
* rclcpp::executorの種類
* SingleThreadedExecutor
* OK/NG
* MultiThreadedExecutor
* OK/NG
# パッケージ名2 メッセージ専用なら以下のようにsrvとmsgで分けたり.
## "srvファイル"
* #include "srv_package_name/add_two_ints.hpp" //ディレクトリなどは適当...
* request
* uint32 a
* 意味・概要
* uint32 b
* 意味・概要
* response
* uint sum
* 意味・概要
## "msgファイル"
* #include "msg_package_name/two_ints.hpp" //ディレクトリなどは適当...
* topic
* uint32 a
* 意味・概要
* uint32 b
* 意味・概要
# その他