主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ROS入門

机器人操作系统(ROS)はロボットシステムのさまざまな部分が相互に検出し,これらの間でデータを送受信できるようにする通信インターフェイスです。MATLAB®は,ROS対応の物理的ロボット,または露台®などのロボットシミュレーターとデータを交換できる関数のライブラリでROSをサポートします。

この例では,次を行う方法を紹介します。

  • MATLABでのROSの設定

  • ROSネットワーク内の機能に関する情報の取得

  • ROSメッセージに関する情報の取得

ROSの用語

  • ROSネットワーク“は,ROS経由で通信するロボットシステムのさまざまな部分(プランナーやカメラインターフェイスなど)で構成されます。ネットワークは複数のマシンに分散させることができます。

  • ROSマスター“は,ROSネットワークのさまざまな部分の取りまとめを行います。これは,マスターを実行しているマシンのホスト名またはIPアドレスを指定する”マスターURI”(统一资源标识符)によって識別されます。

  • ROSノード“は,ROSの関連する機能(パブリッシャー,サブスクライバー,サービスなど)の集合を含みます。1つのROSネットワークに複数のROSノードを含めることができます。

  • “パブリッシャー””サブスクライバー”および”サービス”は,データを処理するROSエンティティの種類です。これらは”メッセージ”を使用してデータを交換します。

  • パブリッシャーが特定の”トピック”(“测距”など)にメッセージを送信し,そのトピックのサブスクライバーがメッセージを受信します。単一のトピックを,複数のパブリッシャーとサブスクライバーに関連付けることができます。

詳細については,机器人操作系统(ROS)およびROS Webサイトの概念の節を参照してください。

ROSネットワークの初期化

rosinitを使用してROSを初期化します。既定では,rosinitはMATLAB内で”ROSマスター”を作成し,マスターに接続されている”グローバルノード”を起動します。グローバルノードは,他のROS関数で自動的に使用されます。

rosinit
启动ROS Core... .耗时1.3515秒在http://192.168.0.10:54630上初始化ROS master。使用NodeURI http://bat580506glnxa64:46577/初始化全局节点/matlab_global_node_50643

rosnode列表を使用して,ROSネットワーク内のすべてのノードを表示します。使用可能なノードは,rosinitによって作成されたグローバルノードのみであることに注目してください。

rosnode列表
/ matlab_global_node_50643

exampleHelperROSCreateSampleNetworkを使用して,ROSネットワークに3つのノードとサンプルのパブリッシャーおよびサブスクライバーを追加します。

exampleHelperROSCreateSampleNetwork

再度rosnode列表を使用して3つの新しいノード(node_1node_2およびnode_3)を表示します。

rosnode列表
/matlab_global_node_50643 /node_1 /node_2 /node_3

ROSネットワークの現在の状態は次の図のようになります。MATLABグローバル ノードは、現時点ではパブリッシャー、サブスクライバーまたはサービスをもたないため、切断されています。

トピック

rostopic列表を使用して,ROSネットワーク内の使用可能なトピックを表示します。アクティブなトピックには,/构成/ rosout/扫描/特遣部队の4つがあります。既定のトピック(rosout特遣部队)はROSネットワーク内に常に存在します。他の2つのトピックは,サンプルネットワークの一部として作成されました。

rostopic列表
/pose / roout /scan /tf

rostopic信息< topicname >を使用して,特定のトピックに関する特定の情報を取得します。以下のコマンドは,/ node_1/构成トピックにパブリッシュ(メッセージを送信)し,/ node_2がそのトピックをサブスクライブ(メッセージを受信)することを示します。詳細については,ROSのパブリッシャーおよびサブスクライバーとのデータ交換を参照してください。

rostopic信息/构成
类型:geometry_msgs/Twist发布者:* /node_1 (http://bat580506glnxa64:39477/)订阅者:* /node_2 (http://bat580506glnxa64:39431/)

rosnode信息< nodename >を使用して,特定のノードに関する情報を取得します。以下のコマンドは,node_1/构成/ rosoutおよび/特遣部队トピックにパブリッシュし,/扫描トピックをサブスクライブし,/ node_1 get_loggersおよび/ node_1 set_logger_levelのサービスを提供することを示します。既定のログサービス(get_loggersおよびset_logger_level)は,ROSネットワークで作成されたすべてのノードによって提供されています。

rosnode信息/ node_1
Node: [/node_1] URI: [http://bat580506glnxa64:39477/] Publications (3 Active Topics): * /pose * /rosout * /tf Subscriptions (1 Active Topics): * /scan Services (2 Active): * /node_1/get_loggers * /node_1/set_logger_level . txt . txt . txt . txt . txt

サービス

ROSサービスは,ROSネットワーク全体でプロシージャ呼び出しのためのメカニズムを提供します。“サービスクライアント”が”サービスサーバー”に対して要求メッセージを送信し,サービスサーバーが要求に含まれる情報を処理して応答メッセージを返します(呼叫和提供ROS服务を参照)。

rosservice列表を使用して,ROSネットワーク内で使用可能なすべてのサービスサーバーを表示します。以下のコマンドは2つのサービス(/添加および/答复)がすべてのノードの既定のロガーサービスと共に使用可能であることを示しています。

rosservice列表
/add /matlab_global_node_50643/get_loggers /matlab_global_node_50643/set_logger_level /node_1/get_loggers /node_1/set_logger_level /node_2/get_loggers /node_2/set_logger_level /node_3/get_loggers /node_3/set_logger_level /reply

rosservice信息<名>を使用して,特定のサービスに関する情報を取得します。

rosservice信息/添加
Node: /node_3 URI: rosrpc://bat580506glnxa64:36123 Type: roscpp_tutorials/TwoInts Args: MessageType A B

メッセージ

パブリッシャー,サブスクライバーおよびサービスは,ROSメッセージを使用して情報を交換します。ROSメッセージにはそれぞれ、メッセージ内の情報のデータ型とレイアウトを定義する "メッセージ タイプ"が関連付けられています(使用基本的ROS消息を参照)。

rostopic类型< topicname >を使用して,トピックで使用されるメッセージタイプを表示します。以下のコマンドは,/构成トピックがgeometry_msgs /扭タイプのメッセージを使用することを示します。

rostopic类型/构成
geometry_msgs /扭

rosmsg显示< messagetype >を使用して,メッセージタイプのプロパティを表示します。geometry_msgs /扭メッセージタイプには,线性の2つのプロパティがあります。各プロパティはgeometry_msgs / Vector3タイプのメッセージであり,これには型の3つのプロパティがあります。

rosmsg显示geometry_msgs /扭
%表示在自由空间中的速度,它分为线性部分和Angular部分。Vector3 Linear Vector3 Angular
rosmsg显示geometry_msgs / Vector3
这表示一个自由空间中的向量。它只是代表一个方向。因此,对它应用一个平移是没有意义的(例如,当对Vector3应用一个%通用刚性转换时,tf2将只应用%旋转)。如果您希望您的数据也是可翻译的,请使用% geometry_msgs/Point消息。两个X两个Y两个Z

rosmsg列表を使用して,MATLABで使用可能なメッセージタイプの完全なリストを表示します。

ROSネットワークのシャットダウン

exampleHelperROSShutDownSampleNetworkを使用して,サンプルノード,パブリッシャーおよびサブスクライバーをROSネットワークから削除します。このコマンドは,exampleHelperROSStartSampleNetworkを使用してサンプルネットワークを作成した場合にのみ必要です。

exampleHelperROSShutDownSampleNetwork

rosshutdownを使用して,MATLABでROSネットワークをシャットダウンします。これにより,rosinitで起動したROSマスターがシャットダウンされ,グローバルノードが削除されます。ROSネットワークでの作業が完了した後の手順としてrosshutdownを使用することを推奨します。

rosshutdown
使用NodeURI http://bat580506glnxa64:46577/关闭全局节点/matlab_global_node_50643

次のステップ