自己学了不少时间的ROS,都是根据ros by example vol 1 indigo走的,遇到需要实际机器人的地方就直接跳过,但是光在电脑上模拟总不是办法,而ros by example vol 1 indigo中推荐的硬件ROS平台呢都是国外的(turtleBot,PR2等),国内也很难买到(归根结底就是穷,有钱啥买不到)。
那如果我们自己有(或者公司有,偷笑脸)一个非ROS平台的机器人,如何让ROS能够控制这个机器人呢,这个好像涉及得很少,貌似大家都忽略了这一部分,搞得好像别人都有自己的ROS平台就我没有一样。好在在ROS WIKI上找到了这个玩意http://wiki.ros.org/ros_control。
这次来分析一下这个ros_controller包。
里面有个slide做的真是不错,通俗易懂。首先假设我们已经写好(抄好)了我们要用的ROS程序,迫不及待想在机器人上试试,找了个根本不支持ROS的机器人,突然发现好像中间缺了什么,卧槽,这怎么搞。这就是下图中缺失的那块东西。
填上以后,就变成这个模样,卧槽,这就是我需要的啊。天哪,我所要的就是屎黄色框内的所有东西。一个控制程序,和一块控制硬件
再细化一点,就是下面这个样子
和仿真对比,有什么区别呢,看下图就是
也就是说,在仿真时,我们用gazebo创建虚拟机器人,然后在rviz虚拟环境中运动,在现实中,gazebo变成了真实的机器人的输入和输出,将一些运动封装好之后,通过ros_control建立虚拟与实际的接口,进行控制机器人。