ROS2 Iron中Gazebo运行UR10e时gazebo_ros2_control参数解析失败求助
ROS2 Iron + Gazebo11中UR10e机械臂ros2_control启动报错解决
报错信息
[gazebo-1] [ERROR] [1689265614.750035709] [gazebo_ros2_control]: parser error Couldn't parse params file: '--params-file $(find sim)/Controller_config.yaml'. Error: Error opening YAML file, at ./src/parser.c:271, at ./src/rcl/arguments.c:406
我的配置片段
Setup.py片段
setup( name=package_name, version='0.0.0', packages=find_packages(exclude=['test']), data_files=[ ('share/ament_index/resource_index/packages', ['resource/' + package_name]), ('share/' + package_name, ['package.xml', 'launch/simulation.launch.py']), ('share/' + package_name, ['package.xml', 'description/urdf/ur10e.urdf']), ('share/' + package_name, ['package.xml', 'description/urdf/config/Controller_config.yaml']), ], )
Controller_config.yaml片段
controller_manager: ros_parameters: update_rate: 100 #Hz joint_trajectory_controller: type: joint_trajectory_controller/JointTrajectoryController joint_state_broadcaster: type: joint_state_broadcaster/JointStateBroadcaster joint_trajectory_controller: ros_parameters: joints: - base_joint - shoulder_pan_joint - shoulder_lift_joint - elbow_joint - wrist_1_joint - wrist_2_joint - wrist_3_joint interface_name: - position state_interfaces: - position - velocity
URDF中gazebo_ros2_control插件片段
<gazebo> <plugin filename="libgazebo_ros2_control.so" name="gazebo_ros2_control"> <parameters>$(find sim)/Controller_config.yaml</parameters> </plugin> </gazebo>
解决步骤
1. 修复URDF路径解析问题
ROS2中URDF不支持$(find)命令,改用package://协议指定文件路径,路径需与Setup.py中YAML的安装位置对应。
2. 调整Setup.py的文件安装结构
移除重复的package.xml条目,将不同类型文件分类安装到对应子目录,避免路径混乱:
setup( name=package_name, version='0.0.0', packages=find_packages(exclude=['test']), data_files=[ ('share/ament_index/resource_index/packages', ['resource/' + package_name]), ('share/' + package_name, ['package.xml']), ('share/' + package_name + '/launch', ['launch/simulation.launch.py']), ('share/' + package_name + '/urdf', ['description/urdf/ur10e.urdf']), ('share/' + package_name + '/config', ['description/urdf/config/Controller_config.yaml']), ], )
调整后,URDF中的路径需改为:
<parameters>package://sim/config/Controller_config.yaml</parameters>
3. 修正YAML语法错误
YAML对缩进要求严格,修复嵌套层级和缩进问题:
controller_manager: ros_parameters: update_rate: 100 #Hz joint_trajectory_controller: type: joint_trajectory_controller/JointTrajectoryController joint_state_broadcaster: type: joint_state_broadcaster/JointStateBroadcaster joint_trajectory_controller: ros_parameters: joints: - base_joint - shoulder_pan_joint - shoulder_lift_joint - elbow_joint - wrist_1_joint - wrist_2_joint - wrist_3_joint interface_name: - position state_interfaces: - position - velocity
4. 重新编译并测试
执行以下命令完成编译与启动:
colcon build --packages-select sim source install/setup.bash ros2 launch sim simulation.launch.py
内容的提问来源于stack exchange,提问作者Fischdog24
相关产品推荐
相关产品推荐

