ロボットオペレーティングシステムの基本

はじめに



すべての人に良い一日を!

Habrの広大さをもう一度マスターした彼は、Robotic Operating System(以下、単にROS)についての情報がほとんどないことに気付きました。 私はこの見落としを修正し、素晴らしい製品を広めるために急いでいます。

画像

これは何? ROSはOSのアドオンであり、ロボット制御システムの開発を簡単かつ簡単にします。 これは何を意味し、後でそれとどのように生きるのか-そして一連のトピックは伝えることを意図しています。

本質的に、ROSは、広く知られている(それほどではない)さまざまなライブラリのコレクションです。



ROSには、さまざまなマニピュレーターとセンサー(MS Kinectを含む)のドライバーも含まれています。 しかし、ROSが単純なライブラリビルドと異なる点は何ですか? 基本的な利点は、ROSのクライアントサーバーアーキテクチャです。開発者は、異なるオブジェクト間でメッセージを送信するメカニズム、分散システムを構築する機能、C ++およびPythonにbrige'eyを提供するメカニズムを実装しました。

ROSの使用を開始するには、インストールを開始する必要があります。 作業計画自体は次のようになります。

  1. インストール、基本概念
  2. 私たちは独自のパッケージを作成し、簡単なプログラムであるメッセージに精通します
  3. サービスとオプション


展開



今日、ROSは安定してインストールされ、Ubuntuバージョン10以降でのみ動作します。Nattyを例に、このプロセスのすべての微妙な点を検討します。

したがって、最初のステップはリポジトリを設定することです。 「制限付き」、「ユニバース」、および「マルチバース」コンポーネントのロックを解除する必要があります。そのため、/ etc / apt / sources.listファイルの次の行のコメントを解除する必要があります。

deb-src http://security.ubuntu.com/ubuntu natty-security main restricted deb http://security.ubuntu.com/ubuntu natty-security universe deb-src http://security.ubuntu.com/ubuntu natty-security universe deb http://security.ubuntu.com/ubuntu natty-security multiverse deb-src http://security.ubuntu.com/ubuntu natty-security multiverse
      
      





次に、インストールおよび更新用のリポジトリを追加する必要があります。

 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu natty main" > /etc/apt/sources.list.d/ros-latest.list'
      
      





次のステップは、デジタル署名のインストールです。 ここのすべても非常に簡単です。

 wget http://packages.ros.org/ros.key -O - | sudo apt-key add -
      
      





その後、更新:

 sudo apt-get update
      
      





ROSメタパッケージ自体をインストールしてみてください。 提供されるモジュールの量が異なる4つのインストールパッケージがあります。 最も完全なものを使用します:

 sudo apt-get install ros-electric-desktop-full
      
      





すべての種類のギズモをダウンロードしてデプロイするプロセスが終了すると、/ optディレクトリにrosフォルダーが表示されます。

最後の手順は、環境変数の更新です。

 source /opt/ros/electric/setup.bash
      
      





この瞬間から、ROSは戦いの準備ができまし 。 インストールが成功したことを確認するには、1つの書き込みで2つのターミナルを開きます。

 roscore
      
      





これによりマスタープロセスが開始され、そこから実際にROSが動作を開始します。

別の書き込みで

 rosrun turtlesim turtlesim_node
      
      





そして、最初に各端末で環境変数を初期化することを忘れないでください!

 source /opt/ros/electric/setup.bash
      
      





画像 かわいいカメがあなたの前に現れた場合、すべてが順調です。 このウィンドウを閉じないでください、それはまだ便利です。 そんなに退屈しないように、新しいターミナルを開いて次を入力します。

 rosrun turtlesim turtle_teleop_key
      
      





この端末から、爬虫類を制御できるようになりました。

他のOSでのインストールプロセスはそれほど複雑ではありませんが、残念ながら、はるかに安定していません(たとえば、Fedora 15では、開始できませんでした)。 バグレポートの作成、パッチの公開のみをお勧めします。喜んで対応いたします。



基本的な概念



ROSファイルシステム(FS)の基本概念を見てみましょう。

パッケージは、FSの最小単位と呼ばれます。 これは、データ、ライブラリ、実行可能ファイル、構成ファイルなどを含むディレクトリです。 など、いくつかの有用なモジュールに論理的に結合されています。 この構造化の目的は完全に透過的であり、使いやすさと再利用性が向上します。

パッケージ構造は次のとおりです。



次に、パッケージはスタックに結合されます 。 写真では、そのような構造の例を見ることができます。

画像

ご覧のとおり、ROSにはかなり複雑なファイルシステムがあり、さまざまなディレクトリへの長いパスを気にしないために、ユーザーには多くのユーティリティが提供されています。

rospack find [pack_name]-パッケージディレクトリへのフルパスを返します

 crady@cradyLap:~$ rospack find rviz /opt/ros/electric/stacks/visualization/rviz
      
      







rosstack find [pack_name]-同じことですが、スタック用です

 crady@cradyLap:~$ rosstack find navigation /opt/ros/electric/stacks/navigation
      
      





これは、いわば静的です。 ROSのダイナミクスは、 ノードバスによって説明されます (トピック)。

ノードは、他のプロセスと通信できる実行中のプロセスです。

バスは、さまざまなノードを接続する名前付きパイプです。

ノードとバスは、非同期データ交換メカニズムを形成します。 まだウミガメのいる窓があるなら、今それも見ることができます。 閉じている場合は、上のどこかに、すべてをその場所に戻す方法が書かれています。

3番目のターミナルを開き、コマンドを入力します

 rxgraph
      
      





画像

新しいウィンドウで、現在アクティブなノードと、相互に通信するバスを確認できます。 そこで議論していることも聞きたい場合は、次のコマンドが必要です。

 rostopic echo /turtle1/command_velocity
      
      





タートルを移動し、コマンドが/ turtle1 / command_velocityバスに表示されるのを確認します。

画像



画像



おわりに



たぶん今日はこれで全部でしょう。 サービス、パラメーター、メッセージとタイヤの詳細な説明はまだありますが、今度はROSの基本を克服した人に同じボトルのボトルで報酬を与えます。 )







便利なリンク:

  1. www.ros.org/wiki-ユーザーと開発者のための本部
  2. answer.ros.org/questions-集合的な心は、どんな問題でもあなたを助けます(しかし、それでも、ROSを超えてはいません)



All Articles