ブログ二足歩行ロボット研修二足歩行ロボット研修(kora編)

二足歩行ロボット研修(kora編)[11] DYNAMIXEL SDKを使ってみる

こんにちは。koraです。

前回に引き続き、サーボモーターの動作を確認します。今回はDYNAMISEL SDKを使ってRaspberry Pi 4から動作させます。

DYNAMIXEL SDKのインストール

まずDYNAMIXEL SDKをインストールします。ROBOTISのe-Manualには、インストール方法としてgitを使う方法、zipファイルをダウンロードする方法、ROSパッケージとしてインストールする方法が紹介されています。最新のバージョンを利用するにはgitを使うと良いらしいので、さっそくやってみます。

Raspberry Pi 4で次のコマンドを入力し、GitHubのリポジトリをクローンします。

$ git clone https://github.com/ROBOTIS-GIT/DynamixelSDK.git

SDKの中のpythonディレクトリに移ってPython APIをインストールします。

$ cd DynamixelSDK/python
$ sudo python setup.py install

これでPythonからDYNAMIXEL SDKを利用できるはずです。

Raspberry Pi 4とXM540の接続

Raspberry Pi 4でubuntu 18.04を使っている場合、デフォルトでGPIOピンヘッダー(物理ピン8、GPIO14がTX、物理ピン10、GPIO15がRX)がシリアル通信に利用できるようです。

ブレッドボード上でGPIOヘッダーとRS485変換ICを繋ぎます。今回はサーボモータから情報を受け取らないので送受信を切り替える必要はなく、RS485変換ICのDEピンとREピンは常にHIGHにします。

Raspberry Pi 4とXM540の接続

サンプルの実行

e-Manualにサンプルコードがありますが、バージョンが合っていないようで動きませんでした。代わりにGitHubのサンプルを参考に動作させてみます。

DynamixelのIDは 1、ボーレートは 57600 ですのでそのように設定します。また、シリアル通信のデバイス名は /dev/ttyS0 になります。

DXL_ID                      = 1
BAUDRATE                    = 57600
DEVICENAME                  = '/dev/ttyS0'

今回は送信オンリーで受信ができない回路構成になっていますので、サンプルの write1ByteTxRx と write4ByteTxRx を、次の write1ByteTxOnly と write4ByteTxOnly に書き換えて使用します。。

# Enable torque
dxl_comm_result = packetHandler.write1ByteTxOnly(
    portHandler, DXL_ID, ADDR_PRO_TORQUE_ENABLE, TORQUE_ENABLE)
index = 0
while 1:
    # Write goal position
    dxl_comm_result = packetHandler.write4ByteTxOnly(
        portHandler, DXL_ID, ADDR_PRO_GOAL_POSITION, dxl_goal_position[index])
    sleep(1)
    index = 1 - index

書き換えたPythonコードをsudo権限で実行すると、Raspberry Pi 4から XM540 を動かすことができました。

タイトルとURLをコピーしました