home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

日記/2004/03/01/卒業研究

日記/2004/03/01/卒業研究

日記 / 2004 / 03 / 01 / 卒業研究
id: 345 所有者: msakamoto-sf    作成日: 2004-03-01 00:00:00
カテゴリ: C言語 Linux 

卒業研究で作成したプログラムとその関連パッケージのダウンロードリンクを示す。

概要

  1. 三菱電機マイクロロボットアーム"MOVEMASTER EX"を、LinuxマシンからRS-232C経由で制御する。
  2. USB接続のWebカメラから読み込んだ画像を元に、MOVEMASTERに物体を追跡させる。

やったこと

  1. MOVEMASTERとLinuxの通信用ドライバを自作した。RS-232Cクロスケーブルも自作した。
  2. Webカメラからの画像はxawtvを使って取得した。xawtvを一部改造して共有メモリに書き込ませた。
  3. 共有メモリに書き込まれた画像データを元に、以下の計算を複数プロセスで並行処理させた。
    1. 指定された色の重心位置
    2. 輪郭線とその角度の計算
  4. 色の重心位置を追尾するよう、MOVEMASTERにコマンドを送信するようにした。

以下のプログラミング技術を勉強できた。

  • Linux用キャラクタデバイスのデバイスドライバ作成
  • RPMのパッケージング
  • 共有メモリ, セマフォの使い方
  • TCP通信によるキャラクタベースの独自プロトコルの作成と、子プロセスfork型サーバプログラム

卒業「研究」というよりは卒業「制作」。

プログラムのコンパイル

※2003/11 - 2004/1 にかけてプログラミングしています。2009年現時点では相当古くなっていますので、おそらくそのままではコンパイル出来ないと思います。 ライブラリやxawtvの改造など、順番も重要です。

対応OSはTurbolinux 8 workstation
対応Linuxカーネルは kernel-2.4.22 以上.2.6は未確認.

1. 最初にmovemasterのキャラクタデバイスドライバをコンパイルする。

arv-gsmtd-mm.tgzの中にmovemasterというディレクトリがあり、その中のmm_driver.cをコンパイルします。

$ gcc -c mm_driver.c -Wall -Wstrict-prototypes -O -pipe

RS232C(Serial)サポートを外したカーネルで使ってください(重要)。

2. 次にGSMTD(共有メモリへのアクセスをTCP越しで行うデーモン)をコンパイルします。
arv-gsmtd-mm.tgzの中にgsmtdというディレクトリがあります。Makefileがありますので、makeコマンドでコンパイルします。

3. libgsmtdclient.so をコンパイルします。
gsmtd/libgsmtdclient ディレクトリの中にMakefileがあります。
コンパイル後は、libgsmtdclient.soを適当にLD_LIBRARY_PATHを通したディレクトリにコピーします。

4. arv本体をコンパイル
arv-gsmtd-mm/arv/Makefileを最初に実行し、arv_common.o を作ります。その後、各サブディレクトリのMakeを実行します。
libgsmtdarv.soを適当にLD_LIBRARY_PATHを通したディレクトリにコピーします。

5. xawtvのコンパイル後のソースツリーを入手。
webcam-gsmtd-client.tgzの中のREADME.euc-jpを参照。

6. システムの実行

  1. mm_driverをロード後、mm_serverを実行し、telnetなどで接続します。MOVEMASTERのコマンドをtelnet端末から送信し、MOVEMASTERが動く事を確認します。
  2. gsmtdデーモンを起動し、共有メモリを初期化します。これもtelnet経由で簡単に動作確認できます。
  3. USBにWebカメラを接続し、xawtv-3.74/console/webcam-gsmtd-client を起動します。
  4. arvcellaton, arveffect, arvwindow, arvmonitor, arvviewer, arvmaster の順に起動します。
  5. 最後に arvmm を起動すると、重心位置の計算結果に基づいてMOVEMASTERへコマンドが送信されるようになります。

arv-gsmtd-mm/arv/arv.sh を実行すると、2. 以降を自動で処理してくれます。


プレーンテキスト形式でダウンロード
現在のバージョン : 2
更新者: msakamoto-sf
更新日: 2009-04-18 19:53:00
md5:2dedd9093af9e900d67b82c09df94cdd
sha1:398d33f3014e11dae37bccbb5865ce56d1456953
コメント
コメントを投稿するにはログインして下さい。