Dynamixel Workbenchを触ってみた #01

作成日: 2019年7月14日 | 投稿者:みっちー

瀬戸内ROS勉強会のテーマである、ROS搭載のビーズセッターでは、ROBOTISのDynamixel XL430-W250-Tを使用する予定です。
それならROBOTISのDynamixel Workbenchは押さえておかないといけないよね!…ということで、いろいろ触ってみました。

aptで配信されていて、ROS melodicでインストール可能なdynamixel関連のパッケージ一覧

まず、dynamixel関連の公式パッケージって何?って話なのですが…。
aptコマンドを叩いてみますと…。

$ sudo apt install ros-melodic-dynamixel-[TAB][TAB]
ros-melodic-dynamixel-sdk
ros-melodic-dynamixel-sdk-dbgsym
ros-melodic-dynamixel-workbench
ros-melodic-dynamixel-workbench-controllers
ros-melodic-dynamixel-workbench-controllers-dbgsym
ros-melodic-dynamixel-workbench-msgs
ros-melodic-dynamixel-workbench-operators
ros-melodic-dynamixel-workbench-operators-dbgsym
ros-melodic-dynamixel-workbench-single-manager
ros-melodic-dynamixel-workbench-single-manager-dbgsym
ros-melodic-dynamixel-workbench-single-manager-gui
ros-melodic-dynamixel-workbench-single-manager-gui-dbgsym
ros-melodic-dynamixel-workbench-toolbox
ros-melodic-dynamixel-workbench-toolbox-dbgsym

たくさんありますね。

rosrunで実行可能(??)なパッケージ一覧

githubに上がっているもの、aptからインストール可能なもの、全部インストールしてみました。

Github : workbenchSDKworkbench-msgs

その上で、何が実行出来るのかなーと、rosrunコマンドを見てみます。

$ rosrun dynamixel_[TAB][TAB]
dynamixel_sdk
dynamixel_workbench_controllers
dynamixel_workbench_msgs
dynamixel_workbench_operators
dynamixel_workbench_single_manager
dynamixel_workbench_single_manager_gui
dynamixel_workbench_toolbox

インストール可能な”-dbgsym”ってのはなんだったんだろう…。
デバッグ用のナニカって感じはするんだけど…。

それでも、たくさんありますね。
それでは、1つずつパッケージの中身(ノード)を覗いてみます。


dynamixel_sdkで実行可能なノード(!?)

$ rosrun dynamixel_sdk [TAB][TAB]
group_bulk_read.py
port_handler.py
group_bulk_write.py
protocol1_packet_handler.py
group_sync_read.py
protocol2_packet_handler.cpp
group_sync_write.py
protocol2_packet_handler.py
packet_handler.py
robotis_def.py

cppって直接実行出来ないよね(^^;A
というより、どれもrosrun実行出来ませんでした。

どうやら、メインはDynamixelを扱うのに必要なヘッダファイルのパッケージのようで、cppやpyは、タイトルから想像するにサンプルコードじゃないかと。

dynamixel_workbench_controllersで、実行可能なノードおよびlaunchファイル

$ rosrun dynamixel_workbench_controllers [TAB][TAB]
dynamixel_workbench_controllers
find_dynamixel

$ roslaunch dynamixel_workbench_controllers [TAB][TAB]
dynamixel_controllers.launch

find_dynamixelの使い方は、e-Manualのチュートリアルに記載があり、さっそく試してみました。

文字通り、接続されているDynamixelを見つけて教えてくれます。

また、 dynamixel_workbench_controllers およびdynamixel_controller.launchについても、同じくe-Manualのチュートリアルに記載があるようです。(これから試す予定です!次回#02にて)

dynamixel_workbench_msgsで実行可能なノード

$ rosrun dynamixel_workbench_msgs [TAB][TAB]
(実行可能なノードなし)

・・・なし?

こちらに関しては、各シリーズのサーボに対応したmsgファイルとsrvファイルがインストールされたので、そういう目的のものと勝手に理解。

dynamixel_workbench_operatorsで、実行可能なノードおよびlaunchファイル

$ rosrun dynamixel_workbench_operators [TAB][TAB]
joint_operator
wheel_operator

$ roslaunch dynamixel_workbench_operators [TAB][TAB]
joint_operator.launch
wheel_operator.launch

joint_operator、wheel_operator、それぞれ、e-Manualに記載あり。(これから試します! 次回#02にて )

dynamixel_workbench_single_managerで、実行可能なノードおよびlaunchファイル

$ rosrun dynamixel_workbench_single_manager [TAB][TAB]
single_dynamixel_controller
single_dynamixel_monitor

$ roslaunch dynamixel_workbench_single_manager [TAB][TAB]
single_manager.launch
single_monitor.launch

まず、single_manager.launchは、XMLパラメータのボーレート、サーボID、デバイス名を書き換えて実行したら起動しました。こちらを実行すると、 single_dynamixel_controllerノード と single_dynamixel_monitorノード が起動します。

ターミナル上でCUIで、接続された1つのDynamixelをコントロール出来ます。Arduino版のworkbenchのmonitorによく似ていますね。

つまり、single_manager は、Dynamicelを CUIで制御する、単品のアプリケーションのようです。

dynamixel_workbench_single_manager_guiで実行可能なノード

$ rosrun dynamixel_workbench_single_manager_gui [TAB][TAB]
dynamixel_workbench_single_manager_gui

こちらは、単独で起動するとコアダンプを吐いてすぐに終了します。

使い方としては、事前にdynamixel_workbench_single_managerのsingle_monitor.launchを起動しておき、その後に dynamixel_workbench_single_manager_gui を起動するとGUIが起動します。

single_dynamixel_controller ノードのGUI版という感じで、GUIでDynamixelをコントロールすることが出来ます。GUIの雰囲気から、なんとなくDynamixel WizardのROS版って感じがしますね。

ちなみに、rqt_graphの様子は、下記のとおり。

XLというのが今回使用しているDynamixelのシリーズ名なのですが、シリーズごとにtopic名が変わるみたいな雰囲気ですね。

dynamixel_workbench_toolboxで実行可能なノード

$ rosrun dynamixel_workbench_toolbox [TAB][TAB]
(実行可能なノードなし)

dynamixel_workbench_msgsと同じで、単独で起動可能なノードはないです。

中身は、 重用そうなヘッダファイル と、Githubのソースコードのexamplesフォルダの中には、それらを使用するサンプルコードがたくさん入っていて、流用できそうな感じでした。

aptで配信されているROSのパッケージについてはgithubの内容からサンプルコードを抜いて、ヘッダ、msgファイル、srvだけを配信しているような感じです。


てっきりaptで配信されるROSパッケージは実行可能なものだけだと思いこんでたものの、インストール可能なパッケージ=実行可能という訳でもなくて、ライブラリ的なものも配信されている感じですね。

次は、マニュアルに従って、 dynamixel_controller およびOperatorsを試してみて、SDKやtoolboxの実体についても後々、深堀してみたいと思います…。

コメント

  1. dynamixel使いたいマン より:

    e-manualを参考にしたのですがdynamixelをpcにu2d2を用いて繋げ、find_dynamixelを実行しても接続されたdynamixelを見つけることが出来ません。心当たりがあったら教えてください。ちなみに使っているdynamixelはax-12aで電源供給は赤いランプが光っているので問題ないと思います。

    • みっちー より:

      コメントありがとうございます。
      ちなみに、DYNAMIXEL Wizard 2.0では、動作していますでしょうか?
      http://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/
      AX-12Aですと、プロトコル1.0で9600bps~1.0Mbpsにチェックを入れてスキャンすると、find_dynamixelと似たような動きをします。

      find_dynamixelに関しては、エラーメッセージは出ていませんか?
      うっかりミスとしては、Ubuntu上のでu2d2のデバイス名が、e-manual通り”/dev/ttyUSB0″になっていないケースや、”/dev/ttyUSB0″のパーミッション等は大丈夫でしょうか?

      あと、赤いランプですが、光りっぱなしはエラーです。
      起動時に0.5秒光ってそのあとは消えているのが正しい動作ですが、いかがでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

アーカイブ

広告

Top