mechatronics / robotics
Blog

cog

マイクロサウルス チュートリアル(7)

●リモコンを使う(2) 前回のプログラムに少し追加してLEDをON/OFFしてみます。”ms06″を開いて”ms07″で名前を付けて保存します。 “1”ボタンでON、”2″ボタンでOFFです。 loop()の中でdataCodeをシリアル出力していた部分をswitch文に書き換えて、dataCodeが”12″(“1″ボタンが押された)ならLEDをON、dataCodeが”24″(“2″ボタンが押された)ならLEDをOFFします。 ・”ms06″を変更 うまくいきましたら次はリモコンでロボットの歩行をコントロールしてみます。”1″ボタンで前進、”2″ボタンでストップです。現状のプログラムに以前作ったサーボのプログラム部分(ms05)を足していきます。 ●練習問題 前進、後退、右旋回、左旋回、停止をリモコンボタンに割り当ててコントロールできるようにしてください。 ヒント:リモコンボタンのデータコードは”ms06″を実行して確認できます。 “ms07″で保存します。

マイクロサウルス チュートリアル(6)

●リモコンを使う 赤外線リモコンでロボットをコントロールしてみます。リモコン送信器にボタン電池(CR2025)を挿入してください。リモコン受信部はメイン基板後方の3本足の部品です。 リモコン信号のフォーマットについてはこちらをご覧ください。 図の横軸は時間で、左側からON,OFF,ON,OFF…とバーコードのような赤外線信号が受信器に到達します。これが5V,0Vの電圧に変換されてマイコンのピン(PD2-ArduinoのDigital 2ピン)に入力されます。一応注意が必要なのが、ONが1信号、OFFが0信号とはならないことです。ONの後に長いOFFが来ると1、ONの後に短いOFFが来ると0と判断します。プログラムでは、Digital 2ピンの入力状態をチェックしてONの長さ、OFFの長さを時間計測しながら信号を解析(デコード)していきます。信号全体はリーダー、カスタムコード(16bit)、データコード(8bit)、データコード(8bit-反転)の順にやってきますのでその順で処理していき、今回はデータコード(8bit)の値を見てどのボタンが押されたのかを判断します。 リモコン”1″ボタンの信号(リモコン受光部の出力:HIGH/LOWが反転しています) まずは、受信したデータコード(8bit)をシリアルモニタに出力してボタンに対するデータの値を確認します。Digital 2ピンの入力チェックには、 attachInterrupt(digitalPinToInterrupt(pin), ISR, mode); という「外部割込み」を使います(もう一つの割り込みは「タイマー割り込み」)。これを利用すると、ピンの状態を勝手にチェックしてくれて変化があった場合には指定の関数を自動で実行してくれます。 プログラムは少し長いですが、フォーマットの図と見比べながら追ってみてください。リモコン受光部品の出力がHIGHやLOWに変化するたびにrmUpdate()が呼ばれ、HIGH時間、LOW時間を測定し信号が1なのか0なのかを調べていきます。ステートマシンという方法です。100%わからなくてもこのプログラムをコピペして実行し、リモコン送信でシリアルモニタに数字がでてくることを確認してください。 ・プログラム “ms06″として保存しておきます。

マイクロサウルス チュートリアル(5)

●基準姿勢を調整する ロボットを組み立て終わりましたらいよいよ電源を入れて立たせてみます。(4足なので何もしなくても立ちますが。) “ms03″のプログラムを保存した方はもう一度開いて”ms05″として保存します。loop()の中を削除します。 この状態でロボットに転送して実行します。左右の足をつなぐパーツがメイン基板と平行になっていれば問題ありません。もしそうではなく地面に置いた時にガタガタしてしまう場合にはソフト的にこれを修正します。下記のように修正用の変数”offset1,offset2″(名前はなんでも良い)を使います。 サーボの角度指定のところに補正値を足して実際に出力される角度を修正しています。offset1とoffset2の値をいろいろ変えてロボットを立たせてみてほどよい値を見つけてください。サーボホーンをはめる時にサーボ90°でそこそこ平行に取り付けていれば、プラスマイナス30°ぐらいの範囲に収まると思います。 ●歩行させる 調整が終わりましたら歩かせてみます。4足歩行をサーボ(関節)2個で実現しますので実際の動物の動きとは異なり、工夫が必要です。下に示しましたアルゴリズムは、前足を上下に動かして後ろ足を片足づつ浮かせ、着地している方の足で前方に推進するという方法です。 いかがでしょうか。足がちゃんと動いているのに前に進まない等の問題は、地面との摩擦が少ない(滑ってしまう)のが原因である場合があります。紙を敷いてみるなどして確認してみてください。また、滑り止めシールを後ろ足先端に張り付けても効果があります。 ●練習問題 後ろに歩かせてください。(恐竜はそういう歩き方はしないと思いますが。) ●練習問題 左右旋回させてください。 ヒント:左右の後ろ足の動きを非対称にします。 ・左旋回 ・右旋回

マイクロサウルス チュートリアル(4)

●ロボットを組み立てる ロボットを組み立てていきます。けがをしないようにあわてずにゆっくり進めていきましょう。 1.スピーカーの準備 *スピーカーははんだ付けされていますのでこの作業は不要です。  ワイヤーの被覆を4~5mm程度カッターナイフ等を使って剥きます。大変細いので中身まで切ってしまわないように注意します。(ある意味いちばん難しい部分です。)はんだ付けのできる方は”P2″端子に直接はんだ付けでもOKです。 2.スピーカーケーブルを端子に接続  *スピーカーははんだ付けされていますのでこの作業は不要です。  端子のねじを緩めてすき間をつくってからケーブルを挿入しねじを締めます。向きはありません。 3.電池ボックスの準備  電池ボックスとM2.6のさらネジとナットを用意します。 4.電池ボックスの準備2  電池ボックスの底面をさらネジとナットではさんで締めます。このナットは電池ボックスとメイン基板との間にすき間を設けるためのものです。 5.電池ボックスをメイン基板に取り付け メイン基板の裏側に電池ボックスを取り付けます。2本のねじを基板の穴からだしてナットで締めます。ねじ側は回りませんのでナットを回してください。 6.後ろ足用のサーボを準備  後ろ足の駆動に使うサーボ(どちらでもよい)とM2ねじ2本とM2ナット2個を用意します。 7.後ろ足用サーボ取り付け  サーボの出力軸がセンター側に来るようにメイン基板の裏側からはめて、ねじとナットで共締めします。 8.レバー〈2本)の準備  サーボに取り付けて足を動かすレバーにサーボホーンをねじ止めします。サーボに付属の長いほうのねじです。 9.レバーのサブアセンブリ  レバーとサーボホーンを共締めします。 10.前足用サーボの準備  前足用のサーボとサーボホルダ(6番)、M2ねじ/ナットを用意します。 11.前足サーボサブアセンブリ  サーボの出力軸がセンター側にくるように取り付けます。ねじ止めは片側のみです。 12.レーバーをサーボにねじ止め  サーボに付属の小さいねじを使います。 13.レーバーをサーボにねじ止め2  サーボの長手方向にだいたい平行になるように取り付けます。サーボの軸が90°になっていることが前提です。 14.胴体を準備  胴体部品とプラスチックスペーサー(2本)を用意します。 マイクロサウルス-Sの場合は加えて背板部品4個とM2ネジ-ナット4組を用意します。 15.胴体を取り付け  部品の凹どうしを合わせるように頭のほうからはめていきます。前足のサーボはこの段階では固定されません。スピーカーのシールをはがして胴体に貼り付けます。 16.サーボコネクター接続  サーボのワイヤーをコネクターに接続します。頭のほうに向かって黒が左側、前足がK2、後ろ足がK3です。ワイヤーは白スペーサーにゆるく巻き付けておきます。 17.側板の取り付け  側板の穴にメイン基板と前足サーボホルダーの凸をはめ込むように取り付けます。側板は左右で形状が異なります。サーボの耳がいっしょに入るほうが穴が大きくなっています。メイン基板と側板はねじを使って固定します。 18.足の準備  長いほうが後ろ足用です。 19.足の取り付け 足部品の穴にレバーの凸部をいれて、ねじで固定します。 20.頭部取り付け  最後に頭と角を取り付けて組み立ては完成です。頭の凹部にLEDを合わせてください。 マイクロサウルス チュートリアル ビジュアル版(5) =>

マイクロサウルス チュートリアル(3)

●サーボを動かす サーボを動かしてみましょう。サーボの出力軸(白いギザギザのところ)は通常0°~180°の範囲で回転しますが、その位置はサーボの容器に対して絶対的に決まっています。そのため出力軸の回転位置を気にせずに適当にロボットを組み立ててしまうと、出力に取り付けられた部品が思い通りに動いてくれません。まずはサーボの出力軸を90°の位置に停止させるプログラムをつくります。 下の写真を参考に配線してください。サーボは電池から電源を供給する回路になっていますので、今回は電池をつなぎます。サーボは2個使いで、それぞれ前脚用、後脚用となります。サーボのコネクタは逆向きに挿しても動きませんが壊れることはありません。中央のピンがプラス電源となっているためです。一方、電池のワイヤーは逆につけるとマイコンが壊れますので絶対に間違えないでください。 電源スイッチはOFF側にしておきます。 *サーボを取り扱う際の注意 サーボは非常に精密なギアで構成されています。出力軸を回そうとして(「バックドライブ」と言います。)引っ掛かりがある場合に無理に回そうとするとギアを破損します。 ハードウェアの準備ができましたらプログラムを作っていきます。 Arduino IDEを起動して「ボード」と「シリアルポート」の設定をしてください。 「ファイル」→「スケッチ例」→ “Servo” → “Knob”を選択します。内容を下記のように変更してください。 チェックボタンでコンパイルが成功したら、矢印ボタンでメイン基板に書き込みます。「ボードへの書き込みが完了しました。」と出たら基板の電源スイッチをONにします。サーボが動いて90°の位置(センター位置)で停止します。(新品のサーボを用いた場合はもともと90°の位置になっていて動かない場合があります。)この状態でサーボホーン(長いタイプ)をサーボの長手方向と平行になるように取り付けます。ぴったり合わなくても構いません。後でソフトで調整します。 ●プログラムの説明 #include Arduinoでサーボを使う時にはプログラムの最初にこの行を書きます。Arduino IDEにあらかじめ用意されている”Servo.h”というファイルに実際にサーボをコントロールするプログラムが書かれていて、我々は簡単にサーボを使えるようになっています。 Servo myservo1; Servo myservo2; 2つのサーボにmyservo1,myservo2と名前をつけます。Servoは”Servo.h”のServoです。Servoクラスのオブジェクトmyservo1とmyservo2を生成したと言います。 myservo1.attach(9); myservo2.attach(10); myservo1とmyservo2にArduinoの出力ピン9,10を割り当てます。基板上のサーボのコネクタは回路図ではK2,K3で、それぞれ3ピンのうちひとつ(S1,S2)がサーボをコントロールする信号がくる線で、他の2つが電源(バッテリー)とグラウンド(0V)です。S1,S2はマイコンのPB1とPB2につながっているのでPin MappingからArduinoの”digital out 9″と”digital out 10″であるとわかります。 myservo1.write(90); myservo2.write(90); myservo1とmyservo2を90°の位置に動かせ、という命令文です。write()やattach()mの内容は”Servo.h”からたどって”Servo.cpp”というところに書かれています。今回はサーボを一度動かして終わりなのでloop()は何もしません。 ●往復運動させる loop()の中身を書き換えてサーボを往復運動させてみます。プログラムの意味はわかると思います。 サーボがセンター位置を中心に往復運動することを確認してください。 ●デバッグの方法 サーボとは直接関係ありませんが、プログラムが思い通りに動かない時などに原因を調べるひとつの方法です。 上のプログラムに少し追加します。 このプログラムをメイン基板に転送して実行し、Arduino IDEの「ツール」->「シリアルモニタ」からシリアルモニタを起動します。Serial.print()に書いた内容が500msごとに出てくると思います。このように実行中のプログラムの状況を調べることができます。 最後にloop()の中をすべてコメントアウト(/* … */)してサーボを90°の位置に戻してサーボホーンを外しておいてください。 今回の成果は”ms03″などとして保存しておきましょう。

マイクロサウルス チュートリアル(2)

●メイン基板の準備 パーツボードからメイン基板(部品が載ったパーツ)を切り離します。 USBケーブルでメイン基板とパソコンを接続すると、USBシリアル変換ICのドライバがインストールされてプログラム開発ができるようになります。 ●最初のプログラム デスクトップのArduinoのアイコンからArduino IDEを起動します。 最初に二つの設定をします。メニューの「ツール」のボードで”Arduino/Genuino Uno”を、シリアルポートでメイン基板がつながっているポートを選択します。シリアルポートは、デスクトップ左下のWindowsアイコンを右クリックしてデバイスマネージャーを起動し、「ポート(COMとLPT)」から知ることができます。 まずは用意されているスケッチ例を使ってみます。LEDを点滅させるプログラムです。メニューの「ファイル」から「スケッチ例」-> 01.Basics -> Blinkを選択します。 プログラムの中で”LED_BUILTIN”となっているところ(3か所)を”12″に変更します。上の左側のチェックマークボタンをクリックして「コンパイルが完了しました。」と出たら、隣りの矢印ボタンをクリックしてプログラムをメイン基板のマイコンに書き込みます。「ボードへの書き込みが完了しました。」と出たのち、右側のLED(D4)が1秒ごとに点滅すれば成功です。 ●プログラムの説明 Arduinoのプログラムは大きく二つの部分に分かれていて、void setup(){…}はマイコンのピンの割り当てなどを書くところで最初に1回だけ実行されます。void loop(){…}はマイコンにやらせる仕事を書くところで、上から順番に実行され下まで行ったらまた上に戻り、を永久に(電源が切られるまで)繰り返します。 pinMode(12, OUTPUT); の行は、Arduinoの12番ピンを出力(基本的にHigh(5V)とLow(0V)の電圧を出す)に設定しています。Arduinoのピン番号と実際の回路との関係は、 回路図と、 Pin Mapping を参照してください。LED(D4)はマイコンのPB4というピンにつながっていて、それはArduinoではdigital pin 12という名称になっています。LEDについている抵抗R6はLEDに流れる電流を制限するためのものです。抵抗値が小さければ大きな電流が流れ(オームの法則)LEDが明るく光り、逆ならば暗くなります。 digitalWrite(12, HIGH); は12番ピンにHigh(5V)を出力しLEDを光らせます。 delay(1000); は何もしないで1000msec(1秒)待ちます。 digitalWrite(12, LOW); は12番ピンにLow(0V)を出力しLEDを消します。 delay(1000); は何もしないで1000msec(1秒)待ちます。 この後またdigitalWrite(12, HIGH);に戻ります。 ●練習問題 左側のLEDを0.5秒ごとに点滅させてください。 ヒント:回路図とPin Mappingのページを見て左側LEDのピン番号を調べる。 *新しいプログラムは現在のプログラムの実行中でも矢印ボタンで上書きできます。 ここでいったんプログラムを保存しておきます。「ファイル」->「名前を付けて保存」で”ms02″などとして保存します。

マイクロサウルス チュートリアル(1)

●部品の確認 ・パーツボード 1個 ・サーボモーター 2個 ・リモコン 1個 ・電池ボックス 1個 ・ねじ類 M2*5(直径2mm長さ5mm) 11個(MicroSaurus-S : 15個) M2ナット 3個(MicroSaurus-S : 7個) M2.6*8(サラネジ) 2個 M2.6ナット 4個 樹脂スペーサー 2個 ●必要な道具など ・パソコン ・microUSBケーブル ・単4アルカリ乾電池 3個 ・ボタン電池(リモコン用)CR2025 1個 ・ニッパー ・プラスドライバー ・カッターナイフ ・やすり(なくても可) ●Arduino IDEのインストール Windowsの場合で説明します。 http://arduino.cc/en/Main/Softwareにアクセスし、Windows Installer, for Windows XP and upをクリックします。 JUST DOWNLOADをクリックします。 ダウンロードしたファイル(arduino-1.8.8-windows.exe)を実行してインストールを開始します。 I Agree → Next → Installと進みこの画面でインストール完了です。 チュートリアルベース マイクロサウルス チュートリアル(2) =>

Page 5 / 5«45
contact


自作派のための本格指南書
好評発売中です

PAGETOP
Copyright © Meuse Robotics All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.