長岡工業高等専門学校研究紀要

論第50巻（2014）

文

携帯端末を用いた線追跡機械のPID姿勢制御手法に関する検討－ タイ日工業大学とのコンテスト用マシン作成と制御方法－
矢野昌平 ・Prawet UEATRONGCHIT
1

2

1 電気電子システム工学科（Department of Electrical Electronics System Engineering, Nagaoka National

College of Technology）

2 コンピュータエンジニアリング科（Department of Computer Engineering, Thai-Nichi Institute ofTechnology ）Computer Vison Guidance of a Line Following Robot using Mobile Phone- Description of How to Create Machines for Contest with Thai-Nichi Institute ofTechnology Shouhei YANO1 and Prawet UEATRONGCHIT2Abstract
The purpose of this report is to describe the implementation of a computer vision guided line following
robot. The robots were utilized in the contests in 2013 and 2014 with students of Thai-Nichi institute ofTechnology and Nagaoka National College of Technology students in a student overseas dispatch training
to Thailand. The robot reads the line on the course from the camera of mobile phone. The mobile phone
installed Android will be applied to capture video, run the line following by communication via Bluetooth
to the robot base. An Arduino microcontroller will speed drive the robot with PWM (Pulse WidthModulation) technology. An Android phone traces the line by control method. In this report, we describethe algorithms of the line trace which are included the PID (Proportional Integral Derivative) algorithm,
the PID algorithm calculates the motor speeds such that the robot moves in a smooth fashion around line
course, and how to the robot and the development environments of Arduino and Android on the PC.
Key Words: Computer vision, Android, Arduino, oversea student training

１．はじめにが行われている．その一つとして，2013 年からタ

近年，国際競争が激化し生産拠点を海外に移転する企業が年々増加している．上場企業の 7 割が海外

イ日工業大学と長岡高専とで交互にコンテストを開催している．コンテストは 8 月下旬から 9 月に，タ生産を実施するなど，ものづくりの現場の多くは海イにおいて開催される Android Following Line Robot(以後 AFR と記す)と，5 月に長岡高専で開催される外へと移転している．エンジニアには技術力以外に，Gr-SAKURA LED Music and Dance (以後 GLMD と記

英語力や国際化が求められている．将来のエンジニす)である．日本とタイの学生とで混合チームを作

ア育成を目指す長岡工業高等専門学校（以下，長岡り，設定課題について共同で作品を制作し，他チー高専と略す）においても，学生を海外に派遣し，現ムとレースや作品のパフォーマンスを競い合う．
GLMD コンテストは 2014 年に，AFR コンテストは地学生と国際交流を行う学生海外派遣研修の取組み

−87−

矢野

昌平 ・ Prawet UEATRONGCHIT

２．ハードウェア構成
ライントレースロボットの構成を図-1 に示す．
ロボットは，携帯端末からの操縦指示を Bluetooth
通信によりモータ制御用マイコン(Arduino Uno)に送信する．マイコンには Bluetooth 通信モジュールが

図-1 ライントレースロボットの構成図

搭載されており，受信した信号に応じたモータ制御を行う．ロボットには左右のモータがついており，PWM 信号によりモータ回転数が制御され走行する．
全ハードウェアは日本やタイはもちろん多くの国で入手可能である．AFR コンテストでは，事前に各国で部品を入手し作成したロボットを持込んだ．各チームはマシンやプログラムの調整，コースのテスト走行に多くの時間を費やすことができた．図-2に主なハードウェアの写真を示す．
２．１

携帯端末

ライントレースロボットでは背面カメラを装備しAndroid が搭載されている携帯端末を用いる．携帯
図-2

端末として KYOCERA 社製 DIGNO ISW11（図-2①）を使用した．Android OS は Ver.2.3.5 である．

AFR で使用するハードウェア

２．２

Arduino Uno マイコンボード

Arduino は安価で簡単に使用できるように 2005
年にイタリアで開発された組込みボードである．基板上に AtmelAVR マイコンが搭載され，5V で駆動する．Arduino の統合開発環境を持つ PC より，クロスプラットフォームで開発でき USB 接続でプログラムをダウンロードすることでスタンドアローン動作が可能である．Arduino Uno (ATmega328) マ

図-3 AFR 用シールド配線パターン

イコンボード (図-2②) を使用した．

Arduino プロトシールド
プロトシールドは Arduino Uno の上に設置し，機２．３

能拡張用の電子回路を作成する基板である．本論文
では，電子回路の安定性を高めるため，プリント回路パターン基板を起こした（図-2③）．図-3 に配線パターンと図-4 に作成したプロトシールド外観
写真を示す．図-4 において左は Arduino である．図
図-4 AFR シールド回路図

2013 年と 2014 年とで既に 2 回開催されている

右は作成したシールドで，Arduino の上にピンコネクタ端子をもちいて設置可能である．基板上には． Bluetooth モジュールや H-Bridge の他に LED やコン

１）２）

本論文においては，AFR コンテストで用いたライデンサ，抵抗，プッシュスイッチが配置される．図ントレースロボットの開発方法と動作アルゴリズム-5 に AFR 用シールド回路図を示す．基板を起こすこの解説および検討を行った．とは時間と費用が掛かるため，数が少ない場合は市販されている SparkFun 製プロトシールドキット(SFE-DEV-0914) （ 図 -2 ④ ） を 購 入 し ， キ ッ ト の−88−携帯端末を用いた線追跡機械のPID姿勢制御手法に関する検討

MoterA+, A-，B+, B-そして SW，LED の各端子に合計 12 箇所の接続を行う．
２．４

Bluetooth モジュール

携帯端末との通信にはデジタル機器用近距離無線通信の「Bluetooth」を利用する．これは，携帯端末や周辺機器等がケーブルを使わずに，ワイヤレスで接続され機器間で音声やデータをやりとり可能とするものである．Bluetooth モジュールは，図-7 に示

す sparkfun 社の BlueSMiRF WRL-12582 を使用した．
２．５

H-Bridge

モータに駆動 IC にはテキサス・インメンツ社製
H ブ リ ッ ジ IC SN7544103) を 使 用 し た ． 図 -8 に

図-5 AFR シールド回路図

SN754410 ピンアサインを示す．左右のモータは，
図-7 中の 3-6pin と 11-13pin に接続を行う．モータ
制御には 2-7pin と 10-15pin を用いる．
２．６

ツインモータギアーボックス

モ ー タ の ギ ア ボ ッ ク ス に は ， TAMIYA 社 製
TWIN-MOTOR GEARBOX を使用した（図-2⑤）．
2 つのモータのパワーを別々に伝えられ，組立て式であり，ギア比として標準 (58:1) と低速 (203:1) を選択できる．本論文では低速 (203:1) を利用した．
図-6 AFR シールド回路概念図

２．７

車体部品

車体部品には，TAMIYA 社製ユニバーサルプレー ト セ ッ ト （ 図 -2 ⑥ ） と ， タ イ ヤ 部 品 に はTAMIYA 社スリムタイヤセット（図-2⑦）を使用した．

図-7

Bluetooth モジュール

３．Android アプリケーション開発環境
ライントレースロボットは携帯端末上で動作するAndroid アプリケーション（以後 Android アプリと記す）によって制御されている．Android アプリを開発するためには PC 上に開発環境を構築することが必要である．Android アプリは JAVA 言語で開発することができ，そのプログラム開発には 1）JDK(Java Development Kit) ， 2 ） eclipse ， 3 ） Android

図-8

SDK を PC 上にインストールする必要がある．

H ブリッジ IC SN754410 ピンアサイン

ユニバーサルエリアに電子回路を作成する方法が良３．1

JDK のインストール

い．図-6 に AFR シールド回路の概念図を示す．

JDK は，Java 言語を使ってプログラムを記述し，Bluetooth モジュール用に通信端子 (BT-RX, BT-TX)動作させる為に必要なソフトウェアのセットであり，と 電 源 +5V, GND ， H-Bridge 用 に +5V, GND,オラクル社サイトからダウンロード可能である．

−89−

矢野昌平 ・ Prawet UEATRONGCHIT

３．２

eclipse のインストール

Eclipse は 統 合 開 発 環 境(IDE: IntegratedDevelopment Environment) と呼ばれる java 開発ツー
ル で あ る ． ア ン ド ロ イ ド 開 発 サ イ ト http://developer.android.com/sdk/index.html より「Download
Eclipse ADT」をクリックし，注意書きを読み「□ I
図-9have read and agree with the above terms and conditions」

eclipse の plugin インストールに チ ェ ッ ク を 入 れ ， adt-bundle-windows-x86_6420140702.zip をダウンロードする．ファイル名の最後「20140702」は開発バージョンを示す．拡張子の「.zip」は圧縮ファイルであることを示す．アーカ
イブソフトを使って展開すると，展開先フォルダ中に実行ファイル eclipse.exe が作成される．
３．３

eclipse の ADT plugin のインストール

3.2 節でインストールした eclipse.exe を起動し，

図-10 新しい Repository を Location に追加

plugin のインストールを行う．メニューバーより[Help] → [Install New Software] を選択する（図-9) ．
インストールウィンドウ上の Work with:に新しいRepository を追加する為，「Add」ボタンをクリックし「 https://dl-ssl.google.com/android/eclipse/ 」を ロケーションに追加する（図-10）．
「Developer Tools」にチェックを入れ「Next」ボタンを押す．ダウンロードされるツールの一覧の表示
画面で「Next」ボタンを押す．ライセンスを読みチ
図-11 Plugin を直接指定する方法

ェックを入れ「Finish」ボタンを押す．これによりplugin ソフトウェアのインストールが開始される．
プロクシーを使ったネットワークで行う場合は，ADT-plugin ファイルを先にダウンロードしておき，eclipse に 登 録 す る 方 法 も あ る ． そ の 場 合 ，
https://dl.google.com/android/ADT-23.0.4.zip を任意のフォルダに保存し eclipse より[Help]→[Install New
Software]を選択する（図-9）．インストールウィン
ドウ上の Work with:に新しいファイルを追加する為，「Add」ボタンをクリックし「Archive」ボタンを押し保存場所の ADT-23.0.4.zip を指定する（図-11）．

図-12 Android SDK Manager の起動

http://www.oracle.com/technetwork/java/javase/downloa

３．４

ds/index.html．最新版 Java SE 8u20 (2014/10/3 現在)

Android バージョンにあわせた API のインストールの JDK を選択し，Linux 版や Windows 版，そして携帯端末によって，稼動している Android OS の64bit 用(x64) と 32bit 用(x86) から使用している PC

バージョンが異なる．アプリ開発のターゲットとな環境に最適なものを選択しダウンロードする．ダウ

る携帯端末 OS バージョンを調べ必要な API をイン

Accept License

ストールする必要がある．携帯端末 OS バージョン

Agreement」にチェックを入れライセンスに承諾す

は，携帯端末上で「設定」→「端末情報」→る必要がある．本論文では Win 版 64bit をダウンロ「Android バージョン」で知ることができる．次にードし，完了後にインストール作業を行った．

Eclipse のメニューバーより [Window] → [Androidンロードを行う為には，「SDK Manager] を選択する (図-12) ．
−90−

携帯端末を用いた線追跡機械のPID姿勢制御手法に関する検討

チェックした API 毎にライセンス承諾が必要となる．
各々Packages ウインドウで選択し「Accept License」をクリックする（図-15）．

４．ソフトウェア構成
ライントレースロボットには 2 つのソフトウェアコンポーネントが必要である．Android アプリである LineTracker コンポーネンツと Arduino のプログ

図-13 プロクシー設定

ラムである Amarino コンポーネンツである．
４．１ LineTracker の登録
LineTracker は PID 制御をモータのスピードを制
御 す る Android ア プ リ で あ る ． 下 記 サ イ ト よ り
http://www.scs.ryerson.ca/mfiala/robotics_club/robot_pr
ojects/Radu_android_robot/LineTracker.zip ダウンロー
図-14

ドし任意の場所に保存しておく．次に eclipse より
LineTracker プロジェクトのインポートを行う．メ

API の選択ニ ューバ ーより [File] → [Import…] → [General]→[Existing Projects into Workspace]→[Next]と操作する．
Select archive file: に て [Browse...] を ク リ ッ ク しLineTracker.zip を選び Finish を押す（図-16）．
インポートされた LineTracker には Arduino との通信で必要となる Amarino ライブラリが抜けている，
サ イ ト https://amarino.googlecode.com/files よ り
AmarinoLibrary_v0_55.jar をダウンロードする．次に，
図-15

プロジェクトに Amarino ライブラリを追加する．
Package Explorer で LineTracker を選択，メニューバ

API のライセンス承諾

ーより [Project] → [Properties] を選択する（図-17）．
Properties 画 面 の 左 枠 よ り [Java Build Path] →[Libraries タ ブ ] → [AmarinoLibrary.jar] を 選 択 し[Edit…] をクリックし AmarinoLibrary_v0_5.5.jar を
図-16選択する (図-18) ．ビルドする OS のターゲットをLineTracker プロジェクトのインポート

設 定 す る ． [Project]→[Properties]→ 画 面 の 左 枠[Android]とし，ビルドターゲットを選択する．本論
文では[Android 2.3.3]とした（図-19）．
eclipse では，PC 上に仮想の携帯端末（以後，仮想端末と呼ぶ）を作成し仮想端末上で Android アプリの動作確認が可能である．メニューバーより[Window] → [Android Virtual Devices Manager] →図-17 Properties の選択[Create] → [AVD Name] を選択し，仮想端末に任意SDK Manager を用いて API をダウンロードする為の 名 前 を 入 れ る ． 本 論 文 で は DIGNO と し た ．には，学内プロクシー設定が必要となる．Android
SDK Manager の メ ニ ュ ー バ ー よ り [Tools] →[Device: Nexus S (4.0”, 480x800: hdpi)] → [Target:[Options] を選択し設定を行う（図-13）．次に OS[Skin: No skin] とし仮想端末を作成する（図-20）．

Android 2.3.2-API Level 10] → [CPU/ABI: armeabi] →バージョンに合った API をチェックする（図-14）．
−91−

矢野

４．２

昌平 ・ Prawet UEATRONGCHIT

仮想端末上で Bluetooth デバイス等の外部装置の動仮想端末での動作確認

プロジェクトをビルドし，仮想端末上で動作確認

作を再現できず，通信エラーが発生する為である．

を 行 う ． メ ニ ュ ー バ ー よ り [Run]→[Run

仮想端末上で実行する場合は，通信処理部分のコメ

Configurations…]→ 左 画面より [Android Application]

ントアウト が必要である． Projectを 選択しダ ブルクリ ック又 は， New ボ タ ン より[LineTracker] → [src] → [line.tracker] → [lineTracker.

Exproler より[New Configuration]を作成する．Name: に識別名をjava]のコードを表示し，21 行目の Amarino.connect

記入し， [Android] タグより Project: に LineTracker

関数をコメントアウト（//を行頭に記入）する（図-を 選 択 ， [Target] タ グ よ り 「 DIGNO 」 を 選 択 し22）．図-23 に仮想端末上で LineTracker を起動し[Run] を押す（図-21）．初期状態では，LineTrackerた時の動作画面を示す．の Android アプリは起動と同時に停止する．これは，
４．３

LineTracker の構成

LineTracker は以下に示す①から④の 4 つの java
ファイルから構成されており，各ファイルにはクラスのメンバーが定義されている．各ファイルと含まれるクラスおよびメソッドを以下に示す．
①LineTracker.java•public class LineTracker extends Activity implements
SensorEventListener•protected void onCreate(Bundle savedInstanceState)
図-18 AmarinoLibrary_v0_5.5.jar の追加•protected void onStop()•public void onAccuracyChanged(Sensor arg0, int arg1)•public void onSensorChanged(SensorEvent event)②ArduinoReceiver.java•public class ArduinoReceiver extends BroadcastReceiver•public void onReceive(Context context, Intent intent)③Preview.java

図-19 ビルドターゲットの選択

図-22

Amarino. Connect 関数のコメントアウト

図-20 仮想端末の作成

図-21

図-23 仮想端末上での LineTracker 動作画面

Run Configurations 画面−92−

携帯端末を用いた線追跡機械のPID姿勢制御手法に関する検討

DrawOnTop クラスには，カメライメージを解析•public class Preview extends SurfaceView implements
SurfaceHolder.Callback

し，床に張られた黒テープ（以後，テープと呼ぶ）–Preview(Context context, DrawOnTop drawOnTop)の位置を判定する FindTapeCenter メソッド．および，•public void surfaceCreated(SurfaceHolder holder)

テープの中心と携帯画面の中心との差を計算し，•public void onPreviewFrame(byte[] data, Camera camera)

PID 制御によりモータへの回転指令を出すライント•public void surfaceDestroyed(SurfaceHolder holder)

レースアルゴリズムが含まれるクラスである．図-•public void surfaceChanged(SurfaceHolder holder, int format,

26 に DrawOnTop クラスのダイアグラムを示す．

int w, int h)

FindTapeCenter メソッドは，白と黒に二値化された④DrawOnTop.java

カメライメージより，テープの中心を見つけ出す．

•public class DrawOnTop extends View

図-27 に FindTapeCenter の流れ図を示し，以下に処•public DrawOnTop(Context context)

理手順について述べる．

•protected void onDraw(Canvas canvas)

1）カメライメージ画像を ImageWidth 方向に 50 ピ

•public int findTape(int[] rgb, int width, int height)

クセルおきに pix 走査する．

•public void grayscaleToBlackWhite(int[] rgb, byte[] yuv420sp,

2）pix 走査: ImageHeight 方向の黒色素子を探す．

int width, int height)3）ImageHeight 方向に minPixels 以上黒色の素子がLineTracker クラスは，Bluetooth デバイスの MAC

連続した場合はテープ発見とする．

アドレス取得・通信を行い，ライントレースアルゴ

4）テープ発見とならなかった場合は ImageWidth 方

リズムを呼び出す主幹となるクラスである．図-24

向に 50 ピクセルずれ pix 走査を繰返す．テープをに LineTracker ク ラ ス の ダ イ ア グ ラ ム を 示 す ．

発見した場合は，ビット演算処理を行い発見された

Preview クラスはカメラの開始や携帯端末の画面のテープを緑色表示する．

大きさを扱うクラスである．図-25 に Preview クラスのダイアグラムを示す．

図-26
図-24

DrawOnTop クラスのダイアグラム

LineTracker クラスのダイアグラム

図-25 Preview クラスのダイアグラム

図-27 FindTapeCenter のフローチャート

−93−

矢野

昌平 ・ Prawet UEATRONGCHIT

図-29 ターゲットデバイスの設定

50 ピクセル毎に pix 走査

黒色ピクセルかを判定

テープの始まりを発見
tmpStart に座標値を代入

図-30 携帯端末で LineTracker の起動

テープが続く限り tmpEnd に座標値を代入

pix 走査

テープ幅が mixPixels 以上の場合はテープ発見とする．

末設定で開発者モードへの変更が必要となる．携帯端末にて，[設定]→[アプリケーション]にて[提供元不明のアプリ]にチェックする．[設定]→[ アプリケーション]→[開発]にて[デバッグモード]，[スリープモードにしない]と[擬似ロケーションを許可]にチェックを入れる必要がある．携帯端末での実行は，メニ ュ ー バ ー よ り [Run]→[Run Configurations] のテープ発見場所を緑色として表示[Target]タグより，ターゲットとなるデバイスとして[Active devices]を選択すればよい(図-29)．図-30に携帯端末上で LineTracker 起動した様子を示す．
４．5 Arduino のソフトウェア
Arduino は，高価なロボット制御用デバイスの代テープ中心位置を返すわりとして開発されてきた．モータ制御のためのPWM 出力，汎用性の高い I/O ピンを多く持つなど，

図-28 FindTapeCenter メソッド

ロボットの制御に適している．Arduino のプログラ
ミ ングは C 言 語で 書かれ てい る ．PWM 制御 や

図-28 に画面の走査方法とソースコードを示す．

Bluetooth 通信のライブラリが提供されており，ラ携帯端末での動作確認
携帯端末において Android アプリを実行するためイブラリ関数を使うことでコーディングの労力を節には，パソコンと携帯端末とをつなぐ USB ケーブ
ル，および PC 側に携帯端末のドライバソフトがイドを含む統合開発環境が用意されている．統合開発
環 境 の 導 入 に は ， Arduino の 開 発 サ イ トンストールされている必要がある．ドライバソフト(http://arduino.cc/en/Main/Software) よ り Arduino IDE

４．４

約できる．また，IC へのプログラムのダウンローは機種毎に異なる為，製造メーカのサイトよりダウ(最新版 Arduino 1.0.6 2014/09/30 現在)をダウンローンロードしインストールが必要である．機種によっては USB 接続ドライバの他，ABD(Android Debugドする．ダウンロード終了後にインストールを行う．

Bridge)ドライバが必要な場合がある．また，携帯端(http://www.scs.ryerson.ca/mfiala/robotics_club/robot_pr

次に，Arduino コードを下記サイトより取得する．

−94−

携帯端末を用いた線追跡機械のPID姿勢制御手法に関する検討

Serial.begin の括弧内の数値を 57600 から 119200 へと書き直す必要がある．arduino_contorol では，図32 に示す回路図を想定しプログラムされている．
図-33 は完成したロボットの写真である．

図-31 MeetAndroid ライブラリの追加

図-33 完成したロボットの写真

５．PID 制御アルゴリズム

図-32 ライントレースロボット回路

ojects/Radu_android_robot/arduino_control.zip)

ライントレースロボットには PID 制御が用いられarduino_control.zip を解凍後， Arduino IDE を起動ている．PID 制御は，フィードバック制御の一種でしメニューバーより [File] → [Open] arduino_control

あり，入力値𝑢𝑢(𝑡𝑡)の制御を出力値と目標値との偏差フォルダ内の [arduino_control.pde] を選択する．

𝑒𝑒(𝑡𝑡)，その積分，および微分の 3 つの要素によってarduino_control には Android 端末との Bluetooth 通信が用いられている，MeetAndroid ライブラリであ行う方法であり，式 (1) で定義される．

る MeetAndroid_4.zip を下記サイトより取得する．

𝑡𝑡

𝑢𝑢(𝑡𝑡) = 𝐾𝐾𝑝𝑝 𝑒𝑒(𝑡𝑡) + 𝐾𝐾𝑖𝑖 ∫0 𝑒𝑒(𝜏𝜏)𝑑𝑑𝑑𝑑 + 𝐾𝐾𝑑𝑑

http://amarino.googlecode.com/files/MeetAndroid_4.zip
Arduino IDE のメニューバーより [Sketch] → [Import𝑑𝑑𝑑𝑑𝑑𝑑𝑒𝑒(𝑡𝑡)(1)Library…]→[Add Library…]とし，MeetAndroid_4.zip

PID 制御を離散時間で実現する為，DrawOnTop.java

ファイルを選択する．これにより MeetAndroid ライ

ファイル内の onDraw クラス内 (82 行目以降) にコーブラリが追加される（図-31）．

ドが記述されている．以下に PID 制御コードの各行

メニューバーの下のチェックマークのボタンを押を式 (2) から (6) として示す．

すことで，スケッチ（Arduino ではコードをスケッチと呼ぶ）のコンパイルとリンクがなされる．

proportional = tapeCenter - mImageHeight/2;(2)

Arduino ではこの処理を「Verify」と呼ぶ．また，

integral = integral + proportional;(3)

USB ケーブルで Arudino と PC を接続し，その隣にderivative = proportional - last_proportional;(4)ある右矢印のボタンを押すことでプログラムのダウ

last_proportional = proportional;(5)

ンロードを行う．Arduino ではこの処理を「Upload」

int lineError = (int) (proportional * Kp + integral * Ki +と呼ぶ．USB 接続は，PC 側でシリアル接続と認識

derivative * Kd);

(6)

されそのポート番号は PC 環境によって異なるため，メニューバーの [Tools] → [Serial Port] より適切なポートを選択する必要がある．

式(2)において，tapeCenter は FindTape メソッドがカメライメージよりライン認識を行ったテープ中心

Bluetooth 通信に用いる通信速度として 119200bps
を 用 い る ． そ の た め ， ス ケ ッ チ の 31 行 目

位置の横座標値を示す．mImageHeight は端末画面横幅を示し，2 で割ることにより画面中心座標と−95−

矢野昌平 ・ Prawet UEATRONGCHITしないため，試行錯誤的に最適値を探すものとなる．
そこで，proportional の値に注目した状態推移手法を含め次の 3 手法を提案する．
手法1）proportional変数の値が一定値以下であった
場合はPID制御アルゴリズムへの入力を0とする．
手法2）pix走査範囲を制限する．
手法3）携帯解像度を低くする．
手法2) と手法3) は携帯端末の処理速度を向上させる効果があり，提案手法の有効性については2014
年コンテストにおいて確認を行った．

６．まとめ
図‐34 proportional 値の決定

携帯端末のカメラ映像を使って，コース上に書かれたラインをトレースするライントレースロボット

なる．式(2)より，比例値 proportional には画面中心を作成し，タイへの学生海外派遣研修においてタイとテープ中心との差が代入される（図-34）．式(3)日工業大学の学生との2013年および2014年のコンテ

は積分値 integral を決定する．integral に，前回からストに活用した．PC上にAndroidとArduinoの開発環の integral と現在の proportional の変数値を加算し代境の構築について解説を行い，ロボットの作成方法

入すると積分を示す．式 (4) ， (5) は微分値 derivative を決定する．現在の差を示す proportional と，と制御アルゴリズムについて解説と検討を行った．
PID制御は制御方法として一般的であり広く用いら

前回の derivative の変数値を保持する last_ derivative

れている．しかし離散信号でPID制御を実現し，ゲとの差を derivative に代入することで微分を示す．

インを調整しその振る舞いを経験的に理解できる機式 (5) において，現在の derivative の変数値を last_会は少ない考えられる．本論文で作成したライトレ

derivative に代入し次のループの準備をする．

ースロボットは電子工学，アルゴリズム，制御工学

式 (6) に お い て ， proportional ， integral ， deri-の知識を深めるのに有用と考えられる．

vative の各変数に比例ゲインを示す Kp，積分ゲインを示す Ki，微分ゲインを示す Kd との乗算を行い，総和を求めることで出力値を算出する．出力値は謝辞：AFR,GLMDコンテストを開催・実施するにlineError に代入される．次に，lineError の変数値をあたり，趣旨を理解し快く参加・協力して頂いた，用いたモータスピードの制御アルゴリズムについて学生をはじめ国際際交流推進センター長の吉野正信述べる．LineError の変数値が０以下の場合は，図-先生，中村将先生，皆川正寛先生，井山撤郎先生を34 で示される様に携帯画面の中心より左側にテー始め，多くの方々のご協力を頂きました．本論文のプのある可能性が高い．ロボットを左に回転させるプロジェクトに平成25,26年の長岡高専学長調裁量ため，左のモータを減速する．同様に lineError の変経費を頂きました．心より感謝申し上げます．

数値が 0 以上の場合は，右のモータを減速する．
lineError の変数値が 0 であった場合は，ライン上を参考文献

ロボットが進んでいることを意味し，左右のモータ

1) S. Yano, Y. Tokoi, T. Kabasawa, M. Yamazaki, H. Miura,

スピードは最高速度の状態となる． ゲインを示す“Examination of ICT education for Embedded Software

Kp，Ki，Kp の各変数は，DrawOnTop.java ファイルengineers”, Proceedings of the ISATE 2013, p-17, 2013.

内の DrawOnTop クラス内 (32 行目以降) に int 型の2) M.Yamazaki, S.Yano and S.Nakamura “cooperativeeducational projects between NIT-Nagaoka and higher

変数として記述されている．使い勝手の問題から倍education institutions in ASIA”, Proceedings of the ISATE

精度浮動少数型である double 型で Kp，Ki，Kp を宣言するよう修正を行う．各変数には初期ゲイン値として Kp=1，Ki＝2，Kd=0 が与えられている．PID

2014, p-8, 2014.
3) http://www.ti.com/lit/ds/symlink/sn754410 (2014.10 参照)

制御に最適なゲイン値を与える代数的な方法は存在−96−(2014. 10. 6 受付)