目次 †
参考 †
インストール †
コマンド †
コマンド | 操作 |
rospack | パッケージの情報を取得(パッケージ情報を保存しているpackage.xmlをパースするコマンド) |
rospack find <package> | packageのパスを取得 |
rospack depends1 <package> | packageの直接依存パッケージを取得 |
rospack depends <package> | packageの全依存パッケージを取得 |
rosnode list | 起動中のnodeを列挙 |
rosnode ping <nodename> | nodenameが起動中かチェック |
roscd | packageに移動 |
rosls | packageのディレクトリでls |
rosrun [package_name] [node_name] | package_nameに含まれる、node_nameのプログラムを実行する。(__name:=my_turtleなどで、node_nameを操作可能) |
rosed <package> <file> | packageのfileを編集する |
rosmsg show [<message> or <package>/<message>] | ROSメッセージ定義の情報提供 |
rossrv show [<service> or <package>/<service>] | ROSサービス定義の情報提供 |
rosrun rqt_graph rqt_graph | メッセージの配信購読関係の可視化。青を購読していて、緑に配信している。 |
rosrun rqt_console rqt_console | LOGの監視 |
rosrun rqt_logger_level rqt_logger_level | LOGレベル監視 |
rostopic echo /<packagename>/<nodename> | topic(/<packagename>/<nodename>)に流れているメッセージをそのまま出力する |
rostopic type /<packagename>/<nodename> | 流れているメッセージの型を出力 |
rostopic pub -n /<packagename>/<nodename> <topictype=message> -- x, y | n回topicに指定したメッセージ型と指定したメッセージで送る。 -nは-r 1で1Hzになる。 |
rostopic list -v | 起動中のトピックの型を調べるときに使える |
rosservice type <service> | serviceの型を調査 |
rossrv show <service> | serviceの型の構成を表示 |
rosservice call <service> <arg> | serviceを利用 |
rosrun rqt_plot rqt_plot | topicの変数を表示できる |
rosparam list | parameterの一覧 |
rosparam set <param> <arg> | paramにargをセットする |
rosparam get <param> | paramの値取得 |
rosparam get / | paramの値を全部取得(rosparam listの代用にもなる) |
rosbag info <bag> | bagの情報提供 |
rosbag record <topics> | topicsのbagファイルを生成(-aですべてのトピック) |
rosbag play <bag> | topicsのbagファイルを再生 |
roslaunch [package] [filename.launch] | 一つのパッケージであればノードを複数同時に起動できる。パッケージのlaunchディレクトリの中にlaunchファイルを入れることで実現 |
catkin_create_pkg <package_name> [depend1] [depend2] [depend3] | (catkinワークスペース内で)depend_iに依存するpackage_nameを作成 |
catkin_make [--source src_dir] | catkin_wsディレクトリで実行。sourceが指定されなければsrcがデフォルトとなる。 |
package.xml †
タグ | 意味 | 形式 |
dependencies(build_depend, buildtool_depend, run_depend, test_depend) | 様々な状況で依存するパッケージ | 例略 |
description | 概要 | <description>The beginner_tutorials package</description> |
maintainer | 開発者 | <maintainer email="you@yourdomain.tld">Your Name</maintainer> |
license | ライセンス | <license>BSD</license> |
中枢処理 †
- roscore
- 「マスター」と呼ばれる名前管理システム
- 「rosout」と呼ばれるstdin, stdoutシステム
- 「パラメータサーバ」
- マルチプロセスなので、ノード間で言語が一致する必要無し。
- roscoreは一つしか実行できない。
情報伝達 †
- Publisher->(メッセージ)->トピック->(コールバックで引数にメッセージ)->Subscribers
- 情報を書いておく掲示板のようなものがトピック
- 配信者がトピックに思い思いのタイミングで配信し、購読者はトピックが更新されたらコールバックを呼ぶ形式
- ノードはメッセージをトピックへ向けてPublish(配信)し,同様にSubscribe(購読)することでトピックからメッセージを受け取ることができます.
- n.subscribe("chatter", 1000, chatterCallback);
- "chatter"という名前の1000行まで貯めておけるトピックが更新されたら、chatterCallbackせよ。
機能提供 †
- 「クライアント」を媒介とするシステム(Service Node - Client Nodeの関係)
- クライアントは、起動中のサービスノードのプロセスをインスタンス化したもの。
rosの実行 †
- catkin_makeを実行した後でかつアプリケーションを使い始める前にワークスペースのsetup.shを読み込んだことを確認してください。
- roscore実行
- ノードを起動していく
ROS C++ †
topic †
- topicの送り方
- 送るためのトピックが、どのプロジェクトのどのノードかを調べる(/turtle1/command_velocity)
- トピックに、どのトピックタイプのメッセージを送ればよいかを調査(rostopic type /turtle1/command_velocity)
- トピックタイプのデータ形式を調査(rosmsg show turtlesim/Velocity → linier, angular)
- そのトピックタイプのデータ形式にあったメッセージを送信
- topicコマンド
- rostopic pub <トピック> <トピックタイプ> -- <メッセージ>
- 例
- rostopic pub -r 1 /turtle1/command_velocity `rostopic type /turtle1/command_velocity` -- 1 0
- rostopic pub /turtle1/command_velocity `rostopic type /turtle1/command_velocity` -- 1 0
環境設定 †
- To find available packages, use: apt-cache search ros-indigo
- If you have more than one ROS distribution installed, ~/.bashrc must only source the setup.bash for the version you are currently using.
- catkinの使い方は基本的にはCMakeに似ていますが、パッケージ検索機能や、複数の独立したプロジェクトを同時にビルドする機能なのが追加
- rosbuildにおける一番の問題の一つは、Microsoft Windowsなどの様々なOSに対する移植性が難しい
- BashからPython&CMakeへ
- Source in buildからOut of Sourseビルドへ
- パッケージは、ひたすら~/catkin_ws/srcに突っ込んでいく。
- catkin_init_workspaceは、 *~/catkin_ws*ではなく*~/catkin_ws/src*でやる。
cd ~/catkin_ws/src/beginner_tutorials/src
#Add/Edit source files
cd ~/catkin_ws/src/beginner_tutorials
#Update CMakeFiles.txt to reflect any changes to your sources
cd ~/catkin_ws
catkin_make -DCMAKE_BUILD_TYPE=Release
irvs †
- ノード
- 要するに「プロセス」
- トピックは「プロセス間データ転送」が行えて、
- サービスは「プロセス間関数」が行える
トピックのチュートリアル †
roscore
rosrun irvs_ros_tutorials ros_tutorial_msg_publisher # topicを提供
rostopic list # 流れてるtopic列挙
rostopic echo /ros_tutorial_msg # topicを購読
サービスのチュートリアル †
- 要するに、サービス=「関数」
- rqt_graphには表示されない!
- ヤバい仕組み
- srvTutorial.srv→.hを作るcmakeのルールがある
- つまり、srvを自分で作ったら、.hができてるので、req.aとかret.resultでアクセスできる(ヤバいね)
- 受信はreq, 返信はresの構造体が.hのなかにできているので、そこから読み取ったり書き込んだりする。
roscore
rosrun irvs_ros_tutorials ros_tutorial_srv_server # サーバー建てる
rosrun irvs_ros_tutorials ros_tutorial_srv_client 2 3
rosservice list # 流れてるtopic列挙
rosservice call /ros_tutorial_srv 3 4 # クライアントからのリクエスト発行は、コマンドからもできる
便利なパッケージ †
Tips †
- Arduinoを介すとROSのメッセージを送ることが出来る
有名なパッケージ †
- tf
- ar_track_alvar
- ARマーカ認識を行うar_track_alvarはすごく良く出来ている
- gmapping, hector-slam
- オドメトリが怪しかったり画像も地図も使えなかったりする場合
gazebo連携 †