小鱼 ROS 2 新书上线!点击链接查看, 新书配套视频点击链接查看。
提问前必看的发帖注意事项—— 提问前必看!不符合要求的问题拒绝回答!!
社区使用指南—如何添加标签修改密码
Unable to identify any set of controllers that can actuate the specified joints:
-
版本:ros1
系统 :ubuntu18.04
类型:自建4自由度机械臂模型**错误:不能找到相应的关节,可以打开gazebo, 和Rviz, 也能在Rviz 里面拖动,但是拖动的时候gazebo里面没有相应的动作。
报错:
[ERROR] [1669167751.277877941, 37.752000000]: Unable to identify any set of controllers that can actuate the specified joints: [ joint_1 joint_2 joint_3 joint_4 ]
[ERROR] [1669167751.277897873, 37.752000000]: Known controllers and their joints:[ERROR] [1669167751.277925647, 37.752000000]: Apparently trajectory initialization failed
另外,自己使用古月居的robot_anno配置成功过,现在换成自己DIY的机械臂导成URDF过后经过moveit配置以及修改确动不起来,还请大佬帮忙解决疑惑,感激不尽。
下面放出moveit_config和gazebo的主要配置文件
-
src/robot_gazebo/config/robot_trajectory_control.yaml
-
src/robot_gazebo/config/robot_gazebo_joint_states.yaml
3.src/robot_gazebo/launch/robot_trajectory_control.launch
-
src/robot_gazebo/launch/robot_gazebo_states.launch
-
src/my_robot_moveit_config/config/controllers_gazebo.yaml
-
src/my_robot_moveit_config/launch/my_robot_moveit_controller_manager.launch.xml
-
-
@1769564038
1.第一张图片是启动什么指令报的错
2.你的目的是让自己配置的机械臂点击exevute的时候在rviz中动起来是吗?如果是其实这个通过的是fake_controller进行的
3.提供一下rqt_grapher、rostopic list 、rostopic echo /joint_states 的结果和你的机械臂的urdf文件,你的错误应该是某一个类型对不上造成的,需要进一步检查另外请尽量复制粘贴代码,我这边好方便引用和检索。
@小鱼 在 提问前必看!一定要看!必须看一下! 中说:
一个好的提问不仅能够帮助自己理清楚问题,还有助于别人快速帮助到你。——提问的智慧
问题一定要描述清楚,终端打印一定复制粘贴(你可以在linux系统上打开浏览器进社区)
基本的Markdown语法一定要学习下,有的小伙伴图片代码一团糟
提问时一定要提供尽可能多的信息(系统版本,ROS版本,前后操作,终端日志),包括你的目的,比如你其实想装装某个库遇到问题,不要只说这个问题,因为可能有更好的替代方案
先搜索再提问,很多问题其实都有解决方案,确保你自己对自己的问题有一定了解再提问
尽量一句话说完,不要把社区当微信聊天一样用,每一个回复都尽量提供更多的的信息。 -
- roslaunch robot_gazebo robot_bringup_moveit.launch
这是我启动的指令,然后在rviz里面点击execute的时候报的错误如下错误
[ERROR] [1669182292.117079150, 31.722000000]: Unable to identify any set of controllers that can actuate the specified joints: [ joint_1 joint_2 joint_3 joint_4 ] [ERROR] [1669182292.117153787, 31.722000000]: Known controllers and their joints: [ERROR] [1669182292.117213348, 31.722000000]: Apparently trajectory initialization failed
-
我是想在gazebo里面动起来,通过rvize界面发送指令让仿真机械臂动起来。
## rostopic list
(base) huangjie@huangjie-Legion-Y7000P-IAH7:~$ rostopic list /attached_collision_object /clock /collision_object /execute_trajectory/cancel /execute_trajectory/feedback /execute_trajectory/goal /execute_trajectory/result /execute_trajectory/status /gazebo/link_states /gazebo/model_states /gazebo/parameter_descriptions /gazebo/parameter_updates /gazebo/set_link_state /gazebo/set_model_state /joint_states /move_group/cancel /move_group/display_contacts /move_group/display_planned_path /move_group/feedback /move_group/goal /move_group/monitored_planning_scene /move_group/ompl/parameter_descriptions /move_group/ompl/parameter_updates /move_group/plan_execution/parameter_descriptions /move_group/plan_execution/parameter_updates /move_group/planning_scene_monitor/parameter_descriptions /move_group/planning_scene_monitor/parameter_updates /move_group/result /move_group/sense_for_plan/parameter_descriptions /move_group/sense_for_plan/parameter_updates /move_group/status /move_group/trajectory_execution/parameter_descriptions /move_group/trajectory_execution/parameter_updates /my_robot/joint_states /pickup/cancel /pickup/feedback /pickup/goal /pickup/result /pickup/status /place/cancel /place/feedback /place/goal /place/result /place/status /planning_scene /planning_scene_world /probot_anno/joint_states /recognized_object_array /rosout /rosout_agg /rviz_huangjie_Legion_Y7000P_IAH7_6963_1349828747475093352/motionplanning_planning_scene_monitor/parameter_descriptions /rviz_huangjie_Legion_Y7000P_IAH7_6963_1349828747475093352/motionplanning_planning_scene_monitor/parameter_updates /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/feedback /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/update /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic/update_full /tf /tf_static /trajectory_execution_event
## rostopic echo /joint_states
(base) huangjie@huangjie-Legion-Y7000P-IAH7:~$ rostopic echo /joint_states header: seq: 3954 stamp: secs: 395 nsecs: 401000000 frame_id: '' name: [joint_1, joint_2, joint_3, joint_4] position: [0.0, 0.0, 0.0, 0.0] velocity: [] effort: [] --- header: seq: 3955 stamp: secs: 395 nsecs: 500000000 frame_id: '' name: [joint_1, joint_2, joint_3, joint_4] position: [0.0, 0.0, 0.0, 0.0] velocity: [] effort: [] --- header: seq: 3956 stamp: secs: 395 nsecs: 600000000 frame_id: '' name: [joint_1, joint_2, joint_3, joint_4] position: [0.0, 0.0, 0.0, 0.0] velocity: [] effort: []
- roslaunch robot_gazebo robot_bringup_moveit.launch
-
@1769564038 在 Unable to identify any set of controllers that can actuate the specified joints: 中说:
贴一下你的robot_bringup_moveit.launch内容,另外如果是控制gazebo的机械臂需要gazebo来提供joint_states和actionserver,所以你要提供下rqt_graph,确定下gazebo是否正常再检查moveit这边rqt_graph别忘记了
@小鱼 在 Unable to identify any set of controllers that can actuate the specified joints: 中说:
3.提供一下rqt_grapher
-
@小鱼
不好意思鱼哥,等久了,我终于把我的grapher调出来了。
rqt_graphertf_tree
-
1. 这是我robot_bringup_moveit.launch 的内容
<launch> <!-- 1. Launch Gazebo --> <include file="$(find robot_gazebo)/launch/my_robot_gazebo_xacro.launch" /> <!-- 2. ros_control arm launch --> <include file="$(find robot_gazebo)/launch/robot_gazebo_states.launch" /> <!-- 3. ros_control trajectory --> <include file="$(find robot_gazebo)/launch/robot_trajectory_control.launch" /> <!-- 4. moveit launch --> <include file="$(find my_robot_moveit_config)/launch/moveit_planning_execution.launch" /> </launch>
2.这是src/robot_gazebo/launch/robot_gazebo_states.launch
<launch> <!-- 将关节控制器的配置参数加载到参数服务器中 --> <rosparam file="$(find robot_gazebo)/config/robot_gazebo_joint_states.yaml" command="load"/> <node name="joint_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" ns="/my_robot" args="joint_state_controller" /> <!-- 运行robot_state_publisher节点,发布tf --> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="false" output="screen"> <remap from="/joint_states" to="/my_robot/joint_states" /> </node> <!-- 运行joint_state_publisher节点,发布机器人的关节状态 --> <!-- <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> --> <!-- 运行robot_state_publisher节点,发布tf --> <!-- <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> --> </launch>
3. src/robot_gazebo/launch/robot_trajectory_control.launch
<launch> <rosparam file="$(find robot_gazebo)/config/robot_trajectory_control.yaml" command="load"/> <node name="arm_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" ns="/my_robot" args="arm_joint_controller"/> </launch>
4. src/robot_gazebo/config/robot_gazebo_joint_states.yaml
my_robot: # Publish all joint states ----------------------------------- joint_state_controller: type: joint_state_controller/JointStateController publish_rate: 50
5.src/robot_gazebo/config/robot_trajectory_control.yaml
my_robot: arm_joint_controller: type: "position_controllers/JointTrajectoryController" joints: - joint_1 - joint_2 - joint_3 - joint_4 gains: joint_1: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0} joint_2: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0} joint_3: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0} joint_4: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
-
@1769564038 在 Unable to identify any set of controllers that can actuate the specified joints: 中说:
1. 这是我robot_bringup_moveit.launch 的内容
<launch> <!-- 1. Launch Gazebo --> <include file="$(find robot_gazebo)/launch/my_robot_gazebo_xacro.launch" /> <!-- 2. ros_control arm launch --> <include file="$(find robot_gazebo)/launch/robot_gazebo_states.launch" /> <!-- 3. ros_control trajectory --> <include file="$(find robot_gazebo)/launch/robot_trajectory_control.launch" /> <!-- 4. moveit launch --> <include file="$(find my_robot_moveit_config)/launch/moveit_planning_execution.launch" /> </launch>
2.这是src/robot_gazebo/launch/robot_gazebo_states.launch
<launch> <!-- 将关节控制器的配置参数加载到参数服务器中 --> <rosparam file="$(find robot_gazebo)/config/robot_gazebo_joint_states.yaml" command="load"/> <node name="joint_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" ns="/my_robot" args="joint_state_controller" /> <!-- 运行robot_state_publisher节点,发布tf --> <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" respawn="false" output="screen"> <remap from="/joint_states" to="/my_robot/joint_states" /> </node> <!-- 运行joint_state_publisher节点,发布机器人的关节状态 --> <!-- <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" /> --> <!-- 运行robot_state_publisher节点,发布tf --> <!-- <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /> --> </launch>
3. src/robot_gazebo/launch/robot_trajectory_control.launch
<launch> <rosparam file="$(find robot_gazebo)/config/robot_trajectory_control.yaml" command="load"/> <node name="arm_controller_spawner" pkg="controller_manager" type="spawner" respawn="false" output="screen" ns="/my_robot" args="arm_joint_controller"/> </launch>
4. src/robot_gazebo/config/robot_gazebo_joint_states.yaml
my_robot: # Publish all joint states ----------------------------------- joint_state_controller: type: joint_state_controller/JointStateController publish_rate: 50
5.src/robot_gazebo/config/robot_trajectory_control.yaml
my_robot: arm_joint_controller: type: "position_controllers/JointTrajectoryController" joints: - joint_1 - joint_2 - joint_3 - joint_4 gains: joint_1: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0} joint_2: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0} joint_3: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0} joint_4: {p: 1000.0, i: 0.0, d: 0.1, i_clamp: 0.0}
6. src/my_robot_moveit_config/config/controllers_gazebo.yaml
controller_manager_ns: controller_manager controller_list: - name: my_robot/arm_joint_controller action_ns: follow_joint_trajectory type: FollowJointTrajectory default: true joints: - joint_1 - joint_2 - joint_3 - joint_4
7. src/my_robot_moveit_config/launch/my_robot_moveit_controller_manager.launch.xml
<launch> <!-- Define the controller manager plugin to use for trajectory execution --> <!-- <param name="moveit_controller_manager" value="moveit_simple_controller_manager/MoveItSimpleControllerManager" /> --> <arg name="moveit_controller_manager" default="moveit_simple_controller_manager/MoveItSimpleControllerManager"/> <param name="moveit_controller_manager" value="$(arg moveit_controller_manager)"/> <!-- loads controller list to the param server --> <rosparam file="$(find my_robot_moveit_config)/config/controllers_gazebo.yaml"/> </launch>
-
问题已解决,主要问题是gazebo里面没有添加gazebo标签。
-
@1769564038 棒,这种复杂的问题,可以就是一块块的检查,你的gazebo这边的rqt_graph看起来就是不正常的,啥都没提供。
-
@1769564038 您好,请问哪个文件里没有添加gazebo标签,能具体说一下吗
-
@1769564038 大佬,我也遇到了和你相同的问题,可以具体说一下解决方法吗,感激不尽。