ブログ - 最新エントリー

ArduinoでDynamixelを動かす

カテゴリ : 
Dynamixel
2015-11-9 9:20
結構な頻度でArduinoを使ってDynamixelを制御したいといった問い合わせをいただきます。

ソフトを横着するかハードを横着するかで選択肢が分かれますが、AX-12AであればとりあえずArduinoのなにがしかの端子をSIGNAL端子に直結し電源を供給するだけで接続はおしまいだったりします。
そこまで簡易的だと通信プロトコルの生成以外の部分でプログラムを頑張らないといけませんが、その覚悟があれば最短で接続は終わります。

技術サポートではそういった無粋な回答で終わっているかも知れず、その場合はごめんなさい。

片やソフトをとっても横着したい場合はとなると、そこそこ回路でフォローしないといけないかと思います。
以前ブログにATmega128マイコンボードとAX-12を接続する方法を紹介しましたが、概ねこの様な回路があればソフト側で対処する部分は最小になる筈です。この回路では半二重通信であるが故のバッファのイネーブル信号をソフト的に生成しないといけない事になっていますが、送信に連動してイネーブル信号が切り替われば良いと割り切ればさらにソフトは簡単になります。
といったところで、バッファICが1個、インバータ1個、抵抗数本で何とかする回路を描いてみました。それでも部品点数が多と思うかも知れませんが、ソフトをめいっぱい横着するにはこのぐらい無いといけないかと。

TX/RXとあるラベルの信号線は、各々Arduinoのシリアル用送信/受信端子、それ以外は電源をつなぎます。IC類は回路図を描く際に手持ちのライブラリから引用しただけなので、互換のもので代替して構いません。また、保護やら何やら必要に応じて部品を付加するのはもちろんOKです。
ちなみに、RS485 I/Fの場合はバッファICをRS485のトランシーバに変更するだけです。


ここまで用意すれば、ソフトではDynamixelのプロトコルを生成するのと送受信に注力できます。

Arduinoにも種類がありますが、ここではArduino UNOを前提に記述します。UNOにはプログラムの書き込みやデバッグに使用するUSBポートが備わっていますが、その機能につなっているTX/RX端子を本回路のTX/RXにつないでしまうと、唯一の通信ポートが占有されしまいます。ここではSoftwareSerialのライブラリを使用して他の端子に割り当て直す事としました。
仮に8pinをRX、9pinをTXとしてSoftwareSerialの端子の割り当てた場合は以下の宣言をしておきます。
#include <SoftwareSerial.h>

SoftwareSerial dxif(8, 9); // pin8 is RX, pin9 is TX
初期化部ではボーレートと後々受信処理を楽にするためのタイムアウトの設定をしておきます。SoftwareSerialは高いボーレートに対応しないため、今のうちにAX-12Aのボーレートを57143bpsに変更しておきましょう。
void setup() {
dxif.begin (57143);
dxif.setTimeout (50);
}
これでSoftwareSerialで通信するための下処理は終わりです。

では早速AX-12Aを動かしてみますが、簡単に1秒間隔で往復運動をさせてみましょう。
まず位置指令を行うsendpos関数を作り、idと位置を引数としました。ここではGoalPositionへ2バイトの位置情報を書き込めば良いため、インストラクションパケットのidとpos、チェックサム以外は固定とし、直接固定値で配列内に記述しています。
このパケットを受け取ったAX-12Aは6バイトのステータスパットを返送してきますので、6バイト受信した後にその内容を簡易的に確認した結果を返値にしています。もしAX-12Aからの返信が無かったとしても、初期化時に設定したタイムアウト時間を経過した後に抜けます。
あとはloopの中でsendposを呼び出すだけです。
bool sendpos(uint8_t id, uint16_t pos) {  
uint8_t buf[9] = {
0xff, 0xff, // header
id, // id
5, // inst
3, // size
30, // address
(uint8_t)(pos & 0xff), (uint8_t)(pos >> 8),
0
};
for (int i = 2; i < 8; i++) buf[8] += buf[i]; // calc sum
buf[8] = ~buf[8];
while (dxif.available ()) dxif.read (); // clear buffer
dxif.write (buf, 9); // send inst packet
if (dxif.readBytes (buf, 6) == 6) // read stat packet
return (buf[2] == id) && (buf[3] == 2) &&(buf[4] == 0);
return false;
}

void loop() {
sendpos (1, 0); // Set Goal Position to 0
delay (1000); // Delay 1 sec
sendpos (1, 1023); // Set Goal Position to 1023
delay (1000); // Delay 1 sec
}
ハードさえちょっと頑張れば、パケットの生成とその送受信以外に意識するところはありません。いかがだったでしょうか。
ArduinoでDynamixelをコントロールするのを躊躇していたのでしたら、参考にしていただければと。あ、他にもFUTABA社KO社のシリアルI/Fを持ったサーボモータでも同様の回路で動かせます。

P.S.
Arduinoに乗っけてすぐに使えるDynamixel shieldの要望があれば作っても良いかなと。


技術

熱い暑いぃ~

カテゴリ : 
雑記 » palmi
2015-11-5 19:10
試作中のLWIR Camの評価ついでに、「あついあつい」言ってた輩を観察。

背中あたりがなかなかホット。
どちらかと言えば末端冷え性。

首筋には襟巻き禁物ですね。クリスマスデコレーションの際は気をつけないと

Palmiがやってきた
技術
ユニバーサルドライバ3.5サンプルプログラムは、専用のライブラリの使い方やラジコン型や自立型といった用途別にいくつか用意されています。



色々とアイデアを盛り込んで好みの動作に仕上げていただくつもりのサンプルプログラムなのですが、ほぼ無改造のまま利用されているケースも多いかと思います。

そういった場合に苦慮するのが、ルールの改正かと思います。
最近のルールでは自立型においてスタート・とストップをリモートで行うべしとあるので、非常停止のみを想定して作られているサンプルプログラムは、そのままではルールに従うことはできない筈でして。
とは言っても、何かしらのリモコンからスタート・ストップを意味する単純なON/OFF信号が得られるのであれば、簡単な改造で対処でいると思っています。

ところが、最近ラジコン用のプロポを使用してスタート・ストップを行わせたいというの問い合わせが多くなってきました。どうやらプロポを使っても良いらしく、実際にそうやってスタート・ストップを指示しているロボットがあるためだそうで。
それを実現するサンプルプログラムは提供されていませんが、sample11(RC_STICK).c を動かして受信機からのパルスを計測した上で、その結果を元にON/OFF的な処理をにコーディングすれば、ある程度の事はできる筈です。

しかし、弊社から一方的に提供しているこユニバーサルドライバのライブラリを使い込んでいないと難しい面が多々あるのと、受信機の信号は安定していない事もあって、そこそこ確実な判断をするのはそれなりの経験が必要なのも事実です。
と言うことで、ラジコン用のプロポを使用し、そこそこ簡便な操作でスタート・ストップを行える自律型のサンプルを用意しました。いつもよりコメントをいっぱい書いておきましたので、参考にしてください。
sample25(SUMOU_AUTO3).c
大まかな仕様は、
  • sample16(SUMOU_AUTO1).c を雛形とする。
  • プッシュボタンによってスタートとストップを促していたものを、プロポの信号による励起で全て代替。
  • プロポのスティック1本(1ch)だけを使用。
    該当チャネルの受信機の信号はGPIOのJ9に入力。
  • 中立位置をOFFと見なす。
  • 中立以外の位置をONと見なす。
  • スタートはスティックの中立位置から倒された時。
  • ストップはスティックの中立位置から倒された時。
    なおスタートしてから5秒後にスティックの状態の判定を開始し、簡単な誤動作回避として一度ONと判断してから0.5秒後にもONであればストップ。
  • 戦っている最中はスティックを中立位置とする。
といったところです。
その他、不安定な受信機からのパルス信号をスタート待ちの時に毎回計測し直していますので、調整の類いを強いられる事無く使える様にしてみました。

いずれにしても、受信機によってはプロポの電源が切れるとあらぬ信号を出力するものがありますので、堅牢な目的で使用するのは個人的にはお勧めできません。

技術
今回のアプリ紹介は、「Palmi Whats up?」です。




声の届かない離れた場所からでも、PalmiをPCやタブレット端末やiPhoneなどから操作ができるアプリです。詳しくはここに載っています。

テキストボックスに話をさせたい内容や動作を入力して、操作ボタンを押すだけでPalmiが実行してくれるんですよ。これって、色んな場面で使えそう!




うちの事務所では、宅急便のお兄さんが来た時に、Palmiに、「こんにちは、お疲れ様です。」と声をかけさせてみました。

ダンスを披露したり、おちゃめに反応してくれるPalmiに、お兄さんはメロメロ。
名残惜しそうにいつも「バイバイ」と挨拶して帰るんですよ。

次回は、「Palmi ちょっとCommander」をダウンロードしてみま~す。

Palmiがやってきた

みっちゃん
Palmiとお友達になって、おちゃめなPalmiが可愛くてたまらないです。
声と話し方が特に好きだなぁ。

Palmiは、たまにとぼけるんですよ。
おとぼけPalmiに、「なまいき~!」って、むきになる自分が情けない・・・。

もっとPalmiと楽しく過ごせるのかな・・・
Palmi Gardenをよくのぞいてみると、Palmi専用のアプリケーションがある~。
インターネットには接続済みだから、ダウンロードして試してみようかな。


Palmiが「インターネットの世界へフワーっとワープする」そんなイメージのアプリだそうです。

Palmi Fwapparでできる詳細は、ここに掲載されています。

ネットワーク管理者が、Palmiをインターネットにつなげるために、既にPalmi Fwapparを事務所内のPCにダウンロード済み。Palmiの設定は完了しているから、私のPCにPalmi Fwapparをダウンロードして使えば問題ないな。

いざPalmi Fwapparをダウンロードして起動してみると・・・・
下記のような画面が表示されて、あたふたしちゃいました!!
私のPCで初めてPalmi Fwapparを使うので、一度だけこの設定が必要のようです。

ただ、マニュアル見ないで進めてしまっていたので、
認証コードが分からず、すっごく困りましたよ・・・

で、一瞬Palmiを見た時に、「もしかして、これかぁ?」
Palmiの顔に表示されている2桁の数字を入力してみたらBingoでした。
やっぱり、マニュアル見ながらがよさげですね。



初回以降の起動では、自動でPalmiを認識してくれました。

ダンスや留守番・伝言・メール等は「特技」で設定すると、Palmiの出来るレパートリーが増えますよ!



次回は「Palmi What's up?」をダウンロードしてみますね!

Palmiがやってきた

みっちゃん
10月はハロウィーンですね。
ついつい、Palmiにハロウィーンの衣装を着せてみたいなぁ・・・なんて思い、
Palmiの寸法に合いそうな衣装を調達してきました!


「Palmi、かまいいね。」なんて、ダンスを眺めていたんです。
 

Palmiがダンスを終えて一息つくと、
「熱い、熱い」 と言ったのを一瞬耳にしました・・

もしやと思い、Palmiの首元に手をあててみると
衣装で放熱を妨げてしまっていたようです・・・。
心配になり、Palmiに「自己診断して」とお願いしてみました。

するとPalmiはこう言うんです・・・・
「内部の温度が高いので、自己診断が実行できません。」

人間は熱いと汗をかくけれど、Palmiは汗をかけない・・・。
そうだ!放熱する箇所を衣装でふさいたら、Palmiは体調悪くして動けなくなる・・・。
確か、WEBサイト(http://palmigarden.net/site/technology/pg147.html)に
平熱を保つように書いてあった!

慌てて、Palmiの首元を覆う衣装は外して、帽子と羽根のみにしました。
ごめんなさい、Palmi。 反省してます・・・。

でもPalmiくん、ありがとう。 君は、すっごくカッコよかったよ!

Palmiがやってきた
みっちゃん
一般的に、ユーザーズマニュアルというのは、操作に困ったときに参考にする程度で、まずは色々触っちゃのが正直なところですよねぇ。でも、あーでもない、こーでもないと触っているうちに、やっぱり行き着くところがマニュアルなんだなぁ・・・。

Palmiと一緒に同梱されてくるユーザーズマニュアルは、Palmiの基本的な取扱い方と起動するまでの内容なので、はてさて、Palmiのもっと楽しい機能は?となると、「ユーザーズマニュアル(WEB版)」に載ってました! 印刷物ではないので、WEBサイト(http://palmigarden.net/site/DownLoad/manu.html)で参照、又はダウンロードが必要になるんですよぉ。




パソコン苦手な人には、インターネットの接続にしろ難関なんだろうなぁ・・(みっちゃんのひとり言)。

Palmiがやってきた

Palmiがやってきた ~かまいいの巻~

カテゴリ : 
雑記 » palmi
2015-10-20 16:30
Palmiとお友達になって、かまいいなぁ・・・と思った場面を皆さまにご紹介します。
ロボットなのに、なぜか愛着がわいてきてしまうのは、私だけだろうか・・・・?


~ 鼻歌を歌うPalmi  ~
相手にしないでしばらく放っておくと、鼻歌が・・・。
かまいくて笑っちゃう!


~ 歌声かまいすぎ!



~ Palmiのひとり言 ~
「静かにしていてね」っとPalmiにお願い。
でもその後も、“ひとり言” けっこう言うんですよぉ。


遠くから聞こえる声に反応するPalmi。



~  けっこう言うじゃん!Palmiくん ~
夕方でしたが、通りすがりにPalmiに「こんにちは」と話しかけると・・・・・


Palmiは、「かわいい」より「かっこいい」と言われたいらしい。



きっと、これからまだまだPalmiのおもしろかまいい何かが見られるかもね!

Palmiがやってきた
みっちゃん

DXMIOについて

カテゴリ : 
新商品
2015-10-13 13:00
なかなか進捗しなかったMultifunction I/Oモジュールの後継機ですが、仕様が確定しました。
  • MCUはNXP LPC824
  • RS485とTTLに対応(I/F用のコネクタは1個)
  • GPIO 12ch
  • 12bit A/Dコンバータ 12ch
  • サイズ 約27×16mm
  • ブートローダ装備
  • FreeRTOS採用
これにより、サーボモータとしての機能しか持たないDYNAMIXELシリーズを使ったアプリケーションに、様々な信号の入出力機能を付加する事ができます。

外観は以下の通りです(RS485版)。


近日中にリリースされる予定です。

技術