Skip to content

Latest commit

 

History

History
158 lines (106 loc) · 5.51 KB

README.md

File metadata and controls

158 lines (106 loc) · 5.51 KB

crane_x7_control

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

ros2_control関連ファイル

実機のセットアップ

crane_x7_hardwareがCRANE-X7実機と通信するために、 PCとCRANE-X7の設定が必要です。

USB通信ポートの設定

crane_x7_hardwareはUSB通信ポート(/dev/ttyUSB*)を経由してCRANE-X7と通信します。

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

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

永続的なアクセス権限を付与する場合は次のコマンドを実行します。

$ sudo usermod -aG dialout $USER
$ reboot

latency_timerの設定

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

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

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

# /dev/ttyUSB0を使用する場合
$ sudo chmod a+rw /sys/bus/usb-serial/devices/ttyUSB0/latency_timer
$ sudo echo 1 > /sys/bus/usb-serial/devices/ttyUSB0/latency_timer

Return Delay Timeの設定

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

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

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

Setting Return Delay Time

ノードの起動

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

  • joint_state_controller (joint_state_controller/JointStateController)
  • crane_x7_arm_controller (joint_trajectory_controller/JointTrajectoryController)
  • crane_x7_gripper_controller (position_controllers/GripperActionController)

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

$ ros2 topic echo /joint_states

Controller Managerのパラメータ

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

controller_manager:
  ros__parameters:
    update_rate: 200  # Hz

    crane_x7_arm_controller:
      type: joint_trajectory_controller/JointTrajectoryController
    crane_x7_gripper_controller:
      type: position_controllers/GripperActionController
    joint_state_controller:
      type: joint_state_controller/JointStateController

制御周期

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

コントローラ

CRANE-X7の腕の制御用にcrane_x7_arm_controllerを、 グリッパの制御用にcrane_x7_gripper_controllerを設定しています。

crane_x7_hardwareのパラメータ

crane_x7_hardwareのパラメータは crane_x7_description/urdf/crane_x7.urdf.xacro で設定しています。

  <xacro:arg name="port_name" default="/dev/ttyUSB0" />
  <xacro:arg name="baudrate" default="3000000" />
  <xacro:arg name="timeout_seconds" default="1.0" />
  <xacro:arg name="manipulator_config_file_path" default="" />
  <xacro:arg name="manipulator_links_file_path" default="" />

USB通信ポート

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

ボーレート

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

デフォルト値には3000000 (3 Mbps)を設定しています。

通信タイムアウト

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

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

RTマニピュレータC++ライブラリ用の設定ファイルパス

crane_x7_hardwareは、CRANE-X7と通信するために RTマニピュレータC++ライブラリ を使用しています。

manipulatcor_config_file_pathmanipulator_links_file_pathには、 ライブラリが読み込むサーボ設定ファイルと リンク情報ファイルへのパスを設定します。


back to top