1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FeetechServo(STS3215)をROS2から動かす(足回りとしても使えるよ)

Posted at

はじめに

高専ロボコンで、機械班からサーボモーターを使いたいとの申し出があったので開発。
弊部のサーボモーターの制御・回路周りはロステクしたので新規開発。
せっかくなので知見として残しておきます。


※この記事は@srs様のROS2講座11 FeetechServo(STS3215)を動かすを大いに参考・引用させていただいています。心から感謝申し上げます。

STS3215の仕様について

サーボ本体

image.png

サーボ用インターフェイスボード

image.png


  • このサーボの強み
    • 安い(¥3000)
    • ROS2から制御できる
    • 駆動角制限なし(無限回転可能)
    • UART/PWM両方の制御が可能
    • 4.0~7.4Vの幅広い駆動電圧 (configから無理やり変更可能)
    • 19.5kgf・cmのそこそこなトルク
    • 小さい(長辺:45.23mm 短辺:24.73mm 高さ:35mm)

サーボの購入元:秋月電子
インターフェイスボードの購入元:秋月電子

↑のリンクに中国語のデータシートがあるので頑張って読もう!

...っていうのも酷なので設定するところだけ説明します!

初期設定

windowsPCで秋月のリンクからダウンロードしたものの中にFD.exeがあるのでそれを起動。

image.png
image.png

複数のサーボをつなげた状態で設定してもいいが、IDがかぶっていると通信不可になるのでひとつずつ設定するのが無難。

  • 手順
  1. USBとV1をつないで電源電圧をかける。
  2. 左上COM(n)を選択
  3. BaudRで1000000を選択(100万bps)
  4. open
  5. Search→少し待つ
  6. サーボをつなげていて、電源電圧を与えていれば下の表に出てくるのでそれを選択
  7. 上のリボンからProgrammingを選択
  8. ↑の画面になるので、下の表のValueの通りに変更(書いていないところは変更しなくてok)
Address Memory Value(変えるところ) Area R/W
5 ID 好きな数字[0~255] EPROM rw
6 Baudrate (詳細は下へ) EPROM rw
9 Min Position Limit 0 EPROM rw
11 Max Position Limit 0 EPROM rw
33 Work Mode (詳細は下へ) EPROM rw

Work Mode(一番大事):

Value 機能 備考 備考2
0 多回転位置制御モード -32236~32237の範囲で動作
(普通のサーボのモード)
デフォルト
1 等速回転モード 無限回転可能
角度制御はできない
足回り用
2 PWMモード PWMで動かすモード

Baudrate:

Value rate[bps] 備考
0 1000000 デフォルト
1 500000
2 250000
3 128000
4 115200
5 76800
6 57600
7 38400

4未満(115200bps未満)にすると動作が不安定になります。
RaspberryPi 3A, 4B, Nucleo-F446REではデフォルトの1000000bpsで問題ないと思います。

回路周り

こんな感じに青色のやつを剥ぎ取ってXTコネクタなどをつけるのが無難。

20241101_172312.JPG

ROS2から動かす場合はUSBを直接つなげればOK
マイコンから動かす場合は5芯のやつをつなげればOK
(DTRは何も繋げなくてOK)

スイッチは必ず5V側に倒しましょう。

これで終わり。かんたん!!

制御周り

マイコンからの場合

秋月のファイルにArduino用ライブラリがあるのでそれを適当に改造して使う。
Mbedで使いたい場合もちょっと改造すればOK.
例:Serial --> BufferedSerial

ROS2からの場合

まず前提として先人@srs様のROS2講座11 FeetechServo(STS3215)を動かすをかならず見てから使用してください。
ほとんどがこのプログラムを改良したものになります。
(最初のworkmode[1]に対応させただけ・ちょっと機能追加しただけ)

事前準備

ROS2講座11 FeetechServo(STS3215)を動かす #事前準備を参照。

コード

下を参照。

ROS2 topic echo joint_statesでフィードバックの情報が読めます。

改良点はトルクを切る(手で回せる)状態にしたり、なんかいろいろできるようにしてあります。
適当コードですがどーぞ

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?