On ubuntu 22.04 docker build source l4t for ubuntu 22.04 Jetson Nano 2G.

ubuntu 22.04 docker 上で、l4t source を ubuntu 22.04 Jetson Nano 2G 向けにビルドできるのか試した見る。

参考は、
Compiling Custom Kernel Modules on the Jetson Nano

開発環境
PC: Ubuntu Mate 22.04
docker version 24.0.7
他に、
$ sudo apt install docker-buildx
$ sudo apt install qemu binfmt-support qemu-user-static

はじめに、
$ docker run --rm -it arm64v8/ubuntu:22.04 bash
が実行できるようにします。

$ docker run --privileged --rm tonistiigi/binfmt --install all
$ export DOCKER_DEFAULT_PLATFORM=linux/arm64/v8
$ docker run --rm -it arm64v8/ubuntu:22.04 arch

Transformers Object detection - detr の転移学習とONNX変換と実行。
---- 雑草の独自データの転移学習とONNXでの変換、実行を試す ----

Transformers Object detection

1. 最初に、オリジナルの転移学習を試す。
次に、雑草画像の独自データを用意して、YOLO アノテーションを作成して、それを、COCO 形式に変換して、
雑草画像の転移学習を、試してみた。

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

checkpoint = "facebook/detr-resnet-50"
が、転移学習のベースモデルみたい。
huggingface.co/facebook/detr-resnet-50

num_train_epochs=30
位必要みたい。
一応、オリジナル版の転移学習は、OK でした。

transformer asr japanese サンプルがある。

transformer asr japanese サンプルがある。

google で検索していたら、transformer asr japanese があった。

1. 自分で転移学習をするなら、
August 2023, Fine-Tuning ASR Models for Japanese and Vietnamese by using OpenAI Whisper and Azure Speech Studio

2. そのまま使うなら、
kotoba-tech/kotoba-whisper-v1.0
日本語音声認識に特化したWhisperである kotoba-whisper-v1.0を早速試してみた
Kotoba-Whisper入門 - 日本語音声認識の新しい選択肢

OAK-D-Lite Object Detection YOLOv7 transfer learning.

OAK-D-Lite Object Detection YOLOv7 転移学習をしてみた。

単純に下記ページの YOLOv7 tutorial を実行するだけ。
docs.luxonis.com/software/ai-inference/training

結論から先に言えば、うまくできました。
OAK-D Lite で、動きました。

ただし、サンプルは、google colaboratory と、Google Drive を使っています。
おんちゃんも当初は、お同じにしていましたが、どうも、Google Drive への保存が良くわからなくて、学習結果が消えてしまいました。

結局、ubuntu 22.04 PC 上で、実行しました。

1. PC環境
Ubuntu Mate 22.04
GPU: GeForce GTX 1070
Python 3.10
virtualenv
OAK-D Lite

2. 手順
$ cd
$ python3 -m pip install virtualenv --user
$ python3 -m virtualenv torch_env
$ source ~/torch_env/bin/activate
(troch_env) xxx@xxx:~$
$ python -m pip install --upgrade pip

あとは、PyTorch のインストールをします。
https://github.com/WongKinYiu/yolov7 の環境を、そのまま使用します。
$ cd ~/Documents/Visualstudio-torch_env
$ git clone https://github.com/WongKinYiu/yolov7.git
$ cd yolo7
$ python -m pip install -r requirements.txt
$ python -m pip install notebook

これで、pytorch GPU も、OK です。
ただし、
Ubuntu 22.04 Tensorflow GPU Install. でシステム側にインストールした、
cudnn か、なにかのライブラリーと競合するようで、
~/.bashrc の記述の、LD_LIBRARY_PATH を取ります。
# add for libcudnn8
#export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:/home/nishi/usr/local/share/TensorRT-8.6.1.6/lib:$LD_LIBRARY_PATH

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 の処理を組み込みます。

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

アイテム

  • 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

カテゴリ

ウェブページ

サイトナビ