沼津高専 電子制御工学科 | ||||||
| ||||||
改訂記録 | ||||||
---|---|---|---|---|---|---|
版数 | 作成日 | 作成者 | 承認 | 改訂内容 | ||
A01 | 2009.3.9 | 細川 | 牛丸 | 初版 | ||
A02 | 2010.7.12 | 牛丸 | 牛丸 | 駆動系関数のAPIを改訂 |
ファイル名 | 利用される関数 | 説明 |
---|---|---|
contro.h | 行動制御系関数 | 行動制御プログラムで使われるマクロ、構造体、グローバル変数の定義。詳細はヘッダ内のコメントを参照。 |
func_extern.h | 行動制御系関数 | 行動制御プログラムで関数の extern 宣言集。 |
motor.h | 駆動系関数、行動制御系関数 | 主に行動制御系関数で使われるマクロの定義。一部、行動制御系関数でも利用される。詳細はヘッダ内のコメントを参照。 |
uss.h | 超音波制御系関数 | 超音波距離計測で使われるマクロの定義。詳細はヘッダ内のコメントを参照。 |
num_threshold_value.h | 画像処理系関数 | 数字認識処理で使われる閾値等のマクロの定義。詳細はヘッダ内のコメントを参照。 |
bmp.h | 画像処理系関数 | 画像処理で使われるモノクロ値等のマクロの定義。詳細はヘッダ内のコメントを参照。 |
ball_detect_extern.h | 画像処理系関数 | ボール認識処理で使われる関数のextern宣言集。 |
num_detect_extern.h | 画像処理系関数 | 数字認識処理で使われる関数のextern宣言集。 |
ファイル名 | 関数名 | 書式 | 引数 | 戻り値 | 説明 |
---|---|---|---|---|---|
inititialize.c | initialize | int initialize(void); | なし | 0 | 初期化 |
search.c | search | int search(int *target_num); | 何番目のターゲットか | 0 or -1 | ターゲット探索 |
correction.c | correction | int correction(void); | なし | 1 or -1 | 正体補正 |
serial_func.c | set_serial_port | int set_serial_port(int fd, struct termios *oldtio); | fd:ファイルディスクリプタ *oldtio:旧設定 |
0 | シリアルポートの設定 |
close_serial_port | void close_serial_port(int fd, struct termios *oldtio); | fd:ファイルディスクリプタ *oldtio:旧設定 |
なし | シリアルポートを閉じる | |
put_serial_char | int put_serial_char(int fd, char c); | fd:ファイルディスクリプタ c:書き込む値 |
0 | 1バイト書き込む | |
put_serial_string | int put_serial_string(int fd, char *s); | fd:ファイルディスクリプタ *s:書き込む文字列の先頭 |
0 | 複数文字書き込む | |
get_serial_char | int get_serial_char(int fd); | fd:ファイルディスクリプタ | 読み込んだ値 | 値を読み込む | |
uss_get.c | uss_get | int uss_get(int uss_num); | センサ番号 | 計測値 | 超音波センサ距離計測 |
ファイル名 | 関数名 | 書式 | 引数 | 戻り値 | 説明 |
---|---|---|---|---|---|
motor.c | motor | int motor(char sel,int *par); | sel:制御指定(s:直進、r:回転、c:周回) s の場合、par[0]:距離(mm)、par[1]:時間(msec) r の場合、par[0]:回転角(deg)、par[1]:時間(msec) c の場合、par[0]:回転角(deg)、par[1]:時間(msec)、par[2]:旋回半径(mm)、par[3]:回転方向(0:時計回り、1:反時計回り) |
0 | 走行制御 |
motor_straight | void motor_straight(void *arg); | motor()の第2引数を与える | 0 | 直進制御 | |
motor_rotate | void motor_rotate(void *arg); | motor()の第2引数を与える | 0 | その場回転制御 | |
motor_circle | void motor_circle(void *arg); | motor()の第2引数を与える | 0 | ポスト周回制御 | |
motor_thread.c | motor_thread | int motor_thread(char sel,int *par); | motor() の引数と同様 | 0 | 走行制御スレッド生成 |
motor_func.c | motor_request | int motor_request(int fd, count void *req, void *res, size_t req_len, size_t res_len); | fd:ファイルディスクリプタ *req:送信パケット *res:受信パケット req_len:送信パケット長 res_len:受信パケット長 |
0 or 負 | モータと通信をするための基本ルーチン |
motor_send_control_packet | int motor_send_control_packet(int fd, uint8_t speed, uint8_t kp, uint8_t ki); | fd:ファイルディスクリプタ speed:速度指定 kp:kpゲイン ki:kiゲイン |
0 or 負 | モータに制御パラメータを送る | |
motor_recv_status_packet | int motor_recv_status_packet(int fd, int8_t *speed, uint16_t *pwm, int32_t *round); | fd:ファイルディスクリプタ *speed:回転速度 *pwm:パルス幅 *round:総回転数 |
0 or 負 | モータの状態を得る | |
motor_send_start_packet | int motor_send_start_packet(int fd); | fd:ファイルディスクリプタ | 0 or 負 | モータ回転を開始 | |
motor_send_clear_packet | int motor_send_clear_packet(int fd); | fd:ファイルディスクリプタ | 0 or 負 | 総回転数のクリア | |
motor_send_stop_packet | int motor_send_stop_packet(int fd); | fd:ファイルディスクリプタ | 0 or 負 | モータの停止 | |
motor_io.c | put_motor | int put_motor(MotorInfo ml, MotorInfo mr); | ml:左タイヤ構造体 mr:右タイヤ構造体 |
0 | モータへの送信 |
get_motor | int get_motor(MotorInfo *ml, MotorInfo *mr); | ml:左タイヤ構造体 mr:右タイヤ構造体 |
0 | モータからの受信 |
ファイル名 | 関数名 | 書式 | 引数 | 戻り値 | 説明 |
---|---|---|---|---|---|
img_update.c | img_update | void img_update(char *str, int width, int height); | str:ファイル名 width:画像の幅 height:画像の高さ |
なし | 画像取得 |
ball_detect.c | ball_detect | int ball_detect(void); | なし | 0 | ボール認識 |
hough_circle.c | hough_circle | void hough_circle(IplImage *src, IplImage *dst , double *dis, double *deg); | src:入力画像 dst:出力画像 *dis:距離用ポインタ *deg:角度用ポインタ |
なし | ハフサークル実行 |
num_detect.c | hough_circle | int isPaper(IplImage *src, int min_pix); | src:入力画像 min_pixピクセル数 |
なし | 画像サイズ認識 |
labelTrim | void labelTrim(IplImage *src, IplImage *dst, short *labeling_data, int label_num, char *font_color); | src:入力画像 dst:出力画像 labeling_data:データのアドレス label_num:ラベル番号 font_color:認識対象外色 |
なし | ラベル領域抽出 | |
recognize | int recognize(IplImage *src, IplImage *dist_x, IplImage *dist_y); | src:入力画像 dist_x:結果1dist_y:結果2 |
0〜9 or -1 | 数字を識別 | |
num_detect | int num_detect(int max_roop_counter); | max_roop_counter:ループ回数 | 0〜9 or -1 or -999 | 数字認識 | |
col_threshold.c | col_threshold | void col_threshold(IplImage *src, IplImage *dst, int th1_min, int th1_max, int th2_min, int th2_max, int th3_min, int th3_max, char *code); | src:入力画像 dst:出力画像 th1_min:R/H最小値 th1_max:R/H最大値 th2_min:G/S最小値 th2_max:G/S最大値 th3_min:B/V最小値 th3_max B/V最大値 code:色空間の指定 |
なし | 色による2値化 |
fill.c | scan_line | void scan_line(IplImage *src, int lx, int rx, int y, int col, CvPoint **End_ldx, CvPoint *bufstart, CvPoint *bufend); | src:入力画像 dst:出力画像 x:始点のx座標 y:始点のy座標 paint_color:塗りつぶし後の色 |
なし | 関数fillで用いる |
fill | int fill(IplImage *src, IplImage *dst, int x, int y, int paint_color); | 同上 | 0 or -1 | 塗りつぶしを行う | |
val_threshold.c | val_threshold | void val_threshold(IplImage *src, IplImage *dst, int width, char *font_color); | src:入力画像 dst:出力画像 width:ヒステリシスの幅 font_color:対象物の色 |
なし | 2値化処理 |
ファイル名 | 関数名 | 書式 | 引数 | 戻り値 | 説明 |
---|---|---|---|---|---|
thread_func.c | irs_ts_ws | void *irs_ts_ws(void* t); | 使用しない | なし | On/Off I/Oセンサ値取得スレッド |
uss_read | void *uss_read(void *arg); | センサ番号 | なし | 超音波センサ距離計測スレッド | |
motor_thread.c | motor_thread_straight | void *motor_thread_straight(void *arg); | motor_thread()の引数と同様 | 0 | 直進制御スレッド |
motor_thread_rotate | void *motor_thread_rotate(void *arg); | motor_thread()の引数と同様 | 0 | その場回転制御スレッド | |
motor_thread_circle | void *motor_thread_circle(void *arg); | motor_thread()の引数と同様 | 0 | ポスト周回制御スレッド |
関連文書 |
---|