ブログ トピックス

ニュース

    USB2DXIF入荷のお知らせ (2024/05/02)

    大変お待たせいたしました。
    PCとDynamixelシリーズ間を仲介するI/F「BTE101 USB2DXIF」が入荷いたしましたので、販売を再開いたしました。


    管理部

    年末年始休業のお知らせ (2023/12/18)

    2023年12月28日(木)~2024年1月4日(木)の間は、年末年始休業とさせていただきます。
    • 電話・FAXによるお問い合わせはお休みいたします。
    • 電子メールによるお問い合わせ及び、オンラインショップからのご注文は、2023年1月5日以降から順次対応いたします。
    • Dynamixelシリーズについては12月22日までのオーダ分を今月の最終注文といたします。
    何卒ご了承くださいますようお願い申し上げます。

    年末年始休業のお知らせ (2022/12/15)

    2022年12月28日(水)~2023年1月4日(水)の間は、年末年始休業とさせていただきます。
    • 電話・FAXによるお問い合わせはお休みいたします。
    • 電子メールによるお問い合わせ及び、オンラインショップからのご注文は、2023年1月5日以降から順次対応いたします。
    何卒ご了承くださいますようお願い申し上げます。

ニュースのトップへ

ブログ

    DXL Yシリーズ試食3 (2024/07/02)

    またまた前回に引き続きYシリーズをお試し。

    負荷をつなげていない状態で評価してもあまり意味は無いのだが、パワーが有り余って危険なのでご了承のほど。
    その代わりと言っては何だが、最大加速度と急峻な指令値の変更を伴う運転を少し長めに行いつつ、温度を含めて観察しておいた。
    ちなみに後ろで回っているCyberGearは比較用。


    技術

    DXL Yシリーズ試食2 (2024/06/28)

    前回に引き続きYシリーズをお試し。

    ギア無しのモデルは台車の足回りの駆動に使うケースもあるかという事で、速度制御もやっておく。見てくれは先のコードと大差無く、動作モードと指令先が違うだけ。こちらも例に漏れず扱う数値が大きい。
    import time
    from pyDXL import *
    dx = DXLProtocolV2('/dev/ttyAMA0', 57600, 0.05)
    ID = 1
    dx.Write8(ID, 512, 0)
    if input('Clear? (y/N) ') == 'y':
    dx.TxPacket(ID, DXLProtocolV2.INST_CLEAR, (0x01, 0x44, 0x58, 0x4c, 0x22))
    dx.RxPacket(timeout = 5.0)
    time.sleep(1)
    dx.Write8(ID, 33, 1)
    dx.Write8(ID, 512, 1)
    for i in range(-550000, 550000, 550000 >> 4):
    dx.Write32(ID, 528, i)
    time.sleep(0.5)
    dx.Write8(ID, 512, 0)
    YM080-230-R099-RHもつなぎ、テキトウに位置決め制御と速度制御を行わせた動画を。簡単に動かすにしても机に置いただけだと暴れまくって危険なので、重しにくくりつけておいた。


    技術

    DXL Yシリーズ試食1 (2024/06/24)

    DXLシリーズはモデルが大きく変わると運用方法が変わってしまう。せめてモデルが違っていても同じアイテム名のアドレス程度は同じであって欲しいのだが、Yシリーズも例に漏れず他のモデルとの互換性は低い。
    毎回ドキュメントを読み返すのも何なのでDX2LIBを真似てModel Noを元にグループ化し、一部の共通するアイテムのアドレスを引っ張り出せる簡単なクラスを作成

    次に電源だが、既存との互換性は一切ない。それなりに大きいターミナルブロックが2箇所設けられているが、単独で消費する電流程度しかまかなえないので、DXLをまたぎながらマルチドロップ接続する事は避けた方が良さそうだ。またYM70とYM80ではターミナルブロックのサイズが異なるので、使い回しができない。
    通信はRS-485という事で、電気的に既存のDXL用のI/Fが使える。シグナルGNDは電源と共通で、D+とD-のみの1.25mmピッチ2ピンのコネクタが用意されている。筐体のサイズに対してコネクタが華奢なのと、自前でツイストシールド線を使った場合のシールド設置処置が少々面倒。


    今回は諸々の電気的な不都合を無視した上で4ピンのEHコネクタに変換するケーブルを作成し、例のRasPi Zero 2W + キャリアボードに接続。


    Pingを叩いたら応答するので電源と通信はOK。しかしLEDが点滅し続ける状態でトルクイネーブルができない。コントロールテーブルばかりを眺めていたので見逃していたが、e-manualの冒頭に記載されているバックアップバッテリに関する注意書きを読み飛ばしていた。筐体に内蔵されているバックアップバッテリのリード線が外れているので接続。


    しかしまだ動かない。Clear Errorを行わないといけないようだ。特殊なパケットだが書いてある通りのバイト列を送信するのみ、DXL Wizardを使うのであればその操作方法に従うまで。
     dx.TxPacket(ID, DXLProtocolV2.INST_CLEAR, (0x01, 0x44, 0x58, 0x4c, 0x22))
     dx.RxPacket(timeout = 5.0)
    なおError Clearはステータスパケットの返答までの時間が4秒程度と長かったり、その処理の直後はインストラクションパケットを受け取らない期間があったりと変な癖が見つかったので、pyDXL.pyのRead関数にtimeoutの引数を追加しておいた。

    ようやく下準備が整ったところで、まずは位置決め制御を行ってみる。その所作は他のモデルと大差無く、トルクディスエーブル→動作モード設定→トルクイネーブル→目標位置へ任意の値の書き込み、といった段取り。今回試したYM070-210-M001-RHの場合、360度の範囲で動かそうとすると最大分解能が19ビットとかなり大きい数値を扱う事になる。
    import time
    from pyDXL import *
    dx = DXLProtocolV2('/dev/ttyAMA0', 57600, 0.05)
    ID = 1
    dx.Write8(ID, 512, 0)
    if input('Clear? (y/N) ') == 'y':
    dx.TxPacket(ID, DXLProtocolV2.INST_CLEAR, (0x01, 0x44, 0x58, 0x4c, 0x22))
    dx.RxPacket(timeout = 5.0)
    time.sleep(1)
    dx.Write8(ID, 33, 3)
    dx.Write8(ID, 512, 1)
    for i in range(-262144, 262144, 512):
    dx.Write32(ID, 532, i)
    dx.Write8(ID, 512, 0)

    といったところで1時間が経過したので一旦休憩、続きは次回に。

    技術

    DXL Yシリーズ (2024/06/17)

    リリースされたのに詳細の案内を行っていなかったDXL Yシリーズ
    少々高価なので手が出にくいが、210W/230WのBLDC・高分解能なエンコーダ・絶対位置のバッテリバックアップ、といったPシリーズを置き換えるには十分すぎる性能を持っているので、これらも後ほどRasberry Pi Zero 2 Wを使って動かしてみようと思う。



    技術

ブログのトップへ