SSブログ

SpotMicro(mini) その30 ーその他のI2Cデバイスノード ー [ROBOT]

今回作った、SpotMicroに搭載されている機能(コンポーネント?)は、

ROSメッセージを制御するためのコンピュータ、

動かすためのサーボ

FPVのためのカメラ

GYRO、磁気、加速度 センサ

電池電圧センサ、

近接センサ

あと、どうでもいい文字列を出力するためのLCD

が搭載されており、

各センサと、LCDがすべてI2cに説臆されている。


i2cdetect.jpg


ROSのプログラムは、センサ等のノードを定期的に誰宛ともなく、”Publish”し、利用数が和では、それを”Subscribe”する。
これらのセンサは、前述のとおり同じI2Cバスにつながれている。I2Cは、RASPBERRY PIから見ると、一つのデバイスとして、みえており、それぞれのセンサは、I2Cバスに対する入出力として、インプリされてみる。

言い換えると、ファイルの1バイト目は、何とかセンサ、2バイト目は何とかセンサ”みたいにアクセスする。Cのプロラムから見ると、一つのファイルとして、アクセスすることになる。
このあたりは、よく理解している人には、釈迦に説法だけど。

GYRO,加速度、磁気センサのアドバタイズ周期と、電池の電圧センサのアドバタイズ周期は、
別にしたいと考えている(両方ともなるべく少なくしたいが)。

ROSのプログラムは、公告するメッセージ毎にノードを作るのが割と普通なんだけど、別々の
プロセスにすると、I2Cデバイスの競合が起こる可能性があるので、一つのプロセスですることにした。

1秒間に60回チャンスをつくり、センサにより、何回か毎に出力するようにした。

番号トピック名構造向き、概要
1/spot/imuVector3 acel
Vector3 gyro
Vector3 magn
Float32 temp
出力:9軸センサ(加速度、各加速度、地磁気)と温度
2/spot/battteryFloat32 volt出力:電池電圧
3/spot/lcd String line入力:表示する文字列。改行文字で改行
4/spot/lcd1String line入力::1行目文字出力
5/spot/lcd2String line入力:2行目文字出力
6/spot./tofFloat32 left
Float32 right
出力:近接センサ距離(LRはうまく動かない)


となっている。
タグ:SpotMicro robot
コメント(0) 
共通テーマ:趣味・カルチャー

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。