2007年6月アーカイブ

しばらく、ご無沙汰だった「100kgfcm俺サーボ」
実はコツコツ作っていたのですが、アームとハンドが完成し、プログラムも出来たのでプリント基板で回路を作った。

SN390057.JPG

二足歩行ロボットと違って、サイズや重さに制限がないため、サーボ1つの制御にH8マイコン1つという凄く贅沢なサーボとなった。

ちなみに制御はパラレルにしました。
8ビットくらいの解像度があれば問題ないとのことで、メインのSHマイコンにちょうど1ポート分パラレル接続して使います。

実験でもなかなかのトルクを発揮してくれ、もう少しでちゃんとサーボの形として完成できそうです。

とはいえ、レスコンの予選まであと10日!
ロボットは今週中に出来ないと練習する時間ねぇ・・・;;

RS301CRが届いた

DSC01477.JPG
ほぼ2ヶ月遅れで、待ちに待ったサーボが届きました。

とはいえ、注文をしていたことを完全に忘れていたばっかりに、一昨日突然ロボットファクトリーさんから「発送しました」とのメール。
昨日の朝は郵便局の人に起こされました。

その時はお金も用意できてなくて、郵便局に再び取りに行ったのですが……それにしても突然。
財政状況的にも厳しいなぁ;;

最近忙しいので本気でこのサーボをいじるのは少し先になりそう。

とりあえず、マイコンで少しだけ回してみようと思ったのだが・・・。データシートどこにあるんだろう。
同梱のマニュアルにはそのへん何も書いてない。

RS485のドライブICは用意してあるのだが、パケットが分からんと回せんなぁ・・・。

Dynamixel制御用プログラムVer.3を公開しました。

http://dream-drive.net/robot/ax12.htm

研究室で教えてもらった小技などなど用いて動作を軽くして、高速化しました。
ソースの関数名なども大幅に変わり、記事も大幅に書き換えています。

あと、今レスコンでSH2/7045を使ってRX-64を制御していることもあり、このソース1本でDynamixel DX-117・AX-12・RX-64をサポートします。

また、使用できるマイコンもSH2/7144・H8/3052・SH2/7045に対応しました。
それぞれレジスタが異なるのでプログラムは個別化しておりますが、ユーザーサイドでmain関数内での使用方法は揃えております。

SH2/7045は、秋月で販売されていたものと、ベステクで販売されていたもの(FREEDOM搭載)両方で動作確認しております。

WindowsVistaへの対応

公開しているアプリケーションソフト

・JOY Pointer 3.20
jp3.jpg

・オバ球STG2 〜引き際が大事!?〜
os2.jpg

・オバ球STG2スクリーンセイバー210P
scr.jpg

の3点において、こちらの環境で「WindowsVista Business (x86)」での起動を確認しました。
これは動作を保障するものではありませんが、いちおうx86(32ビット版)で動く目安になります。

なお、「オバ球STG2 〜引き際が大事!?」においては、OSの名称が不明となっていますが、製作当初でVistaはまだ発表されていませんでしたので、不明となっておりますが、「コレは仕様です。」w

ちなみに、JOY Pointer 3.20の総ダウンロード数が5,000件を超えました。
応援していただきありがとうございます。

前回の記事のPWMのソースについて実験したのでその結果の報告。

DSC01430.JPG

実験は下記のとおり

(1) if文(従来のもの)
(2) else if文((1)のif文をelse if文に直したもの)
(3) switch文
(4) 配列処理
(5) シフト処理

の5つを、実行速度と、cnt1の値による実行時間の変化をオシロスコープを用いて計測する。
cnt1は0のときと7の時の値を用いる。

結果は下記の通り

cnt1の値 実行時間(μs)
if文 0 11.12
7 11.12
else if文 0 6
7 11.12
switch文 0 8.82
7 8.82
配列 0 5.9
7 5.9
左シフト 0 6.1
7 10

色を付けているのはcnt1が0と7の時で同じ実行時間だったもの。
システムとして実行時間が変化するのは良くないで、else if文とシフトは除外される。

そこで速度で比較すると明らかに配列が高速なことが分かる。
よって配列を用いたPWMの出力を採用しようと思います。

実験に用いたソースは下記の通り。

ファイルをダウンロード - speed.c

--
追記

PWMのソースの新しいのを公開しました。

http://dream-drive.net/robot/pwm.htm

大学でアドバイスもらったり、Shibasakiさんにアドバイスをもらったりでいろいろ最適化されてきたのでそろそろ公開できそうな感じになってきたソース。
皆様には本当に感謝しています。

それで、結局、PWMのところでいろんな案が出てきて結局どれにしようか迷っている。

もともとのソースはこれ。(1)

if (cnt1==0)P1.DR.BYTE=0x01;
if (cnt1==1)P1.DR.BYTE=0x02;
if (cnt1==2)P1.DR.BYTE=0x04;
if (cnt1==3)P1.DR.BYTE=0x08;
if (cnt1==4)P1.DR.BYTE=0x10;
if (cnt1==5)P1.DR.BYTE=0x20;
if (cnt1==6)P1.DR.BYTE=0x40;
if (cnt1==7)P1.DR.BYTE=0x80;

それに対して自分の出した改善策はコレだったのですが・・・。(2)

switch(cnt1){
	case 0:	P1.DR.BYTE=0x01;	break;
	case 1:	P1.DR.BYTE=0x02;	break;
	case 2:	P1.DR.BYTE=0x04;	break;
	case 3:	P1.DR.BYTE=0x08;	break;
	case 4:	P1.DR.BYTE=0x10;	break;
	case 5:	P1.DR.BYTE=0x20;	break;
	case 6:	P1.DR.BYTE=0x40;	break;
	case 7:	P1.DR.BYTE=0x80;	break;
}

こんな案や(3)

static unsigned char byte[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
P1.DR.BYTE = byte[cnt1];

こんな案を頂きました(4)

P1.DR.BYTE = 1 << cnt1;

突っ込みが入るくらいなので、(1)がプログラム的に劣っているのは間違いないのです・・・。
自覚もありました。それで検証してみたのですが・・・。

見た目に関して言えば、(1)、(2)、(3)は人間に分かりやすいという性質がある。
(4)はパッと見た感じ分かりにくいですがインテリジェンスな感じがします。行数が少ないというメリットもありますね。

実行時間で比較した場合、(2)(3)は、アセンブリを見た感じ、どの値をとっても実行したときのクロック数は同じ感じです。
(4)に関しては1ビットシフトをn回分繰り返すということで実行速度にバラつきが出そうな感じです。(1)は当然比較回数が異なるのでバラつきが出ます。

で、結局「-S」のオプションでアセンブリを出したりしてみたもののよく考えたらCISCであるH8は命令ごとにステートが違うので単純に行数では実行速度の比較が出来ない・・・。しかもちょっと分かりにくい。

ちなみにアセンブリの命令一覧を見ていて8ビットのローテーション命令があった。
左シフトしてあふれたケタを右に入れる命令。
これがC言語ではじめから存在したら何も問題はないのに・・・。(実はあるのだろうか?)

来週は実機で激しくループさせてみたり、パソコンで実行時間計ったりしてみたいと思う。
まぁ、ぶっちゃけた話、どのソースを使っても((1)でも)、サーボの動きに見た目の変化はなかったんだけどねw
ここまで来たら徹底的に実験したいと思います。

全国版のNHKで「今日がダメでも明日がある”波乱万丈・ロボットおやじ”」の放送がありました。
実は今日、博多にアジアメディカルショーを見に行っていたのですが、ROBO-ONEの公式ページで紹介が出ていたのに気がついてあわてて録画しました。

帰ってきて見ました。
第11回ROBO-ONEの山口さんのドキュメントです。

いつも、どうやって作っているのかなと疑問はあったのですが、まさか、バキュームフォームにうどんのバットの蓋まで利用しようとしていたとは!驚きました。豪快すぎます!
ますます山口さんのロボットのファンになりましたね!!ww

あと、微妙にKUMACOが映っていました。
%96%B3%91%E8%82%CC%83R%83s%81%5B.JPG
KUMACOもこのときはマイコンが燃えてすることがなかったので、鬼丸を応援に行っていた最中、鬼丸の資格審査の直前ですね。
KUMACOが出れなかったのは悔しかったですが、鬼丸が動かないのも悔しかったですね。いろいろ思い出しました。

そしてNHK高知放送局さんもお疲れ様です。
四国での放送の際に見忘れて今回初めて見させていただいたのですが、こんなに長い間の取材で45分の番組が出来るのですね。
カントリーと前回のROBOONEで取材の現場をちょこちょこ見させていただきましたが、番組の制作というのもすごいなぁと思いました。

「今日がダメでも明日がある」
僕も、KOKUTENの方をそろそろどうにかしよう。
そしてKUMACOはモーションだ!

Profile

me.jpg
Name : みっちー
小学校で電子工作にハマり、高校時代はゲームプログラミング、大学時代にロボット製作へどっぷり浸かりました。
社会人になっても、なにかとものを作るのが大好きで、日々ネタと仲間を求めて活動中です。

Dream Drive!!

bana.png
http://dream-drive.net

趣味のロボットとプログラムを中心としたコンテンツのサイトです。

My Robots

kolink2.jpg
KO-LINK2
第2世代 並行リンク足ロボット

kolink.jpg
KO-LINK
並行リンク足ロボット

BusterGX.jpg
BusterGX (Ex Walker)
G-ROBOT + ROBO-XERO

kumaco.jpg
KUMACO
ぬいぐるみロボット

SARUBO.jpg
SARUBO
JX-SYSTEM搭載ぬいぐるみロボット

kokuten3.jpg
KOKUTEN 3
リアルタイム逆運動学制御ロボット

meros.jpg
MEROS
膝なしロボット
(胸部マトリックスLED搭載)
by Mechaniker

kokuten12.jpg
KOKUTEN 1&2
はじめてのロボット
by Mechaniker

協賛広告

最近のコメント

月別 アーカイブ

このアーカイブについて

このページには、2007年6月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2007年5月です。

次のアーカイブは2007年7月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。