今回はJetsonNanoに入れたrosserialを使ってArduinoでLチカを行ってみましたのでその手順を残しておきます。
以下、目次の手順で実施していきます。
参考サイト
今回参考にさせていただいたサイトはこちらです。
ROSのrosserialを使ってArduinoでLチカをする
【ROS】ラズパイで始めるROS BOT入門④ ~WaveShare社Alphabotの移動制御対応~
ROS対応 Car-like ステア機構ロボット CIR-KIT-Unit03 の紹介
逆にArduinoからデータをパブリッシュしてもらう方法についてはこちらが参考になります。
rosserial_arduino Tutorials “Hello World”
rosserialとrosserial-arduinoのインストール
rosserialとrosserial-arduinoをapt-getでインストールする。
ROS melodicの場合
1 2 |
sudo apt-get install ros-melodic-rosserial-arduino sudo apt-get install ros-melodic-rosserial |
ArduinoIDEのインストール
ArduinoIDEをインストールする。
以下のページから、ArduinoIDEのLinux版をダウンロードして解凍する。
ホームディレクトリで以下を実行してインストールします。
1 2 3 4 |
wget https://downloads.arduino.cc/arduino-1.8.12-linuxaarch64.tar.xz tar Jxfv arduino-1.8.12-linuxaarch64.tar.xz cd arduino-1.8.12/ ./install.sh |
Arduinoで必要なライブラリを生成
Arduinoで必要なライブラリを生成する
1 2 3 4 |
cd arduino-1.8.12/libraries/ rosrun rosserial_arduino make_libraries.py . cd .. ./arduino |
以下のメッセージが出てきたらそのまま続行します。
Lチカ用の配線
ArduinoのDigital-11番ピンにLEDの足の長い端子を、GNDに足の短い端子を接続する。今回は直接Arduinoに差し込んでいますが、ブレッドボードが手元にあればアノード側(線が長い側)に抵抗を挟んだほうがいいかもしれません。
Arduinoに書き込み
ArduinoIDEで下記のソースを貼り付けて、
「スケッチ」→「検証・コンパイル」→「マイコンボードに書き込む」
11番ピンにつけたLEDがチカチカできていることを確認する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include #include <std_msgs/Empty.h> ros::NodeHandle nh; void messageCb( const std_msgs::Empty& toggle_msg) { digitalWrite(11, HIGH); delay(100); digitalWrite(11, LOW); delay(100); } ros::Subscriber sub("toggle_led", &messageCb ); void setup(){ pinMode(11, OUTPUT); digitalWrite(11, HIGH); nh.initNode(); nh.subscribe(sub); } void loop(){ nh.spinOnce(); delay(1); } |
Arduinoへの書き込みでエラーが発生したとき
JetsonNanoとArduinoをUSBで接続すると、/dev/ttyACM*のバイスファイルが生成される。
デバイスファイルに書き込み権限をつける。
ttyACM0の場合
1 |
sudo chmod 666 /dev/ttyACM0 |
JetsonNanoからパブリッシュしてArduino側でLチカする
Rosを起動します。
1 |
roscore |
rosserialのノードを起動
1 |
rosrun rosserial_python serial_node.py /dev/ttyACM0 |
以下を実行してLチカを行います。これでJetsonNanoからパブリッシュしてArduino側でLチカを行うようになります。
1 |
rostopic pub toggle_led std_msgs/Empty -r 2 |
JetsonNanoとArduinoでLチカしたときの様子です。 pic.twitter.com/C2JaoWkUKF
— Kazuki (@RoomKazuki) June 3, 2020
コメントを残す