ROS: Could not load controller 'joint_state_controller' because controller type 'joint_state_control

本文解决在使用Gazebo进行机器人URDF模型仿真时,因未安装相应ROS控制软件包导致的错误。通过安装joint_state_controller、effort_controllers和position_controllers等软件包,确保仿真正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

使用gazebo工具对机器人的urdf模型进行仿真时,执行命令:roslaunch seven_dof_arm_gazebo seven_dof_arm_gazebo_control.launch,出现如下错误:

主要原因是没有安装相应的ros控制软件包。

ERROR] [1571208919.660838700, 0.574000000]: Could not load controller 'joint_state_controller' because controller type 'joint_state_controller/JointStateController' does not exist.
[ERROR] [1571208919.660891569, 0.574000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types
[ERROR] [1571208920.662791, 1.280000]: Failed to load joint_state_controller

解决方法: 

$> sudo apt-get update
$> sudo apt-get install ros-kinetic-joint-state-controller
$> rospack profile

 参考:https://github.com/qboticslabs/mastering_ros/issues/10

 

 

[ERROR] [1571210918.068977205, 0.181000000]: Could not load controller 'joint1_position_controller' because controller type 'position_controllers/JointPositionController' does not exist.
[ERROR] [1571210918.069693846, 0.181000000]: Use 'rosservice call controller_manager/list_controller_types' to get the available types

解决方法 :sudo apt-get install ros-indigo-position-controllers

https://github.com/qboticslabs/mastering_ros/issues/7

 

 

最好在安装ros的时候一起安装控制器插件,通过如下命令:

$ sudo apt-get install ros-kinetic-joint-state-controller : This will install joint_state_controller package

$ sudo apt-get install ros-kinetic-effort-controllers : This will install Effort controller

$ sudo apt-get install ros-kinetic-position-controllers : This will install position controllers

sudo apt-get install ros-kinetic-joint-trajectory-controller

参考:https://github.com/qboticslabs/mastering_ros/issues/7

 

 

### 加载并激活 ROS2 控制器 为了加载并激活 `fishbot_joint_state_broadcaster` 控制器,在 ROS2 中通常需要遵循特定的过程。这涉及到编辑控制器配置文件以及编写启动脚本来确保控制器能够正确初始化。 #### 编辑控制器配置文件 控制器的参数一般定义在一个 YAML 文件中,此文件指定了要使用的具体控制器及其属性。对于 `joint_state_broadcaster` 类型的控制器来说,应该有如下形式的内容: ```yaml controller_manager: ros__parameters: update_rate: 100 # 更新频率设置为每秒100次 fishbot_joint_state_broadcaster: type: joint_state_broadcaster/JointStateBroadcaster ``` 上述代码片段展示了如何指定控制器管理器更新速率和声明 `fishbot_joint_state_broadcaster` 的类型[^1]。 #### 创建启动文件 接下来,创建一个用于加载这些配置并将控制器添加到控制器管理器中的 Python 启动脚本或者 launch 文件。下面是一个简单的例子,演示了怎样利用 Launch API 来实现这一点: ```python from launch import LaunchDescription from launch_ros.actions import Node def generate_launch_description(): return LaunchDescription([ Node( package='controller_manager', executable='spawner.py', arguments=['fishbot_joint_state_broadcaster'], output='screen' ), ]) ``` 这段代码的作用是在运行时调用 controller_manager 提供的 spawner 工具来实例化所需的广播器[^2]。 #### 使用命令行工具激活控制器 除了编程方式外,还可以直接通过命令行工具来进行操作。一旦完成了前面提到的工作空间构建与环境准备之后,可以执行以下指令来加载并启动控制器: ```bash ros2 control load_controller fishbot_joint_state_broadcaster --set-state start ``` 这条命令将会向控制系统发送请求以装载指定名称的控制器,并立即将其状态设为活动模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值