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 ページには、
Jetson Nanoの最近のブログ記事
jetson Nano 2G が、Armbian で動くみたい。
armbian に、 Jetson Nano 用 ubuntu 20.04 、 22.04 (Jammy) があるみたい。
armbian jetson nano
/archive/jetson-nano/archive/ から、u-boot 版をインストールします。
おんちゃんは、Armbian_22.02.1_Jetson-nano-jammy_lgacy_4.9.201_xfce_desktop.img.xz を使いました。by nishi 2023.11.26
最新版は、EFI パーティションが入っているので、その版は、起動できません。
EFI パーティション が、無い img.xz を使います。
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. by T100TA #2
--- GPS を付けて、robot_localization ekf で試すを、T100TA から操作。#2 ---
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. by T100TA の続きです。
ubuntu 20.04 galactic 版へ移行しての再テスト。
ここでの動作を試す前に、ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd. #2 を終わらせて下さい。
上記ページで、 WiFi Lan の安定が重要だと判ったので、その点に注意して、T100TAを使っての走行テストを行います。
1. 環境。
1) Remote PC / T100TA
Ubuntu Mate 20.04
ros2: galactic
navigation2, Rviz2, multi_goals4_nav2
Wi-Fi: 2.4 [GHz]
2) SBC
Jetson Nanao 2G
Jet Pack4 .x and Ubuntu 20.04
ros2: galactic
micro-ROS Agent
Single USB Stereo Camera
GPS: AE-GYSFDMAXB
rtabmap_ros
Wi-Fi dongle: TP-Link 2.4[GHz] 150[Mbps]
USB SSD Stick
3) SOC
ESP32 Arduino
micro-ROS
IMU
4) Wi-Fi portable router
ELECOM WRH-300BK3-S
5) 自動走行プログラム。
turtlebot3_navi_my / multi_goals4_nav2
Jetson Nano 2G の boot device について。
余りに、Micro SD カードが壊れるので、おんちゃんも、ついに、 USB SSD に移行しました。
ELECOM SSD 128GB / ESD-EMN0128GBKR
READ 400 MB/s、 WRITE 250 MB/S
近くのヤマダ電気で、 3,056 円 でした。
Jetson Nano 2G の USB2.0 ポート直挿しで、OK でした。
参考にしたのは、
Jetson Nano 2G をSSDから起動させる(USBブート) ですが、
SSD 起動に移行して、 Jetson Nano 2G の起動を眺めていると、どうやら、 SD card が無い場合は、順繰り次の boot デバイスを選択するようになっているみたいぞね。
だから、最初から、 SSD から起動すればよかっただけみたい。
Flashing to a USB Drive
To set up a flash drive manually for booting
ROS2 自作 Turtlebot3(foxbot_core3_r2) で、Rtabmap_ros with Stereo rgbdを試す。#2
------ Jetson Nano 2G の SDCHが壊れたので、新しいカードへ移したら、問題がでた。 --------
ROS2 自作 Turtlebot3(foxbot_core3_r2) で、Rtabmap_ros with Stereo rgbdを試す。 の続きです。
1. 環境
1) SBC
Jetson Nano 2G
Jetpack 4.x and ubuntu 20.04
ROS2: Galactic
2) Remote PC
Ubuntu Mate 20.04
ROS2:Galactic
3) lanuch ファイル。
rtabmap_ros_my/launch/ratbmap_stero_rgbd.launch.py
Jetson Nano 2G の Micro SDHC を新しくして、同じ様に、 rtabmap-ros-with-stereo-rgbd が動作するようにしたのですが、
何故か、リモートPC から、/cloudXYZ(rtabmap_ros/point_cloud_xyz /cloud) が、以前のように安定して受信出来なくなりました。
$ ros2 topic hz /cloudXYZ
で、最初の30件から40件くらいは、15[hz] で受信できるのに、その後が、殆ど受信出来なくなってしまいました。
おまけに、 /disparity (stereo_image_proc.launch.pyの出力) に至っては、Remote PC からまるっきり受信できません。
どちらも、local の SBC(Jetson Nano 2G) 上では、問題なく受信できています。どちらも、
15[hz] 位、出ています。
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. by T100TA
--- GPS を付けて、robot_localization ekf で試すを、T100TA から操作。 ---
ROS2 自作 Turtlebot3(foxbot_core3_r2) Rtabmap_ros with Stereo rgbd and GPS. の続きです。
前回、SBC(Jetson Nano 2G) で、全て起動して、Remote PC からは、ssh2 で、SBCにログインして、launch の起動と、Rviz2の表示だけを行いましたが、
Remote PC を、ASUS Tablet(T100TA) に変えて同じ操作を行いました。
一応、ロボットは、完走できましたが、navigation2 のログ表示に、結構 ERROR、WARN がでているので、それの考察です。
しかし、T100TA にすると、このようになるのか? 疑問ぞね。
JetsonNano Jetpack4.6をubuntu20.04にする
上記見出しのページがあったので、試してみました。
参考にさせてもらったページ
1) JetsonNano Jetpack4.6をubuntu20.04にする
2) Upgrade NVIDIA Jetson Nano from Ubuntu Bionic Beaver to Focal Fossa
3) mmdebstrapを使ってJetson NanoへUbuntu 20.04環境を最小クリーンインストールす
4) OSを最新の状態に更新する
注) edgeplant-l4t-tools はありません。
$sudo udevadm trigger
なのか?
おんちゃんは、1) と 2) の方法でなんとかできました。
但し、ちょっと足りない処理が必要になったので、書いてみました。
3) の記事は、 1) 、2) の方法で、起動出来なくなった場合の復旧作業に応用できるので役立ちます。
depthai-core examples を試す。
depthai-core/examples に、プログラムサンプルが色々有るので、ビルドして試してみました。
1. 先に、depthai-ros のインストールが必要です。
depthai-ros のインストールは、Jetson Nano 2G ROS Oak-D-Lite を参照して下さい。
2. depthai-ros のインストール後に、Examples をビルドします。
ビルド方法は、luxonis/depthai-core の Running examples にあります。
$ cd ~/local/oakd-lite/depthai-core
$ rm -rf build
$ mkdir build
$ cd build
$ cmake .. -D'DEPTHAI_BUILD_EXAMPLES=ON'
$ cmake --build .
一応簡単にビルド出来ました。
build/examples に、作成されます。
3. Jeston Nano 2G の rtabmap_ros で、将来使えそうな、
StereoDepth/rgb_depth_aligned.cpp を試してみました。
これを参考にして、 ROS で、depth データと、中央の RGB カメラの rgb データを、同期してpublish するnodelet を作れば、
rtabmap_ros でそのまま使えそうです。
fps も設定できる様です。
fps=15 位で、軽量に実現できれば、 Jeston Nano 2G and rtabmap_ros で使えそうです。
注1) fps の設定は、今は、未対応みたいです。自分でプログラムで押さえないといけないみたいです。
デフォルトだと、30[Hz] になります。
注2) RGB 画像と、Depth 画像が完全に一致していません。Rtabmap_ros で使う時、この誤差がすこし問題になりそうです。
Jetson Nano 2G ROS rtabmap_ros with Oak-D-Lite
いよいよ本題の、rtabmap_ros で、Oak-D-Lite(depthai) を使って見ることにします。
自作 Turtlebot3(foxbot_core3) に組み込んで、確認してみます。
1. 環境:
自作 Turtlebot3(foxbot_core)
1) SBC
Jetson Nano 2G
ros: melodic
arduino: ESP32
2) リモートPC
Ubuntu Mate 18.04
ros: melodic
2. 処理の流れ。
1) SBC での処理。
i) depthai_examples の stereo_node.launch の、stereo_publisher node の部分を動かして、
/stereo_publisher/stereo/depth を publish させます。
ii) rtabmap_ros で、上記、 /stereo_publisher/stereo/depth を取り込んで、3D-Map をpublish させる。
2) リモートPC の Rviz で動作を確認します。
Jetson Nano 2G ROS Oak-D-Lite
やっと、OAK-D-Lite を購入できたので、
Jetson Nano 2G の ROS(Melodic) で、Oak-D-Lite(depthai-ros) を使えるようにしてみました。
参考は、 luxonis /
depthai-ros です。
環境:
1) 実行 SBC
Jetson Nano 2G: jetpack4 (ubuntu 18.04 相当)
OpenCV4.1.1
注) OpenCV4.x が必要とのことです。
Jetson Nano 2G OpenCV4.1.1 Build を参考にして下さい。
Ubuntu 18.04 は、OpenCV3.2 です。
後、他のROSパッケージも、OpenCV4.x 対応にしないと行けないので、下記を参考にして下さい。
自作 Turtlebot3 自立走行に向けたプログラム。#5
2) Rviz の確認用 リモートPC
Ubuntu Mate 18.04
ROS:melodic
注) こちらにも、同じように、depthai-core、 depthai-ros をインストールします。
但し、OpenCV3.2 なので、完全にはインストール出来ませんが、Rviz での確認に必要になります。
Jetson Nano 2G OpenCV4.1.1 Build.
Jetson Nano 2G で、ROS rtabmap_ros を試していたところ、OpenCV 4.1.1 の xfeatures2d module が必要だとわかったので、
急遽、ビルドして、xfeatures2d module を組み込んでみました。
参考にさせてもらったのは、下記です。
iwatake2222/OpenCV_CUDA
Install OpenCV 4.5 on Jetson Nano
環境: Jetson Nano 2G JetPack 4 (Ubuntu 18.04)
自作 Turtlebot3 自律走行に向けたプログラム。
--- Python Script で 自作 Turtlebot3 を動かしてみる。 ---
Turtlebot3 の自作 #12 で、自作ステレオカメラ & rtabmap_ros & Navigation が出来るようになったので、
それを使って、自律走行に向けたプログラムの試作をしてみます。
常套手段として、Python プログラム で自作 Turtlebot3 を動かしてみます。
1. 環境
1)リモートPC
Ubuntu Mate 18.04
ROS: Melodic
IP:192.168.1.170
2)TurtleBot3 SBC
Jetson Nano 2G
Wi-Fi Lan
IP:192.168.1.37
ROS:Melodic
USB Camera: Logi Cool C270 x 2
Turtlebot3 の自作 #9
-- ROS rtabmap_ros 自作 Stereo Camera の搭載 --
ROS rtabmap_ros 自作 Stereo Camera #2 で確認した機能 (rtabmap_ros/Tutorilas/SetupOnYourRobot 2.9 Stereo B) を、
Turtlebot3 自作機(Foxbot_core3) へ、搭載してみます。
自作 Turtlebot3 foxbot_core3
概要:
1) SBC(Jetson nano 2G) では、stereo_node.launch、 turtlebot3_robot.launch を動かす。
2) リモートPC で、stereo_image_proc、stereo_odometry、 rtabmap_ros を動かす。
3) リモートPCで、teleop_key を使って、自作 Turtlebot3 を動かして、Wi-Fi経由で、Stereo 画像をリモートPCで受けて、
Rtabmap_ros で、2D Mapping を作成する。
1. 環境
1)リモートPC
Ubuntu Mate 18.04
ROS: Melodic
IP:192.168.1.170
2)TurtleBot3 SBC
Jetson Nano 2G
Wi-Fi Lan
IP:192.168.1.37
ROS:Melodic
USB Camera: Logi Cool C270 x 2
2. SBC(Jestson nano 2G) での準備。
1) 自作 Stereo カメラを、車体に固定します。
2) USBカメラ x 2 を、Jetson nano 2G に接続して、
$ roslaunch uvc_camera stereo_node.launch を実行して、
カメラの左右が正しいことを確認します。
3) Stereo キャリブレーションを行います。
Turtlebot3 の自作 #8
-- Jetson Nano 2G の搭載 --
Jetson Nano 2G を ESP32 と UART 接続して、TurtleBot3 の完成形にします。
その後、リモートPC 上の roscore を起動して、リモートPC 上から Teleop Keyで、Turtlebot3 をリモート操作できる事を確認します。
自作 Turtlebot3 foxbot_core3
環境
1)リモートPC
Ubuntu Mate 18.04
ROS: Melodic
IP:192.168.1.170
2)TurtleBot3 SBC
Jetson Nano 2G
Wi-Fi Lan
IP:192.168.1.37
ROS:Melodic
電源: 5 [VDC] - 3[A] のレギュレーターを使用します。
1. Jetson Nano 2G には、https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-2gb-devkit
辺りを参考に、Jetson Nano 2GB Developer Kit をインストールします。
Wi-Fi も必要なので、Wi-Fi ドングルを購入して、リモートPC から、SSH2 でログインできるようにします。
2. Power スイッチが有れば便利なので、付けます。
https://developer.nvidia.com/embedded/learn/jetson-nano-2gb-devkit-user-guide
Button Header J12
5-6 をジャンパーで短絡
11-12 にリセットボタンを付ければOKです。
Jetson Nano での ROS/ROS2 は、
Hello AI World
Appendix
Deep Learning Nodes for ROS/ROS2 に記述があります。
それによると、従来の、ROS / ROS2 を、Jetson Nano にインストールしてから、
Node として、Jetson Nano の Hello AI World の image recognition, object detection,
and semantic segmentation
をインストールして、使うみたいぞね。
なので、 Hello AI World の image recognition, object detection, and semantic segmentation を、
試しておけば、 ROS/ROS2 のノードとして使う際には、入り安いと、オンちゃんは思います。
Jetson Nano で Hello AI World を試してみました。
Hello AI World
Inference
Locating Objects with DetectNet をみて、今回は、最初に Object Detection を試して、次に、Jetson Nano で撮影、
検出した結果を、リモートのPC へ転送する機能を試してみました。
先ず、Object Detection から。
USB カメラを入力にするので、
$ cd build/aarch64/bin
c++ であれば、
$ ./detectnet /dev/video0
python3 であれば、
$ ./detctnet.py /dev/video0
だけで、OK です。
入出力先については、
For more info about loading/saving sequences of images, see the Camera Streaming and Multimedia page. とあるので、みてみると、..
Jetson Nano 2GB を最近購入して、一通り設定が済んだので、Hello AI World
を試してみました。
それと同時に、上記、Python プログラムを自分で修正して色々試してみたいと思ったのですが、
Jetson Nano 上で、テキストエディタをたたいて行うのも大変なので、
Google で検索していたら、下記ページがありました。
Visual Studio Code で Jetson nano(arm64) のリモート開発を行う と言うのがあったので、試してみました。
これで、Windows10 の Visual Studio Code 上で、リモートの Jetson Nano 上の、Python Script が簡単に編集できて、
ssh での ターミナルも同時に使えるので、python の実行結果も見れて、便利です。
開発環境
Windows10
Visual Studio Code
Target : Jetson Nano 2GB
Python3.6