ROS on Raspberry Pi (Japanese) - Utagoe-robotics/Wiki GitHub Wiki

ROS とは

Robot Operating System(ROS) とは, ROS.org が開発する,ロボットソフトウェアのフレームワークです. 詳しい説明は ROS wiki で確認できます.

具体例として,以下のセンサーから取得した値をもとにControllerでモーターの回転速度を決め,モーターに出力を与えるプログラムを考えます.

普通のプログラムでこれを実現しようとすると,センサから値を読み取るプログラム(Sensor A, B)から得られた値を何らかの方法でControllerに渡します. Controllerは得られたセンサ値からモーターの制御量を計算し,Motorに制御量を渡し,Motorでモーターを制御する,という流れです. ここで問題になるのが,値を渡す方法です.これを統一しないと,Controllerと別のプログラム(Controller 2)を入れ替えようとしたとき,値を渡す経路をいちいち書き換えなくてはなりません.

そこを解決してくれるのがROSです.

ROSのモデル図

上のプログラムのうち,センサからControllerまでをROSで実装すると,このようになります.

用語を説明します.

Node : ROSでは機能を持つプログラムをNodeと言います.

Message : データはメッセージという形で送受信します. メッセージにはint32やfloat32,stringなど複数のデータ型

Topic : メッセージを受け取り,内容を知ることができる掲示板のようなものです. このTopicに対してメッセージを送ることをPublishといい,このTopicの内容を受信することをSubscribeといいます. Topicでやり取りされるメッセージの型は指定します.

こうすることで,各ノードは,相手を気にせずにメッセージをPublish/Subscribeできます.

Controllerからモーターを動かすまでの流れは次のようになります.

ノードControllerはトピック/sensorsをSubscribeし,トピック/motorに対しPublishする,という構造になっています. 異なるノードController2と入れ替えたい場合,同じトピックに対しPublish/Subscribeするノードを作成し,立ち上げるノードをControllerからController2に変更するだけで実現できます.

Install

こちらのサイトを参考にインストールしました. 最後に.bashrcなどにsource /opt/ros/melodic/setup.bashなどと書いておくと便利です.

準備

ROS wiki の Tutorials に従うと,ROSのの基本を理解できます. ここでは,独自に作成する場合の注意点を書きます.

ワークスペースの作成

Installing and Configuring Your ROS Environment こちらを参考にします.

ワークスペースを作ります.ホームディレクトリ直下に~/catkin_ws/srcを作ります.

ワークスペースの名前や場所は何でもいいですが,ホームディレクトリ直下の~/catkin_wsがよく使われています. これは私の環境ではダメだったという話ですが,ホームディレクトリ直下以外の場所にワークスペースを作ると,後に説明するroscoreが失敗してしまいました.(原因は解明できていません)ホームディレクトリ直下で作り直したところ問題なく起動したので,異なる場所でワークスペースを作った後に問題があれば,ホームディレクトリ直下にワークスペースを作り直してみるといいと思います.

catkin_wscatkin_makeを実行します.

$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws
$ catkin_make

catkin_makeにより,様々な必要なファイルが生成されます. ワークスペースの作成が終わったら,ディレクトリをROSのワークスペースであると認識させるために以下を実行します.

$ source ~/catkin_ws/devel/setup.bash

これは++新しく開くターミナル全て++で実行する必要があります. ただ,毎回やるのは面倒なので,こちらも~/.bashrcに書いておくといいと思います.

パッケージ

既存のパッケージを使ってまずは試してみたい場合は,ROS wiki の Tutorials に従ってください. オリジナルのパッケージを作成する場合は,Creating an ROS Packageに従います.

パッケージの作成

パッケージは~/catkin_ws/srcに作成します.

$ cd ~/catkin_ws/src
$ catkin_create_pkg <パッケージ名> std_msgs rospy roscpp

<パッケージ名>の後には依存パッケージを書きます.上で示した3つは必要最低限なので,入れておきます.

⚠️ **GitHub.com Fallback** ⚠️