ROSとのArduino:使用CMakeのは、コードをコンパイルしてアルドゥイーノにアップロードします

なぜ使用CMakeのは、コードをコンパイルし、Arduinoのためにアップロードする方法は?
場合は、アプリケーションコードに大規模なソフトウェアプロジェクトのポイント、ArduinoのIDEを開発する必要性がより厄介になります。
あなたは、多くの場合、コマンドラインからEclipseやコードをコンパイルしたい場合は、自動的に完了することができ
、最終的なことができますCMakeのインフラrosserial_clientを、あなたはROS buildfarmを使用してファームウェアを構築して配布

ブログは簡単な例と言いました。
みんなのI整理パッケージに古い方法:ダウンロード

1。

作業スペース、ここで少し作成
ワークスペース尾状花下のsrcディレクトリを

$ cd ~/catkin_ws_cmake/src/
$ catkin_create_pkg helloworld rosserial_arduino rosserial_client std_msgs

使用は、HelloWorldパッケージ、依存rosserial_arduino(必要なArduinoのツールチェーン)とrosserial_clientを(クライアントライブラリは、マクロを生成する)を作成し、最後にstd_msgs /文字列、std_msgsに依存する必要性を使用する予定catkin_create_pkg。

2。

helloworldのパッケージでは、ファームウェア/ chatter.cppを確立し、コピーし、次のサンプルコードの内容を貼り付けます。

#include <ros.h>
#include <std_msgs/String.h>
//Arduino.h头文件,它包含了所有的Arduino函数(digitalRead, analogRead, delay, etc.)
#include <Arduino.h>

ros::NodeHandle nh;

std_msgs::String str_msg;
ros::Publisher chatter("chatter", &str_msg);

char hello[13] = "hello world!";

void setup()
{
  nh.initNode();
  nh.advertise(chatter);
}

void loop()
{
  str_msg.data = hello;
  chatter.publish( &str_msg );
  nh.spinOnce();
  delay(1000);
}

3。

CMakeLists.txtファイルパッケージディレクトリを編集

find_package(catkin REQUIRED COMPONENTS
  rosserial_arduino
  rosserial_client
)

catkin_package()

rosserial_generate_ros_lib(
  PACKAGE rosserial_arduino
  SCRIPT make_libraries.py
)

rosserial_configure_client(
  DIRECTORY firmware
  TOOLCHAIN_FILE ${ROSSERIAL_ARDUINO_TOOLCHAIN}
)

rosserial_add_client_target(firmware hello ALL)
rosserial_add_client_target(firmware hello-upload)
  • cmakeのスクリプトのRosserial_client組み合わせ
  • ここでは、直接のファームウェアに構築されるのではなく、独立したプロジェクトは、ターゲットサブプロジェクトに尾状花パッケージからcmakeのパスをコンパイルします
  • rosserial_generate_ros_lib機能がターゲットhelloworld_ros_libを作成し、それがrosserialクライアントライブラリは、ヘッダ情報が含まれている生成します
  • rosserial_configure_client機能は、ターゲットを作成し、それはArduinoのは便利なツールチェーンを提供しrosserial_arduinoあなたは、この場合には、提供するツールチェーンを使用することができ、特定のサブディレクトリにcmakeのプロジェクトを設定します。
  • 私たちは、コンパイルにmakeコマンドを実行したときに最後にrosserial_add_client_targetので、各コールの目的上を通過
  • helloworld_firmware_hello尾状花目標のために、それはハロー目標をコンパイルするには、ファームウェアのディレクトリを設定します。

4。

二CMakeLists.txtために必要なパッケージディレクトリのファームウェア/ CMakeLists.txt、下に作成、これは次のように読み込み、ファームウェア、のためのサブプロジェクトです。

cmake_minimum_required(VERSION 2.8.3)

include_directories(${ROS_LIB_DIR})

# Remove this if using an Arduino without native USB (eg, other than Leonardo)
add_definitions(-DUSB_CON)

generate_arduino_firmware(hello
  SRCS chatter.cpp ${ROS_LIB_DIR}/time.cpp
  BOARD uno
  PORT /dev/ttyUSB0
)
  • generate_arduino_firmware機能は、arduinoの-cmakeのツールチェーンによって提供され

  • これは、ライブラリを接続するために必要な、Arduinoのを配置します

  • ボード名は/hardware/arduino/avr/boards.txtなどで見つけることができます:

    UNOという名前のボードのArduinoの宇野
    Arduinoのレオナルドレオナルド・ボードと呼ばれる
    、私はここで使用するには、UNOボードです

コンパイル

  1. ファームウェアは、デフォルトcatkin_makeを使用してコンパイルすることができ、あなたも指定できます。
catkin_make helloworld_firmware_hello
  1. Arduinoの開発ボードが接続され、デバイスでは、/ dev / ttyUSB0である、またはコンパイラのアップロードに対応する内部のデバイス番号ファームウェア/ CMakeLists.txtを変更することを確認します。
catkin_make helloworld_firmware_hello-upload

ここに画像を挿入説明
そのようなプロンプトは、ログの完了後にあり

テスト

それぞれ、新しい端末と実行を開くには

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

ここに画像を挿入説明真実は、同じプログラミング他のプログラムと同じです

公開された15元の記事 ウォン称賛11 ビュー30000 +

おすすめ

転載: blog.csdn.net/weixin_44827364/article/details/104106916