でロボットを動かす2 | Scrachとロボットプログラミング

2023年11月25日

二足歩行ロボットクムクムの足の部分にある4個のサーボモータをスクラッチからコントロールすることでクムクムロボットを動かす(二足歩行で歩かせる)ことに挑戦をしてみます。クムクムロボットには簡単に歩かせるコマンドも標準で用意されているため、だれでもが簡単にスクラッチプログラミングでの二足歩行ロボットを動かすプログラム完成させることができます。

クムクムロボット用スクラッチでまずは簡単に歩かせる(動かす)

スクラッチを起動する

まずはクムクムサイトの ここをクリック することで、クムクムロボット専用に開発されたスクラッチをWEBブラウザーで起動します。
試用するWEBブラウザーはGoogleChromeかMicrosoftEdgeです。
クムクムロボットとスクラッチの通信はBluetoothを利用して行いますが、ブラウザーからのBluetooth通信は、この2つのブラウザーで利用できます。
残念ながらSafariやFireFoxではBluetoothをコントロールすることができません。
また、iOsの場合にはBluefyというブラウザーを使うことでBluetooth接続は可能です。
ただし、すべての機能を検証できていませんので、どこかでうまく動作しないこともあるかもしれません。
またMacをお使いの方は、GoogleChromeで基本的には動作するはずですが、一部動作しないという報告もありますので、Macの方は自己責任で行ってください。

簡易コマンドでクムクムロボットを歩かせる(二足歩行の実現)

ではあらかじめ用意されているクムクムロボットの二足歩行用簡易コマンドを使用して、まずは右足と左足を交互に出して2~3歩歩かせてみます。
このプログラムを作り実行させるとクムクムロボットは簡単に二足歩行で動き出します。
足のサーボモータに電源を投入するブロックとサーボモータを動かすコマンドを忘れないようにします。

※もしこのスクラッチプログラムを実行してもクムクムロボットがうまく動かなかったり、変な動きになったりする場合には、電池の充電が足りない可能性があります。
※もしクムクムロボットが上手に歩けずに転げたりする場合は、クムクムロボットの足のモータのイニシャライズがうまくできていない可能性があります。ここ調整画面 で片足立ちができるようにクムクムロボットをしっかり再調整をしましょう。

なぜ簡易コマンドなのか?

クムクムロボットを上手に二足歩行で動かすためには、足の部分の4個のサーボモータをプログラムによってバランスよくコントロールする必要があります。
クムクムロボットの二足歩行のための第一歩として、片足を上げてもう一方の足で片足立ちをしています。
簡単に考えると、片足のモータの角度を回転させて体全体を傾けてやればいいように思いますが、実はサーボモータは電源をONにしたとたん、すべてのサーボモータに電源が投入され、その角度を保つために踏ん張っている状態になります。
つまり、片足だけを傾けても、もう片足が踏ん張った状態なので簡単には傾いてくれません。

スクラッチプログラム

右足を120度に傾けることで左足を浮かばせて右足1本で立たせようとしたプログラム

結果

理想は左の状態なのですが、私のクムクムロボットでは右のようになりました。
これはクムクムロボットの調整状態によって形は異なるとは思いますがおおむねこのようになると想定されます。

確かにクムクムロボットの右の足のサーボモーターは120度に傾いていますから、本来ならクムクムロボットは左の写真のように倒れてくれるはずなのですが、残念ながら逆の左足のサーボモータが突っ張ってしまっているために結局傾くことはできず、逆に右足を蹴ってしまっている状態になっています。

この問題を解決するためには、クムクムロボットの反対側の左足のモータも少し回転してあげてちゃんと傾くようにしてあげる必要があります。
つまり、単純に片足で立つというコマンドにしても、同時に2つの(両足)サーボモータをコントロールする必要があります。

2つの足のモータをコントロールして二足歩行

右足で片足立ちをさせる

まず、目的である右足での片足立ちを行うプログラムを作ってみました。
ポイントは、[待たずに動かす]ブロックと片足ずつのサーボモータを動かす時間を微妙にずらしている点です。

右足に傾けるために逆の足で蹴っています。
先に蹴る法の足で勢いよく蹴って起き、そのあと少し速度を遅く傾く方向にモータを回転させています。

※角度や時間などはクムクムロボットの調整具合によって異なりますので自分のクムクムロボットの最適な角度と時間をトライしてください。
※ロボットが立つ場所によっては微妙に動きが異なります。

待たずに動かすコマンド

ここで使用した 待たずに動かす というブロックは、動かすブロックと異なった動きをします。
サーボモータに回転支持を出してモータを回転することにはかわりありませんが、[動かす]コマンドは、モータが回転し終わるまで次のコマンドを実行しません。一方[待たずに動かす]は。回転コマンドを実行したとたん、モータの回転終了を待たずに次のコマンドを実行します。
つまり[待たずに動かす]コマンドで左足モータを回転させながら右足モータも回転させている状態を作っています。

上げた足を前に出しながらまっすぐな方向へ

続きは….

ここまでのプログラムを参考に続きを作ってみてください。
今度は、右足の角度を元に戻しながら左足を倒していくことで左足で片足立ちができる姿勢を作ります。

クムクムロボットとスクラッチの利点

このようにスクラッチでプログラミングを行うことは視覚的によくわかり簡単です。
それに加えて、Bluetoothで順に命令が送り出されその通り動くクムクムロボットは、動かしながら直しながら試行錯誤を楽しむことができます。
トライ&エラーを繰り返すことでプログラミング的思考をどんどん養うことができます。