SpotMicro(mini) その30 ーその他のI2Cデバイスノード ー [ROBOT]
今回作った、SpotMicroに搭載されている機能(コンポーネント?)は、
ROSメッセージを制御するためのコンピュータ、
動かすためのサーボ
FPVのためのカメラ
GYRO、磁気、加速度 センサ
電池電圧センサ、
近接センサ
あと、どうでもいい文字列を出力するためのLCD
が搭載されており、
各センサと、LCDがすべてI2cに説臆されている。
ROSのプログラムは、センサ等のノードを定期的に誰宛ともなく、”Publish”し、利用数が和では、それを”Subscribe”する。
これらのセンサは、前述のとおり同じI2Cバスにつながれている。I2Cは、RASPBERRY PIから見ると、一つのデバイスとして、みえており、それぞれのセンサは、I2Cバスに対する入出力として、インプリされてみる。
言い換えると、ファイルの1バイト目は、何とかセンサ、2バイト目は何とかセンサ”みたいにアクセスする。Cのプロラムから見ると、一つのファイルとして、アクセスすることになる。
このあたりは、よく理解している人には、釈迦に説法だけど。
GYRO,加速度、磁気センサのアドバタイズ周期と、電池の電圧センサのアドバタイズ周期は、
別にしたいと考えている(両方ともなるべく少なくしたいが)。
ROSのプログラムは、公告するメッセージ毎にノードを作るのが割と普通なんだけど、別々の
プロセスにすると、I2Cデバイスの競合が起こる可能性があるので、一つのプロセスですることにした。
1秒間に60回チャンスをつくり、センサにより、何回か毎に出力するようにした。
となっている。
ROSメッセージを制御するためのコンピュータ、
動かすためのサーボ
FPVのためのカメラ
GYRO、磁気、加速度 センサ
電池電圧センサ、
近接センサ
あと、どうでもいい文字列を出力するためのLCD
が搭載されており、
各センサと、LCDがすべてI2cに説臆されている。
ROSのプログラムは、センサ等のノードを定期的に誰宛ともなく、”Publish”し、利用数が和では、それを”Subscribe”する。
これらのセンサは、前述のとおり同じI2Cバスにつながれている。I2Cは、RASPBERRY PIから見ると、一つのデバイスとして、みえており、それぞれのセンサは、I2Cバスに対する入出力として、インプリされてみる。
言い換えると、ファイルの1バイト目は、何とかセンサ、2バイト目は何とかセンサ”みたいにアクセスする。Cのプロラムから見ると、一つのファイルとして、アクセスすることになる。
このあたりは、よく理解している人には、釈迦に説法だけど。
GYRO,加速度、磁気センサのアドバタイズ周期と、電池の電圧センサのアドバタイズ周期は、
別にしたいと考えている(両方ともなるべく少なくしたいが)。
ROSのプログラムは、公告するメッセージ毎にノードを作るのが割と普通なんだけど、別々の
プロセスにすると、I2Cデバイスの競合が起こる可能性があるので、一つのプロセスですることにした。
1秒間に60回チャンスをつくり、センサにより、何回か毎に出力するようにした。
番号 | トピック名 | 構造 | 向き、概要 |
1 | /spot/imu | Vector3 acel Vector3 gyro Vector3 magn Float32 temp | 出力:9軸センサ(加速度、各加速度、地磁気)と温度 |
2 | /spot/batttery | Float32 volt | 出力:電池電圧 |
3 | /spot/lcd | String line | 入力:表示する文字列。改行文字で改行 |
4 | /spot/lcd1 | String line | 入力::1行目文字出力 |
5 | /spot/lcd2 | String line | 入力:2行目文字出力 |
6 | /spot./tof | Float32 left Float32 right | 出力:近接センサ距離(LRはうまく動かない) |
となっている。
コメント 0