IDEからROSをダイレクトに扱うことができます。ROSがインストールされたPCとArduinoをUSB(シリアル)で接続し、ArduinoをROSのノードとして動作させることができます。これにより例えば、ROSのトピックメッセージをArduinoに送信し、Arduinoに接続したモータの速度を設定したり、Arduinoに接続したセンサの情報をトピックメッセージとしてROSで受け取ったりすることができます。シリアル通信を通してトピックなどをやりとりするROSのパッケージとしてrosserialがあります。ArduinoをROSのノードとし、rosserialを使ってPCと通信するためのパッケージrosserial_arduinoがあります。これらのL298NデュアルHブリッジモータコントローラにはいくつかの異なるモデルがあります。2つのことを確実にArduino、電源、およびモーターコントローラーのGraund結線を確認してください。PWM機能を制御しない場合は、PWMピンは不要です。Considerations:Arduinoのコードスケッチはかなり簡単です。L298NデュアルHブリッジモーターコントローラ用のライブラリがないので、コントローラが接続されているピンを宣言するだけで済みます。dir(number)Pin(letter)"ピンは、スケッチに正しいピンを宣言する限り、使用可能な任意のデジタルピンに接続できます。これにより、プロジェクトで多くのArduinoピンを使用している場合、L298NデュアルHブリッジモーターコントローラは非常に汎用性があります。"speedPin(letter)"ピンをArduinoのPWMピンに接続する必要があります。analogWrite()関数で8ビットPWM出力を提供します。analogWrite()関数で8ビットPWM出力を提供します。ROSシリアル実装のわずかに修正されたバージョン。Shieldライブラリとの簡単な統合のために行われました。使用するには、このフォルダをあなたのArduinoインストールのLibrariesフォルダにダウンロードしてください。world"プログラムを作成して、rosserialの探求を開始します。注:Arduinoのコミュニティでは、プログラムのソースコードを「スケッチ」と呼ぶことがよくありますが、以下では同じ規約を使用します。HelloWorldを選択します。IDEで次のコードが開きます。Arduinoプログラムの一部として、使用するメッセージにros.hヘッダーファイルとヘッダーファイルを含める必要があります。<std_msgs/String.h>次に、ノードハンドルをインスタンス化する必要があります。私たちのプログラムはパブリッシャーとサブスクライバーを作成することができます。ノードハンドルは、シリアルポート通信も処理します。nh;私たちが使用するパブリッシャーとサブスクライバーをインスタンス化する必要があります。使ってパブリッシャーをインスタンス化します。パブリッシャの2番目のパラメータは、パブリッシュに使用するメッセージインスタンスへの参照です。登録する必要があります。spinOnce()を呼び出します。IDE内のアップロード機能を使用します。これは他のスケッチをアップロードすることと変わりありません。次に、新しい端末ウィンドウでroscoreを起動します。roscore次に、ArduinoメッセージをROSの残りの部分に転送するrosserialクライアントアプリケーションを実行します。新しい端末ウィンドウを起動し、次のように入力します。Overviewをご覧ください。複雑なデータ型については、制限事項を参照してください。Projectあなたのプロジェクトを作るrosserial_arduinoプロジェクトを開始することは、他のパッケージを作成することと同じです。std_msgsいつものように、catkin_create_pkgを使ってhelloworldというパッケージを作ります。Stringメッセージを使用するので、std_msgsに依存する必要があります。chatter.cppというファイルを作成します。}このプログラムは、出版社のチュートリアルで扱っているこんにちは世界とほぼ同じです。IDEの外でcppファイルをコンパイルするときは、すべてのArduino関数(digitalRead、analogRead、delayなど)を含むヘッダーファイルを明示的にインクルードする必要があります。IDEとCMakeのファイルを使用するかどうか不明な場合は、ファイルの先頭にこの行を追加してください。IDE以外のビルドシステムと常に互換性があることを保証します。設定し、catkinパッケージからサブプロジェクトにターゲットを渡します。クライアントライブラリを生成します。オプションで、付属のツールチェーンを使用することもできます。ツールチェーンを使用します。ターゲットを実行すると、ファームウェアディレクトリが設定され、そこにhelloターゲットが構築されます。実際には2番目のCMakeLists.txtが必要です。ファームウェアサブプロジェクトのCMakeLists.txtです。CMakeLists.txtを作成します。)generate_arduino_firmware関数は、これが使用するarduino-cmakeツールチェーンによって提供されます。Arduinoの配置、使用するライブラリのリンクなどの複雑さを処理します。Testファームウェアは、catkin_makeを実行するときにデフォルトでビルドする必要がありますが、明示的に指定することもできます。別の端末で次のコードを実行して、実際の動作を確認します。Info追加情報これらの関数を提供するCMakeスクリプトは、何が起こっているのかをよりよく理解するためにそれを検査したい場合ここにあります。IDEはすぐに扱いにくくなります。コマンドラインからプロジェクトをコンパイルしたり、Eclipseのような別のIDEを使ってオートコンプリートを使用したい場合があります。CMakeインフラストラクチャを使用して、ROSビルドファームを使用してファームウェアを構築し、配布することができます。worldファームウェアを作成します。Indigoの新機能ROSパッケージの中に、rosserialファームウェアや他のクライアントを再構築できるようになりました。この機能は、Indigo以降で利用可能です。加する必要はありません。Cサーボを制御する方法について説明します。これは、解放機構、安価なロボットアーム、ROS電動二足歩行、または安価なアクチュエータが必要な場所を制御するために使用できます。提供されるコードは非常に基本的な例であり、単一の趣味サーボの制御を示しています。cサーボがあることを前提としています。cサーボは、地元の趣味の店、Towerhobbies、Sparkfunなどから購入することができます。ホビー・サーボは比較的安価(10ドル程度)でギア・ボックスとモーター制御のエレクトロニクスを搭載しているため非常に小さなアクチュエータです。それらは、20ミリ秒ごとに幅1〜2ミリ秒の方形波パルスを送信することによって制御される。これは、通常、サーボアームを0〜180度の範囲で動かします。趣味のサーボは、大きさ、トルク、角精度が非常に多様です。Servoライブラリを使用することで非常に簡単になります。サーボ・ライブラリは、サーボ・パルスを生成および維持するためのすべての低レベル制御を処理します。すべてのコードで行う必要があるのは、サーボが接続されているピンを指定してから、サーボオブジェクトに角度を書き込むことです。その下に、ServoライブラリはArduinoの内蔵タイマ割り込みを使用して正しいパルスを生成します。Megaで最大48サーボを制御できます。}ここで重要なサーボ固有の領域は、正しいarduinoピンにアタッチされたグローバルなServoオブジェクトを作成した後、すべてのサーボトピックコールバックでサーボオブジェクトに新しい角度のサーボを書き込むことです。std_msgs/UInt16新しいターミナルウィンドウで、ロストピックパブを使ってサーボを制御してください!角度を0〜180の範囲で指定して移動を監視するだけです。Setuprosserialを使用すると、ArduinoベースのハードウェアをROSに簡単に統合できます。このチュートリアルでは、ArduinoでSRF08超音波レンジャーを使用する方法について説明します。Arduinoに接続するブレッドボードやプロトボードが必要です。Arduinoライブラリは、Sonar_srf08.zipからダウンロードできます。以下は、典型的なArduino用のSRF08センサーを設定するための図です。必要な追加回路は、以下に示す2つの1.8kΩのプルアップ抵抗だけです。Wireライブラリの使用です。Wireは、I2Cバスの読み書きを簡素化するI2Cライブラリです。IDEからROSをダイレクトに扱うことができます。<ros.h>他のヘッダファイルのインクルードより先である必要があります。ros-indigo-rosserial仕上げあとはrosserial_arduino/librariesディレクトリをArduinoのsketchbookにコピーするだけです。~/arduino-1.8.1/libraries/ros_libIDEを再起動するとexamplesの中にros_libが現れます。Projectあなたのプロジェクトを作るrosserial_arduinoプロジェクトを開始することは、他のパッケージを作成することと同じです。std_msgsいつものように、catkin_create_pkgを使ってhelloworldというパッケージを作ります。Stringメッセージを使用するので、std_msgsに依存する必要があります。chatter.cppというファイルを作成します。delay(1000);}このプログラムは、出版社のチュートリアルで扱っているこんにちは世界とほぼ同じです。IDEの外でcppファイルをコンパイルするときは、すべてのArduino関数(digitalRead、analogRead、delayなど)を含むヘッダーファイルを明示的にインクルードする必要があります。IDEとCMakeのファイルを使用するかどうか不明な場合は、ファイルの先頭にこの行を追加してください。IDE以外のビルドシステムと常に互換性があることを保証します。設定し、catkinパッケージからサブプロジェクトにターゲットを渡します。クライアントライブラリを生成します。オプションで、付属のツールチェーンを使用することもできます。ツールチェーンを使用します。ターゲットを実行すると、ファームウェアディレクトリが設定され、そこにhelloターゲットが構築されます。実際には2番目のCMakeLists.txtが必要です。ファームウェアサブプロジェクトのCMakeLists.txtです。CMakeLists.txtを作成します。hello-upload)generate_arduino_firmware関数は、これが使用するarduino-cmakeツールチェーンによって提供されます。Arduinoの配置、使用するライブラリのリンクなどの複雑さを処理します。Testファームウェアは、catkin_makeを実行するときにデフォルトでビルドする必要がありますが、明示的に指定することもできます。別の端末で次のコードを実行して、実際の動作を確認します。Info追加情報これらの関数を提供するCMakeスクリプトは、何が起こっているのかをよりよく理解するためにそれを検査したい場合ここに解説があります。IDEはすぐに扱いにくくなります。コマンドラインからプロジェクトをコンパイルしたり、Eclipseのような別のIDEを使ってオートコンプリートを使用したい場合があります。CMakeインフラストラクチャを使用して、ROSビルドファームを使用してファームウェアを構築し、配布することができます。worldファームウェアを作成します。Indigoの新機能ROSパッケージの中に、rosserialファームウェアや他のクライアントを再構築できるようになりました。この機能は、Indigo以降で利用可能です。加する必要はありません。VIEWSCarlのフォトアルバムファインダー越しの絶景を集めて。