JetsonNano環境構築 - masuko-shingo/jetson-nano GitHub Wiki

JetsonNano環境構築

このドキュメントは,JetsonNano(以下Nano)の環境構築を行うTA向けのドキュメントになります.

構成

構成としては,ハードウェア面の設定を行ってから,ソフトウェア面の環境構築を行います.
基本的にすべての項目で,手順やコマンドの説明を示していきます。

microSDカードにOSをフラッシュ

ハードウェアの設定

ロボットの組み立て

電源

ソフトウェアの設定

ROS(melodic)の導入

Turtlebot3システムのセットアップ

OpenCRの設定

動作確認

参考文献

microSDカードにOSをフラッシュ

まず、microSDにJetPackというOSを書き込んでいきます。
JetPackは、JetsonモジュールをサポートしているOS(オペレーションシステム)です。
導入方法はRaspberryPiにOSを導入する方法とほぼ同じです。
今回フラッシュする際に用いるソフトはbalena etcherを,OSはJetPack4.5.1を使っていきます。
※2022年1月20日 現在、最新のJetPackは4.6となっているため、下記のJetPack ArchiveからJetPack 4.5.1をインストールしてください。

etcherを開く

microSDをPCにセットして,etcherを開きます.

JetPack 4.5.1を選択

フラッシュする

約10分かかります.

※etcherでフラッシュできない場合
windowsの場合は,「管理者権限で起動」でetcherを立ち上げてください.

ハードウェアの設定

ハードウェアの構成表
Item Model Quantiny
Base Robot Turtlebot3 1
Actuators DYNAMIXEL XL430-W250 2
Battery LI-PO Battery 11.1V 1800mAh 1
Lidar LDS-01(HLS-LFCD2) 1
SBC OpenCR 1.0 1
Jetson Nano Developer Kit a02 1
Camera Microsoft LifeCam HD5000 7ND-00006 1
WiFi Dongle TP-Link TL-WN725N 1

ロボットの組み立て

まず,Turtlebot3をRaspberryPiを取り付けない状態で組み立てます.
[参考]:http://www.robotis.com/service/download.php?no=748

RaspberryPiの代わりにJetonNanoを取り付けます.

電源

https://developer.nvidia.com/embedded/jetpack
上記のURL、Jetson Nano Developer Kit Guideに各種詳細が載っています。
Jetson Nanoハードウェアの情報(DEVELOPER KIT SETUP AND HARDWARE):Jetson Nano Developer Kit Guide pdf5~9ページ

参考画像

Jetsonnano環境構築画像2

microUSB(J28:Micro B USB)から

直流5V, 2.0Aの給電を行いたい場合,microUSBジャック(J28:Micro B USB)から電源が供給できます.
JetsonNanoのデフォルト給電方式になります.
※Micro B USBからの給電で処理の重いプロセスなどを動かす場合,突然電源が落ちる場合があります.
documents_microusbB

GPIOpin(J41 expansion header)から

アダプタを使用せず,RiPoバッテリからOpenCRを介して電源供給をする場合は、GPIOpin(J41 expansion header)からの給電を行います.

  • 5V2.5A供給 RiPoバッテリからOpenCRを介して電源供給をする場合は,turtlebot3でのOpenCRからraspberryPiに電源供給するケーブルを流用し,
    pin番号4(5V)に赤を,pin番号6(GND)に黒を接続します.
接続の様子

gpiopin5vgnd

![opencr5vconnector](https://user-images.githubusercontent.com/72721963/149796963-39fdb8de-b7a1-4ae2-a51d-b1b775744722.jpg

  • 5V5A供給 pin番号2,4(5V)に赤を,pin番号6(GND)に黒を接続します. この場合は供給電流が2Aを超えているため,ジャンパーピンをJ48のピン(J48 Power Select Header pins)に追加します.
40ピンヘッダの詳細(J41 expansion header)

Screenshot from 2021-08-16 18-13-58

DC電源(J25:Power Jack)から

DC電源から5V4Aで給電する場合は,DC電源ジャック(J25 power jack)にアダプタを接続します.
DC電源ジャックの内径は2.1mm,外径は5.5mmとなっています.
この場合も供給電流が2Aを超えているため,ジャンパーピンをJ48のピン(J48 Power Select Header pins)に追加します.

[参考]

ソフトウェアの設定

JetPack(OS)のセットアップ

JetpackをmicroSDにフラッシュできたら,OSのセットアップに入ります.
Nanoの電源をつけた後,以下のような画面になるまで待ちます.

起動画面


acceptしてcontinue

システムの言語設定


システムの言語設定はEnglish(US)に設定します。
※わかりづらい場合は日本語でも問題ないと思いますが、日本語設定による不具合が度々出現する可能性があります。

タイムラインの設定


タイムライン(タイムゾーン)は東京(Tokyo)に設定

アカウント設定

アカウントの名前とパスワードを登録します.
入力例

Yourname:jetsonnano (任意)  
Yourcomputer'sname:jetsonnano-desktop  (任意)

※Yournameにjetsonnanoと入力すると勝手にdesktopと追加される

choose passwordは任意で設定
ここでは,turltlebotとします.

turltebot

名前、パスワードを決定したらContinue
しばらくロードを待って

ログイン画面

DSC_1829 先程設定したパスワードを入力してログインします.
ログインできたら完了です.

ホーム画面

doc home Screenshot from 2021-12-08 18-18-51

ROS(melodic)の導入

JetPackの設定が完了した後は,ROSを導入していきます.
今回のJetpack4.5.1では,ubuntu-desktop(18.04)とほぼ同じ環境なので,ubuntuのバージョンと合わせた,ROS(melodic)を導入します.
上田隆一(ryuichiueda)先生のセットアップスクリプトを用いてセットアップを行います.

準備

まずは,aptの更新,アップグレードと,
バージョン管理システムgit,ssh通信を行うためのopenssh-serverのインストールを行います.

$ sudo apt-get update
$ sudo apt-get install -y git
$ sudo apt-get install -y openssh-server

リポジトリをclone

リポジトリをcloneしてくる.

$ git clone https://github.com/masuko-shingo/ros_setup_scripts_Ubuntu18.04_server.git

スクリプトを起動

スクリプトを立ち上げる

$ ./ step1.bash

セットアップの反映

$ source ~/.bashrc

セットアップが完了しているかの確認

roscoreでROSのセットアップができているか確認します.

$ roscore

これで、JetPack、ROS(melodic)のセットアップが終了しました。次はTurtlebot3のシステムを扱うためのセットアップに入ります。

Turtlebot3システムのセットアップ

上の項目で、ROSのインストールは完了しているので、ROSの導入部分については省略します。
[参考]:https://emanual.robotis.com/docs/en/platform/turtlebot3/quick-start/
基本的にはROBOTISのe-manualに沿ってセットアップを行っていきますが、度々異なる点があるため、手順やコマンドの説明を示していきます。

PCのセットアップ

ここでは,rosの依存パッケージや,等をインストールしていきます。

ROS依存パッケージのインストール

ここでは、必要なROSの依存パッケージをインストールします。

$ sudo apt-get install ros-melodic-joy ros-melodic-teleop-twist-joy \
  ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc \
  ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan \
  ros-melodic-rosserial-arduino ros-melodic-rosserial-python \
  ros-melodic-rosserial-server ros-melodic-rosserial-client \
  ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server \
  ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro \
  ros-melodic-compressed-image-transport ros-melodic-rqt* \
  ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers

とコマンドが記述されていますが、この方法でうまくインストールできない場合

$ sudo apt-get install ros-melodic-joy 
$ sudo apt-get install ros-melodic-teleop-twist-joy
...

のように一つずつインストールを行ってください。
また、ROBOTIS e-manualでは基本的にapt-getを使用してインストールしていますが、

$ sudo apt install ros-melodic-joy ros-melodic-teleop-twist-joy \
  ros-melodic-teleop-twist-keyboard ros-melodic-laser-proc \
  ros-melodic-rgbd-launch ros-melodic-depthimage-to-laserscan \
  ros-melodic-rosserial-arduino ros-melodic-rosserial-python \
  ros-melodic-rosserial-server ros-melodic-rosserial-client \
  ros-melodic-rosserial-msgs ros-melodic-amcl ros-melodic-map-server \
  ros-melodic-move-base ros-melodic-urdf ros-melodic-xacro \
  ros-melodic-compressed-image-transport ros-melodic-rqt* \
  ros-melodic-gmapping ros-melodic-navigation ros-melodic-interactive-markers
$ sudo apt install ros-melodic-joy 
$ sudo apt install ros-melodic-teleop-twist-joy
...

のようにaptでインストールしても問題ありません。

Turtlebot3のrosパッケージをインストール

turtlebot3を動かすために必要なパッケージをインストールします。

$ sudo apt install ros-melodic-dynamixel-sdk
$ sudo apt install ros-melodic-turtlebot3-msgs
$ sudo apt install ros-melodic-turtlebot3

ここで一応aptの更新を行ってください

$ sudo apt update

TurtleBot3モデルの設定

ここでは、用いるturtlebot3のモデルを設定していきます。
turtlebot3には、

  • burger
  • waffle
    などいくつかありますが、今回はburgerを使います。
$ echo "export TURTLEBOT3_MODEL=burger" >> ~/.bashrc

ROS_MASTER_URIの設定

$ ifconfig

doc_ifconfig

wlp4s0を確認する.
※wlp4s0は,wlan0,wnp0の場合もある.
赤の下線が引かれたアドレスが、jetsonnnanoのIPアドレスとなっている。 確認したIPアドレスをbashrcに追加する.

$ vi ~/.bashrc

追加例

# export ROS_MASTER_URI=http://PCのIPアドレス:11311
# export ROS_HOSTNAME=PCのIPアドレス

bashrcの変更を更新するためにsource ~/.bashrcを実行する.

$ source ~/.bashrc

SBC(JetsonNano)のセットアップ

.bashrcファイルを変更して、PCとNano間の通信を行えるようにします。

OpenCRのセットアップ

e-manualと同様の内容になります.

[参考]:https://emanual.robotis.com/docs/en/platform/turtlebot3/opencr_setup/#opencr-setup

動作確認

確認のため、Teleoperation(キー操作)を行います。 まずbringupを行います.

bringup

turtlebot3のrosパッケージを用いて,bringupを行います.

準備

まずはJetsonNano(以下Nano)に,有線LANケーブル(WiFiドングル),LiDAR,OpenCR,モニタ(HDMIもしくはDisplayPort)が接続されているか確認する。

手順

PC側で,roscoreを立ち上げ、NanoとPCのやりとりができるようにする

$ roscore

sshでNanoにログイン
(下記は例)

$ ssh jetsonnano@IPアドレス

ログイン後、/dev/ttyUSB0が存在するか確認

$ ls /dev/ttyUSB0

もしくは

$ cd ~/catkin_ws/src/hls_lfcd_lds_driver/applications
$ ls /dev/ttyUSB0

存在しない場合のメッセージ例

$ Permission denied

存在する場合は権限を与える
※存在しない場合はLidarが接続されていない可能性

$ sudo chmod a+rw /dev/ttyUSB0

/dev/ttyACM0が存在するか確認

$ ls /dev/ttyACM0

存在する場合は権限を与える ※存在しない場合はOpenCRが接続されていない可能性

$ sudo chmod 777 /dev/ttyACM0

/dev/ttyACM0/dev/ttyUSB0に権限を与えたら、bringupする

$ roslaunch turtlebot3_bringup turtlebot3_robot.launch 
... logging to /home/jetsonnano/.ros/log/99e71d62-f459-11eb-9fcf-7c7635a4ab69/roslaunch-jetsonnano-desktop-10309.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://192.168.0.57:37433/

SUMMARY
========

PARAMETERS
 * /rosdistro: melodic
 * /rosversion: 1.14.11
 * /turtlebot3_core/baud: 115200
 * /turtlebot3_core/port: /dev/ttyACM0
 * /turtlebot3_core/tf_prefix: 
 * /turtlebot3_lds/frame_id: base_scan
 * /turtlebot3_lds/port: /dev/ttyUSB0

NODES
  /
    turtlebot3_core (rosserial_python/serial_node.py)
    turtlebot3_diagnostics (turtlebot3_bringup/turtlebot3_diagnostics)
    turtlebot3_lds (hls_lfcd_lds_driver/hlds_laser_publisher)

ROS_MASTER_URI=http://192.168.0.42:11311

process[turtlebot3_core-1]: started with pid [10321]
process[turtlebot3_lds-2]: started with pid [10322]
process[turtlebot3_diagnostics-3]: started with pid [10323]
[INFO] [1627995276.036103]: ROS Serial Python Node
[INFO] [1627995276.076289]: Connecting to /dev/ttyACM0 at 115200 baud
[INFO] [1627995278.191598]: Requesting topics...
[INFO] [1627995278.221709]: Note: publish buffer size is 1024 bytes
[INFO] [1627995278.228189]: Setup publisher on sensor_state [turtlebot3_msgs/SensorState]
[INFO] [1627995278.243128]: Setup publisher on firmware_version [turtlebot3_msgs/VersionInfo]
[INFO] [1627995278.678712]: Setup publisher on imu [sensor_msgs/Imu]
[INFO] [1627995278.696463]: Setup publisher on cmd_vel_rc100 [geometry_msgs/Twist]
[INFO] [1627995278.834303]: Setup publisher on odom [nav_msgs/Odometry]
[INFO] [1627995278.845176]: Setup publisher on joint_states [sensor_msgs/JointState]
[INFO] [1627995278.857941]: Setup publisher on battery_state [sensor_msgs/BatteryState]
[INFO] [1627995278.869624]: Setup publisher on magnetic_field [sensor_msgs/MagneticField]
[INFO] [1627995280.419722]: Setup publisher on /tf [tf/tfMessage]
[INFO] [1627995280.448152]: Note: subscribe buffer size is 1024 bytes
[INFO] [1627995280.457733]: Setup subscriber on cmd_vel [geometry_msgs/Twist]
[INFO] [1627995280.479522]: Setup subscriber on sound [turtlebot3_msgs/Sound]
[INFO] [1627995280.496880]: Setup subscriber on motor_power [std_msgs/Bool]
[INFO] [1627995280.518429]: Setup subscriber on reset [std_msgs/Empty]
[INFO] [1627995281.563173]: Setup TF on Odometry [odom]
[INFO] [1627995281.585275]: Setup TF on IMU [imu_link]
[INFO] [1627995281.594502]: Setup TF on MagneticField [mag_link]
[INFO] [1627995281.602713]: Setup TF on JointState [base_link]
[INFO] [1627995281.630359]: --------------------------
[INFO] [1627995281.645076]: Connected to OpenCR board!
[INFO] [1627995281.656418]: This core(v1.2.2) is compatible with TB3 Burger
[INFO] [1627995281.665803]: --------------------------
[INFO] [1627995281.683916]: Start Calibration of Gyro
[INFO] [1627995284.123878]: Calibration End

ctrl+alt+t もしくは、 ctrl+shift+tで別端末を開いて

再度ssh通信でNanoにログイン

$ ssh [email protected]
[email protected]'s password: 
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.9.201-tegra aarch64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.

To restore this content, you can run the 'unminimize' command.

47 updates can be applied immediately.
30 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable

Last login: Tue Aug  3 22:52:58 2021 from 192.168.0.42

Teleoperation

bringup でロボットを立ち上げることができたら,
ここからは,Teleoperation(遠隔操作)で動かしていきます.
同じくturltebot3のrosパッケージを用います.

手順

ログインできたら、teleop_keyする

$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch 
... logging to /home/jetsonnano/.ros/log/99e71d62-f459-11eb-9fcf-7c7635a4ab69/roslaunch-jetsonnano-desktop-10689.log
Checking log directory for disk usage. This may take a while.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://192.168.0.57:36809/

SUMMARY
========

PARAMETERS
 * /model: burger
 * /rosdistro: melodic
 * /rosversion: 1.14.11

NODES
  /
    turtlebot3_teleop_keyboard (turtlebot3_teleop/turtlebot3_teleop_key)

ROS_MASTER_URI=http://192.168.0.42:11311

process[turtlebot3_teleop_keyboard-1]: started with pid [10701]

Control Your TurtleBot3!
---------------------------
Moving around:
        w
   a    s    d
        x

w/x : increase/decrease linear velocity (Burger : ~ 0.22, Waffle and Waffle Pi : ~ 0.26)
a/d : increase/decrease angular velocity (Burger : ~ 2.84, Waffle and Waffle Pi : ~ 1.82)

space key, s : force stop

CTRL-C to quit

currently:	linear vel 0.01	 angular vel 0.0 
currently:	linear vel 0.01	 angular vel 0.1 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.1 
currently:	linear vel 0.0	 angular vel 0.2 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.01	 angular vel 0.0 
currently:	linear vel 0.02	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.01	 angular vel 0.0 
currently:	linear vel 0.02	 angular vel 0.0 
currently:	linear vel 0.03	 angular vel 0.0 
currently:	linear vel 0.04	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.01	 angular vel 0.0 
wcurrently:	linear vel 0.02	 angular vel 0.0 
currently:	linear vel 0.02	 angular vel 0.1 
currently:	linear vel 0.02	 angular vel 0.2 
currently:	linear vel 0.02	 angular vel 0.3 
currently:	linear vel 0.02	 angular vel 0.4 
currently:	linear vel 0.0	 angular vel 0.0 
currently:	linear vel 0.01	 angular vel 0.0 
currently:	linear vel 0.02	 angular vel 0.0 
currently:	linear vel 0.03	 angular vel 0.0 
currently:	linear vel 0.04	 angular vel 0.0 

キーボードの w,a,s,dキーでロボット動かせれば完了です.

備考

sキーで停止できます.

エラーについて

bringupが通らないエラーについては下記のissueを参考にしてください。
issueのurl:https://github.com/masuko-shingo/jetson-nano/issues/4

最後に

これでロボットの環境構築、セットアップは終了です。 その他ドキュメントについては,その他の項目を参照してください.

ドキュメント

はじめに:
https://github.com/masuko-shingo/jetson-nano/wiki/%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB

実習:SLAM, Navigation(Turtlebot3):
https://github.com/masuko-shingo/jetson-nano/wiki/%E5%AE%9F%E7%BF%92%EF%BC%9ASLAM,-Navigation(Turtlebot3)

実習:画像認識,物体検出(YOLOv3): https://github.com/masuko-shingo/jetson-nano/wiki/%E5%AE%9F%E7%BF%92%EF%BC%9A%E7%94%BB%E5%83%8F%E8%AA%8D%E8%AD%98%EF%BC%8C%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA(YOLOv3)

参考文献