2014年10月13日月曜日

Rapiroを作る

前から気になっていたんですが、ロボットのRapiroを作ってみました。しかしかなり苦戦しましたので、その記録を残します。

まず組み立て。マニュアルはWebで写真と、数少ない英語の説明のみ。わかりにくい。
しかも途中1カ所、どうみてもネジの指定間違えてるよ。(写真に写ってるネジと説明が食い違っていたので、明らかにわかりますが)


後、サーボのケーブルが長くて、胴体を最後にフタをするとき、かなりきつかったです。


さて動かし方ですが、これがまた不親切で、一言Arduino用のIDE、USB通信用のFTDIドライバをDLしてきてね、だけ。結局、他の方のBlogを参考にして、以下のことがわかりました。


・Arduino IDEは1.0.6を使おう。(βの1.5.8はまずいらしい。RapiroのWikiにも製作者から1.0.6でやってくれとコメントがありました)
・IDEではArduinoのボード型式を指定するところがあります。DefaultではArduino Unoになっていますが、それでいいようです。
・シリアルポートですが、PC(私の場合はMac)とUSBケーブルで接続します。このとき先ほどインストールしたFTDIドライバを使うのですが、Macの場合親切にもボードと接続しないと、そのポートがメニューに表示されません。(認識しているようです)なので、MacとRapiroを接続したのち、/dev/tty.usbserial-xxxxを選びます。(FTDIのHPには/dev/cs.usbserialがどうのと書いてあったので最初こちらかと思いましたが、ttyのようです)
・シリアルモニタでRapiroにコマンドを送れます。このときボーレートがDefaultでは9600になっていますが、57600に変更しないといけません。
・firmware(サンプルスケッチと呼んでいました。Arduino IDEではプログラムことスケッチというんですかね?)として指示されたのがgithubのページ。githubでどうやってソースDLしたらいいのか普通の人は知らないよ?まあ1ファイルでそれほど長くもないので、コピペしていけるとは思いますが。





電源はEneloopを推奨、というかアルカリ電池とかではダメだと明記してありました。本数が5本と中途半端な数で、手元に4本しかなかったため、一つ新品のアルカリ電池でやってみましたが、ダメでした。明らかに低電圧の時の異常動作をします。(アルカリ電池だと流せる電流容量が少ないでしょうからでしょうね)
しかたないので、外部電源(12V)を探したんですが、今はもう1個も持ってません。(大学時代まではよくハンダ付けとかで工作してたので何個か持ってたんですが)見回すと、ノートPC用にと買っておいた21000mAhの外部バッテリがありました。出力電圧や端子も数種類変えれます。これで試すとうまく動きました。


最初のうちは0点調整がうまくいってなかったのか、おかしな動きをしました。しかしこれはどうも最初のアルカリ電池まじりで試していたときに、0点調整の値を色々いじってたのがまずかったらしく、最終的には全部一度0にすることで、いい位置になりました。
(それでも最終的にはいくつか調整しましたが)


また足のPitchの0点調整がどうも難しいらしく、ずっと小刻みに唸っています。一度持ち上げると止まりますが、歩かせたりして止まった後にまた唸ります。これはfirmwareで初期値をいくら調整してみてもダメでした。そんなに大きな音ではないのですが、ちょっと気になります。
(注:YouTubeに某誌のプロモーションとして動かしている映像を見たんですが、その時も静止時に同じように小刻みな唸り音が聞こえたので、これは仕方がないようです。)


とりあえずこのfirmwareではシリアルモニタで以下のコマンドが入れれるようです。


Moveコマンド
#M0 : Stop 停止
#M1 : Forward 前進
#M2 : Back 後退
#M3 : Right 右回り
#M4 : Left 左回り
#M5 : Green 目を緑色にする
#M6 : Yellow 目を黄色にする
#M7 : Blue 目を青色にする
#M8 : Red 目を赤色にする
#M9 : Push 右腕を前に延ばす


Poseコマンド
#Pの後に5つのサブコマンドがあります。
S : Servo
R : Red
G : Green
B : Blue
T : Time


Servo
SxxAxxx
Sxxはサーボ番号00から11まで
Axxxはサーボ角度000から180まで(単位は度です)


Red Green Blue
RxxxGxxxBxxx
xxxは明度000から255まで


Time
Txxx
xxxは時間000から999まで、単位は0.1秒


使い方
#PS00A080T050というように使います。最後のTコマンドなんですが、数値が動きにどう影響してくるのかよくわかりません。ただ必要なようです。


サーボ番号と稼働範囲
00 : Head yaw : 0 – 90 – 180
01 : Waist yaw : 0 – 90 – 180
02 : R Sholder roll : 0 – 0 – 180
03 : R Sholder pitch : 40 – 130 – 130
04 : R Hand grip : 60 – 90- 110
05 : L Sholder roll : 0 – 180 – 180
06 : L Sholder pitch : 50 – 50 – 140
07 : L Hand grip : 60 – 90- 110
08 : R Foot yaw : 70 – 90 – 130
09 : Foot pitch : 70 – 90 – 110
10 : L Foot yaw : 50 – 90 – 110
11 : L Foot pitch : 50 – 90 – 110


数値は、角度の 最小 – 初期値 – 最大

0点調整の位置が初期値であることに注意。角度0が真ん中ではありません。(最初、うっかりHeadに0度と指定しまい、とんでもないことになりました)

さて一通り動作を確認したので、次はRapberry Piを組み込んでみないと。(一緒に発注済み)

0 件のコメント:

コメントを投稿