0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RaspberryPi + FE-URT-1でFEETECH社シリアルサーボを動かしてみる

Posted at

はじめに

Pythonを使って、FEETECH社シリアルサーボ,SMSシリーズ,SCSシリーズ用インターフェースボード FE-URT-1 からSTS3032サーボを動かしてみた。

環境

STS3032動作モード

STS3032は、FEETECH社が製造する360度回転可能なシリアルバスサーボモーターで、以下4つの動作が可能である。以下4種類の動作をPC(Windows11)およびRaspberryPiから動かしてみる。

モード  内容 説明
0 サーボモード   360°の範囲で位置制御が可能
位置は0~4095の値で指定
1 連続回転・速度制御モード 回転速度を指定して制御
速度は10~9999の値で設定(負の値で逆回転)
2 連続回転・トルク制御モード トルクを指定して制御
Time値を50~1000で設定(負の値で逆回転)
3 ステップモード 指定した回転量だけ回転
最大±30719ステップ(約7.5回転)まで設定可能

FE-URT-1によるSTS3032動作確認(PC編 Windows11)

PC --[USB]--> FE-URT-1 --[Serial]--> STS3032

■ 接続確認

  • STEP1.FE-URT-1 マニュアルに従ってPC->FE-URT-1->STS3032を接続する

  • STEP2.FD.exe起動後、Com/BaudRをマニュアルに従って設定し「Open」をクリックして通信を確立する

    • image.png
  • STEP3.「Search」をクリックし接続されたサーボを検索する

    • image.png

■ 動作確認

  • Operation Mode 0

    • STEP1.Programmingを表示し、WorkMode=0にする
    • STEP2.Debugに戻り「Write」を選択してスライダーを動かしてみる
      image.png

    Mode=0では[Goal Position(Address=42)]で角度を指定している

  • Operation Mode 1

    • STEP1.Programmingを表示し、WorkMode=1にする
    • STEP2.Debugに戻り「Speed」(±10~9999)に値を設定し、Setを押下する
      image.png

    Mode=1では[Goal Velocity(Address=46)]で速度を指定している

  • Operation Mode 2

    • STEP1.Programmingを表示し、WorkMode=2にする
    • STEP2.Debugに戻り「Time」(±50~1000)に値を設定し、Setを押下する
      image.png

    Mode=2では[Present PWM(Address=60)]でトルクを指定している
    ↑これ読み取り専用だった。。。ということでFE-URT-1から送信されているデータを確認してみる。
    Time = 500
    image.png
    Time = -500
    image.png
    ⇒[Goal Acceleration(Address=41)]でトルク指定していた

  • Operation Mode 3

    • STEP1.Programmingを表示し、WorkMode=3、Min Position Limit/Max Position Limit=0にする
    • STEP2.Debugに戻り「Goal」に目標量「Speed」に速度を設定し、Setを押下する
      image.png

    Mode=3では[Goal Position(Address=42)]で目標移動量、[Goal Velocity(Address=46)]で速度を指定している

FE-URT-1によるSTS3032動作確認(RaspberryPi編)

RaspberryPi --[USB]--> FE-URT-1 --[Serial]--> STS3032

■ 接続確認

STEP1.FE-URT-1 を Raspberry Pi の USB ポートに接続
STEP2.ログメッセージ確認->「attached to ttyUSB0」と出ているためOK

~ $ dmesg | grep ttyUSB*
usb 1-2: ch341-uart converter now attached to ttyUSB0

STEP3.デバイスファイルの確認

~ $ ls /dev/ttyUSB*
/dev/ttyUSB0

STEP4.通信テスト

~ $ minicom -b 115200 -D /dev/ttyUSB0
minicom へようこそ 2.8

オプション: I18n 
ポート /dev/ttyUSB0, 07:11:23

CTRL-A Z を押すと、説明画面になります。

※Ctrl+A -> X で終了

~ $ git clone https://github.com/AkariGroup/feetech_setup.git
~ $ python -m venv --system-site-packages .feetech
~ $ source .feetech/bin/activate
(.feetech) ~ $ python feetech_setup/search_ping.py -p /dev/ttyUSB0
シリアルポートを開きました。
シリアルポートをbaudrate: 1000000 にセットしました。feetechサーボを探索します。
------------------------------------------------------------
Feetechサーボが見つかりました。Baudrate: 1000000, ID:001, モデル名:521
------------------------------------------------------------
シリアルポートをbaudrate: 500000 にセットしました。feetechサーボを探索します。
シリアルポートをbaudrate: 250000 にセットしました。feetechサーボを探索します。
シリアルポートをbaudrate: 128000 にセットしました。feetechサーボを探索します。
シリアルポートをbaudrate: 115200 にセットしました。feetechサーボを探索します。
シリアルポートがbaudrate: 76800に対応していません。スキップします。
シリアルポートをbaudrate: 57600 にセットしました。feetechサーボを探索します。
シリアルポートをbaudrate: 38400 にセットしました。feetechサーボを探索します。
スキャンが完了しました。

■ 動作確認

(.feetech) ~ $ pip install feetech-servo-sdk
(.feetech) ~ $ python feetech_setup/move_test.py -p /dev/ttyUSB0
シリアルポートを開きました。
シリアルポートをbaudrate: 1000000 にセットしました。feetechサーボを探索します。
baudrate: 1000000 にfeetechサーボID: 1を発見しました。

ENTERキーを入力すると、サーボID1が2048に動きます。

ENTERキーを入力をすると、サーボID1が少し動きます。正しいサーボが動くか確認してください。

ENTERキーを入力をするとサーボOFFします。

id:1 サーボOFFしました。
------------------------
テスト完了!
------------------------

move_test.pyのmain()内で--portオプションがPortHandlerへ渡せていないため、以下の通りコード修正が必要

- portHandler = PortHandler(DEVICENAME)
+ portHandler = PortHandler(args.port)
  • Operation Mode 0/1/2/3
    Github

参考

ドキュメント

サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?