2017年6月22日木曜日

[コラム]ROSで始めるロボティクス(12) ー ROSの入門機に新しくTurtleBot3が加わります



ROSの管理団体であるOpen RoboticsとROBOTISが共同開発しているROS対応のモジュラータイプロボットシステム「Turtlebot3」シリーズが発売開始となりました!現在ワッフルとバーガーという2種類が用意されています。今予約すれば夏頃には出荷されるようです。既にROSのエミュレータは公開されているので、早速Gazeboで動かしてみましょう。



TurtleBot3は教育、研究、製品開発向けの小型ロボットです。
TurtleBot3はオープンソースのロボット用ソフトウェアであるROS上で動きます。ハードウェアもすべてオープンになっていて、ロボットを構成するパーツのCAD情報が全てインターネット上で閲覧できます。ですから今すぐあなたの3Dプリンターでパーツを印刷してロボットを組み上げることも可能です。メインコントローラーボードのOpenCRもオープンであり、設計が公開されています。

そのため、その気になれば全て自分で作成して、ソフトウェアをインストールし、動かしてみるということが可能です。メインコントローラーボードの基盤を基板屋さんで作ってもらって自分でハンダ付けすればカスタマイズした基盤だって作れます!

TurtleBot3は自由にカスタマイズ可能です。ワッフルというベース部品を自由に組み合わせることでいろいろな形のロボットを作成することができます。既に販売が決まっているワッフルとバーガーというタイプの他にも「フレンズ」と言う、車、マニュピレーター、セグウェイ、運搬車、モンスター、タンク、オムニホイール、メカナム、バイク、トレイン、亀ロボット、キャリアといった12種類の形状、設計の違うロボットが用意されています。

それらフレンズ達の部品データもCADデータが公開されているため、プリンターで印刷可能です!

販売は夏ごろになる予定のようですが、ROSシミュレータで動かして見ることができるので、早速試してみました。

まず、環境はUbuntu 16.04 ROS Kinetic Kameになります。OSのインストールとROSのインストールは完了しているものとして割愛します。

TurtleBot3フェイクノードの実装


TurtleBot3 Simulationの依存パッケージをインストールします。

sudo apt-get install ros-kinetic-joy ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard ros-kinetic-laser-proc ros-kinetic-rgbd-launch ros-kinetic-depthimage-to-laserscan ros-kinetic-rosserial-arduino ros-kinetic-rosserial-python ros-kinetic-rosserial-server ros-kinetic-rosserial-client ros-kinetic-rosserial-msgs ros-kinetic-amcl ros-kinetic-map-server ros-kinetic-move-base ros-kinetic-urdf ros-kinetic-xacro ros-kinetic-compressed-image-transport ros-kinetic-rqt-image-view ros-kinetic-gmapping ros-kinetic-navigation

cd ~/catkin_ws/src/
git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
git clone https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git
cd ~/catkin_ws && catkin_make


フェイクノード


実際のロボットを持たずに実行できる非常に単純なシミュレーションノードです。

export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_fake turtlebot3_fake.launch


RVizでシミュレーションしている様子

もちろん、TeleopノードでRVizの仮想TurtleBot3を制御することもできます。

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch


テレオペレーションでTurtlebot3を動かす

今までのテレオペは十字キーでしたが、Turtlebotではaとdで左右、wとxが速度、sがストップになっています。キーを押してみて動き出すことを確認してみましょう。

a,d,w,x,sキーで操作する



ガゼボでのシミュレーション


TurtleBot3でGazeboシミュレーションを開始する前に、以下のコマンドを使用してコピーしてください。ガゼボのモデルフォルダにTurtlebot3のモデルファイルをコピーします。

mkdir -p ~/.gazebo/models/
cp -r  ~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/worlds/turtlebot3 ~/.gazebo/models/

Turtlebot3モデルパラメータを設定する必要があります。以下のコマンドでモデルパラメータのバーガーまたはワッフルのいずれかを選択します。

export TURTLEBOT3_MODEL=burger




下記のコマンドを使用してください。 TurtleBot3シンボルの形状を構成する単純なオブジェクトからなるマップが起動します!

roslaunch turtlebot3_gazebo turtlebot3_world.launch

turtlebot3_worldは亀の形をしているワールドだ


Gazeboが起動した

キーボードでTurtleBot3をコントロールするには、新しいターミナルウィンドウで以下のコマンドで遠隔操作機能を起動してください。

roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

マップを自律的にナビゲートするTurtleBot3シミュレーションを実行するには、新しい端末ウィンドウを開き、以下のコマンドを入力します。

export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_simulation.launch

このコマンドを実行するとTurtlebot3が自律的に動き始めます。


RVizは、シミュレーションの実行中に公開されたトピックを視覚化します。以下のコマンドを入力して、新しい端末ウィンドウでRVizを起動することができます。

export TURTLEBOT3_MODEL=burger
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch

レーザーの様子


このように、レーザーでスキャンした様子がRVizに表示されます。

では、実行中のノードがどのようになっているのか確認してみましょう。

rosrun rqt_graph rqt_graph

実行中のノードの確認(ノードのみ)
実行中のノードの確認(すべて)

これより,/scanよりレーザースキャンの値を受け取り、/cmd_velに反映している様子が伺えます。
プログラムは~/catkin_ws/src/turtlebot3_simulations/turtlebot3_gazebo/src/gazebo_ros_turtlebot3.cppにあり、レーザーからの値を見てぶつからないようにひたすら動きまわるプログラムになっているようです。


ROSで始めるロボティクス(9) ー ROSを使ったステレオカメラキャリブレーション
ROSで始めるロボティクス(10) ー オムニホイールで全方向移動可能ロボットを作る 1
ROSで始めるロボティクス(11) ー オムニホイールで全方向移動可能ロボットを作る 2
ROSで始めるロボティクス(12) ー ROSの入門機に新しくTurtleBot3が加わります



140 180 ROS , turtlebot3

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...