みも日記

開発とか趣味とか

ROSの味見

まえがき

先程、参加しているインターンシップの実習初日が終了しました。疲れました。

開発環境はROS、Python、C。ROSとPythonはちゃんと触るのは今回が初めてでしたが、「C言語わかる人ならできるよ!!」と言われていたので事前勉強もせず、インターン開始30分前まで寝てました。結果、指示されたLinuxコマンドを打つとき以外は終始「??」という気持ちで講義を聞くことになり、かなり時間を無駄にしてしまった感がありました。

そんなこともあって今日は、実習中に理解が追いつかなかった部分をゆっくり調べて、簡単にまとめることにしました。

ちなみに今回自分が参加したテーマは「生活支援ロボットの製作」というもので、RoboCup@Homeプロジェクトなるものの一環らしいです。RoboCupは生活支援ロボット関連の世界規模の競技会とのこと。なんか凄そう。

 

ROS(Robot Operating System)とは?

ROSはミドルウェア(OSにもアプリケーションにもなりきれないソフト)に系統されるもので、名前の通りロボット向けのミドルウェアです。

主な役割としては、複数のプログラム(ノード)同士をROSが組み替えることでロボットを動かす、って感じです。

ROSを支える仕組みもついでに紹介します。

 

マスタ

ノード間の通信のための名前管理を行ってます。こいつが動かないと通信ができません。

トピック

パブリッシャが不特定多数に発信し、パブリッシャからサブスクライバが受け取るデータ。厳密に言えばここで言うデータとは、型+実際のデータ。非同期通信。

サービス

トピックとは違い、クライアントからの要求があったときにのみ、サーバが応答と成否を返すような仕組み。1対1。同期通信。

アクション

トピックやサービスとも違い、クライアントとサーバの1対1通信だけど、サーバが応答と成否に加えて、処理中の途中結果も返してくれる。非同期通信。

Catkin

ROSのビルドシステム。Cで言うコンパイラ的なやつ。教わったコマンドは「catkin_make」だけど、調べると「catkin_build」って新しいのもあるみたい。ROS標準ではないっぽいけど。

ちなみに最初の10分くらいずっとコマンドが通らなくて頭を抱えてたら、後に「catkin」を「catlin」ってタイポしてたことに気が付きました。Kotlinに引っ張られすぎでしょ。

 

おしまい

もうちょっと深い内容も書くつもりだったけど、その前に気力が尽きたので、今回はここで締めることにします。実践的な内容にはほとんど触れず、開発の雰囲気だけ掴むのには、これくらいがちょうどいいかもしれないし。あくまで味見だし。何より疲れたし。

それではー。