UR3_Sim仿真启动自行移动及PID参数未定义问题求助
UR3机械臂仿真PID缺失报错及关节失控问题解决
问题描述
运行UR3机械臂仿真(ur3_sim),执行指令roslaunch ur3_sim simulation.launch时,仿真表现不稳定:有时正常运行、夹爪稳定,但有时会触发报错,同时机械臂出现自行移动的失控情况。
报错信息
[ERROR] [1680011565.316166357]: Unsupported Gazebo ImageFormat [ERROR] [1680011565.705340995]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/shoulder_pan_joint [ERROR] [1680011565.706621423]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/shoulder_lift_joint [ERROR] [1680011565.708765263]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/elbow_joint [ERROR] [1680011565.711376302]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/wrist_1_joint [ERROR] [1680011565.712813562]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/wrist_2_joint [ERROR] [1680011565.715457507]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/wrist_3_joint [ERROR] [1680011565.716795962]: No p gain specified for pid. Namespace: /gazebo_ros_control/pid_gains/left_gear_joint
当前状态:未找到项目中存在PID参数定义,无法定位关节自行移动的触发原因。
解决步骤
1. 补充PID参数配置
Gazebo_ros_control依赖PID参数实现关节的稳定控制,缺失参数会导致关节失去约束、出现自行移动。操作如下:
- 在
ur3_sim包目录下创建config/pid.yaml文件,填入各关节的PID参数(可根据仿真效果调整数值):
gazebo_ros_control: pid_gains: shoulder_pan_joint: p: 100.0 i: 0.0 d: 10.0 i_clamp: 0.0 shoulder_lift_joint: p: 100.0 i: 0.0 d: 10.0 i_clamp: 0.0 elbow_joint: p: 100.0 i: 0.0 d: 10.0 i_clamp: 0.0 wrist_1_joint: p: 50.0 i: 0.0 d: 5.0 i_clamp: 0.0 wrist_2_joint: p: 50.0 i: 0.0 d: 5.0 i_clamp: 0.0 wrist_3_joint: p: 20.0 i: 0.0 d: 2.0 i_clamp: 0.0 left_gear_joint: p: 10.0 i: 0.0 d: 1.0 i_clamp: 0.0
- 打开
simulation.launch文件,添加加载该配置文件的指令:
<rosparam file="$(find ur3_sim)/config/pid.yaml" command="load"/>
2. 修复Gazebo ImageFormat不兼容报错
该报错由相机传感器的图像格式未被Gazebo支持导致,可通过修改URDF模型解决:
- 找到UR3模型中相机传感器的配置部分,将
image标签下的format字段改为Gazebo兼容的类型(如RGB8):
<sensor type="camera" name="camera"> <!-- 其他相机配置项 --> <image> <format>RGB8</format> <!-- 分辨率、帧率等其他参数 --> </image> </sensor>
3. 验证控制器加载配置
确保simulation.launch和URDF模型中正确配置了gazebo_ros_control插件:
- 检查URDF文件中是否包含如下插件配置:
<gazebo> <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotNamespace>/</robotNamespace> </plugin> </gazebo>
- 确保
simulation.launch中启动Gazebo时,正确加载了包含上述插件的URDF模型。
内容的提问来源于stack exchange,提问作者Speedtail
相关产品推荐
相关产品推荐

