このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

遠隔操作による TurtleBot の制御

この例では、ExampleHelperTurtleBotCommunicator クラスの使用による TurtleBot® のキーボード制御を説明します。手順では、オブジェクトの設定方法と、キーボード制御の開始方法を説明します。キーボード制御の使用方法は、関数が開始される際に表示されます。関数のパラメーターを変更するには、関数 exampleHelperTurtleBotKeyboardControl または ExampleHelperTurtleBotKeyInput クラスを編集します。MATLAB® での TurtleBot 使用の概要については、入門の例 (実際の TurtleBot 入門またはGazebo およびシミュレートされた TurtleBot の入門) を参照してください。

必要条件: TurtleBot との通信TurtleBot の基本動作の確認

TurtleBot のハードウェア サポート パッケージ

この例では、ネイティブの ROS インターフェイスを使用した TurtleBot の操作の概要を示します。TurtleBot® ベースのロボット向けの Robotics System Toolbox™ サポート パッケージは、TurtleBot に対するより効率のよいインターフェイスを提供します。次を行うことができます。

  • ROS コマンドを明示的に呼び出すことなくセンサー データを取得し、制御コマンドを送信

  • Gazebo のシミュレートされたロボットまたは物理的な TurtleBot と透過的に通信

サポート パッケージをインストールするには、MATLAB の [ホーム] タブで [アドオン]、[ハードウェア サポート パッケージの入手] を開いて、[TurtleBot-Based Robots] を選択します。あるいは、roboticsAddons コマンドを使用します。

TurtleBot への接続

Gazebo® でのシミュレーション内で、または実際のハードウェア上で TurtleBot が実行されていることを確認します。起動手順については、Gazebo およびシミュレートされた TurtleBot の入門または実際の TurtleBot 入門を参照してください。シミュレーションを使用する場合は、Gazebo TurtleBot World を調べることをお勧めします。

ROS を初期化します。ipaddress を TurtleBot の IP アドレスに置き換えて、TurtleBot に接続します。

ipaddress = '192.168.203.129';
rosinit(ipaddress)
Initializing global node /matlab_global_node_40274 with NodeURI http://192.168.203.1:55960/

実際の TurtleBot ハードウェアを操作する場合は、必ず Kinect® カメラを起動してください。コマンドは以下のとおりです。

roslaunch turtlebot_bringup 3dsensor.launch

これを TurtleBot のターミナルで実行します。

オドメトリとレーザー スキャンのトピックをサブスクライブし、これらのトピックのメッセージを受信できることを確認します。

handles.odomSub = rossubscriber('/odom', 'BufferSize', 25);
receive(handles.odomSub,3);
handles.laserSub = rossubscriber('/scan', 'BufferSize', 5);
receive(handles.laserSub,3);

ロボットの速度を制御するためのパブリッシャーを作成します。

handles.velPub = rospublisher('/mobile_base/commands/velocity');

ロボットの制御

関数 exampleHelperTurtleBotKeyboardControl を実行します。これにより、TurtleBot をキーボードで制御できます。関数を実際に実行するには、挿入されたコード例をコードとしてマーク (強調表示して Alt + Enter キーを押す) します。

exampleHelperTurtleBotKeyboardControl(handles);

以下は、ユーザーがキーボードで何らかの遠隔操作を行った後のコマンド ウィンドウ、ワールド プロット、および Gazebo ワールドのサンプルです。

TurtleBot を速く動かしすぎると、障害物のプロットが乱雑になることがあります。これは、オドメトリ トピックが高速では比較的不正確になるためです。以下に、乱雑なワールド プロット例を示します。

以下に、オフィス空間を動き回る実際の TurtleBot のサンプル プロットを示します。

ロボットからの切断

q キーを押して関数を終了したら、ホスト上のパブリッシャーとサブスクライバーをクリアします。

clear

ROS ネットワークでの作業が完了したら、rosshutdown を使用します。グローバル ノードをシャットダウンして TurtleBot から切断します。

rosshutdown
Shutting down global node /matlab_global_node_40274 with NodeURI http://192.168.203.1:55960/

次のステップ