cvl-robot's diary

研究ノート メモメモ https://github.com/dotchang/

Jetson NanoでRealSense D435iとT265を使ったプログラムを自動起動させる方法

Jetson Nanoは値段が安くてそこそこ性能が良いので、ロボットの頭として便利に使えます。画像処理も得意なのでいろいろなセンサーを搭載して、ロボットの起動と同時に、それらセンサーを使ったプログラムが自動で起動するようにしたいことが結構あります。
Ubuntu」「自動起動」などで検索してやり方を調べてみると、rc.localを使った方法やsystemdを使った方法などが見つかります。しかし、これらはX-Windowが立ち上がる前に呼ばれてしまうので、X-Windowを使用するプログラムを正しく起動することが難しいです。
またteratermなどからログインしてプログラムを起動しようとしても、xwindowを使うプログラムは画面のポートフォワーディングを設定しておかないとすんなり立ち上がってくれません。
そこで、xwindowが立ち上がってからプログラムを起動するように設定したいと思います。

~/.config/autostartを使う

Gnomeデスクトップの準備ができてからプログラムを起動するためには、ユーザのホームディレクトリに隠されている.configディレクトリの下に、autostartというディレクトリを用意して、その中に.desktop拡張子をもったファイルを置くことで行います[1]。

準備

autostartディレクトリが無い場合は自分で作ります。

> cd ~/.config
> mkdir autostart
> cd autostart
> nano realsense.desktop // なんでもいい適当なファイル名.desktop

realsense.desktopの中身は書式[2]に従って

[Desktop Entry]
Exec=何か実行したいプログラム
Type=Application

と書きます。
実行失敗したときにエラーメッセージが読めないと困るので、gnome-terminalを立ち上げてから、起動用のシェルプログラムを呼びます。

[Desktop Entry]
Exec=gnome-terminal -- bash -c "bash /home/cvl/workspace/openFrameworks/apps/myApps/myRealsenseMulti/autostart.sh; bash"
Type=Application

プログラムが終了したときに窓が消えてしまわないように、;bashを最後におまじない的に入れておきます。
autostart.shの中身は好きに書いてもらえばいいのですが、こんな感じで使っています。

sleep 5;
cd ~/workspace/openFrameworks/apps/myApps/myRealsenseMulti
make RunRelease

スーパーユーザー権限が必要な時の対処法

Dynamixelのモータとか、ルート権限が必要なデバイスを起動したいときはsudoを付けて起動しますが、通常パスワードをインタラクティブに入力しなければなりません。sudoに-Sオプションを付けると、標準入力からパスワードを読んでくれるようになりますのでこれを利用します。
autostart.shをこんな感じに変えます。

PASSWORD=password
echo PASSWORD | sudo -S ./bulk_read_write

参考文献
[1] Ubuntu起動と同時に自動でターミナルを開く - Qiita
[2] Autostart - LXDE.org

今日の本文

Jetson Nanoは本体は安いけれど、オプションに結構お金がかかるのが難点です。自分が使っているものを備忘録として、記載しておきます。

安いが見た目はそこそこ良い。落とすと割れる。
Noctua NF-A4x20 5V PWM 40mm 静音 ファン 5000rpm

Noctua NF-A4x20 5V PWM 40mm 静音 ファン 5000rpm

\2660- 在庫切れになるとトンデモナク高い金額がつけられていることがあるので、ご注意を。 5V PWM対応なら大丈夫なので10mm厚の物も使える。 最高速で動かしたいなら、5V20Wの電源が必要。 普通のご家庭に普通に転がっているジャンパーが一つ電源設定のために必要です。 実行速度を速く保ちたいなら良いマイクロSDカードが必要です。ただUHS-I U3は多分意味がないので、U1で十分だと思います。 Intel 8265NGWしかJetson NanoNanoはM2. Wifiカードを受け付けないそうですが、ほんとかな。 WiFiBluetooth用アンテナが必要です。コネクタの形状に注意が必要です。

ファンの取り付けのために、3mmのタップが立てられると便利です。

ライト精機 ライトBPタップダイスセットTDS-12B

ライト精機 ライトBPタップダイスセットTDS-12B