Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix to use dynamixel servo motors as head joints of SOAR #5

Open
wants to merge 11 commits into
base: XM
Choose a base branch
from

Conversation

ChiroruNeko
Copy link

@ChiroruNeko ChiroruNeko commented Nov 26, 2024

Summary

SOARの首パン軸、チルト軸でDynamixelを使用するための変更。

Detail

  • CMakeLists.txt 修正
  • urdf_param_nameros paramの初期値を/robot_descriptionに変更
  • gear_ratioをros paramに追加
  • urdf中のrisingを参照してオフセットするよう修正

Impact

Test

  • ビルドが通った
  • 実機環境で動作した

Attention

@ChiroruNeko ChiroruNeko changed the title Fix to use dynamixel servo motors as neck joints of SOAR Fix to use dynamixel servo motors as head joints of SOAR Nov 26, 2024
Copy link

@jsupratman13 jsupratman13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Offsetについてだけど、確か dynamixel側で homing offsetを設定すると0〜2piから-pi〜piに変更できると思う。hardware interface 側はどう扱っているの?

https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/#modifying-control-values

include/dynamixel_control_hw/hardware_interface.hpp Outdated Show resolved Hide resolved
@jsupratman13
Copy link

後 ベースブランチは XMではなかったっけ?

@ChiroruNeko
Copy link
Author

Offsetについてだけど、確か dynamixel側で homing offsetを設定すると0〜2piから-pi〜piに変更できると思う。hardware interface 側はどう扱っているの?

https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/#modifying-control-values

hardware_interface側では、homing offsetを考慮していないように見えます。具体的には、サーボ内部でhoming offsetによって補正された値をそのまま読み取る形になっており、値を書き込む際もhoming offsetの補正処理はサーボ側で行われているように見えます。実機で試してみます

@ChiroruNeko
Copy link
Author

後 ベースブランチは XMではなかったっけ?

ベースブランチがXMである旨承知いたしました。マージ先を変更します

@ChiroruNeko ChiroruNeko changed the base branch from master to XM November 26, 2024 06:03
@ChiroruNeko
Copy link
Author

ChiroruNeko commented Nov 26, 2024

Offsetについてだけど、確か dynamixel側で homing offsetを設定すると0〜2piから-pi〜piに変更できると思う。hardware interface 側はどう扱っているの?
https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/#modifying-control-values

hardware_interface側では、homing offsetを考慮していないように見えます。具体的には、サーボ内部でhoming offsetによって補正された値をそのまま読み取る形になっており、値を書き込む際もhoming offsetの補正処理はサーボ側で行われているように見えます。実機で試してみます

実機で試したところ、homing offsetはサーボ側で補正されているようでした。ただ、-90deg~90degの範囲でしか設定できないため -pi ~ piにできなさそうです (https://forum.robotis.com/t/setting-homing-offset-in-dynamixel-wizard-2-0/1674

https://forum.robotis.com/t/dynamixel-set-zero-position/5317/4

@jsupratman13
Copy link

Offsetについてだけど、確か dynamixel側で homing offsetを設定すると0〜2piから-pi〜piに変更できると思う。hardware interface 側はどう扱っているの?
https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/#modifying-control-values

hardware_interface側では、homing offsetを考慮していないように見えます。具体的には、サーボ内部でhoming offsetによって補正された値をそのまま読み取る形になっており、値を書き込む際もhoming offsetの補正処理はサーボ側で行われているように見えます。実機で試してみます

実機で試したところ、homing offsetはサーボ側で補正されているようでした。ただ、-90deg~90degの範囲でしか設定できないため -pi ~ piにできなさそうです(https://forum.robotis.com/t/setting-homing-offset-in-dynamixel-wizard-2-0/1674 )。

https://forum.robotis.com/t/setting-homing-offset-in-dynamixel-wizard-2-0/1674 のリンクは何のリンク? -90~90について何も書いていない?

@ChiroruNeko
Copy link
Author

Offsetについてだけど、確か dynamixel側で homing offsetを設定すると0〜2piから-pi〜piに変更できると思う。hardware interface 側はどう扱っているの?
https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/#modifying-control-values

hardware_interface側では、homing offsetを考慮していないように見えます。具体的には、サーボ内部でhoming offsetによって補正された値をそのまま読み取る形になっており、値を書き込む際もhoming offsetの補正処理はサーボ側で行われているように見えます。実機で試してみます

実機で試したところ、homing offsetはサーボ側で補正されているようでした。ただ、-90deg~90degの範囲でしか設定できないため -pi ~ piにできなさそうです(https://forum.robotis.com/t/setting-homing-offset-in-dynamixel-wizard-2-0/1674 )。

https://forum.robotis.com/t/setting-homing-offset-in-dynamixel-wizard-2-0/1674 のリンクは何のリンク? -90~90について何も書いていない?

すみません、リンクを間違っていました…正しくはこちらです
https://forum.robotis.com/t/dynamixel-set-zero-position/5317/4

Copy link

@jsupratman13 jsupratman13 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. libdynamixelのレポジトリ・ブランチ何使っているか分からないので,READMEにメモするか,submoduleにしてもいい,CMakeLists.txtと共に楽にインストールしてもいい気がする.
  2. -π to π→0 to 2π の部分は必要だっけ?サンプルの用にoffsetを設定すると-π to πにしても大丈夫だけど?

launch/sample.launch Outdated Show resolved Hide resolved
launch/sample.launch Outdated Show resolved Hide resolved
urdf/sample.urdf Outdated Show resolved Hide resolved
@ChiroruNeko
Copy link
Author

ChiroruNeko commented Dec 5, 2024

  1. libdynamixelのレポジトリ・ブランチ何使っているか分からないので,READMEにメモするか,submoduleにしてもいい,CMakeLists.txtと共に楽にインストールしてもいい気がする.

反応が遅くなり申し訳ございません.READMEに追加しつつCMakeLists.txtでインストールできるように修正したいと思います.来週までに対応いたします.

@ChiroruNeko
Copy link
Author

@jsupratman13
sample.launch, urdf, yamlに加えた変更をrevertしました

@Tacha-S Tacha-S force-pushed the feature/develop_for_soar branch from ebeec5a to 3506931 Compare December 10, 2024 10:33
@Tacha-S Tacha-S force-pushed the feature/develop_for_soar branch from 3506931 to fc85dd5 Compare December 10, 2024 10:38
@Tacha-S
Copy link

Tacha-S commented Dec 10, 2024

libdynamixelは以下のブランチで動作可能です。

sbgisen/libdynamixel#9

ただし、仕様なのかわかりませんが、
1回転以上した状態で再起動すると、現在位置が[0, 2pi)の範囲に変わります。(起動中は変化しない)

rebootをtorque enableに失敗したときのみ(失敗したらstatus validがfalseになるのかはわからないが)にしたので、
上記の現象は起きなくなりました。
エラー発生時に正しく再起動できるかは不明 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants