平成28年度卒業研究紹介「二輪走行体における自己位置測定ライブラリの作成」

発表者:嶋村 瞭佑 (情報科学科)/指導教員: 安武 芳紘 准教授

 我々の研究室ではETソフトウェアデザインロボットコンテスト(ETロボコン)に参加している。 ETロボコンのコースを攻略するため走行体の位置を測定し使用している。 自己位置測定は、タイヤのモータのエンコーダ値と走行体の幅とタイヤの直径を利用し走行体の位置と向きを計算している。

Fig.1
図1: 走行体の自己位置測定

 本研究の目的は自己位置測定のプログラムについて過去の設計で起きた問題を洗い出し、今後の設計の際に同じ問題が起こらないようにするため、二輪走行体における自己位置測定の機能をライブラリ化すること、また今後の開発をより円滑にするため座標を使用する利便性のある関数を用意することである。

 まず、過去の設計に存在する問題点を挙げるため、2015年度と2016年度の自己位置測定プログラムを分析した。 一つ目は、座標に関連がないクラスが座標を保持していることである。 この問題は、座標を使用するクラスがどこから値を取得するのかが不明瞭になる。 二つ目は、座標計算に必要なモータのエンコーダ値をOSが推奨するAPIから直接取得していることである。 この問題は、APIに依存した設計であるため、設計の際にAPIの更新などで大きく修正が必要になってしまう。

 一つ目の問題を解決するために座標を座標計算クラスの属性として保持させることとした。 二つ目の問題については、モータ制御クラスをライブラリへ追加し、モータから取得したエンコーダ値を加工して返す関数を用意し改善した。

 さらに、上で話題にする関数を二つ用意した。 一つ目は、座標や走行体の向きのずれを修正するため関数である。 二つ目は、現在の走行体の位置が設定した範囲内か範囲外かを判別する関数である。

 評価について、今までの設計とこのライブラリを導入した設計を比較して行った。 このライブラリを導入した設計では、座標に関係する属性や操作はすべて座標計算クラスに存在するため、座標に関する情報が明瞭になった。 また、モータ制御クラスにおいてのみAPIを使用しているので、APIの依存が少なくなった。 ずれ補正の関数の評価として、ETロボコン2016のLコースを使用し、走行体の初期位置による座標のずれをLコースの初めの直線で修正できるかを検証し、コースに沿った座標になるよう修正することができた。 座標による範囲判別の関数の評価として、実装の際にどう変化したのかを比較し評価を行った。 コードの量ではほとんど差はみられなかったが、関数の仕様を理解すれば簡単に座標の範囲を条件として利用できるようになった。

 この卒業研究は平成28年度情報科学部優秀卒業研究に選出されました。

(2017/02/08 掲載。記載内容は執筆当時のものです)