关节轨迹控制器加载yaml参数问题
-
机械臂关节采用JointTrajectoryController控制器,但是运行时总是无法加载yaml文件中相关参数
controller_manager: ros__parameters: update_rate: 100 # Hz dm_joint_state_broadcaster: type: joint_state_broadcaster/JointStateBroadcaster dm_arm_controller: type: joint_trajectory_controller/JointTrajectoryController joints: - joint1 - joint2 - joint3 - joint4 - joint5 - joint6 command_interfaces: - position - velocity state_interfaces: - position - velocity action_name: follow_joint_trajectory interpolation_method: splines constraints: stopped_velocity_tolerance: 0.05 goal_time: 0.0 joint1: trajectory: 0.1 goal: 0.05 joint2: trajectory: 0.1 goal: 0.05 joint3: trajectory: 0.1 goal: 0.05 joint4: trajectory: 0.1 goal: 0.05 joint5: trajectory: 0.1 goal: 0.05 joint6: trajectory: 0.1 goal: 0.05 dm_hand_controller: type: joint_trajectory_controller/JointTrajectoryController joints: - joint7 command_interfaces: - position - velocity state_interfaces: - position - velocity action_name: follow_joint_trajectory interpolation_method: splines constraints: stopped_velocity_tolerance: 0.05 goal_time: 0.0 joint7: trajectory: 0.1 goal: 0.05
launch文件中加载参数
controller_manager_node = launch_ros.actions.Node( package='controller_manager', executable='ros2_control_node', name='controller_manager', parameters=[ {'robot_description': robot_description_value}, ros2_control_yaml_path ], output='screen' )
启动信息
[INFO] [launch]: All log files can be found below /home/hizaml/.ros/log/2025-07-09-22-24-00-351696-Hizam-82561 [INFO] [launch]: Default logging verbosity is set to INFO [INFO] [robot_state_publisher-1]: process started with pid [82563] [INFO] [rviz2-2]: process started with pid [82565] [INFO] [ros2_control_node-3]: process started with pid [82567] [robot_state_publisher-1] [INFO] [1752071040.539492469] [robot_state_publisher]: got segment base_link [robot_state_publisher-1] [INFO] [1752071040.539638296] [robot_state_publisher]: got segment dummy [robot_state_publisher-1] [INFO] [1752071040.539650469] [robot_state_publisher]: got segment link1 [robot_state_publisher-1] [INFO] [1752071040.539655158] [robot_state_publisher]: got segment link2 [robot_state_publisher-1] [INFO] [1752071040.539659015] [robot_state_publisher]: got segment link3 [robot_state_publisher-1] [INFO] [1752071040.539662822] [robot_state_publisher]: got segment link4 [robot_state_publisher-1] [INFO] [1752071040.539666589] [robot_state_publisher]: got segment link5 [robot_state_publisher-1] [INFO] [1752071040.539670186] [robot_state_publisher]: got segment link6 [robot_state_publisher-1] [INFO] [1752071040.539673713] [robot_state_publisher]: got segment link7_1 [robot_state_publisher-1] [INFO] [1752071040.539677460] [robot_state_publisher]: got segment link7_2 [robot_state_publisher-1] [INFO] [1752071040.539681137] [robot_state_publisher]: got segment link_hand [rviz2-2] QStandardPaths: wrong permissions on runtime directory /run/user/1000/, 0755 instead of 0700 [ros2_control_node-3] [WARN] [1752071040.549684168] [controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead. [ros2_control_node-3] [INFO] [1752071040.550035775] [resource_manager]: Loading hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071040.550712710] [resource_manager]: Initialize hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071040.550881711] [DmArmHardware]: 对了,对了!!!关节数为:7 [ros2_control_node-3] [INFO] [1752071040.553177870] [DmArmHardware]: hardware initialize successfully [ros2_control_node-3] [INFO] [1752071040.553246200] [resource_manager]: Successful initialization of hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071040.553414089] [resource_manager]: 'configure' hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071040.553424699] [resource_manager]: Successful 'configure' of hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071040.553430690] [resource_manager]: 'activate' hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071041.254576291] [DmArmHardware]: all motors enable successfully [ros2_control_node-3] [INFO] [1752071041.254646475] [resource_manager]: Successful 'activate' of hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071041.261977552] [controller_manager]: update rate is 100 Hz [ros2_control_node-3] [INFO] [1752071041.262037335] [controller_manager]: Spawning controller_manager RT thread with scheduler priority: 50 [ros2_control_node-3] [WARN] [1752071041.262176690] [controller_manager]: No real-time kernel detected on this system. See [https://control.ros.org/master/doc/ros2_control/controller_manager/doc/userdoc.html] for details on how to enable realtime scheduling. [rviz2-2] [INFO] [1752071043.449363084] [rviz2]: Stereo is NOT SUPPORTED [rviz2-2] [INFO] [1752071043.449661230] [rviz2]: OpenGl version: 4.2 (GLSL 4.2) [rviz2-2] [INFO] [1752071043.506870636] [rviz2]: Stereo is NOT SUPPORTED [INFO] [spawner-4]: process started with pid [82676] [ros2_control_node-3] [INFO] [1752071044.152492026] [controller_manager]: Loading controller 'dm_joint_state_broadcaster' [ros2_control_node-3] [WARN] [1752071044.157073422] [rcl.logging_rosout]: Publisher already registered for provided node name. If this is due to multiple nodes with the same name then all logs for that logger name will go out over the existing publisher. As soon as any node with that name is destructed it will unregister the publisher, preventing any further logs for that name from being published on the rosout topic. [spawner-4] [INFO] [1752071044.202711759] [spawner_dm_joint_state_broadcaster]: Loaded dm_joint_state_broadcaster [ros2_control_node-3] [INFO] [1752071044.206101538] [controller_manager]: Configuring controller 'dm_joint_state_broadcaster' [ros2_control_node-3] [INFO] [1752071044.206280608] [controller_manager]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published [spawner-4] [INFO] [1752071044.244925844] [spawner_dm_joint_state_broadcaster]: Configured and activated dm_joint_state_broadcaster [INFO] [spawner-4]: process has finished cleanly [pid 82676] [INFO] [spawner-5]: process started with pid [82708] [ros2_control_node-3] [INFO] [1752071046.141788692] [controller_manager]: Loading controller 'dm_arm_controller' [ros2_control_node-3] [WARN] [1752071046.148223692] [rcl.logging_rosout]: Publisher already registered for provided node name. If this is due to multiple nodes with the same name then all logs for that logger name will go out over the existing publisher. As soon as any node with that name is destructed it will unregister the publisher, preventing any further logs for that name from being published on the rosout topic. [ros2_control_node-3] [WARN] [1752071046.163136248] [controller_manager]: [Deprecated]: "allow_nonzero_velocity_at_trajectory_end" is set to true. The default behavior will change to false. [spawner-5] [INFO] [1752071046.188710095] [spawner_dm_arm_controller]: Loaded dm_arm_controller [ros2_control_node-3] [INFO] [1752071046.190602551] [controller_manager]: Configuring controller 'dm_arm_controller' [ros2_control_node-3] [WARN] [1752071046.190727137] [controller_manager]: 'joints' parameter is empty. [ros2_control_node-3] [INFO] [1752071046.190740211] [controller_manager]: No specific joint names are used for command interfaces. Using 'joints' parameter. [ros2_control_node-3] [ERROR] [1752071046.190745992] [controller_manager]: 'command_interfaces' parameter is empty. [ros2_control_node-3] [ERROR] [1752071046.190754288] [controller_manager]: After configuring, controller 'dm_arm_controller' is in state 'unconfigured' , expected inactive. [spawner-5] [ERROR] [1752071046.191433815] [spawner_dm_arm_controller]: Failed to configure controller [ERROR] [spawner-5]: process has died [pid 82708, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner dm_arm_controller --controller-manager controller_manager --ros-args']. [INFO] [spawner-6]: process started with pid [82725] [ros2_control_node-3] [INFO] [1752071047.126284023] [controller_manager]: Loading controller 'dm_hand_controller' [ros2_control_node-3] [WARN] [1752071047.126583410] [rcl.logging_rosout]: Publisher already registered for provided node name. If this is due to multiple nodes with the same name then all logs for that logger name will go out over the existing publisher. As soon as any node with that name is destructed it will unregister the publisher, preventing any further logs for that name from being published on the rosout topic. [ros2_control_node-3] [WARN] [1752071047.140239527] [controller_manager]: [Deprecated]: "allow_nonzero_velocity_at_trajectory_end" is set to true. The default behavior will change to false. [spawner-6] [INFO] [1752071047.157263783] [spawner_dm_hand_controller]: Loaded dm_hand_controller [ros2_control_node-3] [INFO] [1752071047.159341579] [controller_manager]: Configuring controller 'dm_hand_controller' [ros2_control_node-3] [WARN] [1752071047.159564711] [controller_manager]: 'joints' parameter is empty. [ros2_control_node-3] [INFO] [1752071047.159711239] [controller_manager]: No specific joint names are used for command interfaces. Using 'joints' parameter. [ros2_control_node-3] [ERROR] [1752071047.159722059] [controller_manager]: 'command_interfaces' parameter is empty. [ros2_control_node-3] [ERROR] [1752071047.159741316] [controller_manager]: After configuring, controller 'dm_hand_controller' is in state 'unconfigured' , expected inactive. [spawner-6] [ERROR] [1752071047.160704752] [spawner_dm_hand_controller]: Failed to configure controller [ERROR] [spawner-6]: process has died [pid 82725, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner dm_hand_controller --controller-manager controller_manager --ros-args']. ^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT) [rviz2-2] [INFO] [1752071595.186616144] [rclcpp]: signal_handler(signum=2) [robot_state_publisher-1] [INFO] [1752071595.186621174] [rclcpp]: signal_handler(signum=2) [ros2_control_node-3] [INFO] [1752071595.186613069] [rclcpp]: signal_handler(signum=2) [ros2_control_node-3] [INFO] [1752071595.186994806] [controller_manager]: Shutdown request received.... [ros2_control_node-3] [INFO] [1752071595.187377965] [controller_manager]: Shutting down all controllers in the controller manager. [ros2_control_node-3] [INFO] [1752071595.187514445] [controller_manager]: Deactivating controller 'controller_manager' [ros2_control_node-3] [INFO] [1752071595.187616679] [controller_manager]: Shutting down controller 'controller_manager' [ros2_control_node-3] [INFO] [1752071595.187846415] [controller_manager]: Shutting down controller 'controller_manager' [ros2_control_node-3] [INFO] [1752071595.187911499] [controller_manager]: Shutting down controller 'controller_manager' [ros2_control_node-3] [INFO] [1752071595.188175932] [resource_manager]: 'deactivate' hardware 'DmArmHardware' [INFO] [robot_state_publisher-1]: process has finished cleanly [pid 82563] [INFO] [rviz2-2]: process has finished cleanly [pid 82565] [ros2_control_node-3] [INFO] [1752071595.889474691] [DmArmHardware]: all motors disable successfully [ros2_control_node-3] [INFO] [1752071595.889542410] [resource_manager]: Successful 'deactivate' of hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071595.889551787] [resource_manager]: 'shutdown' hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071595.889557699] [resource_manager]: Successful 'shutdown' of hardware 'DmArmHardware' [ros2_control_node-3] [INFO] [1752071595.889590281] [controller_manager]: Shutting down the controller manager. [INFO] [ros2_control_node-3]: process has finished cleanly [pid 82567]``` code_text