• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

ROS的机器人模型控制——ros_control

武飞扬头像
ant-small
帮助1

        ros_control就是ROS为开发者提供的机器人控制中间件,可以在丰富的机器人应用中通用,包含一系列控制器接口、传动装置接口、硬件接口、控制器接口、控制器工具箱等,可以帮助机器人应用功能包快速落地,提高开发效率。

        ros_control可以针对不同类型的机器人(移动机器人、机械臂等)提供多种类型的控制器(controller),但是这些控制器的接口各不相同。为了提高代码的复用率,ros_control还提供了一个硬件抽象层,负责机器人硬件资源的管理,处理硬件冲突,而controller从抽象层请求资源即可,并不直接接触硬件。

ros_control每个层次所包含的功能:

        控制器管理器(Controller Manager)        每个机器人可能有多个控制器,所以这里有一个控制器管理器的概念,提供一种通用的接口来管理不同的控制器。控制器管理器的输入就是ROS上层应用功能包的输出。

        控制器(Controller)        控制器可以完成每个joint的控制,读取硬件资源接口中的状态,再发布控制命令,并且提供PID控制器。

        硬件资源(Hardware Resource)        为上下两层提供硬件资源的接口

        机器人硬件抽象(RobotHW)        机器人硬件抽象和硬件资源直接打交道,通过write和read方法完成硬件操作,这一层也包含关节约束、力矩转换、状态转换等功能。

        真实机器人(Real Robot)        真实机器人上也需要有自己的嵌入式控制器,将接收到的命令反映到执行器上。

控制器管理器的相关命令 

controller_manager命令的格式为:

$ rosrun controller_manager controller_manager <command> <controller_name>

        支持的<command>如下:

                load:加载一个控制器

                unload:卸载一个控制器

                start:启动控制器

                stop:停止控制器

                spawn:加载并启动一个控制器

                kill:停止并卸载一个控制器

如果想要查看某个控制器的状态,可以使用如下命令:

$ rosrun controller_manager controller_manager <command>

         支持的<command>如下:

                list:根据执行的顺序列出所有控制器,并显示每个控制器的状态

                list-types:显示所有控制器的类型

                reload-libraries:以插件的形式重载所有控制器的库,不需要重新启动,方便对控制器的开发和测试

                reload-libraries --restore:以插件的形式重载所有控制器的库,并恢复到初始状态

使用以下命令可以一次控制多个控制器,自动加载、启动控制器:

$ rosrun controller_manager spawner [--stopped] name1 name2 name3

         注:如果加上--stopped参数,那么控制器则只会加载,但是并不会开始运行

使用以下命令可以停止一系列控制器,但是不会卸载:

$ rosrun rontroller_manager unspawner name1 name2 name3

在launch文件中,同样可以通过运行controller_manager命令,加载和启动一系列控制器:

  1.  
    <launch>
  2.  
    <node pkg="controller_manager" type="spawner" args="controller_name1 controller_name2" />
  3.  
    </launch>

在launch文件中输入以下命令,会只加载而不启动controller:

  1.  
    <launch>
  2.  
    <node pkg="controller_manager" type="spawner" args="--stopped controller_name1 controller_name2" />
  3.  
    </launch>

  在controller_manager中还提供了可视化工具rqt_controller_manager,输入以下命令即可打开:

$ rosrun rqt_controller_manager rqt_controller_manager

                           

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgekffe
系列文章
更多 icon
同类精品
更多 icon
继续加载