JetsonNano環境構築 - masuko-shingo/jetson-nano GitHub Wiki
JetsonNano環境構築
このドキュメントは,JetsonNano(以下Nano)の環境構築を行うTA向けのドキュメントになります.
構成
構成としては,ハードウェア面の設定を行ってから,ソフトウェア面の環境構築を行います.
基本的にすべての項目で,手順やコマンドの説明を示していきます。
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をインストールしてください。
- JetPack Archive:https://developer.nvidia.com/embedded/jetpack-archive
- etcher:https://www.balena.io/etcher/
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ページ
参考画像
microUSB(J28:Micro B USB)から
直流5V, 2.0Aの給電を行いたい場合,microUSBジャック(J28:Micro B USB)から電源が供給できます.
JetsonNanoのデフォルト給電方式になります.
※Micro B USBからの給電で処理の重いプロセスなどを動かす場合,突然電源が落ちる場合があります.
GPIOpin(J41 expansion header)から
アダプタを使用せず,RiPoバッテリからOpenCRを介して電源供給をする場合は、GPIOpin(J41 expansion header)からの給電を行います.
- 5V2.5A供給
RiPoバッテリからOpenCRを介して電源供給をする場合は,turtlebot3でのOpenCRからraspberryPiに電源供給するケーブルを流用し,
pin番号4(5V)に赤を,pin番号6(GND)に黒を接続します.
接続の様子
に赤を,pin番号6(GND)に黒を接続します. この場合は供給電流が2Aを超えているため,ジャンパーピンをJ48のピン(J48 Power Select Header pins)に追加します.
40ピンヘッダの詳細(J41 expansion header)
DC電源(J25:Power Jack)から
DC電源から5V4Aで給電する場合は,DC電源ジャック(J25 power jack)にアダプタを接続します.
DC電源ジャックの内径は2.1mm,外径は5.5mmとなっています.
この場合も供給電流が2Aを超えているため,ジャンパーピンをJ48のピン(J48 Power Select Header pins)に追加します.
- アダプタ(DC電源)
https://www.amazon.co.jp/exec/obidos/ASIN/B015RKFAA2/karaage0703-22/ - ジャンパーピン
https://www.amazon.co.jp/dp/B005KVKKRC/
[参考]
- https://www.jetsonhacks.com/nvidia-jetson-nano-j41-header-pinout/
- https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit
- https://developer.nvidia.com/embedded/jetpack
- https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/hw_setup_jetson_io.html (Jetson Nano Developer Kit Guide pdf 5~9ページ)
- https://karaage.hatenadiary.jp/entry/2019/08/19/073000
ソフトウェアの設定
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
しばらくロードを待って
ログイン画面
先程設定したパスワードを入力してログインします.
ログインできたら完了です.
ホーム画面
- 時間設定について
セットアップ後に時間がずれた場合
https://github.com/masuko-shingo/jetson-nano/wiki/JetsonNano-%E6%99%82%E9%96%93%E8%A8%AD%E5%AE%9A%E3%80%81%E5%90%88%E3%82%8F%E3%81%9B%E6%96%B9 - ネットワーク設定について
Wi-Fiドングルがある場合は
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
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)
参考文献
- github ryuichiueda ros_setup_scripts_Ubuntu18.04_desktop
https://github.com/ryuichiueda/ros_setup_scripts_Ubuntu18.04_desktop - Raspberry Piで学ぶ ROSロボット入門(書籍)
https://www.amazon.co.jp/dp/4822239292/ - nvidia developer jetpack sdk
https://developer.nvidia.com/embedded/jetpack