なぜ使用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ボードです
コンパイル
- ファームウェアは、デフォルトcatkin_makeを使用してコンパイルすることができ、あなたも指定できます。
catkin_make helloworld_firmware_hello
- Arduinoの開発ボードが接続され、デバイスでは、/ dev / ttyUSB0である、またはコンパイラのアップロードに対応する内部のデバイス番号ファームウェア/ CMakeLists.txtを変更することを確認します。
catkin_make helloworld_firmware_hello-upload
そのようなプロンプトは、ログの完了後にあり
テスト
それぞれ、新しい端末と実行を開くには
roscore
rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0
rostopic echo chatter
真実は、同じプログラミング他のプログラムと同じです