ねころこの備忘録

僕の開発の手順とか実験結果とか感想とかをつらつら書き込んでいくお墓.僕の魂を成仏させるためのお墓です.お経(コメント)待ってます

ROSの開発を通して

ROS1を使ってて,ROS2も同じように使えるっていう話だけど,何がどう違うのかわからなくて,とりあえず自分の学んだ限りでの知識でROS1の部分についてまとめてみる.

  1. 概要
    使ってみた実感でのROSをまとめてみる.まずROSはロボットを制御するためのツールで,一部しかないがユーザーに対してサポートしてくれるものであるなっていう感じ.
    ROSはノード間の通信やセンサーのドライバーとか,ほかの機器との通信(センサ含むカメラとかDepthカメラLRF)をサポートしている.

  2. 開発の順序
    まず環境はLinuxであること.OS Xは知らん.
    今自分の環境はUbuntu 16.04(LTS)にROS Kineticを乗せてる.Lunarとかでもいいけれど,ネットにある記事数が違ったり,センサーによってはROSのバージョンに対応していなかったりするから,ダウングレードも必要.
    インストールはROS Wikiか過去記事から

    英語->kinetic/Installation/Ubuntu - ROS Wiki

    日本語->ja/kinetic/Installation/Ubuntu - ROS Wiki

     

    www.nekorokomemordm.info

     

     


    インストールすれば,あとは自分でパッケージ(ロボット等を制御するためのメインブレイン部分)を作っていく.

    開発ではcatkinを用いていて,コーディング後,ビルドの対象をCMakelistに書き込んで,ビルドしてマスターを起動して各ノードを実行する.

    ノードひとつひとつにセンサー・機器に対しての通信とか,データ処理とかを担当させてる.
    各ノードはmessage, service, actionで通信ができる.通信に用いるデータ型はユーザー自身で定義することも可能.
    実行しなければならないノードが増えてくれば,launchを使って幾つものノードを一度に実行して楽に行う.

  3. 使ってみた感想
    開発において作成したプログラムはもちろん,通信に用いるデータ型などはCMakelistに書き込む必要があり,それをいちいちするのも面倒くさいなっていう風に感じた.githubで他人のコードを使いまわすことができるので,楽に開発できるらしいが・・・そこまでじっくり開発した経験がないので知らん.

    あと去年(NHK学生ロボコン2018に向けてのロボット)の開発中,ロボットのセンサデータをフィードバックする必要があった時に,基本的にC++でコードを書くのだが,センサデータを可視化するツールでPythonのMatplotlibがどうしても使いたいときがあった.その時は,簡単にノード間の通信ができて,簡単にセンサデータを可視化できた.楽ちんだった.
    今なら,C++でRvizとかなりなんなりを使って,もっと楽に簡単に実装する.