Unable to identify any set of controllers that can actuate the specified joints:

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


背景

具体的报错如下:
[ERROR] [1649324583.023988413]: Unable to identify any set of controllers that can actuate the specified joints: [ elbow_joint shoulder_lift_joint shoulder_pan_joint wrist_1_joint wrist_2_joint wrist_3_joint ]
[ERROR] [1649324583.024022449]: Known controllers and their joints:

[ERROR] [1649324583.024088233]: Apparently trajectory initialization failed

[ERROR] [1649324583.023988413]: Unable to identify any set of controllers that can actuate the specified joints: [ elbow_joint shoulder_lift_joint shoulder_pan_joint wrist_1_joint wrist_2_joint wrist_3_joint ]
[ERROR] [1649324583.024022449]: Known controllers and their joints:

[ERROR] [1649324583.024088233]: Apparently trajectory initialization failed


``

一、解决办法

这个链接的方法是修改marm_moveit_config/launch/arm_moveit_controller_manager.launch文件.对照我自己的,就是修改ur5_moveit_controller_manager.launch.xml文件,将原来的<rosparam file="$(find ur5_moveit_config_)/config/ros_controllers.yaml"/>注释掉,替换成<rosparam file="$(find ur5_moveit_config_)/config/controllers.yaml"/>
在这里插入图片描述
修改以后的结果为:

<launch>

  <!-- loads moveit_controller_manager on the parameter server which is taken as argument 
    if no argument is passed, moveit_simple_controller_manager will be set -->
  <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager" />
  <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/>

  <!-- loads ros_controllers to the param server -->
  <!--rosparam file="$(find ur5_moveit_config_)/config/ros_controllers.yaml"/-->
  <rosparam file="$(find ur5_moveit_config_)/config/controllers.yaml"/>
  
</launch>

但打开ur5_moveit_config_/config/这个路径,并没有controllers.yaml这个文件,有的是ros_controllers.yaml这个文件,ros_controllers.yaml是通过ur5_moveit_setupassistant生成的.里面的文件内容如下:

ros_controllers.yaml

# Simulation settings for using moveit_sim_controllers
moveit_sim_hw_interface:
  joint_model_group: manipulator
  joint_model_group_pose: home
# Settings for ros_control_boilerplate control loop
generic_hw_control_loop:
  loop_hz: 300
  cycle_time_error_threshold: 0.01
# Settings for ros_control hardware interface
hardware_interface:
  joints:
    - shoulder_pan_joint
    - shoulder_lift_joint
    - elbow_joint
    - wrist_1_joint
    - wrist_2_joint
    - wrist_3_joint
  sim_control_mode: 1  # 0: position, 1: velocity
# Publish all joint states
# Creates the /joint_states topic necessary in ROS
joint_state_controller:
  type: joint_state_controller/JointStateController
  publish_rate: 50
controller_list:
  []

注意到这里的controller_list:是空的,而我电脑上之前另一个正常运行的ur5_moveit_config包,内容如下:
controllers.yaml:

controller_list:
  - name: ""
    action_ns: follow_joint_trajectory
    type: FollowJointTrajectory
    joints:
      - shoulder_pan_joint
      - shoulder_lift_joint
      - elbow_joint
      - wrist_1_joint
      - wrist_2_joint
      - wrist_3_joint

注意到这里面的controller_list是有内容的,因此把这个controllers.yaml复制粘贴在/home/neousys/wqw/pick_place/src/universal_robot/ur5_moveit_config_/config这个路径下即可,不再发生这个报错,机械臂正常运行

二、总结

总共两步,第一步修改ur5_moveit_controller_manager.launch.xml,将将原来的<rosparam file="$(find ur5_moveit_config_)/config/ros_controllers.yaml"/>注释掉,替换成<rosparam file="$(find ur5_moveit_config_)/config/controllers.yaml"/>

第二步,到别的地方复制OK的controllers.yaml文件粘贴到对应的路径下

  • 7
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
### 回答1: PID控制器的缺点包括以下几点: 1. 对于非线性、时变和多变量系统,PID控制器难以精确控制。因为PID控制器只能处理单一输入和单一输出的系统,当涉及到复杂的多变量系统时,PID控制器的表现就会受到限制。 2. 对于存在滞后和噪声的系统,PID控制器可能会产生过度振荡或不稳定的反应。这是因为PID控制器的控制策略基于误差信号,而当存在滞后或噪声时,误差信号可能会变得不准确或不稳定。 3. PID控制器需要调整其参数以适应不同的系统,这可能需要很长时间,而且很难确定最佳参数。如果参数设置不正确,PID控制器可能会产生不良的控制效果。 4. 当系统有较大的扰动时,PID控制器可能无法及时响应。这是因为PID控制器只能响应误差信号,而在扰动时,误差信号可能会很小,导致PID控制器的响应速度很慢。 5. 在一些特殊情况下,比如在存在饱和非线性元件的系统中,PID控制器可能会产生不稳定的控制效果。这是因为当控制信号达到饱和值时,PID控制器无法对其进行进一步的调整。 因此,虽然PID控制器是一种简单、易于理解的控制策略,但它的适用范围有限,需要根据实际情况进行选择和优化。 ### 回答2: PID控制器(比例-积分-微分)是一种常用的反馈控制算法,广泛应用于工业自动化系统中。虽然这种控制器具有很多优点,但也存在一些缺点,如下: 1. 参数调节困难:PID控制器需要调整三个参数:比例增益、积分时间和微分时间。这三个参数的选择是一个复杂且耗时的过程,往往需要经验或试错才能得到最佳设置。如果设置不当,可能导致系统不稳定、震荡或响应慢等问题。 2. 对非线性系统不适用:PID控制器是线性控制算法,对于非线性系统可能不适用。非线性系统的行为可能复杂且难以建模,往往需要使用更为复杂的控制策略。 3. 对延迟响应系统响应不佳:PID控制器的设计基于当前时刻的反馈信号,对于具有延迟响应的系统,可能无法及时响应和补偿该延迟,导致控制性能下降。 4. 对外部干扰敏感:PID控制器的设计假设系统只受到测量信号和控制信号的影响,对于外部干扰信号的抑制能力较弱。这意味着,在存在外部干扰的情况下,PID控制器可能无法对系统做出及时有效的补偿。 5. 对模型误差敏感:PID控制器依赖于系统的数学模型,而实际系统与模型之间往往存在误差,例如参数变化、非线性特性等。这些误差可能导致PID控制器的性能下降,需要进一步的校正和补偿措施。 综上所述,PID控制器虽然是一种常用且经典的控制算法,但它也存在一些不足之处,如参数调节困难、对非线性和延迟响应系统的适应性不强,以及对外部干扰和模型误差敏感。在实际应用中,需要根据具体系统的特点和需求,选择适合的控制策略来克服这些缺点。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值