2014a/Member/bgpat/Mission2
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#contents
*メンバー [#j7070d75]
-[[mame>2014a/Member/mame/Mission2]]
-[[dai>2014a/Member/dai/Mission2]]
-[[tadanobo>2014a/Member/tadanobo/Mission2]]
-bgpat
*課題について [#c46329ec]
**概要 [#h82d3cef]
#ref(2014a/Mission2/2014a-mission2.png)
A・B・Cに置いてある紙コップを同じ数字の紙コップに重ねる。
A・B・Cには1・2・3が書かれた紙コップを置き、配置はくじで決め...
詳しくは[[課題2のページ>2014a/Mission2]]を見てください。
*ロボットの制作 [#oce76dd3]
方向性が定まらず時間がないと焦っていたときに、[[tadanobo>...
#ref(2014a/Member/bgpat/Mission2/original.jpg,100%)
これをベースに全員で改良しました。
以下で私が改良に関わった部分の解説をしたいと思います。
それ以外の部分は[[他のメンバー>#j7070d75]]のページをご覧...
**アーム [#e6528912]
紙コップを掴むためのアームです。
本体に近いモーターを回してアーム全体を下ろしてからアーム...
下ろすときは本体側のモーターでアームを下ろしてからアーム...
#ref(2014a/Member/bgpat/Mission2/arm1.jpg,25%)
まず、紙コップを判別するために光センサーを付けました。
紙コップには色を塗っていいことになっているので、
油性ペンと鉛筆で濃さを調節した紙コップを3つ作り、
判別できるようにしました。
次に掴む部分にガイドを取り付けました。
理由は2つあり、1つ目は位置のズレによる取りこぼしを少な...
2つ目は紙コップの判別を正確に行うためです。
光センサーを使って紙コップの明るさを測定しますが、測る位...
紙コップを持ち上げたあとに一度離してもう一度掴むことで、...
&ref(2014a/Member/bgpat/Mission2/arm-sensor1.jpg,17%);
→
&ref(2014a/Member/bgpat/Mission2/arm-sensor2.jpg,17%);
**ドライブベース [#le3f36b6]
ロボットの移動に関する部分です。
前輪にモーターを2個、後輪にタイヤを1個使っています。
#ref(2014a/Member/bgpat/Mission2/drivebase1.jpg,50%)
後輪を一番大きいタイヤのゴムを外したものにしました。
はじめは見本と同じキャスターでしたが、
車体が重すぎてタイヤ以外の部分が地面についてしまいうまく...
うまく曲がれるものに改良することになりました。
見本のように向きを変えることはできませんが、
摩擦が少ないので引きずりながらも曲がることができます。
#ref(2014a/Member/bgpat/Mission2/drivebase2.jpg,25%)
あと、トレース用の光センサーがついていましたが、超音波セ...
**紙コップとの距離を測るセンサー [#l8170a85]
車体の正面についている超音波センサーです。
縦に向けることで測定精度が上がりました。
*プログラム [#zf8c6513]
とても長いので、このページには「どういうプログラムを書い...
ソースはzip形式でダウンロードできます。
&ref(2014a/Member/bgpat/Mission2/src.zip);
master.nxcがマスター用、slave.nxcがスレーブ用のプログラム...
編集を容易にするため、機能毎にファイルを分けて#includeで...
**大まかな流れ [#n17c36f9]
スタートするとαのように動いて紙コップを取りに行きます。
紙コップを取るとβのように動いて紙コップを置きに行きます。
これをA〜Cまで繰り返します。
#ref(2014a/Member/bgpat/Mission2/cource1.png)
紙コップを取りに行くとき、置きに行くときは同じ動作です。
向きを変えて画像のように進み、紙コップを取るor置く動作の...
#ref(2014a/Member/bgpat/Mission2/cource2.png)
こうすることで、書くプログラムの量が減り、調整に時間をあ...
**位置の調整方法 [#mcc19b2e]
向きや距離はモーターの回転センサーから計算し、指定した角...
向きは左右の差、距離は回転数から求めています。
回転センサーだけでの調整ではズレが生じるため、超音波セン...
超音波センサーは正面の障害物との距離を測ることができるの...
車体を左右に振って一番近くなったところが紙コップの方向と...
近ければ近いほど精度があがりますが、
超音波センサーは6cmくらいまでしか測定できないため、
6cmのところまで近づいて紙コップの方向を向いたあと、
適切な距離まで下がることで紙コップをとるor置くことができ...
**紙コップを取る、置く [#l1234038]
アームの操作はモーターを回すだけですが、回転数が多すぎて...
ここでも回転センサーを使って制御しています。
指定した角度になるまでモーターを動かし続けます。
本体側のモーターは、アームの先にモーターが付いているので...
力の調整が難しくなっています。
ONとOFFだけの制御ではアームが跳ね上がってしまうことがあり...
このため、指定した角度になったあとも小さい力で押さえつけ...
アーム先のモーターは、紙コップを掴んでいるとき力をかけ続...
こうすることで紙コップを落とすことなく持ち上げることがで...
**NXT本体間の通信 [#j9aa06ed]
NXTにはモーターを3つまでしか接続することができません。
今回は走行用に2個、アームに2個のモーターを使っているのでN...
通信にはBluetoothを使います。
slaveはアームの制御だけを行い、masterはアームを動かしてい...
***master [#laf4140d]
+slaveのプログラムを起動させる
+slaveに命令を送る
+slaveから終了メッセージが送られてくるまで待機する
***slave [#qcadea0c]
+masterからメッセージが来るまで待機する
+masterからの送られてきた命令を実行する
+masterに終了したことを通知する
このような流れになっています。
紙コップを持ち上げてガイドに固定したあと判別が可能になり...
プログラムを起動するだけでは終了したことがわからず、
紙コップの判別に支障が出ると考えたため、
多少手間はかかりますがメッセージを使った通信を使いました。
*ロボコンの結果 [#b4d8af3e]
紙コップ2個を運び、優勝しました。
3個目は掴むのに失敗してしまいました。
*反省点 [#q33265a4]
-課題1のときと同じように時間が足りませんでした。
本当は掴み損ねたときに復帰するようなプログラムを書きたか...
テスト前だったり、他の授業のレポート課題があったりと時間...
実装することができませんでした。
-役割分担が偏ってしまいました。
今回のプログラムはほぼ全て私が書いたため、他のメンバーが...
*感想 [#r5115e82]
予想以上に時間を取られてしまい辛い時もありましたが、ロボ...
プログラミングは趣味でやっていたので楽にできそうだと考え...
前日は1個しか成功していなかったこともあり、2個成功したこ...
時間はかかりましたが、ロボコン優勝もできて満足のいく結果...
終了行:
#contents
*メンバー [#j7070d75]
-[[mame>2014a/Member/mame/Mission2]]
-[[dai>2014a/Member/dai/Mission2]]
-[[tadanobo>2014a/Member/tadanobo/Mission2]]
-bgpat
*課題について [#c46329ec]
**概要 [#h82d3cef]
#ref(2014a/Mission2/2014a-mission2.png)
A・B・Cに置いてある紙コップを同じ数字の紙コップに重ねる。
A・B・Cには1・2・3が書かれた紙コップを置き、配置はくじで決め...
詳しくは[[課題2のページ>2014a/Mission2]]を見てください。
*ロボットの制作 [#oce76dd3]
方向性が定まらず時間がないと焦っていたときに、[[tadanobo>...
#ref(2014a/Member/bgpat/Mission2/original.jpg,100%)
これをベースに全員で改良しました。
以下で私が改良に関わった部分の解説をしたいと思います。
それ以外の部分は[[他のメンバー>#j7070d75]]のページをご覧...
**アーム [#e6528912]
紙コップを掴むためのアームです。
本体に近いモーターを回してアーム全体を下ろしてからアーム...
下ろすときは本体側のモーターでアームを下ろしてからアーム...
#ref(2014a/Member/bgpat/Mission2/arm1.jpg,25%)
まず、紙コップを判別するために光センサーを付けました。
紙コップには色を塗っていいことになっているので、
油性ペンと鉛筆で濃さを調節した紙コップを3つ作り、
判別できるようにしました。
次に掴む部分にガイドを取り付けました。
理由は2つあり、1つ目は位置のズレによる取りこぼしを少な...
2つ目は紙コップの判別を正確に行うためです。
光センサーを使って紙コップの明るさを測定しますが、測る位...
紙コップを持ち上げたあとに一度離してもう一度掴むことで、...
&ref(2014a/Member/bgpat/Mission2/arm-sensor1.jpg,17%);
→
&ref(2014a/Member/bgpat/Mission2/arm-sensor2.jpg,17%);
**ドライブベース [#le3f36b6]
ロボットの移動に関する部分です。
前輪にモーターを2個、後輪にタイヤを1個使っています。
#ref(2014a/Member/bgpat/Mission2/drivebase1.jpg,50%)
後輪を一番大きいタイヤのゴムを外したものにしました。
はじめは見本と同じキャスターでしたが、
車体が重すぎてタイヤ以外の部分が地面についてしまいうまく...
うまく曲がれるものに改良することになりました。
見本のように向きを変えることはできませんが、
摩擦が少ないので引きずりながらも曲がることができます。
#ref(2014a/Member/bgpat/Mission2/drivebase2.jpg,25%)
あと、トレース用の光センサーがついていましたが、超音波セ...
**紙コップとの距離を測るセンサー [#l8170a85]
車体の正面についている超音波センサーです。
縦に向けることで測定精度が上がりました。
*プログラム [#zf8c6513]
とても長いので、このページには「どういうプログラムを書い...
ソースはzip形式でダウンロードできます。
&ref(2014a/Member/bgpat/Mission2/src.zip);
master.nxcがマスター用、slave.nxcがスレーブ用のプログラム...
編集を容易にするため、機能毎にファイルを分けて#includeで...
**大まかな流れ [#n17c36f9]
スタートするとαのように動いて紙コップを取りに行きます。
紙コップを取るとβのように動いて紙コップを置きに行きます。
これをA〜Cまで繰り返します。
#ref(2014a/Member/bgpat/Mission2/cource1.png)
紙コップを取りに行くとき、置きに行くときは同じ動作です。
向きを変えて画像のように進み、紙コップを取るor置く動作の...
#ref(2014a/Member/bgpat/Mission2/cource2.png)
こうすることで、書くプログラムの量が減り、調整に時間をあ...
**位置の調整方法 [#mcc19b2e]
向きや距離はモーターの回転センサーから計算し、指定した角...
向きは左右の差、距離は回転数から求めています。
回転センサーだけでの調整ではズレが生じるため、超音波セン...
超音波センサーは正面の障害物との距離を測ることができるの...
車体を左右に振って一番近くなったところが紙コップの方向と...
近ければ近いほど精度があがりますが、
超音波センサーは6cmくらいまでしか測定できないため、
6cmのところまで近づいて紙コップの方向を向いたあと、
適切な距離まで下がることで紙コップをとるor置くことができ...
**紙コップを取る、置く [#l1234038]
アームの操作はモーターを回すだけですが、回転数が多すぎて...
ここでも回転センサーを使って制御しています。
指定した角度になるまでモーターを動かし続けます。
本体側のモーターは、アームの先にモーターが付いているので...
力の調整が難しくなっています。
ONとOFFだけの制御ではアームが跳ね上がってしまうことがあり...
このため、指定した角度になったあとも小さい力で押さえつけ...
アーム先のモーターは、紙コップを掴んでいるとき力をかけ続...
こうすることで紙コップを落とすことなく持ち上げることがで...
**NXT本体間の通信 [#j9aa06ed]
NXTにはモーターを3つまでしか接続することができません。
今回は走行用に2個、アームに2個のモーターを使っているのでN...
通信にはBluetoothを使います。
slaveはアームの制御だけを行い、masterはアームを動かしてい...
***master [#laf4140d]
+slaveのプログラムを起動させる
+slaveに命令を送る
+slaveから終了メッセージが送られてくるまで待機する
***slave [#qcadea0c]
+masterからメッセージが来るまで待機する
+masterからの送られてきた命令を実行する
+masterに終了したことを通知する
このような流れになっています。
紙コップを持ち上げてガイドに固定したあと判別が可能になり...
プログラムを起動するだけでは終了したことがわからず、
紙コップの判別に支障が出ると考えたため、
多少手間はかかりますがメッセージを使った通信を使いました。
*ロボコンの結果 [#b4d8af3e]
紙コップ2個を運び、優勝しました。
3個目は掴むのに失敗してしまいました。
*反省点 [#q33265a4]
-課題1のときと同じように時間が足りませんでした。
本当は掴み損ねたときに復帰するようなプログラムを書きたか...
テスト前だったり、他の授業のレポート課題があったりと時間...
実装することができませんでした。
-役割分担が偏ってしまいました。
今回のプログラムはほぼ全て私が書いたため、他のメンバーが...
*感想 [#r5115e82]
予想以上に時間を取られてしまい辛い時もありましたが、ロボ...
プログラミングは趣味でやっていたので楽にできそうだと考え...
前日は1個しか成功していなかったこともあり、2個成功したこ...
時間はかかりましたが、ロボコン優勝もできて満足のいく結果...
ページ名: