ArduinoとROSを使用したロボットプログラミング

ROSロボットオペレーティングシステムは、ロボットシステムを作成するための非常に強力なプラットフォームです。これには、「ノード」と呼ばれる最も単純なソフトウェアコンポーネントから実際のGazeboロボットプラットフォームのシミュレーション環境までのプロジェクトの開発に必要なすべてが含まれます。 ROSは主に、優れたコンピューティング機能と独自のオペレーティングシステムを備えたRaspberryPiやBlackboneなどのマイクロコントローラーと組み合わせて使用​​されます。

Arduinoは人気のあるプロトタイピングボードで、それほど前のことではない「スマートホーム」という概念に関連して広く使用されており、マイクロエレクトロニクスおよびロボット工学の分野の初心者にとって理想的な出発点です。

現時点では、ROSロボットオペレーティングシステムをArduinoマイクロコントローラーと組み合わせて使用​​することに関する情報はあまりありません。 これらは主に外国のオンラインリソースと書籍です。

この記事では、ROSとArduinoの「友達」の作り方と、このバンドルで達成したことを伝えたいと思います。

ROSをArduinoボードで使用するために、ROSに公式ライブラリrosserial_arduinoがあります。

rosserial_arduinoの設定


ライブラリのインストールは、他のROSパッケージをインストールするのと同じくらい簡単です。

sudo apt-get install ros-<distribution_name>-rosserial-arduino sudo apt-get install ros-<distribution_name>-rosserial 

その後、rosserial_arduinoパッケージをバイナリファイルからインストールする必要があります。 groovyで始まるROSバージョンでは、パッケージのビルド用にネイティブcatkinユーティリティが作成されたため、インストールが少し異なります。 groovyより前のバージョンでは、次のコマンドを実行する必要があります。

 hg clone https://kforge.ros.org/rosserial/hg rosserial rosmake rosserial_arduino 

catkin(groovy以降)を使用するROSバージョンの場合、インストール手順は次のとおりです。

 cd <ws>/src git clone https://github.com/ros-drivers/rosserial.git cd <ws> catkin_make catkin_make install source <ws>/install/setup.bash 

ここで、wsはcatkinワークスペースフォルダーの名前で、通常はcatkin_wsです。

rosserial_arduinoをArduino IDEに追加する


残りは、ros_libライブラリをArduino環境にコピーして、ArduinoプログラムがROSと対話できるようにすることだけです。 ros_libライブラリは、前のインストール手順で生成されました。

ライブラリは、Arduinoスケッチ(通常はスケッチブック)を保存するためのデフォルトのフォルダーであるフォルダーにコピーされます。

ros_lib設定は、catkin(groovyバージョンから開始)とrosbuild(fuerte以前)を使用するROSバージョンでは異なります。

catkinを使用したバージョンの場合、インストールは次のようになります。

 cd <sketchbook>/libraries rm -rf ros_lib rosrun rosserial_arduino make_libraries.py . 

fuerte以前のバージョンでは、次のようになります。

 roscd rosserial_arduino/src cp -r ros_lib <sketchbook>/libraries/ros_lib 

rosserial_rosの実行例


これで、Arduino IDEでrosserial_arduinoの例を開くことができます。 これを行うには、Arduino IDEを実行し、[ファイル]> [例]> [ros_lib]を選択します。 HelloWorldの例を選択して開始してください。

サンプルのスケッチは、すぐにボードにダウンロードできます。 ダウンロードは、他のArduinoスケッチのダウンロードと変わりません。
ROSマスターとrosserialクライアントアプリケーションを実行するだけで、Arduinoメッセージ全体を他のROSコンポーネントにリダイレクトします。

 roscore rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0 

_portパラメーターは、Arduinoボードが使用可能なシリアルポートを定義します(たとえば、/ dev / ttyACM0)。

HelloWorldスケッチが実行する唯一のアクションは、おしゃべりテーマにメッセージを投稿することです。 rostopicコマンドを使用して、公開された投稿を表示できます。

 rostopic echo chatter 

起動の問題を解決する


rosserialクライアントアプリケーションの起動時にエラーが発生した場合:「デバイスと同期できません。 可能性のあるリンクの問題、またはgroovy Arduinoを使用したhydro rosserial_pythonなどのリンクソフトウェアバージョンの不一致

 #define USE_USBCON 

スケッチでrosライブラリをオンにする前に。

rosserial_arduinoの機能


rosserial_arduinoを使用すると、トピックに投稿したり、特定のトピックからのメッセージを購読したりできます。 また、ros :: TimeとTFを使用して、tf変換データを公開することもできます。

たとえば、実験中に、スケッチを作成して、超音波距離センサーHC-SR07からデータを受信し、範囲トピックで公開することができました。

rosserial_arduinoで使用できるROSの興味深い機能には、rqt_plotによる数値データ(たとえば、センサーから)の視覚化があります。 たとえば、HC-RS07センサーからのデータをグラフの形式で次のように視覚化できます。

 rqt_plot range 


画像

また、サーボトピックにサブスクライブしてサーボを制御し、コマンドでサーボの回転角度の値を公開することもできます。

 rostopic pub servo std_msgs/UInt16 <angle> 


次は?


rosserial_arduinoは、さまざまなセンサー、LED、サーボ、ボタンでライブラリを使用する一連の例を提供します。 すべての使用例は、公式のROSページwiki.ros.org/rosserial_arduino/Tutorialsにあります。

私の意見では、rosserial_arduinoにはモバイルロボットの多くのユースケースがあります。 たとえば、SRF08 Ultrasonic Rangerなどの超音波センサーを搭載した車輪付きロボットの場合、rosserial_arduinoは次のように使用できます:rosserial_arduinoノードには、一定の時間間隔後にソナーからデータを送信するパブリッシャーと、同じトピックにサブスクライブしてメソッドにデータを転送するサブスクライバーを含めることができますロボットの動きを制御します。 rosserial_arduinoパッケージは開発者に完全な自由を与えます:それはすべてあなたの想像力に依存します。

ROSとArduinoを試してみてください!

Source: https://habr.com/ru/post/J249401/


All Articles