未分類

ROS2勉強メモ0日目:プログラムの流れ。

ROS2の資料

ROS.orgの日本語Wiki

ROS.orgのWiki

ROS2-wikiのGithub

ROS2のGitBook

コマンドの解説サイト

ROSの基本構造

  • ノード:プログラムの単位。1つのプロセスに対応。
  • プロセス:プログラムの最小単位。(1プログラムから複数のプロセスが出うる)
  • プロセス間(ノード間)で通信を行う
  • トピック:ノードがメッセージを交換するための経路
  • 通信は3種
    • トピック(通信の型(タイプ)定義は.msg)
    • サービス(.srv)
    • アクション(.action)
  • パラメータ:Windowsの.ini。
  • ネーム:ノード、トピック、サービス、アクションのメッセージ・パラメータはすべてネームを持つ。
    トピックの場合、Relative型、Global型、Private型の表記がある。

トピック、サービス、アクションの違い

トピックは非同期、継続的、一方的(配信→購読)

サービスは同期、1回限り、要求に基づいて双方向通信。引数付き変数みたいな働き。

 

メッセージ

メッセージのフォーマットは「波カッコ{}」と「コロン:」。※「コロン(:)」の後ろに半角スペース必須。

例>Twistメッセージ = ベクトル3(Vector3)型変数linearとangularの2つ

(Vector3は、x, y, zの変数をもつ)

→ '{linear: {x: 0, y: 0,z: 0}, angular:{x: 0, y: 0,z: 0}}'

通信方式3種

トピック(移動、色の変更など)

メッセージを使ってノード間(プロセス間)の通信を行う。

購読(Subscriber)と配信(Publisher)があり、購読側のノードに配信側のノードからメッセージを送る。

メッセージは型(タイプ)が決まっていて、典型タイプがある。

コマンド(p.101~)

パッケージの実行
  • ros2 run <パッケージ名> <ファイル名>
ノード
  • ros2 node list
  • ros2 node info <ノード名>
  • ros2 run turtlesim turtlesim_node --ros-args --remap __node:=my_turtle
    ノード名の変更(別名ノードだけどパッケージとファイルは同じ)
トピック
  • ros2 topic list(-tオプションでそのトピックのタイプ(型)を表示)
  • ros2 topic info <トピック名>
  • ros2 msg show <タイプ名>
    メッセージのタイプを表示する。(トピックと直接は関係ない。トピックがそのメッセージタイプを使ってればそのタイプに合わせたメッセージでトピック通信ができる。)
  • ros2 msg list
  • ros2 topic pub --once(または--rate 1) <タイプ名> ’メッセージ’

サービス(生成、消去など)

同期型。1回通信。双方向(引数を元に実行して返り値が返ってくる)

  • ros2 service list(-tオプションでタイプ名表示)
    タイプは引数の型
  • ros2 interface show <タイプ名>
    引数なしは、タイプ名「std_srvs/srv/Empty」
  • ros2 service call <サービス名> <サービスタイプ> <引数>

パラメータ

ノードの設定にかかわる種々の値。

ノード毎に整数、小数、ブール、文字列、それらのリストが持てる。

動的変更が可能。

コマンド

  • ros2 param list
    ノード一覧とノードのパラム一覧表示
  • ros2 param get <ノード名> <パラム>
  • ros2 param set <ノード名> <パラム> <値>
  • ros2 param dump <ノード名>
    <ノード名>.yamlのファイルが作成
  • ros2 run <パッケージ名> <ファイル名> --ros-args --params-file <パラメータファイル.yaml>

アクション

双方向通信。処理が長くて応答時間のかかるときに利用。処理の途中結果を受け取れる。

1対1の非同期通信。(サービスは返り値のみ返す⇔アクションはフィードバック(途中結果)返したり、キャンセル命令が出せる)

メッセージは3種類:Goal(到達目標地点)、Result(目標達成時1度送るメッセージ[サーバ→クライアント])、Feedback(センサ情報取得など)

ラウンチ(Launch)

パラメータ設定やノード起動などをまとめたのが、launchファイル。形式はPython形式。(ROS1はXML形式)

Pythonのクラス定義みたいな感じで書いてる。

launchで通信の実行やら入出力、ノード管理とか全部できるから、これでプログラムとしてまとめる感じか。

コマンド

  • ros2 launch <pyファイル>

rclpy

Pythonで記述できるようにするやつ?rclpyインポートしてから書く。

Turtlesimメモ

各名称メモ

パッケージ名:Turtlesim

ノード名:Turtlesim

トピック:cmd_velとか

サービス:Clear、Spawnなど

アクション:RotateAbsolute

ディレクトリ

パッケージの場所

/opt/ros/galactic/lib/turtlesim

/opt/ros/galactic/include/turtlesim/

⇒3個action, msg, srvのディレクトリ(アクション、メッセージ、サービス)

 

-未分類

© 2021 技術科・情報科のサイト Powered by AFFINGER5