SparkFun ZED-F9P NTRIPClient を試してみる。

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)
消防署の出初式。

TensorFlow 2.10.0 RNN - LSTM による、Speech Recognition #2

TensorFlow 2.10.0 RNN - LSTM による、Speech Recognition #2

TensorFlow 2.10.0 RNN - LSTM による、Speech Recognition の続きです。

Introduction to speech recognition with TensorFlow が、性能が良かったので
今回は、これをベースに、日本語で試してみます。

日本語の為のデータの準備は、下記を参考にさせて貰いました。
TensorFlow の transformer を使った音声認識(ASR)のプログラムを改修して日本語学習させてみました。

環境:
Windows11
Python 3.10.6
tensorflow-gpu 2.10.0
GTX-1070
cuda toolkit 11.2
cuDNN SDK 8.1.0

Keras ASR with CTC を試す。

Keras ASR with CTC を試してみた。
Automatic Speech Recognition using CTC

当初は、Automatic Speech Recognition with Transformer を試してみたけれど、
余り、loss、val_loss が改善しないので、こちらにしてみました。
注) 但し、こちらの方が、学習させるのは、軽いみたいなので、もう少し性能が良ければ...

環境:
Windows11
Python 3.10.6
tensorflow-gpu 2.10.0
GTX-1070
cuda toolkit 11.2
cuDNN SDK 8.1.0

注) GTX-1070 だと、1 epoch 20分程かかる。
GeForce RTX 2080 Ti GPU だと、5-6 分だとさ。

Tensorflow で、 MNIST を学び直し。

tensorflow 2.10 環境で、tensoflow MNIST を学び直していて、
MNIST データのダウンロードで困ったので、メモしておきました。

1.『TensorFlowで学ぶディープラーニング 中井悦司著』(マイナビ出版) を再度紐解いて、機械学習の基本を学び直ししようとしたら、
Tensorflow での記述だったので、tensorflow2 環境下でも出来るようにメモしました。

機械学習に関して、色々な書籍があるけど、この本が一番基本が判りやすいので、おんちゃんは、お勧めです。
Keras で書けば、超簡単ですが、中で、なにをしているのかよく判らないと感じる人には、お勧めです。
但し、難点が、サンプルコードが、Tensorflow である点です。但し、少し修正すれば、Tensorflow 2 でも同じように、動かせます。

keras.datasets.mnist が使えるようなので、こちらを使います。

環境
 Windows11
 tensorflow-gpu 2.10

Orange pi 5 Armbian で NPU を使って、yolo を試す。

Orange pi 5 Armbian で NPU を使って、yolo を試す。

Orange Pi5のNPUを使用してyolo(高速?)を動かしてみる(rknn-toolkit2) と言うのがあったので、これを参考に、NPU yolo を試してみた。

大元のクイックスタートの方が参考になるみたい。
github.com/rockchip-linux/rknn-toolkit2
Rockchip_Quick_Start_RKNN_Toolkit2_EN-1.5.0.pdf

1. 環境の構築。
Armbian 上に構築します。
 Python 3.10.6
 tensorflow 2.8.0 (最新は、2.12.0 )

1) python3 をインストール。
$ sudo apt install python3 python3-dev python3-pip

2) 必要、ライブラリーのインストール。
$ sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc

3) virtualenv を用いて、Tensorflow2 環境を、Armibian 上に作ってみます。
$ pip3 install virtualenv ---user

4) kivy_env と言う仮想環境(名称は、なんでもOK) を作ります。
$ python3 -m virtualenv kivy_env
仮想環境を有効化
$ source ~/kivy_env/bin/activate

5) 仮想環境に、tensorflow をインストール。
(kivy_env) :$ python -m pip installl tensorflow==2.8.0

チェック。
(kivy_env) :$ python
>>> import tensorflow as tf
>>> print(tf.reduce_sum(tf.random.normal([1000,1000])))
tf.Tensor(-390.70236, shape=(), dtype=float32)
>>> exit()

TensorFlow 2.10.0 RNN - LSTM による、Speech Recognition

TensorFlow 2.10.0 RNN - LSTM による、Speech Recognition

RNN - LSTM による、Speech Recognition 例が有ったので、Windows11 TensorFlow-GPU 2.10.0 で試してみた。
Introduction to speech recognition with TensorFlow

GPU (GTX-1070) が入っているのが、Windows11 だったので、TensorFlow2 をバージョンアップして、 TensoFlow2-GPU 2.10.0 で試してみました。
当初、TensoFlow 2.12.0 の GPU 版を使うとしていましたが、Windows11 TensorFlow2 GPU 版は、2.10.0 が最後みたいな記述があったので、
こちらにしました。

環境:
Windows11
Python 3.10.6
tensorflow-gpu 2.10.0
GTX-1070
cuda toolkit 11.2
cuDNN SDK 8.1.0

Windows11で、最新の tensorflow gpu版は、どうやら仮想環境(wsl)下で、ubuntu 等を使って、gpu版を使うのが前提のようです。
最初から、ubuntu 等にすれば良いみたいだ。

train.py で、21 epoch 程学習させて、inferencModel.py で、テストしてみました。
下記が、inferencModel.py を、少しいじって、入力 文章(speach) と、それの、判定結果を出してみました。



>text: が、入力音の文章
>>>>>: が、それに対する、判定結果

結構、すごい。
でも、これは、日本語には、対応していないだろうね。

Android Kotlin TensorFlow Lite で、Audio classification を試す。

Ml Kit には、なかった、 tensoflow Lite / examples / Audio classification というのがあったので、試してみる。

Android スマホは、カメラ、マイクが入っていて、外で簡単に試せるから、PC、Raspy、Jetson Nano 等と比べて便利じゃ。
いろんなことが試せるぞね。

それは、さておき、此処で使われているモデルは、YAMNet model との事。
性能のほうが興味があります。
でも、中身は、MobileNet v1 みたいなので、以前散々試したものと大して変わらないのかも。
Sound データの、テンサーへの与え方が気になります。

以前試したのは、Sound Data を数秒貯めて、高速フーリエ変換して、2D データ (スペクトラムデータ) にして、
CNN(畳み込みニューラルネットワーク)で、Image Classification を行う手法だったけれども、
今回はどうなっているのだろうか?

Android Kotlin TensorFlow Lite で、Object Detection を試す。

TensorFlow Lite(Android)を使用してカスタム オブジェクト検出モデルを構築してデプロイする と言うのがあったので試してみました。

Android Kotlin でも、TensorFlow Lite が簡単に試せるみたいぞね。

CodeLab にしたがって、 starter に追加していけば、簡単にできたぞね。

"7. カスタム オブジェクト検出モデルをトレーニングする" で、自分でカスタムモデルも作って試せるみたいぞね。

おんちゃんには、 MLKit より、こちらの方の TensorFlow Lite を使うほうが、馴染みがあります。

Android Kotlin ML Kit を使用してバーコード スキャン

Google ML Kit のサンプルに、バーコード スキャン があったので、試してみました。
Android で、学習済Model を使って簡単に、機械学習の Object Detection が出来るみたい。
知らない間に、Android で此処までできるようになっていたとは、驚きじゃ!!

バーコード スキャン -> ML Kit を使用してバーコードをスキャンする(Android)

MLKit Samples の android/codescanner を試してみました。

1. ソースのダウンロード。
適当なディレクトリーで、
$ git clone https://github.com/googlesamples/mlkit.git
mlkit/android の下の、
codescanner と、internal ディレクトリーをそれぞれ、
~/AndroidStudioProjects/ 下へコピーします。

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

アイテム

  • 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

カテゴリ

ウェブページ

サイトナビ