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
        * 意味・概要
# その他