crane_plus_control

CRANE+ V2 control package

README

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_broadcaster (joint_state_broadcaster/JointStateBroadcaster)

  • 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_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.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