自己學(xué)了不少時(shí)間的ROS,都是根據(jù)ros by example vol 1 indigo走的,遇到需要實(shí)際機(jī)器人的地方就直接跳過(guò),但是光在電腦上模擬總不是辦法,而ros by example vol 1 indigo中推薦的硬件ROS平臺(tái)呢都是國(guó)外的(turtleBot,PR2等),國(guó)內(nèi)也很難買到(歸根結(jié)底就是窮,有錢啥買不到)。
那如果我們自己有(或者公司有,偷笑臉)一個(gè)非ROS平臺(tái)的機(jī)器人,如何讓ROS能夠控制這個(gè)機(jī)器人呢,這個(gè)好像涉及得很少,貌似大家都忽略了這一部分,搞得好像別人都有自己的ROS平臺(tái)就我沒(méi)有一樣。好在在ROS WIKI上找到了這個(gè)玩意http://wiki.ros.org/ros_control。
這次來(lái)分析一下這個(gè)ros_controller包。
里面有個(gè)slide做的真是不錯(cuò),通俗易懂。首先假設(shè)我們已經(jīng)寫好(抄好)了我們要用的ROS程序,迫不及待想在機(jī)器人上試試,找了個(gè)根本不支持ROS的機(jī)器人,突然發(fā)現(xiàn)好像中間缺了什么,臥槽,這怎么搞。這就是下圖中缺失的那塊東西。

填上以后,就變成這個(gè)模樣,臥槽,這就是我需要的啊。天哪,我所要的就是屎黃色框內(nèi)的所有東西。一個(gè)控制程序,和一塊控制硬件

再細(xì)化一點(diǎn),就是下面這個(gè)樣子

和仿真對(duì)比,有什么區(qū)別呢,看下圖就是

也就是說(shuō),在仿真時(shí),我們用gazebo創(chuàng)建虛擬機(jī)器人,然后在rviz虛擬環(huán)境中運(yùn)動(dòng),在現(xiàn)實(shí)中,gazebo變成了真實(shí)的機(jī)器人的輸入和輸出,將一些運(yùn)動(dòng)封裝好之后,通過(guò)ros_control建立虛擬與實(shí)際的接口,進(jìn)行控制機(jī)器人。