Darkside(リンクエラー修正しました)

2019年06月02日の記事

2019年6月2日(日) 19:11

活躍までの課題

 Jetson Nano をSタンクで活躍させるまでの課題は、数多い。道は、遠い。

1)無線LAN親機になること
 カメラ映像を無線送信しスマホで表示させるためには、必須。これが実現できなくては、粗大ゴミ同然。

2)i2C通信できること
 傾斜センサーの読み取りに必須。

3)PICと通信できること
 ハードウェアSPIを使用可能にするか、ソフトSPIが実現可能な GPIO アクセス性能が必要。

 Jetson Nano は電源を入れてから使用可能になるまで長時間を要するため、ラジコン受信処理の大半はPICで行うしかない。そのため、ラジコン受信結果を利用したい場合、Jetson Nano はPICから情報を送って貰う必要がある。また、Jetson Nano がデーター処理結果として何らかのアクションを起こしたい場合は、PICに情報を送ることになる。
 マイコン間通信はUARTかSPIとなるが、UARTはラジコン受信機とPICとの通信に必須。PICがUARTを1つしか使えないため、Jetson Nano もUARTに頼ることは避けたい。だが、Jetson Nano はSPIを有効にするのが大騒ぎである。できればソフトウェアSPIを使いたいが、GPIO アクセスが途轍もなく遅い。

 また、jetson Nano はPWM機能を持っていない。これは、サーボを直接ドライブできないという意味である。サーボを操作したい場合も、PIC経由で行わねばならない。当然に高速な通信手段が必要となる。面倒過ぎる。
 現時点で、Jetson Nano がどうしてもサーボを制御せねばならなくなるとすれば、照準用超望遠カメラのオートフォーカスだ。マニュアルフォーカスで妥協するか、オートフォーカス機能を持ったカメラを使用する場合は、サーボ制御できなくても構わない。

 1)に関しては新ボードを試すとして、ならば2)だ。
 Sタンクには、傾斜センサーとして ADXL355 を積むことにした。これは、IC型としては最高性能の部類である。有効20ビットで、分解能は25万6千分の1G。傾斜センサーの性能は、主砲ホップアップを通じて命中精度に影響する。出力はデジタルで、i2cで読み取れる。

 取り急ぎ,
sudo i2cdetect -r -y 1
を実行してみると、すんなりアドレス 1D に検出された。センサー側では i2C アドレス設定ピンをGNDに落としてある。
 同コマンド実行時のクロック波形を、オシロで確認。

 ほぼ100KHzで動作している。僅かだけ、遅い。これなら、実用的に i2c 通信できそうだ。実際のデーターを読むためには ADXL355 の仕様を確認せねばならないが、読めることはほぼ確実である。
 となると次の課題、3)のために GPIO の高速アクセス方法を調べるのが優先だ。

 そこで、まずはオーソドックスに Jetson.GPIO を使ってみる。1つのピンを無限ループでノーウエイトで
ON/OFF を繰り返す。

import Jetson.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(13, GPIO.OUT)
while True:
  GPIO.output(13, GPIO.HIGH)
  GPIO.output(13, GPIO.LOW)
GPIO.cleanup()

 これを実行し、出力波形をオシロで確認。

 結果は、1周期330μ秒ぐらいになった。3キロヘルツという感じ。危惧していた通りの遅さである。やはり、マイクロ秒ではなくミリ秒単位の制御にしか使えない。ソフトウェアSPIなど、論外だ。
 例えば自動運転車がハンドルを切る場合、1ミリ秒の遅延が生じても事故にはならない。むしろ人間には不可能な超反応だとして賞賛されるだろう。だから、Jetson
Nano の想定用途なら全く問題はない。だが、PICやハード直接制御を行おうとすれば、使い物にならない。

 高速な制御は、i2c などビルトインされた機能だけにしか頼れない。

 試しに cython でそのままコンパイルしたところ、むしろ逆に遅くなった。1周期350μ秒ぐらい掛かっている。

 GPIO に関しては、cython も効果はない。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL
Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4