はじめに
すべての人に良い一日を!
Habrの広大さをもう一度マスターした彼は、Robotic Operating System(以下、単にROS)についての情報がほとんどないことに気付きました。 私はこの見落としを修正し、素晴らしい製品を広めるために急いでいます。
これは何? ROSはOSのアドオンであり、ロボット制御システムの開発を簡単かつ簡単にします。 これは何を意味し、後でそれとどのように生きるのか-そして一連のトピックは伝えることを意図しています。
本質的に、ROSは、広く知られている(それほどではない)さまざまなライブラリのコレクションです。
- OpenCV-コンピュータービジョンと画像処理アルゴリズムを含むライブラリ。
- 3Dポイントのクラウドを操作するためのPCLライブラリ。
- Ogreは、オープンソースのオブジェクト指向グラフィックエンジンです。
- Orocos-ロボットを制御するためのライブラリ(たとえば、運動学の計算)。
ROSには、さまざまなマニピュレーターとセンサー(MS Kinectを含む)のドライバーも含まれています。 しかし、ROSが単純なライブラリビルドと異なる点は何ですか? 基本的な利点は、ROSのクライアントサーバーアーキテクチャです。開発者は、異なるオブジェクト間でメッセージを送信するメカニズム、分散システムを構築する機能、C ++およびPythonにbrige'eyを提供するメカニズムを実装しました。
ROSの使用を開始するには、インストールを開始する必要があります。 作業計画自体は次のようになります。
- インストール、基本概念
- 私たちは独自のパッケージを作成し、簡単なプログラムであるメッセージに精通します
- サービスとオプション
展開
今日、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は
roscore
これによりマスタープロセスが開始され、そこから実際にROSが動作を開始します。
別の書き込みで
rosrun turtlesim turtlesim_node
そして、最初に各端末で環境変数を初期化することを忘れないでください!
source /opt/ros/electric/setup.bash
かわいいカメがあなたの前に現れた場合、すべてが順調です。 このウィンドウを閉じないでください、それはまだ便利です。 そんなに退屈しないように、新しいターミナルを開いて次を入力します。
rosrun turtlesim turtle_teleop_key
この端末から、爬虫類を制御できるようになりました。
他のOSでのインストールプロセスはそれほど複雑ではありませんが、残念ながら、はるかに安定していません(たとえば、Fedora 15では、開始できませんでした)。 バグレポートの作成、パッチの公開のみをお勧めします。喜んで対応いたします。
基本的な概念
ROSファイルシステム(FS)の基本概念を見てみましょう。
パッケージは、FSの最小単位と呼ばれます。 これは、データ、ライブラリ、実行可能ファイル、構成ファイルなどを含むディレクトリです。 など、いくつかの有用なモジュールに論理的に結合されています。 この構造化の目的は完全に透過的であり、使いやすさと再利用性が向上します。
パッケージ構造は次のとおりです。
- bin /:コンパイルされたバイナリ
- include / package_name:C ++のヘッダーファイル(manifest.xmlで説明する必要があります!)
- msg /:メッセージタイプ
- src / package_name /:他のパッケージにエクスポートされたC ++ソースコードとPythonスクリプト
- srv /:パッケージによって提供されるサービスの種類
- スクリプト/:Pythonスクリプト
- CMakeLists.txt:パッケージをビルドするためのCMakeファイル
- manifest.xml:パッケージマニフェスト
- mainpage.dox:Doxygenのドキュメント
次に、パッケージはスタックに結合されます 。 写真では、そのような構造の例を見ることができます。
ご覧のとおり、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の基本を克服した人に同じボトルのボトルで報酬を与えます。 )
便利なリンク:
- www.ros.org/wiki-ユーザーと開発者のための本部
- answer.ros.org/questions-集合的な心は、どんな問題でもあなたを助けます(しかし、それでも、ROSを超えてはいません)