Arduinoを使ったライントレースカーの実装

「Arduinoを使ったライントレースカーの実装」の編集履歴(バックアップ)一覧はこちら

Arduinoを使ったライントレースカーの実装」(2013/08/12 (月) 21:23:21) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

2013年8月1日作成 #ref(fcc85a571b8eec5fdd7b6ddb9316fa02.jpeg) *はじめに 前回Arduinoを用いてラジコンを作成したので今回はセンサーにより自立走行するライントレースカーを作成しようと思う。また、前回のノウハウを生かして、無線によりライントレースカーのパラメーターを変更できるようにする。一機目はライントレースカーに関するノウハウが全くないので、とりあえず動くものを作る事が目標になる。ソフト側に関しては無線で操作を可能にする. *ライントレースカーの機能 -黒のビニールテープをコースとし、コースをトレースして走行 -走行速度やトレーススタート, 停止をPCから無線で操作可能 -センサーのしきい値等のセッティングをPCから無線で変更可能 -センサーから得られるデータを無線によりリアルタイムにPCに表示可能 *実装の方針 -ビニールテープの太さの黒い線を認識できるようにする -フォトリフレクタを用いて線を認識する -フォトダイオードは4つ利用する -&bold(){比例制御}により制御を行い、パラメーターを変更する事で制御量を調整する -コマンドを設計する事で、パラメーターの変更を可能にする -車体側からセンサーデータをPCに送信し、表示を行う -コントローラー側はJavaにより実装を行う *使用した部品 **マイコン部分 -Arduino Uno -[[Arduino モーターシールド Rev3 >http://www.amazon.co.jp/gp/product/B0081XGH0A/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-7&pf_rd_r=0HF31E3B4PW58XH9KNSV&pf_rd_t=101&pf_rd_p=463376816&pf_rd_i=489986]] -Arduino XBeeシールド -XBee Series2 × 2 **センサー -[[フォトリフレクタ(反射タイプ)LBR-127HLD>http://akizukidenshi.com/catalog/g/gP-04519/]] -20KΩ抵抗 × 4 -200Ω抵抗 × 4 -[[ユニバーサル基盤 72×48>http://akizukidenshi.com/catalog/g/gP-03229]] **シャーシ -タミヤユニバーサルプラスチック基盤 × 3 -[[タミヤダブルギヤボックス>http://www.tamiya.com/japan/products/70168double_gearbox/index.htm]] -ナロータイヤセット 58mm径 (70145) -ボールキャスター(70144) *ハード部分の実装 車体はArduino Tankと同様に、タミヤ工作キットを組み合わせ作成した。初めに以下の写真のように作成したが、旋回の際に車輪が空転してしまうため、後ろにボードを追加し、重心を後ろに持って行く事で対応した。なお、マイコン部分はArduino UNOとモーターシールドR3とXBeeシールドを3段重ねにして利用している。バッテリーはエネループを利用した際にもマイコンに5V以上供給できるように、今回は単3電池を6本利用している。 #ref(ライントレースカー試作1.jpeg) これで一応、空転しなくなった。車体の重心に関しては再度調整する必要があると思う。 #ref(ライントレースカー完成版.jpeg) **ラインセンサー #ref(ライントレースセンサー1.jpeg) 黒いセンサーが二つのセンサーの間に入った際に、両方のセンサーがぎりぎりで反応するように、センサー位置を調整した。このあたりは、線の認識方法と合わせて検討する必要がある。 *プログラム **黒線の位置判定 黒線の判定は、センサーの閾値を設定し、センサーの反応している個数と位置に応じて位置を出力する仕組みになっている。 **PC側プログラム PC側のプログラムからスタート, ストップやスピード、センサーの閾値を無線で設定する事が出来る。 #ref(ライントレースカーコントローラー.png) 画面例 上記の画面のように様々な設定をPCから無線で行う事が出来る。また、車体の現在の設定やセンサーデータをリアルタイムに表示する事が出来る。 *動作確認 *まとめ *次なる目標 -現在はArduino Uno + モーターシールド + XBeeシールドの3階建てだが、これを1枚の基盤上に実装したい -Arduinoベースの基盤を自分で作成したい(ユニバーサル基盤上) -車体のバランスを考え高速走行を可能にしたい
2013年8月1日作成 #ref(fcc85a571b8eec5fdd7b6ddb9316fa02.jpeg) *はじめに 前回Arduinoを用いてラジコンを作成したので今回はセンサーにより自立走行するライントレースカーを作成しようと思う。また、前回のノウハウを生かして、無線によりライントレースカーのパラメーターを変更できるようにする。一機目はライントレースカーに関するノウハウが全くないので、とりあえず動くものを作る事が目標になる。ソフト側に関しては無線で操作を可能にする. *ライントレースカーの機能 -黒のビニールテープをコースとし、コースをトレースして走行 -走行速度やトレーススタート, 停止をPCから無線で操作可能 -センサーのしきい値等のセッティングをPCから無線で変更可能 -センサーから得られるデータを無線によりリアルタイムにPCに表示可能 *実装の方針 -ビニールテープの太さの黒い線を認識できるようにする -フォトリフレクタを用いて線を認識する -フォトダイオードは4つ利用する -&bold(){比例制御}により制御を行い、パラメーターを変更する事で制御量を調整する -コマンドを設計する事で、パラメーターの変更を可能にする -車体側からセンサーデータをPCに送信し、表示を行う -コントローラー側はJavaにより実装を行う *使用した部品 **マイコン部分 -Arduino Uno -[[Arduino モーターシールド Rev3 >http://www.amazon.co.jp/gp/product/B0081XGH0A/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=AN1VRQENFRJN5&pf_rd_s=center-7&pf_rd_r=0HF31E3B4PW58XH9KNSV&pf_rd_t=101&pf_rd_p=463376816&pf_rd_i=489986]] -Arduino XBeeシールド -XBee Series2 × 2 **センサー -[[フォトリフレクタ(反射タイプ)LBR-127HLD>http://akizukidenshi.com/catalog/g/gP-04519/]] -20KΩ抵抗 × 4 -200Ω抵抗 × 4 -[[ユニバーサル基盤 72×48>http://akizukidenshi.com/catalog/g/gP-03229]] **シャーシ -タミヤユニバーサルプラスチック基盤 × 3 -[[タミヤダブルギヤボックス>http://www.tamiya.com/japan/products/70168double_gearbox/index.htm]] -ナロータイヤセット 58mm径 (70145) -ボールキャスター(70144) *ハード部分の実装 車体はArduino Tankと同様に、タミヤ工作キットを組み合わせ作成した。初めに以下の写真のように作成したが、旋回の際に車輪が空転してしまうため、後ろにボードを追加し、重心を後ろに持って行く事で対応した。なお、マイコン部分はArduino UNOとモーターシールドR3とXBeeシールドを3段重ねにして利用している。バッテリーはエネループを利用した際にもマイコンに5V以上供給できるように、今回は単3電池を6本利用している。 #ref(ライントレースカー試作1.jpeg) これで一応、空転しなくなった。車体の重心に関しては再度調整する必要があると思う。 #ref(ライントレースカー完成版.jpeg) **ラインセンサー #ref(ライントレースセンサー1.jpeg) 黒いセンサーが二つのセンサーの間に入った際に、両方のセンサーがぎりぎりで反応するように、センサー位置を調整した。このあたりは、線の認識方法と合わせて検討する必要がある。 *プログラム **黒線の位置判定 黒線の判定は、センサーの閾値を設定し、センサーの反応している個数と位置に応じて位置を出力する仕組みになっている。 **PC側プログラム PC側のプログラムからスタート, ストップやスピード、センサーの閾値を無線で設定する事が出来る。 #ref(ライントレースカーコントローラー.png) 画面例 上記の画面のように様々な設定をPCから無線で行う事が出来る。また、車体の現在の設定やセンサーデータをリアルタイムに表示する事が出来る。 *動作確認 #ref(ライントレースカーコース.jpeg) 以上のようなコースを作成し、線上を走行できている事を確認した。スピードを上げすぎると振動が収まらなくなり脱線してしまう。また、少し急なカーブの際にオーバーシュートしてしまう場合があった。 *今回わかった事 -車体は駆動輪を中心に旋回する --駆動輪上に重心がないと旋回の際に車輪が空転してしまう --回転軸より前に重量物があると回転の際の抵抗につながる *次なる目標 -現在はArduino Uno + モーターシールド + XBeeシールドの3階建てだが、これを1枚の基盤上に実装したい -Arduinoベースの基盤を自分で作成したい(ユニバーサル基盤上) -車体のバランスを考え高速走行を可能にしたい -より細かく認識ができるセンサーを作りたい

表示オプション

横に並べて表示:
変化行の前後のみ表示: