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

        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命令,加载和启动一系列控制器:

<launch>
    <node pkg="controller_manager" type="spawner" args="controller_name1 controller_name2" />
</launch>

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

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

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

$ rosrun rqt_controller_manager rqt_controller_manager

                           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值