目次

参考

インストール

コマンド

コマンド操作
rospackパッケージの情報を取得(パッケージ情報を保存しているpackage.xmlをパースするコマンド)
rospack find <package>packageのパスを取得
rospack depends1 <package>packageの直接依存パッケージを取得
rospack depends <package>packageの全依存パッケージを取得
rosnode list起動中のnodeを列挙
rosnode ping <nodename>nodenameが起動中かチェック
roscdpackageに移動
roslspackageのディレクトリで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_consoleLOGの監視
rosrun rqt_logger_level rqt_logger_levelLOGレベル監視
rostopic echo /<packagename>/<nodename>topic(/<packagename>/<nodename>)に流れているメッセージをそのまま出力する
rostopic type /<packagename>/<nodename>流れているメッセージの型を出力
rostopic pub -n /<packagename>/<nodename> <topictype=message> -- x, yn回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_plottopicの変数を表示できる
rosparam listparameterの一覧
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の実行

  1. catkin_makeを実行した後でかつアプリケーションを使い始める前にワークスペースのsetup.shを読み込んだことを確認してください。
  2. roscore実行
  3. ノードを起動していく

ROS C++

関数機能
ROS_INFOprintfと同値

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のメッセージを送ることが出来る

有名なパッケージ

gazebo連携


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-01-16 (月) 11:14:38 (2660d)