ニュース

    年末年始休業のお知らせ (2015/12/10)

    2015年12月29日(火)~2016年1月4日(月)の間は、年末年始休業とさせていただきます。
    • 電話・FAXによるお問い合わせはお休みいたします。
    • 電子メールによるお問い合わせ及び、オンラインショップからのご注文は、2016年1月5日以降から順次対応させていただきます。
    • 緊急の際はご案内いたしております担当の直通電話にてお受けいたします。
    何卒ご了承くださいますようお願い申し上げます。

    DXCONF更新 (2015/11/19)

    DXCONFに同梱されるdllにおいて、Ping2関数の引数にアライメントの不具合が見つかりました。
    これは複数台のDynamixelが接続された環境において、DXCONFのScan機能を使用する際に「Adv. Ping」にチェックを入れて検索すると、間違ったデバイスがリストに列挙される問題の原因となっていました。

    Dynamixel Libraryの修正版と合わせて、DXCONFの更新版を以下に公開いたします。
    Dynamixel Library 3.1
    DXCONF V2.3.4.0
    技術

    ATmeag128Aマイコンボード再販のお知らせ (2015/10/30)

    諸般の事情にて販売を中止しておりましたATmega128Aマイコンボードですが、本日より再販致します。
    合わせて、ウェブショップの在庫数を補充致しました。



    ご愛顧頂いておりますお客様におかれましては、大変長らくお待たせいたしまして誠に申し訳ございませんでした。

    管理部

ニュースのトップへ

ブログ

    Dynamixel XMシリーズ (2016/04/21)

    Dynamixelネタで久しぶりの更新です。

    近々XMシリーズが新たに加わります。
    PROシリーズの下位の位置付で、ユーザからのフィードバックを一部反映したものとなります。


    まず登場予定なのは機械的なスペックがMX-28に近く、ギア比違いのXM430の2種類。フランジを一掃し、ボディーにネジ穴が備わります。


    コネクタ周りはケーブルの取り回しを意識した溝が設けられ、カバーができます。出力軸の裏側の蓋は、フリーホーンに換装可能です。


    コネクタはJST製のものに変更されます。


    PROシリーズの下位の位置づけという事もあり、デフォルトの通信プロトコルはPROシリーズに採用されているV.2ですが、旧来製品との混在を可能にするためにV.1もサポートします。

    もう少し調整が必要なため、詳細については正式なリリースまでお待ちください。

    技術

    Palmiがやってきた ~アプリ使ってみるの巻3~ (2015/11/10)

    今回は最終で、「Palmi ちょっとCommander」を紹介します。



    「Palmiにちょっと何かをやらせてみよう」というアプリケーションだそうです。

    画面を一瞬見た時に、「ん? もしかしてむずかしい?」と思うかもしれませんが、
    いえいえ、むずかしいことはなく、Palmiにやって欲しい動作を選んで組合わせていくだけなんです。

    どこをどう設定したらよいのか、まず迷うと思うので、最初にここを覗いておくとよいですよ。




    「ちょっとコマンダー」でPalmiに設定した動作を、Palmi Fwapparの「やくそくごと」で確認できます。



    それでは試しに、TVコマーシャルの「たけし、バカヤロー」をPalmiにやってもらいましょう! 

    ちょっとコマンダーには、CMモーションが用意されているんですよぉ。
    では、順番に設定してみますね。

    「ToDoのキッカケを設定する」の文字をクリックすると別画面が表示されるので、“いつ?”は“顔を見たら”にして、 “誰の?”は“誰でも”を選択してみました。



    次に、下記のように設定します。※1.2.3は順不同でOK。
    1.「動き」のリスト→“話す(モーション付き)”を選択。
    2.画面右下の「どのモーションをしますか?」→“CMモーション”をクリックして選択。
    3.「何を話しますか?」→“たけし、バカヤロー”の言葉を入力。
    4.「ToDoのプレビュー」ボタンを押す→Palmiが“たけし、バカヤロー”を動作する。

    では、この動作に名前を付けて保存をすることに。
    1.画面左上の「ToDoの名前を入力してください」をクリック→“たけし、バカヤロー”を入力。
    2.画面下の「ToDoの保存」ボタンを押して完了!



    Palmi Fwapparの「やくそくごと」に、しっかりと登録されています。



    そしてこの後、Palmiに実証してもらおうと私の顔をみてもらったのですが、
    残念ながら、“たけし、バカヤロー”のモーションをしてくれませんでした・・・・。
    何でだろうなぁ・・・・

    では、“誰でも顔をみたら”ではなく、時間で設定しなおしてみたら、
    設定した時間に、Palmiは、“たけし、バカヤロー”をやってくれました!

    本当は、時間ではなくて、“誰でも顔をみたら”で動作してほしいなぁ・・・・。

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

    ArduinoでDynamixelを動かす (2015/11/09)

    結構な頻度で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の要望があれば作っても良いかなと。


    技術

    熱い暑いぃ~ (2015/11/05)

    試作中のLWIR Camの評価ついでに、「あついあつい」言ってた輩を観察。

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

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

    Palmiがやってきた
    技術

ブログのトップへ