Skip to content

Latest commit

 

History

History
133 lines (100 loc) · 6.25 KB

README.md

File metadata and controls

133 lines (100 loc) · 6.25 KB

crane_x7_control

CRANE-X7のためのパッケージ、 crane_x7_ros のcontrolパッケージです。

通信ポートの設定

crane_x7_controlU2D2(USB-RS485変換ケーブル)を使用してCRANE-X7のモータ制御を行います。
U2D2はLinuxに接続すると/dev/ttyUSB0として認識されるので、次のコマンドでアクセス権限を変更します。

sudo chmod 666 /dev/ttyUSB0

ケーブルの接続ポート名はデフォルトで/dev/ttyUSB0です。 別のポート名(例: /dev/ttyUSB1)を使う場合は次のコマンドを実行します。

roslaunch crane_x7_control crane_x7_control.launch port:=/dev/ttyUSB1

制御周期の変更

crane_x7_controlはデフォルト200Hz周期で制御しています。 制御周期を変更する場合はcrane_x7_control/src/hardware.cppを編集してください。

#define     CONTROL_HZ   (200)

実際に動作している制御周期は次のようにトピックから確認できます。

$ rostopic hz /crane_x7/crane_x7_control/crane_x7_gripper_finger_a_joint/current

subscribed to [/crane_x7/crane_x7_control/crane_x7_gripper_finger_a_joint/current]
average rate: 199.928
	min: 0.002s max: 0.008s std dev: 0.00055s window: 190
average rate: 198.470
	min: 0.001s max: 0.014s std dev: 0.00099s window: 387

実際の制御周期が200Hzに達せず、100Hz程度に低くなってしまう場合、USB通信ポートのlatency_timerを変更してください。

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

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

ネームスペースとトピック

crane_x7_control/crane_x7をルートとするネームスペースにパラメータやトピックを定義します。
各jointについて次のトピックを配信します。

current:電流値[mA]
dxl_position:現在角度[360/4096度]
temp:温度[度]

dynamic_reconfigure

crane_x7_controldynamic_reconfigureに対応しています。次のコマンドでrqt_reconfigureを起動してアクセスすると各Jointのサーボパラメータを変更することができます。

rosrun rqt_reconfigure rqt_reconfigure

rqt_reconfigure

各パラメータの詳細についてはROBOTIS公式のXM430およびXM540のサーボマニュアルを参照して下さい。

制御モード設定

CRANE-X7は位置制御モードと電流制御モードに対応しています。基本設定は位置制御モードになっていますが、複数箇所の設定変更を行うことで電流制御モードへ切り替えることが可能です。
ハンドの設定を位置制御モードから電流制御モードへ変更する手順を紹介します。

  1. サーボの設定変更

    • サーボモータのOperating Mode(Address:11)を3:位置制御モードから0:電流制御モードへ設定変更する
  2. crane_x7_controlの設定変更

    • crane_x7_control/config/crane_x7_control.yamlのハンド部分について次のように変更する
gripper_controller:
-  type: "position_controllers/GripperActionController"
+  type: "effort_controllers/GripperActionController"
  publish_rate: 250
  joint: crane_x7_gripper_finger_a_joint
+  gains:
+    crane_x7_gripper_finger_a_joint: { p: 1.0, i: 0.01, d: 0.1 }
  action_monitor_rate: 10
  state_publish_rate:  100
  stall_velocity_threshold: 0.01
  goal_tolerance: 0.2
  stall_timeout: 0.3

dynamixel_port:
  port_name: "/dev/ttyUSB0"
  baud_rate: 3000000
  joints:
    - crane_x7_shoulder_fixed_part_pan_joint
    - crane_x7_shoulder_revolute_part_tilt_joint
    - crane_x7_upper_arm_revolute_part_twist_joint
    - crane_x7_upper_arm_revolute_part_rotate_joint
    - crane_x7_lower_arm_fixed_part_joint
    - crane_x7_lower_arm_revolute_part_joint
    - crane_x7_wrist_joint
    - crane_x7_gripper_finger_a_joint
  crane_x7_shoulder_fixed_part_pan_joint: {id: 2, center: 2048, home: 2048, effort_const: 1.79, mode: 3 }
  crane_x7_shoulder_revolute_part_tilt_joint: {id: 3, center: 2048, home: 2048, effort_const: 2.79, mode: 3 }
  crane_x7_upper_arm_revolute_part_twist_joint: {id: 4, center: 2048, home: 2048, effort_const: 1.79, mode: 3 }
  crane_x7_upper_arm_revolute_part_rotate_joint: {id: 5, center: 2048, home: 2048, effort_const: 1.79, mode: 3 }
  crane_x7_lower_arm_fixed_part_joint: {id: 6, center: 2048, home: 2048, effort_const: 1.79, mode: 3 }
  crane_x7_lower_arm_revolute_part_joint: {id: 7, center: 2048, home: 2048, effort_const: 1.79, mode: 3 }
  crane_x7_wrist_joint: {id: 8, center: 2048, home: 2048, effort_const: 1.79, mode: 3 }
-  crane_x7_gripper_finger_a_joint: {id: 9, center: 2048, home: 2048, effort_const: 1.79, mode: 3 }
+  crane_x7_gripper_finger_a_joint: {id: 9, center: 2048, home: 2048, effort_const: 1.79, mode: 0 }

PIDの設定値はCRANE-X7を制御するROS環境によって特性が異なる可能性があります。

【電流モードに関する注意】
電流制御モードは、位置制御モードと異なり、サーボに設定された角度リミットが無効になります。
ユーザー自身で作成されたプログラムに適切な制限動作が備わっていない場合、本体の損傷や、本体が周囲や作業者に接触、あるいは衝突し、失明や打撲による死亡といった思わぬ重大事故が発生する危険があります。
ユーザーの責任において十分に安全に注意した上でご使用下さい。
当該製品および当ソフトウェアの使用中に生じたいかなる損害も株式会社アールティでは一切の責任を負いかねます。