SISO-LAB不定期TOPIC Dec.2004


2004/12/31

今年も終わりだね〜。

一年前も同じようなことを書いたんだけど、去年の不定期TOPICを読み直してみると、今年のほうがゆったりとしているみたい。計画と実行が伴っているか、怠け癖がついてきたかのどちらか。去年、「CPLDにチャレンジしよう」なんていいながら、結局、ぜんぜん触らず仕舞いでした。一応、買ったんですよ。でも、結局、SIPHA COREにCPLDを載せるスペースが無いことがわかって、気合が入らなくて (^_^;。

ロボット作り始めて1年半が過ぎましたが、今年もエキサイティングな年で、来年はさらに楽しそうな予感。

いろいろな方とも知り合うことができ、本当にお世話になりました。また、このサイトを応援してくださっているみなさま、ほんとうにありがとうございました。来年もよろしくお願いいたします。

注) 明日、「本年もよろしくお願いいたします。」という文章をアップしても、笑わないでください。

 

2004/12/28

HEW3を使ってみる

ふとトランジスタ技術1月号を買う
20041228P00.JPG - 6,739BYTESふと「トランジスタ技術」を見たら、「すぐに使えるUSBデバイス&応用」なんてのが載っていたので、ついつい購入してしまいました。買って読んでみたら、HEW3の評価版コンパイラはついていたので、今回はHEW3をインストールしてみることにしました。というのも、普段はBest TechnologyさんのGDLのお世話になっているのですが、最近はほとんどBest Technology製ボードは使ってなくてなんとなく申し訳ないので、そろそろ別の開発環境に移行しようかな〜と思いまして。とはいえど、このコンパイラ、使用期限があるので、実はKPITの開発環境が本命です。しかし、アレは英語なので、まずはHEWに慣れてみようと思って使い始めてみました。KPITについては、また立ち上げたら書きます。

KPITの開発環境
ま、何はともあれ、経緯を書かねばです。KPITは、どうやら、H8/SH用のGNUコンパイラ、デバッガ、そして英語版HEWを無償で配布してくださっている会社です。しかも、日本語のホームページもあり、さらに日本語のFAQ、日本語の立ち上げ手順までアップされており、すごいですね〜。本業は何をやられているんでしょう?

その他の開発環境候補としては、cygwinもいいかな〜と思ったのですが、IDE(統合環境)好きということ、やっぱシミュレータでいいのでデバッガ欲しいな〜と思ってまして、いつかこれを使ってみようと思っていました。しかし、ネットで調べてみたところ、ちょっと情報も少なく、HEWも英語版ということで二の足を踏んでいました。

ダウンロードですが、アカウントの登録が必要になります。アカウント登録すると、まずメールが来るのですが、それには「どうもありがとう、手動で登録しているから、終わったら連絡するね〜」みたいなことが書いてあります。そして数時間後ぐらいに(自分の場合は1時間程度でしたが)登録完了メールが届きます。

H8開発のためには、以下のツールをダウンロードする必要があるみたいです。まだ、使い方調査中なので、環境が整ったらまた情報アップします。「無償ダウンロード」より

  • 「ルネサスツール」HEW 3.0.6-ntc for KPIT GNU Tools with Simulators
  • 「KPIT GNUツール」GNUH8 v0403 Windows Tool Chain (ELF)
  • 「KPIT GNUツール」GDBH8 v0402 Windows Debugger (COFF/ELF Format)

試しにインストールしてみたのですが、シミュレータデバッグするところまでは日本語の解説で、すいすいっと行ったのですが、HEW3、もっと便利なツールな気がしまして、じゃ、わかりやすさで日本語のHEW3を使ってみようと思った次第です。

まずは評価版HEW3インストール、コンパイルできんぞ?
ま〜、なにはともあれ、「トランジスタ技術」付録のHEW3の方を、添付されていた「インストール方法」を見ながらインストールしました。これはさくさくと進みまして、あとは「チュートリアル」(インストールされたフォルダの下の方に入っています。JH8HTU36.PDFというファイルです。)を見ながら適当にシミュレータで動かすプログラムを作ってみると…

20041228P01.JPG - 18,351BYTES

と、冷たく言われてコンパイルできません。う〜ん、ディスクはちゃんと空きがあるし変だな〜と試行錯誤すること1時間。わかりました。添付の「インストール方法」に「重要!インストール後,ファイルT_LIMIT.DATをインストールしたフォルダ(C:\HEW3)にコピーする必要があります.」とあるのですが、コピーするだけじゃダメみたいで、コピーした後に「読み取り専用」という属性をはずさないとダメみたいです。きっとどっかに書いてあるのかもしれませんが、ま、解決したので良しとします。

やっぱり便利そうなHEW3
へ〜、便利そう。日本語版HEW3の方を触ってみてわかったことあります。シミュレータ上でブレークポイントを仕掛けてデバッグできるというところまではわかっていたのですが、実行サイクル数も表示できます。実行速度が気になるSIPHA COREには非常にありがたいです。これは使わぬ手は無いな〜。まだよくわからない設定も多く、妙にツールバーアイコンが多いですが、なかなかいい感じです。GDLはシンプルで使いやすいのですが、こういう高機能なものもなかなかいいですね〜。

ところで、インストールされたのは「HEW3」なんですが、起動ファイル名は「HEW2.exe」なんですね。う〜ん。

さて、何か動くプログラムでも書いてみようかな〜と思ったら・・・「Flash Development Toolkit」というツールがいるらしい…。ROM書き込みイメージである「motファイル」はできているようなので、適当なツールで書いてもいいんですが、せっかくなので、HEW路線で行ってみようと思います。でも、前にKPITのHEWをインストールした時は、FDTは、なにもせずにツールバーから呼び出せたような気が・・・。とりあえず、昔のトランジスタ技術を友達から借りてきてインストールしてみました。

Flash Development Toolkit
このツールは、最初、どうやって使うんだろう???という感じだったのですが、要は、一度Projectファイルを作ってCOMポート等を設定しておき、そこへ書き込みたいMOTファイルを追加してやればOKみたいです。最初、「こういうやり方」というところで悩みましたが、後はさくさくっといきました。

というわけで、もうちょっと評価版HEW3の使い方になれたら、KPITの英語版HEW3に移行することにします。

ふといたずら心?で、評価版HEWにKPITコンパイラをインストール
ふと思って、試しにKPITから配布されているGNUH8 v0403-ELFをインストールしてみました。というもの、そもそも、HEWは、ツールチェーンと呼ばれる、コンパイラなどを複数管理できるプログラムです。また、KPITの方でも、「まずHEW3(英語版)をインストールしてから、GNUH8をインストールして、ツールチェーン登録する」という流れでインストールするので、ひょっとしたら、今、入っているHEW3からもコンパイラが呼び出せるようになるのかな〜と思いまして。

20041228P02.JPG

というわけで、KPIT GNUH8をインストール。ふむ、そのまま入りました。お、メニューも変わっています。Renesasのコンパイラと違い、シミュレータ上でprintf文は使用できないみたいですが、一通りのことはできるようです。シミュレータ上でブレークポイントも設定できますし、実行サイクル数、変数のウォッチ等、ちゃんと動作させることができます。「MOTファイル」を作るには、実行ツールの設定を追加しないといけない模様。これについては、ALPHA PROJECTさんのホームページに情報が載っていたので、一通りつかえるようになった時点でまとめて書きます。

20041228P03.JPG - 21,898BYTES 20041228P04.JPG - 19,267BYTES

メニューがどう変わったか?についてですが、左が評価版HEW3のみ、右がKPITのGCCコンパイラを追加した時のメニューです。HEW3って、すごいですね〜。
 

2004/12/26

MICRO-MG基板交換

なかなかノリ剥がしが大変です・・・

20041226P00.JPG - 8,671BYTES20041226P01.JPG - 16,654BYTES

前々から基板を壊したMICRO-MGがいくつかありまして、今日は、基板交換をしました。動作チェックはまだなので、後でチェックするとして、ボンドを剥がすのが大変です。ピンセットでちまちまと剥がしました。時々手がすべり、ピンセットを指に「プス」なんて刺すことも・・・。MICRO-MG、なかなか手ごわいです。

結構、ケーブルのハンダ付けも、なかなかスペースが厳しく、大丈夫かな〜って感じで。そうそう、一枚、グランドのパターンを剥がしてしまいました。新型基板、モータにグランドを落とすようになっているんですが、ぐにぐにやっていたら、パターンごとはがれてしまいました。モータへ電力供給している電線は、基板を貫通してハンダ付けされているのですが、グランドはなぜかパターン上にハンダ付けされているだけなので、はがれやすいようです。もし、基板交換をされる方は、あまり引っ張らないように注意されるといいです。

ちなみに、どうして基板を壊したかというと…逆ざしと思われるかもしれませんが逆ざしで壊れたことは経験上ありません。誤って、ずらして挿してしまった時に、さくっと壊れました。信号線に電源、電源線にグランドって感じです。ロボットを設計する時に、間違った挿しかたになりにくいよう設計するのも大事ですが、なかなか難しいですよね〜。

2004/12/25

クリスマスですね〜

クリスマスと言えば?

20041225P00.JPG

クリスマスケーキにローソクがついているのが普通かどうかはよくわからないのですが、とりあえずローソクゲットしました。というのも、ZIPPONさんからのご指南で、ホールソー加工等での熱対策に、ローソクが効果があるということで、さっそくゴミ箱から拾ってきました。これを、工具が熱くなった時に押し付ければ、潤滑効果が出るとのこと。バックパックを作る時にホールソーを使う予定ですので、その時のためにキープです。

GWSサーボ改善計画進捗
Play Robot・ロバートさんによると、いよいよ、GWSの上の方とお話されるとのこと。実は、ちょっと前にGWSのエンジニアとふとしたことで知り合ったそうで、そこをきっかけに事前打ち合わせ(根回し?という訳でいいのかな〜)をして、年末に顔合わせ、ということだそうで。何か動きがありましたら、またアップしますね〜。ロバート、「加油、請您給我們好消息哦〜」(北京語で、がんばって、いい結果持ってきてね〜」
の意味・と思う)。

2004/12/22

仕上げは電ドリサンダー

電ドリでサンダーサンダー
以前にも書いたことがあるんですが、SISO-LABでは、電ドリサンダーなるものを使用しています。これは、普通の電気ドリルを水平に固定して、ディスク固定のアタッチメントとディスクをつけて使っています。もし、アタッチメントを購入される場合は、15mm径用のものを購入してくださいね(これがなかなか売っていないんです)。この電気ドリル、水平に固定したおかげで、ドリル、回転ヤスリ、サンダー、タッピングとまあ、大活躍です。

20041222P00.JPG - 27,098BYTES20041222P01.JPG - 18,280BYTES

もう、これを使うと、ヤスリがけだけで部品を仕上げる作業には戻れません〜というぐらい便利です。でも、電気で回転するものですので、気をつけて使いましょう。

で、使い方は見てのとおりです。回転させておいて、部品を押し当てるだけです。

20041222P02.JPG - 14,271BYTES20041222P03.JPG - 11,134BYTES

で、削ると、「もにょもにょ〜」と、削りカスが成長して部品に引っ付きます。一気に削る量が多いほど、これも大きくなるので、それで、この作業に入る前に、なるべくカットしておいた方がいいというわけです。これ、単に角に張り付いているだけだと思ったら大間違い。大きく成長していると、結構な範囲でひっついてしまいます。なるべくこまめに取り除いた方が、仕上がりがいいです。

20041222P04.JPG - 10,236BYTES

さっきの「もにょもにょ」ですが、いつもダイアモンドヤスリ(ダイアモンドであることに意味はなくて、薄くて、ナイフよりは切れなくて、しかも目が細かくて削り過ぎないのでバリ取りがしやすいのが理由です。100円ショップで買ったような気がします。)で削り落としています。

20041222P05.JPG - 8,311BYTES20041222P06.JPG - 11,904BYTES

そして最後はやっぱりヤスリに登場してもらって、部品を仕上げます。

 

2004/12/20

電ドリの前に・・・外周の大雑把な整形の小技

次は電気ドリル加工の方へ行こうかと思ったのですが、その前に、ちょっと便利なニッパ整形の小技を紹介します。

必殺シラサギカット(仮称)
さて、外周整形ですが、ここでなるべくたくさんカットしておいた方が後で楽チンなのですが、ここで1つ小技を紹介します。前回、解説しましたように、ノコ+ニッパで大雑把にカットしていくわけですが、「ノコでやるには小さいが、ニッパでやるにはどうしたものか?」という場所があります。

20041220P00.JPG - 11,121BYTES

こんな場所です。こんな時は、「必殺シラサギカット(仮称)」で切り取ってしまいます。やり方は、写真のパーツの場合ですと、まずは左からニッパを入れて下の方から少しずつ切っていきます。

20041220P01.JPG - 12,990BYTES20041220P02.JPG - 13,213BYTES

ほら、切れカスが「シラサギの羽」みたいでしょ(ちょっとシラサギに失礼かな)。これは、前回の話で、「捨てる方を変形させる」テクニックです。こうやって切っていくと、本体、ニッパに無理な力がかからないように切ることができます。そして最後にブチンとやります。

20041220P03.JPG - 11,684BYTES20041220P04.JPG - 12,876BYTES

はい、できあがりです。慣れると、右のような形もカットできるようになります。

電ドリ編へ続きます。

 

2004/12/19

外周の大雑把な整形

このところ、ABSの整形ばかりやっていますので、アップしている話もそればっかりなんですが、思えば、「こうやって加工してます〜」と言う話を一貫してアップしたことがなかったので、ちょうどいい機会かな〜と思って、連載状態でやっています。

ABS部品の整形〜まずは大雑把に
ポンチ打ち、穴あけ、内側の穴の整形が完了した後は、Pカッターで大雑把に部品ごとに切り離します。これが終わったら、外周の整形に入ります。外周の整形は、まずは大雑把に、ノコでゴリゴリと切り取ってしまい、その後、ニッパでブチブチと切り取ります。ノコの方は「注意してやってくださいね〜」ぐらいしか注意点はないのですが、ニッパのほうはちょっと注意すべき点があります。それは、

「無理しない」

ことです。これはどういうことかというと、ニッパを握るのに「すごく力が要る」場合っていうのは、材料にも力がかかるわけです。これは、「変形」を作ることになります。ニッパでブチブチやる場合は、捨てる方だけが変形するように注意する必要があります。簡単な例ですと、直線ならば一気に深いところを切らず、浅く(t3のABSなら、1mm程度)カットしていくこととか、三角形に切っていつも捨てる方の逃げを作っておくなどです。

また、真似される場合、防護用に、めがね(ダテで結構です)等を装着してやってください。結構、切りカスが、パッキンパッキンと飛び回りまわって、目に入ったら大変ですので。

20041219P00.JPG - 10,589BYTES20041219P01.JPG - 8,807BYTES

後でヤスリ等で仕上げをするわけですが、このときの労力の度合いがここで決まるので、そこそこマジメにやる方がいいです。で、先ほどの部品ですが、こんな感じになります。

20041219P02.JPG - 9,161BYTES

そして、次は、例によって電気ドリルを取り出してきます・・・。

20041219P03.JPG - 15,283BYTES

続く(現在、全ての部品に上記加工中)。

 

2004/12/17

丸い大穴をあける

丸くて大きい穴の空け方

20041217P00.JPG - 18,898BYTES20041218P01.JPG

丸い穴の空け方のほうは、まだ「これだ〜」というのは無いのですが、今やっている方法を紹介します。ホールソーがつかえるサイズ(って高価なので1つしか持ってませんが)の時はそれでやっていますが、それより大きな場合は、回転ヤスリなるもんを使っています。SISO-LABでは、ホームセンターで売っている電気ドリル(\1,780で購入)を水平に固定して使用しているのですが、これに回転ヤスリを取り付けてやっています。この1年半で数個試したのですが、この形状でコレぐらいの荒さがちょうどいいようです。

やり方ですが、まずは穴をあけてニッパで大雑把な穴を空けておきます。そしてひたすら削ります。

20041218P02.JPG20041218P03.JPG

というわけでできあがります。これぐらいのものですと、大雑把にカットしてから15分ぐらいでできます。う〜ん、ろーてく。ははは。ポイントですが、電動ドリルを正方向、逆方向、切り替えながらやることです。やってみるとわかるのですが、回転で削っていきますので、円弧状に削った場合、一方向回転だとどうしてもゆがんでしまいますので。

ところで、この回転ヤスリで外側を整形するのはかなり難しいです。円の内側を加工している時は、ヤスリの刃がかみこんでいくような感じになりますので、結構、いい感じですが、外側を加工しようとすると、材料がブレブレです。よって、外側の整形には向きません。外側の整形については、その作業フェイズになった時に、また写真を撮ってアップします。

 

2004/12/16

とりあえず大まか切り完了

まずは大まか切り
20041216P00.JPG - 14,840BYTESざざっと部品をカットしました。後は、これを仕上げていきます。ん?写真を見ていて気づいたのですが、まだカット忘れが・・・。

 

2004/12/15

ABSの四角い肉抜き

今回は、こんな肉抜きにチャレンジ

20041215P00.JPG


今回は、新しい試みで、こんな形の肉抜きにチャレンジしています。「めんどくさそう〜」と思われる方も多いかと思いますが、意外に簡単なのでやり方を紹介します。

20041215P01.JPG - 4,713BYTES
20041215P02.JPG - 6,679BYTES20041215P03.JPG - 9,592BYTES

左の写真は、まずは穴あけをして、ニッパでぶちぶち切り、まずは大雑把に四角に抜いた状態のものです。これに、以前作った「万力ならぬ百力」・・・以前、6mmのPP板を加工する時に使用したジグです。板状のものを押さえて、小さな部品でもうまく保持してヤスリがけができるようにするためのものです。これを使います。

この「百力」は、ホームセンターのカー用品のところで買った「穴空き鉄板」と「蝶ネジ」を使っているだけですので、作る?のは簡単です。本当は、もう少しこった仕掛けにすると部品のデキがよくなるのですが、ま、この辺で、というところで。

削るABSと同じ厚さのきれっぱしを一緒にはさんでおいて・・・。

20041215P04.JPG - 8,775BYTES
20041215P05.JPG - 8,424BYTES
20041215P06.JPG - 8,976BYTES

左の写真のように、削るラインにあわせて挟み込んで、ヤスリで削っていきます。ABSは簡単に削れますが、板は鉄製なので簡単には削れません(ちょっとは削れますけど)。そうすると、ラインピッタリに削ることができるわけです。右の写真は、別の使い方例です。同じようにラインにあわせて装着して削ります。この部品の肉抜き部分を作るのに、2枚で1時間程度でした。うぅ、結構かかりますが、次に同じような加工の時はもっと早くなるかと思います。

ちなみに、穴の角が丸いのは理由があります。ドリルで開けた穴が丸いので丸いわけですが、「角を立てるよりクラック(ひび)が入りにくい」という話を、以前、機械屋さんから聞いたことがあり、それでそのままのRにしています。

 

2004/12/13

アルミパーツ削りだし終了

アルミアングル
20041213P00.JPG - 8,325BYTES一番時間がかかるアルミパーツの削り出し完了。

ほとんどABSでできているG-Tuneですが、一部、アルミアングルを使用しているところがあります。肩と足首のあたりです。前はt1のアルミアングルを使用していたのですが、前転とかをガンガンやっていたらゆがんでしまったので、今回、t1.2のアルミアングルで作り直すことにしました。

加工方法としては、水平に固定した電気ドリルに、グラインダーとかについている荒めのディスクをつけて削っているのですが、ABSとちがって、時間はかかるし熱くなるしで削りだすのが大変。格闘すること数時間、ようやく削りきりました。これなら曲げで作った方がよいのでしょうか?う〜ん。

樹脂パーツでうまく直角結合ができるパーツが作れると加工が楽なのですが、それはそれで加工が難しくて悩ましいです。直角結合は樹脂パーツの悩み・・・。

 

2004/12/12

打ちマス打ちマス

ポンチ打ち
今日は、ようやく、ポンチ打ち完了で穴あけとアルミ部品の加工を開始しました。実は、ポンチ打ちは大の苦手でして、普通のポンチでは、0.2mmは軽くずれます(もちろん当たりもあるけど)。そこで!オプティカルセンターポンチです。これを手に入れてから、穴あけ位置の次元が変わりました。ポンチ打ちの得意な方には不要かもしれませんが…。

20041212P00.JPG - 9,983BYTES20041212P01.JPG - 6,367BYTES

左手の人差し指と中指にはさんでいるのがポンチで、つまんでいるのが本体とレンズです。レンズを覗くと右の写真のように見えます(すごい狙ったように撮れてますが、合成ではありません)。そして、レンズを引き抜いてポンチをはめ込み、カツンっとやります。現在は、浅草ギ研さんで購入可能です。「ロボット関連その他」の中にあります。値段も張りますが、もしポンチ打ち精度に悩んでいるならば、すごいオススメです。

不思議な記事
さて、実は、こっちの方が書きたくてしょうがなかったんですが、こういう加工をする時、古新聞を広げてやるのですが、2004年9月の新聞で、「ランドセルから”安心電波”」という記事を見つけました。よく読むと、児童の通学状況をパソコンで表示するために発信機をつけて、それを岐阜県で実験運用するという記事です。まあ、こういうのは賛否両論ありますので、それは置いときまして、気になったのが最後の一文。

「電波は人体に影響のないテレビのリモコンと同レベルという」

テレビのリモコンって、赤外線がほとんどではないかと思うのです。興味のある方は「通学安心システム」で検索すると引っかかるかも。

 

2004/12/10

ロボットコントローラを自作してみたい方へ・サーボ個体差の吸収〜その1

最近、予定やら仕事やら立てこんでいて、なかなかポンチ打ちも進まず、ぼちぼちとやっている状態で、しかも当分、部品の削りだしでばっかりになりそうです。それもつまらないので、ロボットコントローラを自作してみたい方向けで、サーボ制御などの直接的な機器制御以外に、どんな処理をさせないといけないか?という話なんてのを、SIPHA COREを例にして始めてみようと思います。具体的なやり方も紹介していますが、あくまでも「ひとつの例」として考えてください。

サーボを交換したら歩かない!どうして?
サーボには個体差がありまして、1500usのパルスを入れると、ぴったりど真ん中で停止するサーボもあれば、数度ずれて停止するサーボもあります。また、2400us入れると、中心から80°動作するサーボもあれば、75°しか動作しないサーボがあります。また、この信号幅自体を受け付けないサーボもあります。

そのままパルス幅で動作データを作っていって、何が問題かといいますと、パルス幅のみで動作データを作ると、ずっとそのサーボを使いつづけている場合は問題無いのですが、サーボを交換した時に、新しいサーボの個体差によって先ほど説明したようなズレが発生し、動作データの見直しなどをする必要がでてくることが多々あるということです。

この個体差を吸収するためには、「個体差データ」を加味した動作指示をする必要があります。

サーボ個体差の吸収方法
実際にSIPHA COREでやっている方法は、以下のとおりです。

  1. 1500usを0度として、±90度動作させるためのパルス幅を測定する。
  2. ロボットに取り付けたときの、0度にしたい位置のパルス幅を測定する。
  3. 動作方向を決める(例えば、肘の関節指示値を+10度としたときに、左右の肘が同じ方向に動くように)
  4. 以上の値をEEPROMに保存しておく。
  5. ロボット起動時に、EEPROM値をRAMに読み込む。
  6. 動作データは角度で記録する(○○Clockで○○度動作という感じで)
  7. サーボパルス値を設定する時に、上記値にて角度から変換した値で指示を行う。この時、現在値から○○Clock後の角度まで、補間を行ってスムーズに動作させる。実際には、現在値、目標値をパルス値に変換しておき、その値(パルス値)で補間計算を行っています。

実際のところ、正確に角度処理をしようと思うとこれでもちょっと足りないのですが、実用上、こんなもんでやっています。じゃあ、具体的にはどうなるかといいますと…

typedef	struct  ST_DFS  {       //  サーボ初期定義I/F	Defination of Servo
    _WORD   awPlsOffset[2];     //  Deg/Pls Offset	90度毎のパルス値
    short   sZeroOffset;        //  1500μsecからの0度Offsetに必要なパルス
                                //  1/0は方向で、0ならマイナス
}   _DFS;

_DFS    DFS[SERVO_MAX];

awPlsOffset[2]は、[0]がマイナス方向、[1]がプラス方向(だったかな?)の、1500usからの90度動作させるためのパルス値です。1500usからの差分になります。H8/3664は、16MHz動作で、0.5us=1パルス値となっています。

sZeroOffsetは、ロボットにサーボをつけた状態で、1500usから指示値上、0度にオフセットしたい値の差分です。サーボホーンは、数度単位で見た場合、必ずしも、思った位置にはめ込むことはできませんので、こういう補正が必要になります。例でいいますと、肘を直角に曲げた場所を0度とする場合、実際に取り付けると、数度ずれてしまいます。そこで、このパラメータで調整するわけです。これらのデータを、サーボ個数分メモリに確保します。

また、データを詰め込むために、一桁目は方向を表すデータとして使っています。なんでこうしたかは覚えていなかったりするのですが、H8/3664のタイマをΦ1/8(16MHzを8分周して使用)で使用した場合、1カウントは0.5usになります。0.5usはどんな値か?といいますと、1000usでサーボが90度動作したとすると、0.045度ということになります。こんなにサーボは細かく動きません(少なくとも、MICRO-MGやS03Tは)。そんなわけで、1桁目を無視したとしても、動作上、まったく問題がありません。こうやってデータを削っていくわけです。

角度からの変換基本
それでは、一番シンプルに、まず、オフセットや動作方向を意識せず(実は、意識すると、ちょっと難しくなるので)に計算する部分を紹介します。

_WORD   _SPCconvDegPlsRaw( _BYTE bServoNo, short sDeg100 )
{
    _WORD	wPls;

    if( sDeg100 < 0 )   wPls = ((long)DFS[bServoNo].awPlsOffset[0] * (long)sDeg100 )
                                                                              / 9000L + 3000L;
    else                wPls = ((long)DFS[bServoNo].awPlsOffset[1] * (long)sDeg100 )
                                                                              / 9000L + 3000L;

    return	wPls;
}

この関数ですが、サーボ番号と角度を入力すると、それぞれのサーボ用に補正されたパルス値を返します。角度は、100倍した値を使用しています。これは、浮動小数点型のデータで計算すると速度が落ちますので、整数型のデータのみを使用してそれなりの精度を出すための工夫です。よって、「60度」の値を求めたい時は、「6000」を入力します。そのため、「9000L」という数値が見えますが、これは「90度」を現しています。そして、「3000L」ですが、これはH8/3664の「1500us」を生成するためのカウンタへの設定値です。角度は、「±」を含んだデータですので、sDeg100がマイナスの場合、結果は1500usよりも小さくなり、プラスの場合は、1500us以上になります。

桁あふれを防ぐためにlong型で計算して、それを_WORD(unsinged short)に入れています。

また、ここで重要なのが計算順序です。素直に数学的に考えると…

「90度動作パルス値/90度*目標角度+3000」

となります。「90度動作パルス値/90度」で、1度あたりのパルス値を求めて、それを目標角度を掛け算するとパルス値がわかり、これに1500us分のパルス値を足せば、1500usを中心としたパルス値がわかります。しかし、整数型で計算していますので、これだと「90度動作パルス値/90度」の部分で、桁落ちしてしまいます。「Knowledge」の「整数型で計算するときの精度向上する計算順序」でも説明していますが、プログラムを組む時は、「なるべく式の中で常時数字が大きく保たれるようにした方がよい」ので、そこで、計算式の順番を変えて、上記プログラムのようになっているというわけです。

今回はここまでで、次回、オフセットをどうやって反映させるか?という話をアップしたいと思っています。

 

2004/12/06

足裏サイズが大きくなりました…

足裏サイズと日程
ONO電脳壁新聞」経由にて、第7回ROBO-ONEの足裏サイズと日程が変わったことを知りました。ONOさん、いつもありがとうございます。うぅ、既に50%-30%でカットし始めてしまっただよ…まあ、これは次回(次回も現行アーキテクチャで通じるのかわかんないけど)にまわすことにして、CADで新規定の足裏を描いてみると…うぉぉ、でかい!うれし〜です。 日程もJ-Classが3月13日、本戦が3月19、20日にずれました。これはHDDクラッシュでロスした時間を埋めるチャ〜ンス。

でも、きっとその次は8月でしょうから、5030足裏を見越した設計で進めることにして、「それより足裏が大きくてうれしい」という感じでいくことにしましょう。うんうん。

ところで、「5030足裏」とか「6040足裏」って呼び方、結構いいと思いませんか?

 

2004/12/05

CADデータ完成(再) あはは。

Sheet ABS?よしよし
20041205P00.JPG - 12,053BYTESまつしろさん命名で、「Sheet ABS」完成!ようやくここまで戻りました。今回は、手と脚を作り直しますので、部品としてはこんなもんです。それにしても、印刷してみると、足裏、小さいですね…。

ついでに、SIHPA CORE側のプログラムも復旧完了です。なんかバイナリサイズが2バイト違いますが、どうせこの後、大改造しますので、まあよしとしましょう。後は、SIPHA TERM側なのですが、こちらは被害大なのですが、これもかなり作り直しの予定なので、メカが完成してからぼちぼちっとやろうと思います。

 


Back Number of SISO-LAB FUTEIKI TOPIC
2004 Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec.
2003 Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec.

Top Page