Turtlebot3 の自作

Turtlebot3 の自作

下記ページを見つけたので、ちょっと試してみました。
Build Your Own Turtlebot Robot!

詳しいところは、下記ページを参照との事です。
Build your own TurtleBot 3 backbone

オンちゃんは、Arduino DUE の代わりに、STM32F407 Discovery Kit にしてみました。
と言うのも、手持ちに、このボードがあったからです。なんといっても、DUE より安い!!

今回は、foxbot_core(Arduino のモータ駆動プログラム) を STM32F407 に組み込んで、PC(Ubuntu Mate) と USB-TTL-Serial で接続して、
PC のターミナル で $ rostopic list を実行したら、/cmd_vel , /odometry のトピックが確認出来る所迄です。

開発環境
Ubuntu Mate 18.04
Visual Studio Code/ Platformio IDE
Framework: arduino
ROS library: rosserial_arduino

1. 必要パッケージのインストール。
Platformio IDE から、プログラムをアップロードするときに必要みたいなので。openocd をインストール。
$ sudo apt install openocd

2. Platformio IDE で、プロジェクトを新規作成します。
Project : foxbot_core
Board : ST STM32F4DISCOVERY
Framework : Arduino

3. ソースのダウンロード。
MattMgn/foxbot_core
$ git clone https://github.com/MattMgn/foxbot_core.git

foxbot_core.ino , foxbot_core_config.h を、上記プロジェクトの src フォルダーへ入れます。
main.cpp は削除。

4. 関連ライブラリーもダウンロード。
MattMgn/arduino-libraries
$ git clone https://github.com/MattMgn/arduino-libraries.git
こちらは、Arduino の Libraries へ入れます。
~/Arduino/libraries へ全てコピーします。
注) ros_lib は、自分で作ったものをいれます。
後で説明します。

4. build の前の設定。
platformio.ini は、下記にします。

ボード毎の情報は、
https://docs.platformio.org/en/latest/boards/index.html
 ST STM32F4DISCOVERY で確認できます。

注) スケッチの upload が出来るように、platformio.ini に、下記を記述します。
upload_protocol = stlink

foxbot_core_config.h の修正。


ST32F4 のPIN アサインは、今の所適当です。
少なくとも、pin = 3 は使えません。
const byte in2MotorRight = 3; //28 C2 M2 <-- NG
Serial.println("hello"); で、PC から受信出来ません。

5. build
1) foxbot_core.ino を開きます。
2) 下の、 Default:(xxxxx) アイコンをクリックして、画面上部の選択一覧から、
env:disco_f407vg Projects/foxbot_core を選択
3) 下の、 レ (build) を実行
4) アップロード
ST32F4 Discovery ボードを PC につなげて、
下の、 → ( upload) を実行。

6. テスト。
1) PC と ST32F4 Discovery ボードを別途、USB-TTL-Serial で接続します。
ST32F4 PIN ----- USB-TTL-Serial PIN (3.3v)
PA3(USRT2_rx)   ----- tx
PA2(USART2_TX) ---- rx
(Grand ---- Grand)

2) USB-TTL-serial でつなげたら、
$ sudo ls -la /dev/ttyUSB0
$ sudo chmod 666 /dev/ttyUSB0

$ roscore
----
$ rosrun rosserial_python serial_node.py _port:=/dev/ttyUSB0 _baud:=115200
---
$ rostopic list
 /cmd_vel
 /odometry
が表示されれば、OK

エラー1 (rosrun rosserial_python serial_node.py)
PC と、ST32F4の Serial通信に問題があると、下記エラーが出ます。
[ERROR] ... :unable to sync with devices; possible link problem or link software version mismatch such as hydro rosserial_python with groovey Arduino
上述の、ST32F4 のPIN アサイン を確認して下さい。
この場合は、PC と、ST32F4の Serial通信に的を絞って検討します。
後述の、 8. Serial の導通テスト。を試して下さい。

エラー2 (rosrun rosserial_python serial_node.py)
[ERROR]... Message from device dropped:message larger than buffer.
の時は、
~/Arduino/libraries/ros_lib/ros/node_handle.h の
INPUT_SIZE = 521 -> 1024
OUTPUT_SIZE = 512 ->1024
にします。
そして、再度 STM32F4 のスケッチをビルドして、upload します。

node_handle.h    <-- NG


その後、どうやら上記ではなくて、~/Arduino/libraries/ros_lib/ros/ros.h の方の変更でOKの様です。
ros.h     <--  OK

7. ros_lib の作成。
ROS に於いて、PC と Arduino との通信は、rosserial_arduino を使うとのことです。
wiki.ros.org/rosserial_arduino
 Tutorials
  1.Arduino IDE Setup

    2.2 Install ros_lib into the Arduino Environment
$ cd ~/Arduino/libraries
$ rm -rf ros_lib
$ rosrun rosserial_arduino make_libraries.py .
この時は、大元の、node_handle.h の修正をいておいた方がよいです。

8. Serial の導通テスト。
オリジナルの void loop() を下記に替えて、nh.getHardware()->write(); を行います。

この時は、roscore 等は、実行しないで、
PC の cu、gtkterm 等のSerialターミナル(/dev/ttyUSB0) で、"hello4" が出て来るのを確認します。
もし、PC の方で確認できなければ、
void setup() の
// blink LED
digitalWrite(LED_BUILTIN, LOW);

// define pin mode motor Right
pinMode(motorRightEncoderPinA, INPUT);
以降の、pinMode() 関連の処理をすべて一旦、コメントにして、
上から、1個ずつ、コメントを外して行って、不具合箇所の処理を特定します。

9. その後。
ボードを、Sipeed MAix Bit with MIC(K210) で試しています。
丁度、持っていたので、いまは、これで試しています。
注) L298N の Logical 電圧 5 VDC なので、Sipeed MAix Bit with MIC(K210) では不可か!!
今、STM32F103 Black PILL を注文しているので、最終的には、こちらになるか?
しかし、こちらも、IO Pin は、 5V tolerant なだけで、出力は、3.3 VDC のはずだが?
だけど、Arduino Due は、 3.3 VDC みたいだが!!

10. 後気づいた点。
ros_lib/ros/ros.h で
#include "ArduinoTcpHardware.h"
にすれば、 TCP port での通信にも対応できるようです。

Turtlebot3自作 一連の記事
ROS2 Turtlebot3 自作 一連の記事

このブログ記事について

このページは、おんちゃんが2021年3月25日 12:11に書いたブログ記事です。

ひとつ前のブログ記事は「Jetson Nano での ROS/ROS2」です。

次のブログ記事は「Turtlebot3 の自作 #2」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ