ROS2 OAK-D-Lite で、Stereo depth と Mobilenet object detection を同時に動かす。

Sub Title: Does an OAK-D run Stereo depth and Mobilenet object detection at the same time?

ROS2 自作 Turtlebot3 による 草刈りロボット開発。#4 草むらの判定 で、Stereo Camera Depth と、
Object Detection を同時に実行できるハードを検討しないと行けないので、
とりあえず、OAK-D Lite で試してみた。

なんか、同時に動くみたいぞね。
google で検索したけど、該当記事がないので、できないかと思ったが、
なぜか動くみたいぞね。
後で、github に上げちょきます。
tosa-no-onchan / depthai_ros_my
rgb_stereo_mobilenet_node_my.cpp

ただし、今は、Mobilenet で試しただけで、Tiny YOLOv4 では、どうなのか?

ROS2 C++ rclcpp::Node を継承した、Sub class で、親の nodeポインタがほしい。

忘れないように、書いておきます。
/opt/ros/humble/include/rclcpp/rclcpp/node.hpp

enable_shared_from_this
を見ると、shared_from_this() 親メソッドが使えるみたい。

ROS2 自作 Turtlebot3 による 草刈りロボット開発。#4 草むらの判定。

一連の、ROS2 草刈りロボット の開発で、 GPS を使って畑を走行させる事は実現できそうだと、判った。
最後に残った懸案は、

1. 草むらを障害物とせずに、どうやってロボットを進めるか?
しかし、これも、
Keras V3 Object detection with Vision Transformers を試す。 で、最近の、Object Detection を体感する事で、解決策が浮かんできた。
今は、単なる思いつきじゃが、
YOLOx、Transformer Object detection で草むらを判定させて、それを Local CostMap に取り込めば良い。

Local CostMap での障害物の判定は、
obstacle_layer の plugins で行っている。
実際のプログラムは、plugin: "nav2_costmap_2d::ObstacleLayer" で、
こいつで、入力を、/scan:"LaserScan" か、 /cloudXYZ:"PointCloud2" のどちらかを取り込んで、障害物と判定している。

Keras V3 Object detection with Vision Transformers を試す。

Keras V3 Object detection with Vision Transformers を試してみた。

Object detection with Vision Transformers

サンプルは、飛行機の単一の Object detectionだが、
これは、もしかして、草刈りロボットの草むらの判定に使えるのでは、なかろうか。


学習させたあと、vit_object_detector.weights.h5 ができるので、
vit_object_detector.load_weights('vit_object_detector.weights.h5')
で、weights は読み込ませたが、

で、 モデルのロードは、うまくいかない。
下記エラーが出てくる。

Traceback (most recent call last): File "/home/nishi/kivy_env/lib/python3.10/site-packages/keras/src/ops/operation.py", line 208, in from_config
return cls(**config)
TypeError: Patches.__init__() got an unexpected keyword argument 'name'

Keras V3 Automatic Speech Recognition with Transformer を試す。

前回の、Ubuntu 22.04 Tensorflow GPU Install. で、Tensorflow 2.16 GPU版環境ができたので、
今回は、Keras V3 の AudioData のサンプルの、Automatic Speech Recognition with Transformer を試してみた。

プログラム自体は、Keras V2 版とまるっきり同じみたいぞね。

ソースサンプルは、
transformer_asr.py

先頭に下記、追加を入れれば、動きます。


Ubuntu 22.04 Tensorflow GPU Install.

Ubuntu 22.04 Tensorflow GPU Install.

Tensoflow 2.16 から、Keras 3.0 が標準になると言う記事をみたので、試してみた。

PC環境:
Ubuntu Mate 22.04
GPU: GeForce GTX 1070
Python 3.10
virtualenv

Pip インストールが、簡単なので、それを試す。
pip を使用して TensorFlow をインストールする

2.GPUのセットアップ
NVIDIA GPU ドライバー をインストール。

GeForce GTX 1070 - > 550.78
が指定されるが、
おんちゃんは、525(cuda) を入れてみた。
$ sudo apt install nvidia-driver-525
注) 当初、530 を試したが、Keras3 のサンプルで実行できなかったので、525 にしました。

3. TensorFlow をインストールする
シンプルに、下記でOK。
$ activate ~/kivy_env/bin/activate
(kivy_env) $ python -m pip install tensorflow[and-cuda]

tensorflow 2.16.1
みたい。
注) 最終的に、ステム上にやはり、CUDA Toolkit(CUDA) と、cuDNN を別途インストールする事になるので、
(kivy_env) $ python -m pip install tensorflow
で良いかも。

OAK-D-Lite を ROS2 Humble で、再度試してみた。

OAK-D-Lite を ROS2 Humble で、再度試してみた。

以前、OAK-D-Lite を試して、サンプルプログラムがさんざんだったので、ほったらかしていたのですが、
あれから、2年ほどたって、少しは、改善されたのか、確認のため試してみました。

以前より、改善されたみたいぞね!!。

github に公開しちょります。
tosa-no-onchan / depthai_ros_my

ROS2 GPS Localization 時のスタティックマップの東西南北、に関する、おんちゃんの勝手な解釈。
大学、高専でロボット関連の授業を受けていれば当たり前の事かも知れないが、
なにせ、おんちゃんは独学なので、知識のなさを露呈しちょります。

もし間違っていたら、勘弁しとうせ。

ROS2 LC29H-EA GPS RTK を作る。
で、GPS RTK を使って、部屋の中でロボットの走行テストをしているときに、ふと湧き上がってきた疑問な点を、
おんちゃんながらの、勝手な解釈を書いてみました。

部屋の中で、LC29H-EA + RTK で地球上の位置を取得して、ロボットをうごかしているけれど、GPS だと、東西南北があるよね?
これは、スタティックマップでは、どっちら方になるのじゃろ?

ROS2 LC29H-EA GPS RTK を作る。

ROS2 LC29H-EA GPS RTK を作る。

最終目的は、LC29H-EA で、RTK を使うのが目標です。
が、その前に、勉強を兼ねて、
SparkFun_u-blox_GNSS_Arduino_Library/examples/ZED-F9P/Example15_NTRIPClient を試してみます。

QUECTEL LC29H GNSS L1 L5 Receiver 使えるのか検討してみた。 で、C++ で、GPS データの受信ができたので、
これを、 RTK 対応にするには、どうするか、
勉強を兼ねて、RTCM3 をクライアントとして受信するサンプルがあったので、試してみます。

ZED-F9P の場合は、RTCM をサーバーから受信して、それをそのまま ZED-F9P に送れば、RTK Fix するみたいぞね。
ただし、問題は、近くにフリーのサーバーが無い事だが。

だが、実際は、PC から試せるさんぷるがあったので、こちらを試してみました。

sevensx/ntrip
examples/ntrip_client_exam.cc

実際にサーバーに接続するは、下記、情報を指定しないといかんぞね。

ROS2 自作 Turtlebot3 による 草刈りロボット開発。#3 - Auto Mower

自作 Turtlebot3 自律走行に向けたプログラム。#12 AutoMap II で、Gazebo House での自動 Mapping ができるので、
今回は、その作成されたマップを使って、Auto Mower を作ってみました。

Auto Mower を試す前に、Auto Map II で、マップを作っておいとうせ。
手動操作で、teleop-keyboard で動かして作っても、OK です。

1. 開発環境
PC
  Ubuntu Mate 22.04
  ROS2:humble
  Gazebo Turtlebot3 with Depth Camera、Rtabmap_ros
  GPU: Gazebo で試すなら、GPU が必要みたい。無いと、rtabmap-ros が良く狂って、TF-Map - TF-Odom がぶっ飛ぶみたい。

2. Auto Mower コース計画のアルゴリズム。
1) Static Map を取り込んで、ロボットがいる自由領域(White) の領域を最初に求めます。
2) その自由領域を、ロボットの走行サイズに合わせて、スライスして、そのスライス線に従って、ロボットを走行させる。
以上です。

考えかたは、ずっと以前、ROS and Python で試した方法のままです。
ただし今回は、場所が、 Gazebo House と、 C++ で作成します。

3. 技術的検証。
じっさいに、Auto Mower のプログラムを作る前に、クリアしなといけない技術的問題点を検討します。

リニア新幹線開業延期は、本当に残念。

リニア新幹線の東京-名古屋の2027年開業が延期になったのは、本当に残念!!

2027年の開業を楽しみにしていたのに、それがだめになったのは、ほんとうに悔しいし、腹が立つ。
おんちゃんが元気なうちに、開業していれば、一度は乗ってみようと思っていたのに、本当にざんねん。

この件に関しては、静岡県の知事には、本当に怒り心頭に達す。じゃ!!
もう少し、他県の人の、リニア新幹線開業に対する思いへの配慮が必要ではないのかな?

自分の県の不利益ばかり主張するのではなくて、日本全体の利益も考えるべきではないのか?
その不利益についても、当の静岡市の方は、概ね、JRの出水対策案には納得していると聞くのに、
なぜに静岡県知事一人が、反対するのか?
理解に苦しむ。

リニア新幹線開業による、静岡県の経済的利益の試算もあるのに、なぜに、渇水被害による不利益の試算ばかり主張するのか?
それに対する、JRの出水対策案も概ね評価されているのに!!

静岡県知事よ、もう少し冷静になれ、節度のある態度が必要ではないのか?

QUECTEL LC29H GNSS L1 L5 Receiver 使えるのか検討してみた。

最近見つけたのだが、GNSS L1 L5 Receiver があるみたい。
QUECTEL LC29H
www.waveshare.com/wiki/LC29H(XX)_GPS/RTK_HAT
www.waveshare.com/lc29h-gps-hat

実際に、使えるのか、検討してみた。

紹介記事
幾つか種類があって、LC29H(DA) GPS/RTK HAT が、Rover 向けの様です。
但し、補正信号? RTK が、中国、香港、USAの一部なのか?
注1) DA - RTK : 1[Hz] なのかな?
1[Hz] だと、ROS2 ロボットカーにつかえるのだろうか?
注2) EA- RTK : 10[Hz] みたいだが、EA は、まだ販売していないのか?
下記に、あった。
GNSS RTK 3 Click
GNSS RTK 3 CLICK - LC29HEA
注3) ZED-F9P GPS-RTK も、1 ~ 8 [Hz] みたい。

おんちゃんは、よくわからんが、RTKの補正信号に、
store.shopping.yahoo.co.jp/geosense2/d9cx1.html が使えないもんじゃろうか?
もし、使えれば、かなり安く、cm級の GNSS が実現でくるのじゃが?

注4) BS だと、RTKの基地局になるみたい。ここで得たRTKデータは、いったん、公開サーバー(rtk2go NTRIP Caster server : 有料か無料か気になる) にアップロードして、
DA、EA では、そのサーバーから、RTKデータを取り込めば良いみたい。
ローバーで、インターネットに接続出来るのであれば、この構成もありかも。

2. UM982 と言うのもあるみたい。
2アンテナGNSS受信機Unicore Communications UM982
しかし、こらは、販売箇所で、値段に開きがるいみたい。
とても高いか。
ユニセックス効果差動センサーモジュール,高精度ベースステーション,um982 gnsrtk,互換性,bd982 bd990 bd990
しかし、ドキュメント不足かも

SparkFun ICM-20948 Arduino で、 DMP Fusion 9軸 がやっとOKになった。

今まで、SparkFun ICM-20948 Arduino で、 DMP Fusion 9軸 がうまく動作しなかったが、 再度チャレンジしてやっと動き出した。

開発環境
Board: ESP32
Platform I/O IDE
IMU: SparkFun ICM-20948
Arduino Library: SparkFun_ICM-20948_ArduinoLibrary
Sample Program: Example6_DMP_Quat9_Orientation
Interface: SPI

ESP-EYE CameraWebServer with QR Code Detection.

ESP-EYE CameraWebServer with QR Code Detection.

ESP-EYE QR Code Scanner with qrdec. の続きです。

前回の、ESP-EYE を使った、QR Code Scanner で、実際 に、カメラで、QR Code がどのように写っているのか知りたくて作ってみました。

CameraWebServer に、 Face Detect の代わりに、qrdec を使って、QR Detect にしてみました。
グレースケールで、320x240 の画像で、ピンとはどうなのかが確認できました。

ESP-EYE QR Code Scanner with qrdec.

ESP-EYE QR Code Scanner with qrdec.

QR Code Decode C++ with qrdec. の続きです。

QR Code Decode C++ with qrdec. を、ESP-EYE (Esp32 Arduino) でも試してみました。

今回は、ESP32QRCodeReader をベースにして、
の中の、quirc の使用に替えて、qrdec をつかてみました。

開発環境
Ubuntu Mate 22.04 PC
Platform I/O IDE
ボード: ESP EYE
Platform: Arduino

Workspace: ~/Documents/PlatformIO/Projects
フォルダー: qrdec_esp32_eye

1. Platform I/O IDE の PIO-Home で、New Project を作成。
Name: qrdec_esp32_eye
Board: Espressif ESP-WORKER-KIT
Framework: Arduino
で作成します。
1.1 qrdec_esp32_eye/lib ディレクトリーに、上記 ESP32QRCodeReader を、 git clone します。
1.2 qrdec_esp32_eye/lib/ESP32QRCodeReader/examples/basic/basic.ino を、qrdec_esp32_eye/src/qrdec_esp32_eye.ino としてコピーします。
main.cpp は、削除します。
qrdec_esp32_eye.ino を修正します。

この時点で、一度ビルドして、ESP-EYE にアップデートして、動かすと、
quirc 版で、動作すると思います。

1.3 その後、
qrdec_esp32_eye/lib/ESP32QRCodeReader/src/ ディレクトリーに、qrdec をコピーします。

1.4 qrdec_esp32_eye/lib/ESP32QRCodeReader/src/ESP32QRCodeReader.cpp の
void qrCodeDetectTask(void *taskData) を、現状 quircを使っている部分を、qrdec を使うようにします。
概要は、以上です。

QR Code Decode C++ with qrdec.

QR Code Decode C++ with qrdec.

qrdec というのがあったので、試してみました。
quirc より少し重いけど、性能は良いみたいぞね。

開発環境
Ubuntu Mate 22.04 PC

1. git clone
$ cd ~/Documents/VisualStudio-CPP/
$ git clonehttps://github.com/torque/qrdec.git
$ cd qrdec

2. オリジナルのテストプログラムのビルド。
$ make test
/usr/bin/ld: -liconv が見つかりません: そのようなファイルやディレクトリはありません
と怒られた。
libghc-iconv-doc が必要か?
$ sudo apt install libghc-iconv-doc
違うみたい。
$ sudo apt remove --purge libghc-iconv-dev
$ sudo apt autoremove
判らん。
glibc の中に元からあるみたい。
[Build] Build failed due to undefined reference to libiconv #15560
gcc or clang++ みたい。

Makefile が問題みたい。
#TEST_LDFLAGS = $(LDFLAGS) $(shell pkg-config --libs libpng) -liconv $(LIBRARY) -fPIE
TEST_LDFLAGS = $(LDFLAGS) $(shell pkg-config --libs libpng) $(LIBRARY) -fPIE

$ make clean
$ make test
build/qrdec ができた。
実行は、
$ build/qrdec 画像ファイル
ですが、テスト画像は、下記にあります。
mchehab/zbar/examples
qr-code.png


3. build library

$ make clean
$ make production
build/libqrdec.a が出来る。

4. おんちゃんのテストプログラムをビルド。

$ mkdir qrdec_reader-nishi
$ cd qrdec_reader-nishi
この下に、reader.c を参考に、 OpenCV を使った、reader.cc を作ります。
あと、reader.c, image.c, image.h は、ライブラリー外のソースとのことです。
上記、3 ファイルをコピーします。
reader.c を reader.cc に rename して、opencv の処理を組み込みます。

Coral Edge TPU Image Classification C++

Coral Edge TPU Image Classification C++

Google-coral/tflite examples に image classification が出ていたので、試してみました。
google-coral/tflite/cpp/examples/classification

おんちゃんは、これを 初めに、Ubuntu Mate 22.04 PC で、Bazel を使ってビルドしてみました。
その後、Jetson Nano 2G Armbian Jammy(Ubuntu 22.04) でも、動かしてみます。

Jetson Nano 2G Armbian Jammy(Aaarh64) 向けの C++プログラム を Ubuntu 22.04 PC 上でクロスビルドするには、
Ubuntu 22.04 PC 上 で、先に Tensorflow Lite の静的ライブラリーをクロスビルドします。

ARM64 ボード用の TensorFlow Lite を構築する の、"Bazel を使用した ARM64 のクロスコンパイル" を参考に、作成します。

その後に、TensorFlow Lite、Coral Edge TPU を使った、C++ プログラムを、Ubuntu 22.04 PC で、Bazel を使って、aarch64 向けの Cross Compile を行います。
このときに、先に作った、 TensorFlow Lite の静的ライブラリーをリンクして、aarch64 向けの実行ファイルを作成します。コッホ!!
PC版の Tensorflow Lite 静的ライブラリー も同じように作成してけば、
C++ プログラの作成が、同じ手順で、x86_linux 版と、aarch64_linux 版ができます。

1. Ubuntu 22.04 PC でのビルド。
1.1 Bazel のインストール(フルバージョン版) をします。
Ubuntu への Bazel のインストール
注) bazel-6.4.0 をインストールしてください。
最近、bazel-7.0.0 に上がったみたいですが、こちらは、NG です

Jetson Nano 2G Armbian 22.04(Jammy) Cuda Installing.

Jetson Nano 2G Armbian 22.04(Jammy) Cuda Installing について調べてみました。

Installing CUDA on Nvidia Jetson Nano の記事を見かけたので、出来るのか考えてみました。

Jetson Nano 2G Armbian 22.04(Jammy) のインストールは、 jetson Nano 2G が、Armbian で動くみたい。 を参照してください。

To install CUDA toolkit on Jetson Nano (or any other Jetson board), there are two main methods:
  1.Installing through JetPack SDK
  2.Installing from Debian (Ubuntu) repositories
  3.Installing from CUDA repositories

の 2.Installing from Debian (Ubuntu) repositories が出来るのか?

Installing from Debian repositories
Before installing CUDA on your Jetson Nano, make sure that you have completed the pre-install
requisites found in this guide to ensure a smooth and hassle-free installation.
の this guide ページには、

QR Code Scanner with TensorFlow Lite

QR Code Scanner with TensorFlow Lite と言うのがあったので、試してみる。

正確には、Android 版だが、
Android QR Code Detection with TensorFlow Lite

modelの作成は、下記、model_maker を参考にしているみたい。
Object Detection with TensorFlow Lite Model Maker

最終的には、Raspi 3b+ で試してみようと思います。
注) Raspi 3b+ に、Coral USB TPU を使っても効果は無いみたい。もっとパワーが必要じゃ。

Raspi TensorFlow Lite Object detection は、
examples/lite/examples/object_detection /raspberry_pi
を参考にします。

1. 開発環境
開発は、PC 上で行います。
PC Ubuntu Mate 22.04
Intel Core i-5 4570 3.2GHz x 4 with 12G Memory
Python 3.9
tflite-model-maker 0.4.2

1.1 Python3.9 を別途インストールします。
Python の Dual インストールは、下記を参照しました。

Install Python 3.9 or 3.8 on Ubuntu 22.04 LTS Jammy JellyFish

高知県土佐市の防災、緊急放送の迷惑さ。

高知県土佐市の防災、緊急放送の迷惑さ。

最近、土佐市の防災、緊急放送(スピーカーでの放送)が、頻繁になされるようになって、
非常に迷惑しています。

正確には、こちら の、 市町村防災行政無線(屋外スピーカー) の事です。

以前、よく流されたのは、
消防署の火災のサイレンの後の、説明で、火災発生場所や、 火災内容の連絡。
警察所、消防署の、行方不明の老人の捜索への協力依頼。
などが、時々流されるだけでした。
その時は、おんちゃんも良く、耳を澄まして聴いていた記憶があります。

しかし、最近は、回数も非常に増えて、一般市民にはさほど必要に感じない、緊急性もない事が、
防災、緊急放送(スピーカーでの放送) から流されるようになって、困っています。
また音量も以前に比べて、大きくなっているように感じます。

幾つか例にあ上げると。
仁淀川河口付近の一斉清掃への参加の通報。
小学校で、学生に朝の挨拶を推奨しているので、住民も朝、夕、子供とすれ違った時は、挨拶する様にとの通報。
波介川の一斉清掃。
消防署の仁淀川での訓練。
農協のハウス野菜の受け入れ開始。
四電を名乗った会社のセールス。
熱中症の危険予報(毎日、毎朝 9:00)
消防署の出初式。

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

アイテム

  • LC29H_QGNSS-2024-3-5_2.jpg
  • DSC03477-1.jpg
  • robotcar-DSC03445.jpg
  • foxbot3_core_chassis-img007.jpg
  • foxbot3_core_chassis-img006.jpg
  • foxbot3_core_chassis-img005.jpg
  • foxbot3_core-eagle-schema.jpg
  • foxbot3_core-eagle-board.jpg
  • robocar-DSC03418.jpg
  • img004.jpg

カテゴリ

ウェブページ

サイトナビ