Package Summary

Tags No category tags.
Version 0.1.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/rt-net/crane_plus.git
VCS Type git
VCS Version support_galactic
Last Updated 2022-06-01
Dev Status MAINTAINED
CI status No Continuous Integration
Released UNRELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

CRANE+V2 control package

Additional Links

No additional links.

Maintainers

  • RT Corporation

Authors

  • ShotaAk

crane_plus_control

このパッケージはros2_control をベースにした、CRANE+V2 のコントローラパッケージです。

ros2_control関連ファイル

実機のセットアップ

crane_plus_hardwareがCRANE+V2実機と通信するために、 PCとCRANE+V2の設定が必要です。

正しく設定できていない場合、CRANE+V2が動作しない、振動する、などの不安定な動きをするため注意してください

USB通信ポートの設定

crane_plus_hardwareはUSB通信ポート(/dev/ttyUSB*)を経由してCRANE+V2と通信します。

次のコマンドでアクセス権限を変更します。

# /dev/ttyUSB0を使用する場合
$ sudo chmod 666 /dev/ttyUSB0

USB通信ポートの変更

/dev/ttyUBS0以外の通信ポートを使用する場合は crane_plus_description/urdf/crane_plus.ros2_control.xacroport_nameを変更します。

<ros2_control name="${name}" type="system">
  <hardware>
    <plugin>crane_plus_hardware/CranePlusHardware</plugin>
    <param name="port_name">/dev/ttyUSB0</param>
    <param name="baudrate">1000000</param>

latency_timerの設定

CRANE+V2を100 Hz周期で制御するためには、 USB通信ポートとサーボモータの設定を変更します。

下記のコマンドを実行してUSB通信ポートのlatency_timerを変更します。

参考資料:https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/#usb-latency-setting

# /dev/ttyUSB0を使用する場合

# rootに切り替える
$ sudo su

# echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
# cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
1
# exit

Return Delay Timeの設定

CRANE+V2に搭載されているサーボモータDynamixel AX-12A にはReturn Delay Timeというパラメータがあります。

デフォルトは250がセットされており、 サーボモータがInstruction Packetを受信してからStatus Packetを送信するまでに500 usecの遅れがあります。

Dynamixel Wizard 2 を使用してRetrun Delay Timeを小さくすると、制御周期が早くなります。

Setting Return Delay Time

ノードの起動

下記のコマンドでController Managerノードが起動します。

$ ros2 launch crane_plus_control crane_plus_control.launch.py 

ノードが起動すると以下のコントローラが読み込まれます。

  • crane_plus_joint_state_broadcaster (joint_state_broadcaster/JointStateBroadcaster)
  • crane_plus_arm_controller (joint_trajectory_controller/JointTrajectoryController)
  • crane_plus_gripper_controller (joint_trajectory_controller/JointTrajectoryController)
    • gripper_action_controllerros2_controllersに移植されたら変更します

ノードが起動した後、 次のコマンドでジョイント角度情報(joint_states)を表示できます

$ ros2 topic echo /joint_states

Controller Managerのパラメータ

Controller Managerのパラメータは config/crane_plus_controllers.yaml で設定しています。

controller_manager:
  ros__parameters:
    update_rate: 100  # Hz

    crane_plus_arm_controller:
      type: joint_trajectory_controller/JointTrajectoryController
    crane_plus_gripper_controller:
      type: joint_trajectory_controller/JointTrajectoryController
    joint_state_broadcaster:
      type: joint_state_broadcaster/JointStateBroadcaster

制御周期

update_rateは制御周期を設定します。

CRANE+V2に使用しているサーボモータの仕様により、 100 Hz以上の周期で制御できません。

コントローラ

CRANE+V2の腕の制御用にcrane_plus_arm_controllerを、 グリッパの制御用にcrane_plus_gripper_controllerを設定しています。

crane_plus_hardwareのパラメータ

crane_plus_hardwareのパラメータは crane_plus_description/urdf/crane_plus.ros2_control.xacro で設定しています。

<ros2_control name="${name}" type="system">
  <hardware>
    <plugin>crane_plus_hardware/CranePlusHardware</plugin>
    <param name="port_name">/dev/ttyUSB0</param>
    <param name="baudrate">1000000</param>
    <param name="timeout_seconds">5.0</param>
    <param name="read_velocities">0</param>
    <param name="read_loads">0</param>
    <param name="read_voltages">0</param>
    <param name="read_temperatures">0</param>
  </hardware>

USB通信ポート

USB通信ポートの変更を参照してください。

ボーレート

baudrateはCRANE+V2に搭載したDynamixelとの通信ボーレートを設定します。

デフォルト値にはDynamixel AX-12Aの最高ボーレートである1000000 (1 Mbps)を設定しています。

通信タイムアウト

timeout_secondsは通信タイムアウト時間(秒)を設定します。

crane_plus_hardwareは、一定時間(デフォルト5秒間)通信に失敗し続けると、 read/write動作を停止します。 USBケーブルや電源ケーブルが抜けた場合等に有効です。

サーボパラメータ

read_velocitiesread_loadsread_voltagesread_temperatures は、サーボの回転速度、電圧、負荷、温度を読み取るためのパラメータです。

1をセットすると、サーボパラメータを読み取るみます。

これらのパラメータを読み取ると通信データ量が増加するため、制御周期が100 Hzより低下します。

読み取ったパラメータはdynamic_joint_statesトピックとしてパブリッシュされます。

$ ros2 topic echo /dynamic_joint_states


back to top

CHANGELOG
No CHANGELOG found.

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged crane_plus_control at answers.ros.org

Package Summary

Tags No category tags.
Version 1.0.0
License Apache License 2.0
Build type AMENT_CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/rt-net/crane_plus.git
VCS Type git
VCS Version foxy-devel
Last Updated 2022-06-22
Dev Status MAINTAINED
CI status No Continuous Integration
Released RELEASED
Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

CRANE+V2 control package

Additional Links

No additional links.

Maintainers

  • RT Corporation

Authors

  • ShotaAk

crane_plus_control

このパッケージはros2_control をベースにした、CRANE+V2 のコントローラパッケージです。

ros2_control関連ファイル

実機のセットアップ

crane_plus_hardwareがCRANE+V2実機と通信するために、 PCとCRANE+V2の設定が必要です。

正しく設定できていない場合、CRANE+V2が動作しない、振動する、などの不安定な動きをするため注意してください

USB通信ポートの設定

crane_plus_hardwareはUSB通信ポート(/dev/ttyUSB*)を経由してCRANE+V2と通信します。

次のコマンドでアクセス権限を変更します。

# /dev/ttyUSB0を使用する場合
$ sudo chmod 666 /dev/ttyUSB0

latency_timerの設定

CRANE+V2を100 Hz周期で制御するためには、 USB通信ポートとサーボモータの設定を変更します。

下記のコマンドを実行してUSB通信ポートのlatency_timerを変更します。

参考資料:https://emanual.robotis.com/docs/en/software/dynamixel/dynamixel_wizard2/#usb-latency-setting

# /dev/ttyUSB0を使用する場合

# rootに切り替える
$ sudo su

# echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
# cat /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
1
# exit

Return Delay Timeの設定

CRANE+V2に搭載されているサーボモータDynamixel AX-12A にはReturn Delay Timeというパラメータがあります。

デフォルトは250がセットされており、 サーボモータがInstruction Packetを受信してからStatus Packetを送信するまでに500 usecの遅れがあります。

Dynamixel Wizard 2 を使用してRetrun Delay Timeを小さくすると、制御周期が早くなります。

Setting Return Delay Time

ノードの起動

crane_plus_control.launch.pyを実行すると、Controller Managerノードが起動し、 以下のコントローラが読み込まれます。

  • crane_plus_joint_state_controller (joint_state_controller/JointStateController)
  • crane_plus_arm_controller (joint_trajectory_controller/JointTrajectoryController)
  • crane_plus_gripper_controller (joint_trajectory_controller/JointTrajectoryController)

ノードが起動した後、 次のコマンドでジョイント角度情報(joint_states)を表示できます

$ ros2 topic echo /joint_states

Controller Managerのパラメータ

Controller Managerのパラメータは config/crane_plus_controllers.yaml で設定しています。

controller_manager:
  ros__parameters:
    update_rate: 100  # Hz

    crane_plus_arm_controller:
      type: joint_trajectory_controller/JointTrajectoryController
    crane_plus_gripper_controller:
      type: joint_trajectory_controller/JointTrajectoryController
    joint_state_controller:
      type: joint_state_controller/JointStateController

制御周期

update_rateは制御周期を設定します。

CRANE+V2に使用しているサーボモータの仕様により、 100 Hz以上の周期で制御できません。

コントローラ

CRANE+V2の腕の制御用にcrane_plus_arm_controllerを、 グリッパの制御用にcrane_plus_gripper_controllerを設定しています。

crane_plus_hardwareのパラメータ

crane_plus_hardwareのパラメータは crane_plus_description/urdf/crane_plus.urdf.xacro で設定しています。

<xacro:arg name="use_gazebo" default="false" />
<xacro:arg name="port_name" default="/dev/ttyUSB0" />
<xacro:arg name="baudrate" default="1000000" />
<xacro:arg name="timeout_seconds" default="5.0" />
<xacro:arg name="read_velocities" default="0" />
<xacro:arg name="read_loads" default="0" />
<xacro:arg name="read_voltages" default="0" />
<xacro:arg name="read_temperatures" default="0" />

USB通信ポート

port_nameはCRANE+V2との通信に使用するUSB通信ポートを設定します。

ボーレート

baudrateはCRANE+V2に搭載したDynamixelとの通信ボーレートを設定します。

デフォルト値にはDynamixel AX-12Aの最高ボーレートである1000000 (1 Mbps)を設定しています。

通信タイムアウト

timeout_secondsは通信タイムアウト時間(秒)を設定します。

crane_plus_hardwareは、一定時間(デフォルト5秒間)通信に失敗し続けると、 read/write動作を停止します。 USBケーブルや電源ケーブルが抜けた場合等に有効です。

サーボパラメータ

read_velocitiesread_loadsread_voltagesread_temperatures は、サーボの回転速度、電圧、負荷、温度を読み取るためのパラメータです。

1をセットすると、サーボパラメータを読み取ります。

これらのパラメータを読み取ると通信データ量が増加するため、制御周期が100 Hzより低下します。

読み取ったパラメータはdynamic_joint_statesトピックとしてパブリッシュされます。

$ ros2 topic echo /dynamic_joint_states


back to top

CHANGELOG

Changelog for package crane_plus_control

1.0.0 (2022-06-22)

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged crane_plus_control at answers.ros.org