前回騒いだJetbot用カメラマウントの問題について無事解決

前回の続き

海外サイトから買ったので、対応に不安があったが、
レスがはやい(即日レス)
さらに、こちらは日本なので返送大変だよーって泣いてみると、
返送する必要なく部品送ってくれるらしい。

We are the World 〜♪
We are the children 〜♪

JetBotの部品届いた。と思ったら...

JetBotとは、JetsonNanoが載ったAIロボットを開発するためのプラットフォーム。
詳しくは下記!!

github.com

いろんなメーカーからJetBot作成キットが販売されている。 www.nvidia.com

Jetson Nanoは持っていたので、
それ以外の部分を別売りしているsparkfunから注文することにした。
注文からだいたい1週間くらいで、商品到着。 f:id:atti_itta:20210612002129j:plain

ただ、カメラマウントパーツが本体とあわねぇ.... f:id:atti_itta:20210612002524j:plain

たぶん1世代前の古いマウントパーツだコレは!
わたくが注文したものは、カメラ2台つなげてステレオカメラ化できるやつやねん!!(やるかわからんけど)

豊玉なみの速攻でカスタマーサービスに連絡してやったぜ。
ところで海外は真摯に対応してくれるんであろうか。。

【Jetson Nano】 FAN制御をするROSノードの作成

前回インスールしたROS Melodic。
そして前々回動作確認したFANを動かすコマンド。
そして、これらをがっちゃんこ。


今回作成したもの

  • FAN回転数を設定するサービス
  • 現在のFAN回転数を取得するサービス

他のノードはないので、とりあえずCLIで確認するとうまくうごいていた。

$ rosservice call set_fan_pwm 100  //設定する時
$ rosservice call get_fan_pwm      //取得する時

チュートリアルを改造しながらできたが、
概念、構造がめっちゃ難しい。。。

amazonで高評価の本買って精進するか。 あと、タイヤとモータードライバ買おうかな。


参考情報


fan control nodeの作成(のはじめの方だけ)

$ cd ~/catkin_ws/src
$ catkin_create_pkg fan_control std_msgs rospy roscpp
$ catkin_make
$ catkin_install

ディレクトリ構造

Directory Tree
└── fan_control
    ├── CMakeLists.txt
    ├── include
    │   └── fan_control
    ├── msg
    │   └── fan_pwm.msg
    ├── package.xml
    ├── src
    │   ├── get_fan_pwm_service.cpp
    │   └── set_fan_pwm_service.cpp
    └── srv
        ├── GetFanPwm.srv
        └── SetFanPwm.srv

最後に魂の叫び

  • サービスってなんだ?ノードとは別?それともノードの機能の一種?
  • messageってなに?今回いるかと思って適当に最初の方に作ったけど、結局使ってないし。わからん。
  • 他ノードからサービスを要求された時にコールバックする関数の引数!
    今回はなんとなく作って動いたけど、よくわからん!!

Jetson NanoへのROS Melodicインストール

序章

ナノちゃんに、ROS or ROS2をインストールします。

2020/05/25現在、Jetson OSはUbuntu18.04なので、

  • ROS2であれば、ROS2 Dashing,
  • ROSであれば、ROS Melodic

になります。

せっかくなんで、新しいROS2 Dashingにしようかと思ったら、
May 2021でEOLとの記載...あと一週間もないやん。。
一方 Melodicであれば、May 2023までとの記載なんで、こっちにするか。。


ということで、NanoちゃんにROS Melodicをインストールすることにします。

JetsonがUbuntu 20.04へ対応してくれれば、ROS2使えるんですけどゴニョゴニョ...
ただ、Ubuntu20.04にあげるにあたり、カーネルメジャーバージョンを上げる必要があり、
それの検証やらの影響でリリース伸びてるという情報をみたので、まぁみんな頑張っているということで。


私の知識レベル

ROSの社内勉強会には、知識0で参加して、概念程度は理解しているつもりです。

あとは、カメがGUIで動くサンプルやら、
CUIでノードの情報見れるやらはROSチュートリアルで実施済。
ただ実装経験は皆無。


ROS Melodicのインストール

インストール手順が公開されているので、それを実施。

↓入力コマンド履歴、公開手順そのままですんなりインストール完了。

入力コマンド履歴
$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
$ sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
$ sudo apt update
$ sudo apt install ros-melodic-desktop-full # <--容量気にしないので、fullを選択
$ echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
$ source ~/.bashrc
$ sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential
$ sudo apt install python-rosdep
$ sudo rosdep init

インストール自体はイージーだぜ。

Jetson NanoへFAN取り付け

DigiKeyで注文したFANが手元に到着!
注文から4日程で手元に届くという、結構地球は狭いというIt's a small worldを実感。   そして、さっそくナノちゃんに装着。


でも起動してもFANが動かん、、

ちょっと公式ドキュメントを覗くと、温度に合わせたFAN制御をやっているそうな。
でもどういう制御でどういう閾値で動いているのかさっぱりわかなない。。。


sysfsを探検すると、FAN制御らしきものを発見。
"cur_pwm"が現在のpwm値らしきなので、確認すると"0"。
まぁ動いてないから0か。

nano@nano:/sys/devices/pwm-fan/driver/pwm-fan$ cat cur_pwm
0


”pwm_rpm_table”という設定テーブルらしきものを覗くと、何かしら設定がされている。
このIndexと閾値を紐付けて制御しているはず。

nano@nano:/sys/devices/pwm-fan$ cat pwm_rpm_table
(Index, RPM, PWM, RRU, RRD)
(0, 0, 0, 40, 40)
(1, 1000, 80, 2, 2)
(2, 2000, 120, 1, 1)
(3, 3000, 160, 1, 1)
(4, 4000, 255, 1, 1)
(5, 5000, 255, 1, 1)
(6, 6000, 255, 1, 1)
(7, 7000, 255, 1, 1)
(8, 10000, 255, 1, 1)
(9, 11000, 255, 1, 1)


そして、無理やりFANを動かせることは↓で可能

root@nano:/sys/devices/pwm-fan# echo 255 > target_pwm


ただ、ソフトウェア的にFAN回転数をSoC温度に連動して制御しているのは誰かはちょっと不明。

このNVIDIA Forumでは、
FAN制御のプログラムを提供している。

  • サーマル値を読み込む
  • サーマル値と紐付けたPWM値を書き込む

基本は↑2つをループする処理をサービスとして登録するもの。
なんかもっとうまくFAN制御できないものか。。


やっぱり、公式ドキュメントにあるように、Kernalの設定をいじるしかないのかな。。
とりあえず、細かい制御は今のとこ必要ないので、ほっておこう。

Jetson Nano + WiFi,BTカード装填

今日届いたWiFi&BTカードをJetson nanoに装着。

5分程で装填、追加ソフトなしでWiFi, Bluetooth機能をゲットしたナノちゃんでした。

ナノちゃんにて、WiFi経由でYoutubeにアクセスし、
BTイヤフォンでけいちょんちゃんねる見て、今日は満足♪

f:id:atti_itta:20210522233801j:plain
買ったWiFiカードとアンテナ
f:id:atti_itta:20210522233813j:plain
装填済の状態

ナノちゃんにWiFi&Bluetooth, FAN買ってあげました

Jetson Nano (愛称:ナノちゃん)は、Wi-FiBluetoothの機能もついてないとのこと。
ついでに、ヒートシンクはあるけど、FANもついてないし。

可哀想すぎる。


NVIDIA学校指定のスマホと涼しい首掛け扇風機を注文してあげました♪
届いたら、すぐ持たせて上げるからね。


購入物
  • WiFi/BT : Intel 8265NGW (amazonで3000円弱くらい)
  • WiFiにつけるアンテナ:Intel 8265NGWポッチったらなんかおすすめにでてきたやつ。
  • FAN : Delta Electronics AFB0405MA-AFGE (DigiKeyで送料込みで3000円ちょいくらい)


NVIDIA学校指定のものは、Jetson Download Centerにて、
"Jetson Nano Supported Component List"で検索してみなされ。