名称 MIRS1401 デバイス関連モジュール詳細設計
番号 MIRS1401-SOFT-0011

版数 最終更新日 作成 承認 改訂記事
A01 2014.12.8 五十嵐,眞野 初版
A02 2014.12.17 五十嵐,眞野 関数の概要を変更
A03 2014.12.19 五十嵐,眞野 牛丸先生 名称の変更

目次

1.はじめに
2.機能
3.共有変数
4.関数
5.テスト仕様

1.はじめに

本ドキュメントは、MIRS1401のデバイス関連(超音波センサ、モーター、エンコーダ、タッチセンサ、カメラ、パトランプ、針機構、デバイスオープン)のモジュール詳細設計について記したドキュメントである。

2.機能

2.1 超音波センサ

指定されたポートの超音波センサで距離測定を行い、その値を返す。 超音波センサは3つ使用する予定である。
実際に4つ使用した。
それぞれのポート番号と機体の配置関係を下の図に示す。

2.2 モーター

モーターにduty比を送り駆動させる。
3つのモーター、エンコーダの変数において、right(r):右、left(l):左、back(b):後と対応付けている。
モーター、エンコーダの変数と配置の関係は下に示す。

2.3 エンコーダ

3つのエンコーダーの値を計測する。
変数との対応はモーターと同じである。

2.4 タッチセンサ

9個のタッチセンサのオン、オフを計測する。
オンを0(char型)、オフを1(char型)とする。
タッチセンサの番号は下の図に示す。

2.5 カメラ

2台のwebカメラを使い画像の取得を行う。
前のカメラを使うときは0を、後ろのカメラを使うときは1を引数にしてどちらのカメラを使うか選択する。

2.6 パトランプ

パトランプのオン、オフを行う。(一度呼び出されたら、次に呼び出されるまでその状態を保持する。)

2.7 針機構

針の展開、回収を行う。

2.8 デバイスオープン

モーター、エンコーダ、タッチセンサ、超音波センサ、パトランプ、針機構のデバイスオープン、クローズを行う。

2.9 配置と変数名の対応



3.共有変数

モジュール内の共有変数を示す。

3.1 超音波センサ

共有変数なし

3.2 モーター

共有変数なし

3.3 エンコーダ

名称概要
int encoder_left/encoder_right/encoder_back エンコーダ値
int encoder_left_sum/encoder_right_sum/encoder_back_sum エンコーダ値の積算値
int encoder_left_sum_cum/encoder_right_sum_cum/encoder_back_sum_cum エンコーダ値の累積値

3.4 タッチセンサ

共有変数なし

3.5 カメラ

共有変数なし

3.6 パトランプ

共有変数なし

3.7 針機構

共有変数なし

3.8 デバイスオープン

名称概要
int fd_encoder/fd_motor/fd_uss/fd_io/fd_lamp/fd_needle 各デバイスのディスクリプタ番号

4.関数

4.1 超音波センサ

修飾子・戻値名称・引数概要
int uss_get(int uss_num) ポート番号(1〜4)を引数にし、測定値を戻り値とする

4.2 モーター

修飾子・戻値名称・引数概要
void motor_drive(int u_l, int u_r ,int u_b) 3つのモーターのduty比の入力

4.3 エンコーダ

修飾子・戻値名称・引数概要
void encoder_get(struct encoder_data *encoder_data) エンコーダー値の取得
void encoder_create() エンコーダースレッドの作成
void encoder_reset() エンコーダー値の積算値のリセット
void *encoder_read(void *t) エンコーダーの読み取り
void encoder_all_get(struct encoder_all_data *encoder_all_data) エンコーダー値の累積値の取得
void encoder_all_return(struct encoder_all_data *encoder_all_data) 累積値の変更

4.4 タッチセンサ

修飾子・戻値名称・引数概要
void io_get(char *io_data) iodataにタッチセンサのオン、オフ状態を入れる

4.5 カメラ

修飾子・戻値名称・引数概要
void get_image(int type) 前後どちらかのカメラで画像を取得する。前:0 後ろ:1

4.6 パトランプ

修飾子・戻値名称・引数概要
void lamp(int onoff) パトランプのオン:1、オフ:0

4.7 針機構

修飾子・戻値名称・引数概要
void needle(int onoff) 針の展開:1、回収:0

4.8 デバイスオープン

修飾子・戻値名称・引数概要
int device_encoder_open() エンコーダのデバイスをオープンする。デバイスオープンに失敗した際には-1を返す。成功時に0を返す。
int device_motor_open() モーターのデバイスをオープンする。デバイスオープンに失敗した際には-1を返す。成功時に0を返す。
int device_uss_open() 超音波センサのデバイスをオープンする。デバイスオープンに失敗した際には-1を返す。成功時に0を返す。
int device_io_open() タッチセンサのデバイスをオープンする。デバイスオープンに失敗した際には-1を返す。成功時に0を返す。
int device_lamp_open() パトランプのデバイスをオープンする。デバイスオープンに失敗した際には-1を返す。成功時に0を返す。
int device_needle_open() 針機構のデバイスをオープンする。デバイスオープンに失敗した際には-1を返す。成功時に0を返す。
void device_encoder_close() エンコーダのデバイスをクローズする。
void device_motor_close() モーターのデバイスをクローズする。
void device_uss_close() 超音波センサのデバイスをクローズする。
void device_io_close() タッチセンサのデバイスをクローズする。
void device_lamp_close() パトランプのデバイスをクローズする。
void device_needle_close() 針機構のデバイスをクローズする。
int device_encoder_get() エンコーダのデバイスのディスクリプタ番号を取得して返す。
int device_motor_get() モーターのデバイスをディスクリプタ番号を取得して返す。
int device_uss_get() 超音波センサのデバイスのディスクリプタ番号を取得して返す。
int device_io_get() タッチセンサのデバイスディスクリプタ番号を取得して返す。
int device_lamp_get() パトランプのデバイスのディスクリプタ番号を取得して返す。
int device_needle_get() 針機構のデバイスディスクリプタ番号を取得して返す。

5.テスト仕様

各デバイスが正常に動作するかテストを行う。

MIRS1401