プロジェクト報告書 Project Report 提出日(Date) 2011/01/18 モノを動かすソフトウェアプロジェクト Applied Embedded System b1009030 小牧真幸 1. 背景 Mayuki Komaki れた. 飛行物体にはラジコンヘリを採用し, アームの追加, 自 組み込みシステムを使ってモノを動かすプロジェクトである. 動着陸, 自律飛行, 障害物の自動回避を実装することを目標 組み込みシステムとは, 例えば家電製品などに内蔵される, 特 定の機能を実現するためのコンピュータシステムである. プロジェクト人数は 10 名であり, 最大で 2 つの班に分かれて とした. 3. 課題解決のプロセスとその結果 3.1 電気自動車班前期活動内容 活動出来ると考えた. 製作物を検討したところ, 大きく分けて飛 まず具体的な仕様の検討を行い, 筐体, 操作インターフェー 行物体案と自動車案が出された. 前者は, 人間が入り込めな ス, 制御システム, 駆動するモーター, 電源が必要であるという いような場所に無人で調査が出来るように遠隔操作のもの, ま 結果に至った. その後, これらの実装に向けてそれぞれ担当 た, モノの運搬ができるものを想定していた. 後者は, まず人 者を決めて作業した. 間が乗車出来る大きさを想定しており, 自動車の基本的な動き 筐体の設計には, 比較的低コストで仕様を満たす強度を実現 を実装した上で, 電気エネルギーを効率的に使う機能を検討し できるという理由で, (株)NIC オートテックの製品であるALFA た. 回生機能と呼ばれるもので, 自動車の制動時に運動エネ FRAMESYSTEM を使用することに決定した. ALFA FRAME ルギーを電気エネルギーとして回収する. SYSTEM を構成する部品にはレールが付いている. これにより この 2 つの案から, プロジェクトメンバーの希望を元に電気自 動車班 6 名と, ラジコンヘリ班 4 名に分かれ活動した. 2. 課題の設定と到達目標 簡単なネジ止めで自由に形を構成できるという特徴があり, フレ ームの設計担当者はその設計を行った. 前輪可動部分は, フレームにあわせたものを新規設計した. 電気自動車班では, 人間が乗車出来る自動車を作る背景 可動部分には多くの自動車の前輪機構に使われているラック から, 電気エネルギーの利用効率が高いという付加価値を &ピニオン機構を採用した. しかし, ハンドル操作をソフトウェ 加えたソフトウェア制御の1人乗り電気自動車を製作する. アによる電子制御で行うため, ステアリングシャフトと前輪可動 その本体の製作とソフトウェアによる安全で効率的な制御 部分を直接繋がなかったという点で従来の自動車と比べて特殊 を課題とする. な構造となった. 電子制御によるハンドル操作は,ゲームのコン トローラー内のボリュームの値をマイコンで読み取り, その値に 応じて前輪可動部分を動かすモーターを回転させるという設計 にした. 図 1:回生機能 制御システムに使用するマイコンには, 電子制御に適した ラジコンヘリ班では, 動かずして物を運んでくる物体の作成 FPGA ボードであるSUZAKU-Vを選択した. 制御システムの担 を目標として活動を開始した. イメージとしては空を飛ぶ UFO 当者はSUZAKU-V を利用した組み込みシステム開発のための キャッチャーの作成である. 陸を動く物体は障害物の回避に横 勉強を行い, 開発環境の基本的な使い方や割り込み処理の仕 移動のみであり, 平面の移動であるため時間がかかる. しかし 組み, 実装方法について学んだ. 飛行物体は障害物を縦, 横の移動と立体で移動するために回 駆動部分のモーターには, ブラシレスモーターを使うこととな 避が容易であり, 目的地まで陸移動よりも早く到達できるのであ った. ブラシレスモーターは従来のブラシモーターと比べて寿 る. また,今までの本プロジェクトでは自動車など陸地を移動す 命が長い, メンテナンスフリーであるといったメリットがあるが, る物体の作成を行っていた. そのため今回のプロジェクトでは, 直流で回転するブラシモーターと比べて制御が難しいといった 新しく飛行制御に挑戦するという観点からも飛行物体が起用さ 問題があり, モーター担当者はこの制御方法と仕組みについて 調査を行い, 資料を作成した. 回転子は永久磁石でできており, その回転子を取り囲むよう 前輪担当者は前期に引き続き, 発注に向けて具体的な設計 図を作成し部品の購入と加工の発注を行った. しかし, 前輪可 に三相のコイルが設置されている. このコイルの磁極が回転す 動部分に利用した部品の一部に仕様の見落としがあり, 仕様 ることにより回転軸も回転する仕組みである. これには, 三層の 通りに稼働する機構を実現することができなかった. 後輪の本 コイルを制御する必要があるため信号の送り方の勉強を行った. 格的な設計は後期から開始し,前輪と同じく具体的な設計図を このコイルの磁極を回転させるには、回路に設置されている 作成して部品の購入と加工の発注を行った. 発注した部品を MOS-FETトランジスタを一定の法則にしたがって切り替える必 用いて仕様通りの後輪機構を実現することができた. 要がある. MOS-FET とは電界効果トランジスタの一種で,N チ SUZAKU-V は, 前期に引き続き勉強を継続し, モーターの ャンネルタイプとP チャンネルタイプがある. 基本的に型番が 制御に利用するタイマ割り込みを利用したサンプルプログラム 2SK で始まるものはN チャンネルタイプ,2SJ で始まるものはP を製作した. その後, 回路の進度に合わせてモーターの回転 チャンネルタイプとなっている. この2 つのタイプの違いは, ゲ に利用する三相交流の制御プログラム, 最終発表会用のデモ ートの電圧による動作の違いである. 動作を図解したものを以 プログラム, AD 変換用プログラム, モーターのホールIC読み 下に示す. 込みプログラムの実装を行った. 回路は担当教員の準備した回路図を利用して作成した. 回 路に使う部品が納品されてから, 回路図をもとに配置図を作成 し, 図に従ってモーターを動かすために必要最低限のテスト回 路を実装し, モーターを本当に回転させることができるのか確 認を行った. UZAKU-V 担当者と連携しながら担当教員のアド バイスを得て,最終的にモーターを動かす事に成功した. 図 3: 三層交流のスイッチングパターン 3.2 電気自動車班後期活動内容 後期はより具体的な実装に向けて, フレーム, 前輪後輪, SUZAKU-V, 回路の4 つのグループに再編成して活動を行っ た. フレーム担当者は夏休み中に発注したフレームを組み立て, 図 5: 回路配置図 ハンドルの位置などの細かい修正やハンドブレーキの追加を行 い, フレームを完成させた. また, インバータ部分に使っているMOS-FET が発熱するた め, ヒートシンクを作成した. 最終発表後, ホールIC の読み込 み部分とボリューム読み込み部分のAD コンバーター周りの配 線を行った. 3.3 ラジコンヘリ班通年活動内容 今回のプロジェクトではラジコンヘリを使用した飛行物体を制 御する. ラジコンヘリを使用していく前提条件のもと, 具体的な ラジコンヘリの動作及び制御について決定した. 制御は目的地 への自動着陸及び障害物の回避を課題と設定して活動を開始 図 4: フレーム設計図 した. しかし, 障害物の回避には画像処理だけでは障害物とラ ジコンヘリとの距離感を判別する事ができず, 障害物を回避す 能となった. ラジコンヘリのカメラを用いて着陸場所の判別が可 ることができない. そのため奥行を検出するためにセンサを導 能になったことで, 自動的に着陸するフィードバックプログラム 入しなければならない. この問題は自動着陸のみを課題とする を作成できるようになった. しかし, このプログラムは一度発見し ことが決定したために検討のみで終了した.自動着陸について た着陸場所を見失うと一定方向へと永遠に進み続ける, 極端に は目的地まで手動操作であり, 着地のみを自動とする自律制 明るい場所や暗い場所などの環境により画像処理が動作せず, 御とした. ラジコンヘリにはソフトウェア開発キットがラジコンヘリ フィードバックプログラムが動作しない,着陸場所へと着陸しない のホームページ上で公開されている. このソフトウェア開発キッ 事があった. ラジコンヘリ自体の位置を計算に入れていないた トは C 言語及び C++ 言語を用いて記述されている. このソフト め画像処理が誤作動を起こした場合, 着陸場所とは見当違い ウェア開発キットを使用することによってコンピュータのキーボー の方向へと進行するなど問題点が挙げられる. これらの問題を ド上で, ラジコンヘリの操作することが可能になった. また, ラジ 解決するプログラムが簡易最適制御を用いたプログラムである. コンヘリのソフトウェア開発キットを解析することによって, ラジコ ンヘリ本体についている前方及び腹部のカメラの表示切り替え や, ラジコンヘリ本体についている 4 つのプロペラを動かすサ ーボモータの出力変更が可能になった. サーボモータの出力 を変更できるようになったことで, ラジコンヘリの速度の調整が 可能になった. その後, ラジコンヘリをコンピュータ上で操作し ていく中で制御するプログラムと一定時間ごとに命令を指示し て操作, 制御する簡単なプログラムを作成した. このプログラム はオープンループ制御と呼ばれるもので一方的に命令を送っ ているだけのプログラムである.自動着陸を行うには着陸地点で ある赤丸の判別が必要不可欠である. そのために画像処理を 行う必要がある. 画像処理では, ライブラリである OpenCV を 用いた. OpenCV を用いた画像処理では最初にラジコンヘリの 図7:非線形多変量解析式 代替装置として web カメラを使用して形状判別のプログラムを ラジコンヘリが進む距離, 傾き, 速度を物理モデルのデータと 作成した.その後, 自動着陸に用いる着陸地点の色のみを認識 して, 表示画面と実際の距離の違いをデータとして取得した. するプログラムを作成した. そして 2 つのプログラムを統合し着 そして取得した物理モデルのデータから次の単位時間あたりの 陸場所を判別するプログラムを作成した. ラジコンヘリのソフトウ ラジコンヘリ自体の現在位置を予測して行動することで先に挙 ェア開発キットは DirectX を用いて動作している. 画像処理を げた画像処理のみのフィードバックプログラムの問題点を解決 行うためにはラジコンヘリのソフトウェア開発キットを OpenCV で するだけでなく, 着陸場所から外れて行っても着陸場所へと再 動作させる必要があった. ソフトウェア開発キットを OpenCV 上 度進行しなおすことが可能となった. これを行う為にラジコンヘ で動作させるために DirectX から一部書き換えた. 現在は画 リが進む距離, 傾き, 速度を物理モデルのデータとして, 表示 像表示を OpenCV, キーボードによる機体制御を DirectX で行 画面と実際の距離の違いをデータとして取得した. そして取得 っている. 書き換えたソフトウェア開発キット上では画面の表示 した物理モデルのデータから次の単位時間あたりのラジコンヘ を行う処理が存在しないため追加しなければならない. そのた リ自体の現在位置を予測して行動することで先に挙げた画像処 め, OpenCV 上でラジコンヘリのカメラをコンピュータ上で表示 理のみのフィードバックプログラムの問題点を解決するだけでな する画面を作成した. コンピュータ上で画面の表示を行った後, く, 着陸場所から外れて行っても着陸場所へと再度進行しなお web カメラを用いて行った画像処理をラジコンヘリのカメラを用 すことが可能となった. いて行った. これによりラジコンヘリのカメラを用いた着陸場所 4.今後の課題 の判別, コンピュータ上の表示画面で自律飛行を行った場合 4.1 電気自動車 や自律飛行中であることを示す為に使用する文字の描画が可 電気自動車班では, ブラシレスモーターを使用して電気自 動車を基本的な動作をさせることを目標として活動してきた. 後 4.2 ラジコンヘリ班 輪部分の動作まではできたが, 電気自動車を完全に動作させ ラジコンヘリでの障害物の回避が挙げられる. 今後, 新たな ることが出来なかった. そこで, 今後の課題と展望を進歩状況 センサを実装することで解決していく見込みである. ラジコンヘ の連絡と確認, 電気自動車の基本的動作実現のための課題, リで前方を見ることができるカメラは 1 つであるため, 二次元上 今後考えられる機能を分けて以下に示す.進歩状況の連絡と確 での認識しか出来ない. しかし, 物体との距離を測るセンサを 認メンバーそれぞれの進歩状況を確認する配慮が足りなかった. 追加することで解決する. 次に, ラジコンヘリのエラーである. そのために, 作業にずれが出てきてしまい, 連携する必要があ ソフトウェア開発キットにはバグ及びエラーが複数存在する. カ る担当者が活動できない状況に陥ったりしてしまった. 特に, メラの切り替えにはバグが存在している. これはカメラの切り替 ハードウェアとソフトウェア担当者間の連絡が足りず作業に支障 えを行うと稀にラジコンヘリが停止してしまうバグである. このバ が出た. 作業を効率よく進めるためには自分の担当部分だけを グによって腹部のカメラを初期起動設定とすると起動時にもエラ 把握するだけではなく, 自分の担当する部分と関係のある担当 ーが発生し停止してしまうのである. このバグは公式ホームペ 者の進歩状況を把握しなければならない. そのため, 自分と密 ージ上で宣言されている. また, ソフトウェア開発キットを 接に関係のある担当者とは常に連絡を取り合い, 進歩状況を DirectX 上から OpenCV 上へと仕様を変更したことによって稀に 確認する必要がある. ラジコンヘリの正常な起動を行うことが出来ない. これはラジコ 4.1.1電気自動車の基本的動作実現のための課題 ンヘリとコンピュータ間の通信エラーもしくはソフトウェア開発キ 筐体は, 後輪部は最終的に完成したが前輪部分の部品であ ット上でエラーが存在しているためであると推測される. そのた るナックルアームの許容範囲が想定していたよりも大きかったた め, これらを解決するにはソフトウェア開発キットの記述を改め めに, 車体を直立させることができなかった. また, ラックギアを る必要がある. 現在判明している課題として, OpenCV 上のメモ 発注した部品で固定することができなかった. そのため, 前輪 リの開放が出来ていないことが判明している. これによってコン 部分の機構を完成させることができなかった. 今後, ナックルア ピュータ上にメモリが蓄積され続け最終的にはラジコンヘリの操 ームを固定する方法を考え, 車体を直立させること,ラックギアを 作のみならずラジコンヘリを操作しているコンピュータまでも停 固定し前輪部分の機構を完成させることが課題である. 止する. これを解決する為には OpenCV で記述しているソース ソフトウェアでは, ハンドル制御機構を完成させることである. コードからメモリの確保と開放の処理について変更を加えること ハンドルを制御するためボリュームの読み取りおよび, 制御プロ である. グラムの実装が課題である. 参考文献 4.1.2今後実装可能と思われる機能 [1]NIC オートテック「アルファフレーム:アルミ押し出し 電気自動車班はこの章の最初に述べたように, ブラシレスモ 材」http://www.nic-inc.co.jp/alfaframe/ 2011 年 9 月 15 日 ーターを使用して電気自動車に基本的な動作をさせることを目 [2] Herbert Schildt. 独習 C++ 標として活動してきたが, 電気自動車の基本的な動作だけでは [3] 谷尻豊寿. Essential OpenCV programming. 株式会社 なく, 付加価値をいくつか付けることができる. その理由の1 つ カットシステム. 2009 に, ステアリングと前輪が直接リンクする機構ではないことが挙 [4] ARDRONE open API platform. https://projects. げられる.直接リンクしていないため, ステアリングを回すことなく ardrone. org/OpenCV.jp http://opencv.jp/ 前輪の切れ角を調整することができるようになっている. つまり, opencv.jp - OpenCV - 1.1 pre リファレンス マニュアル これは電気自動車の基本的な動作を全てソフトウェアで制御し (日本語訳) ていると言える. そのため自動運転機能の実装や, 画像処理し http://opencv.jp/opencv-1.1.0/document/index.html コンピュータが判断した命令の介入がしやすい環境である. 例 えば, Web カメラから取り込んだ画像から, 障害物を認知し, それを自動で避けるような機能が考えられる. 以上のようなこと を踏まえ, 今後実装できる機能が増えると予想できる. 第 4 版. 翔泳社. 2010
© Copyright 2025 Paperzz