自己學了不少時間的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的機器人,突然發現好像中間缺了什么,臥槽,這怎么搞。這就是下圖中缺失的那塊東西。
Paste_Image.png
填上以后,就變成這個模樣,臥槽,這就是我需要的啊。天哪,我所要的就是屎黃色框內的所有東西。一個控制程序,和一塊控制硬件
Paste_Image.png
再細化一點,就是下面這個樣子
Paste_Image.png
和仿真對比,有什么區別呢,看下圖就是
Paste_Image.png
也就是說,在仿真時,我們用gazebo創建虛擬機器人,然后在rviz虛擬環境中運動,在現實中,gazebo變成了真實的機器人的輸入和輸出,將一些運動封裝好之后,通過ros_control建立虛擬與實際的接口,進行控制機器人。