このパッケージはros2_control をベースにした、Sciurus17 のコントローラパッケージです。
- sciurus17_control
- Setup
- How to Launch Nodes
- Controller Manager Parameters
- sciurus17_hardware Parameters
sciurus17_control::Sciurus17Hardware (sciurus17_hardware)- 本パッケージがエクスポートするHardware Componentsです
- Sciurus17実機と通信します
- sciurus17_descriptionから読み込まれます
- launch/sciurus17_control.launch.py
- Controller Managerとコントローラを起動するlaunchファイルです
- config/sciurus17_controllers.yaml
- Controller Managerのパラメータファイルです
sciurus17_hardwareがSciurus17実機と通信するために、
PCとSciurus17の設定が必要です。
次の方法でsciurus17_controlが実機と通信するために用いるUSBシリアル変換デバイス名を固定します。
ros2 run sciurus17_tools create_udev_rules実行後に再起動しSciurus17を接続すると/dev/sciurus17spineが作成されるようになります。
sciurus17_control.launch.pyを実行すると、Controller Managerノードが起動し、
以下のコントローラが読み込まれます。
- right_arm_controller (
joint_trajectory_controller/JointTrajectoryController) - right_gripper_controller (
position_controllers/GripperActionController) - left_arm_controller (
joint_trajectory_controller/JointTrajectoryController) - left_gripper_controller (
position_controllers/GripperActionController) - neck_controller (
joint_trajectory_controller/JointTrajectoryController) - waist_yaw_controller (
joint_trajectory_controller/JointTrajectoryController) - joint_state_broadcaster (
joint_state_broadcaster/JointStateBroadcaster)
ノードが起動した後、
次のコマンドでジョイント角度情報(joint_states)を表示できます
ros2 topic echo /joint_statesController Managerのパラメータは
config/sciurus17_controllers.yaml
で設定しています。
controller_manager:
ros__parameters:
update_rate: 100 # Hz
right_arm_controller:
type: joint_trajectory_controller/JointTrajectoryController
right_gripper_controller:
type: position_controllers/GripperActionControllerupdate_rateは制御周期を設定します。
Sciurus17の各関節を制御するコントローラの設定ができます。コントローラの名称と役割の対応は以下のとおりです。
- right_arm_controller
- 右腕制御用コントローラ
- right_gripper_controller
- 右グリッパ制御用コントローラ
- left_arm_controller
- 左腕制御用コントローラ
- left_gripper_controller
- 左グリッパ制御用コントローラ
- neck_controller
- 首制御用コントローラ
- waist_yaw_controller
- 腰制御用コントローラ
sciurus17_hardwareのパラメータは
sciurus17_description/urdf/sciurus17.urdf.xacro
で設定しています。
<xacro:arg name="port_name" default="/dev/sciurus17spine" />
<xacro:arg name="baudrate" default="3000000" />
<xacro:arg name="timeout_seconds" default="1.0" />
<xacro:arg name="manipulator_config_file_path" default="" />port_nameはSciurus17との通信に使用するUSB通信ポートを設定します。
baudrateはSciurus17に搭載したDynamixelとの通信ボーレートを設定します。
デフォルト値には3000000 (3 Mbps)を設定しています。
timeout_secondsは通信タイムアウト時間(秒)を設定します。
sciurus17_hardwareは、一定時間(デフォルト1秒間)通信に失敗し続けると、
read/write動作を停止します。
USBケーブルや電源ケーブルが抜けた場合等に有効です。
sciurus17_hardwareは、Sciurus17と通信するために
RTマニピュレータC++ライブラリ
を使用しています。
manipulatcor_config_file_pathは
ライブラリが読み込むサーボ設定ファイルへのパスを設定します。