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

はじめに


すべての人に良い一日を!
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を超えてはいません)

Source: https://habr.com/ru/post/J128024/


All Articles