こんにちは。
AI coordinator管理人の清水秀樹です。
暑い日が続きますが、皆さまいかがお過ごしでしょうか。
夏バテには気を付けてください。
さて、いままではラズパイを使ったロボットの作成方法を紹介してきました。
もちろん自立型ロボットを目指してのことです。
ただ、ラズパイにUbuntu mateを搭載しROSをインストールして動かせるようにしてきましたが、如何せん処理速度が遅い。
Movidiusを搭載してもリアルタイムには程遠い結果になっていました。
リアルタイム画像認識を実行しながらSLAM搭載ロボットの作成ともなってくると、ラズパイではとてもできたものではありません。
私の目標としているAIロボットPROTECT KIDSはなんでもできないといけません。
そんな中、最近ではGPUを搭載した小型?マイコンなんかが世に出回るようになり、NVIDIAがそんなマイコンを発売しています。
お値段も高いですが、NVIDIAのマイコンJetsonTX2を安価な金額で手に入れることができたので、しばらくはこのマイコンを使用してロボットを作成して行きたいなと思っています。
今回は「AIロボットを作ろう」と題しまして、少しずつではありますが、GPUを搭載した高機能AIロボットの作成に挑戦していきたいと思います。
今回目標とするロボットは以下の仕様で考えています。
- ビックタイヤを搭載し、悪路を走破できるロボット
- JetsonTX2を使い、リアルタイム画像認識やSLAMを活用した3Dマップ作成ができるAIロボット
- もちろんROSを搭載している
とりあえずハードの作り方も勉強していこうと思っていますので、並行して作成したハード部分なんかも適宜紹介してこうと思っています。
ハード作成にも興味がある方は是非そちらも参考にしてください。
まあ偉そうなこと言っても、私も試行錯誤を繰り返しながらAIロボットを作成していこうと思っていますので、そのあたりをご了解頂けたらと思います。
記事更新も多分遅いです。(とりあえずWRSに向けたロボット開発が優先なので)
では早速開発に取り掛かっていきたいと思います。
記念すべき第一弾はAIロボットの心臓部となるコンピューター部分のセットアップからです。
目次
Jetsonとは
今回作成するロボットはNVIDIA製のJetsonを使って開発を進めていきたいと思います。
Jetsonは簡単に説明するとNVIDIAが商品化したGPUを搭載した高性能マイコンです。
Ubuntuを標準OSとしており、ドローンに搭載した例なんかも出てきています。
これからのIotの主役になるかもしれません。
より詳細に知りたい方は公式サイトをのぞいてみてください。
JetsonTX2(jetpack)のセットアップ
これ、結構めんどくさいです。
なんだかんだで4時間ぐらいかかりました。
(ブログを書きながらなので、セットアップだけに専念すれば2時間もあればできるかと思います。)
知人が苦労しながらセットアップしている姿を見て、なんとなくJetsonのセットアップの大変さを想像しておりましたが、やはり結構時間をとられました。
ただ、高性能AIロボットを作成していくためには致し方ないことですね。
何でもそうですが、この開発環境の構築が一番大変かと思います。
事前準備
- HOST用PC(Ubuntu16.04搭載)
- Jetson本体
- Jetsonに繋げる外部ディスプレイ(HDMI端子)
- Jetsonに繋げるキーボードとマウス(Jetsonには差込口が1つしかないトラップあり)
- Jetsonの3ピンコネクタ用電源タップ、または3ピンコネクタ→2ピンコネクタ変換アダプタ
なぜUbuntu搭載のHOST用PCが必要なのか最初は理解に苦しみますが、jetpackのインストールにはJetsonとは別にUbuntu搭載のHOST用PCが必要になります。
この時点で挫折する方もいるかと思います。
Ubuntuのインストールは慣れてしまえばなんてことないですが、初心者には結構ハードル高いかもしれません。
またjetpackってなんぞやって方は公式サイトを除いてください。
個人的には初めからインストールしておいてくれ!と言っておきたい。
まあ、ユーザー登録させたいからあえてjetpackをインストールしていないのでしょうけど。
(jetpackのダウンロードにはユーザー登録が必要。)
そして、厄介なことにJetsonはUSBの差込口が1つしかないため、マウスとキーボードの同時使用ができません。
私はそれぞれ抜き差ししながらセットアップしました。
さらに1番の罠がJetsonの電源コンセントです。
なんと3ピンプラグ。
普通の家庭用コンセントではそのままでは挿せません。
2ピン変換プラグコネクタを準備するか、3ピンコネクタを使用できる電源タップの準備を済ませてからJetsonのセットアップに向かいましょう。
これがないと途中で慌てます。
私は慌てました。
この時点でうんざりしますが、頑張りましょう。
jetpackの準備
jetpackをJetsonにインストールするためには、公式サイトからjetpackをダウンロードしてくる必要があります。
NVIDIAの会員登録を済ませないとjetpackをダウンロードすることができません。
まずは会員登録を済ませましょう。
会員登録が済んだらjetpackをダウンロードできるようになりますので、Ubuntu搭載のHOST用PCにダウンロードしてください。
格納先は何処でもよいと思います。
~/jetson/JetPack-L4T-3.3-linux-x64_b39.run
格納したら、Ubuntu搭載のHOST用PCから以下のコマンドでインストーラーを起動しましょう。
ちなみに本家のインストール手順を参照する場合はこちらからどうぞ。
$ cd jetson $ chmod +x JetPack-L4T-3.3-linux-x64_b39.run $ sudo ./JetPack-L4T-3.3-linux-x64_b39.run
上記コマンド後、ワーニングが表示されますが、シカトして大丈夫です。
ただ、以下のようにエラーが出た場合は、
sudo無しで実行すれば問題ないかと思います。
続いて以下の画面のようにインストーラーが立ち上がったら、ひたすら「NEXT」ボタンを押下して行きましょう。
Privacy NoticeはとりあえずNoにしました。
Nextします。
次はハードの種類を選択してNext。
続いては、Action列がすべてinstallになっていることを確認してNext。
Accept Allを選択して、Accept。
以下のポップアップが表示され、必要なパッケージのダウンロード状況が分かります。
しばらく待ちましょう。
私の環境では以下のように途中で何か表示されましたが、取り合えずシカトしました。
ここからはコーヒータイムですね。
結構ダウンロードに時間がかかります。
気長に待ちましょう。
ダウンロードが終了したら、Next。
続いて、Network Layoutの設定です。
自分の環境に合わせて選択すればよいかと思います。
私の環境ではJetsonと直接PCを接続して使用する用途ではないので、「Device accesses internet via router/switch.」を選択しました。
以下の画面のままNext。
いよいよJetsonへインストール準備です。
Nextを押すとターミナルが起動します。
以下のようなターミナルが起動したら、ハードウェアの準備に取り掛かりましょう。
Jetsonの準備
ここからは物理的なハードウェアの準備になります。
- JetsonのACアダプタを抜いた状態からスタート
- USBケーブルで、JetsonTX2とUbuntu搭載のHOST用PCを接続
- JetsonのACアダプタを繋いで、JetsonTX2の電源ボタンを押す
- リカバリーボタンを押しながら、リセットボタンを2秒間押下する。その後、リセットボタンを離しリカバリーボタンも離す
- Ubuntu搭載のHOST用PCのターミナルからlsusbを実行し”Nvidia Corp”が表示されていることを確認する
$ lsusb Bus 001 Device 005: ID 0955:7c18 NVidia Corp.
上記までが完了した後、先ほどのターミナル画面に戻って、エンターキーを押下。
暫くすると、ターミナル画面に以下のメッセージが表示されます。
Finished Flasing OS Determining the IP address of target...
これ以降は処理が進まなくなるので、Ctrl+Cで停止させます。
(公式サイトですと、このタイミングでインストールが完了するようですが、他の方が紹介しているように、このタイミングではまでインストールは終了していません。)
一旦インストーラー画面に戻り、「Remove downloaded files」 にはチェックをいれず、[Finish]ボタンを押下してインストールを終了させましょう。
Jetsonへ2回目のjetpackのインストール
Jetson側の作業になります。
まずJetsonのIPアドレスを取得しましょう。
ターミナルからifconfigで取得できます。
ここで私はハマりました。
以下2つの理由でwifiに接続できませんでした。
- そもそもJetsonにアンテナを2つ取り付けていなかった(上画像の2つのアンテナ)
- なんとwifi 5Kは接続できない
皆さんも気を付けてください。
JetsonのIPアドレスが取得出来たら、Ubuntu搭載のHOST用PCから再びインストーラーを起動します。
$ ./JetPack-L4T-3.3-linux-x64_b39.run
以下の画面まで進み、「Flash OS Image to Target」のAction列を「install」 から「no action」に変更してNEXTを押下します。
先ほどと同様にAccept Allを選択して、Accept。
続いて、先ほど取得したIPアドレスをUser nemeとPasswordと合わせて入力してNextを押下。
以下の画面でもNextを押下。
ここからが長い。
筆者の環境で30分ぐらいかかりました。
・・・・
インストールが完了すると、以下のようなメッセージが表示されます。
これでインストールが完了。
Finishして下さい。
サンプルの実行
公式のマニュアル通り実行してみましょう。
$ cd <JetPack_Install_Dir>/NVIDIA_CUDA-9.0_Samples $ sudo SMS=53 EXTRA_LDFLAGS=--unresolved-symbols=ignore-in-shared-libs TARGET_ARCH=aarch64 make
sudoを付けないとエラーになります。
コンパイルは時間がかかります。10分~20分ぐらいでしょうか。
コンパイルが終了したら、以下フォルダ内の適当なアイコンをダブルクリックしてみましょう。
/home/ubuntu/NVIDIA_CUDA-<version>_Samples/bin/aarch64/linux/release/
なにか表示されればインストール成功です。
(一部何も変化がないアイコンも多数あります)
公式ガイドでは「oceanFFT 」アイコンを実行しています。
うにょうにょ動きます。
ふう。
ようやくセットアップ完了です。
次はカメラ画像を使って何かやっていければと思います。
(先にSLAMに挑戦するかも)
それではまた。
この記事へのコメントはありません。