1. 實(shí)測Win7 64系統(tǒng) + VMware上安裝Ubuntu14.04 64位系統(tǒng)。
注意:嘗試安裝了最新版ROS lunar筒愚,但會提示錯(cuò)誤赴蝇,sudo apt-get update后,仍然報(bào)錯(cuò)巢掺。所以句伶,Ubuntu14.04 64位 + ROS Indigo Desktop Full是穩(wěn)定可靠的。
-----------------------------------------------------------------------
系統(tǒng)環(huán)境:
Windows 7 OS 64bit? +? VMware 14
-----------------------------------------------------------------------
ROS開發(fā)環(huán)境:
Ubuntu14.04 下載地址:http://releases.ubuntu.com/14.04/
ROS Indigo 安裝步驟:http://wiki.ros.org/indigo/Installation/Ubuntu
------------------------------------------------------------------------
Face Detection and Tracking Using ROS, OpenCV and Dynamixel Servos
1. ros_robotics_projects/chapter_2_codes/face_tracker_pkg/src/face_tracker_node.cpp
2. ros_robotics_projects/chapter_2_codes/face_tracker_control/src/face_tracker_controller.cpp
3. Haar Feature-based Cascade Classifier for Object Detection
ROS中的HelloWorld - 轉(zhuǎn)載 《ROS學(xué)習(xí)筆記(一):自己動手寫一個(gè)ROS程序》
創(chuàng)建一個(gè)工作區(qū)(workspace)
工作區(qū)可以作為一個(gè)獨(dú)立的項(xiàng)目進(jìn)行編譯陆淀,存放ROS程序的源文件考余、編譯文件和執(zhí)行文件。建立工作區(qū)的方法如下:
[plain]view plaincopy
$?mkdir?-p?~/catkin_ws/src
$?cd?~/catkin_ws/src
$?catkin_init_workspace
雖然這時(shí)候工作區(qū)是空的轧苫,但是我們依然可以進(jìn)行編譯:
[plain]view plaincopy
$?cd?~/catkin_ws/
$?catkin_make
這時(shí)候楚堤,會在當(dāng)前文件夾下生成devel,build這兩個(gè)子文件夾含懊,在devel文件夾下能看到幾個(gè)setup.*sh文件身冬。
接下來把工作區(qū)在bash中注冊
[plain]view plaincopy
$?source?devel/setup.bash
要驗(yàn)證是否已經(jīng)在bash中注冊可以使用如下命令:
[plain]view plaincopy
$?echo?$ROS_PACKAGE_PATH
/home/youruser/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
如果能看到自己工作區(qū)的文件路徑就說明已經(jīng)成功了。
創(chuàng)建一個(gè)ROS工程包(Package)
在一個(gè)工作區(qū)內(nèi)绢要,可能會包含多個(gè)ROS工程包吏恭。而最基本ROS工程包中會包括CmakeLists.txt和Package.xml這兩個(gè)文件,其中Package.xml中主要包含本項(xiàng)目信息和各種依賴(depends)重罪,而CmakeLists.txt中包含了如何編譯和安裝代碼的信息樱哼。
首先切換到工作區(qū):
[plain]view plaincopy
$?cd?~/catkin_ws/src
現(xiàn)在可以使用catkin_create_pkg命令去創(chuàng)建一個(gè)叫beginner_tutorials的包,這個(gè)包依靠std_msgs剿配、roscpp搅幅、rospy。
[plain]view plaincopy
$?catkin_create_pkg?beginner_tutorials?std_msgs?rospy?roscpp
接下來在工作區(qū)編譯這個(gè)工程包呼胚。
[plain]view plaincopy
$?cd?~/catkin_ws
$?catkin_make
一個(gè)簡單的發(fā)布(Publisher)茄唐、訂閱(Subscriber)程序
寫一個(gè)發(fā)布(Publisher)節(jié)點(diǎn)
節(jié)點(diǎn)(node)是連接到ROS網(wǎng)絡(luò)中可執(zhí)行的基本單元。我們在這創(chuàng)建一個(gè)發(fā)布者---“talker”節(jié)點(diǎn)蝇更,這個(gè)節(jié)點(diǎn)持續(xù)對外發(fā)布消息沪编。
首先我們要把目錄切換到我們的beginner_tutorials工程包中
[plain]view plaincopy
$?cd?~/catkin_ws/src/beginner_tutorials
因?yàn)槲覀円呀?jīng)編譯過這個(gè)工程包了,所以會在beginner_tutorials文件夾下看到CmakeList.txt年扩、package.xml文件和include蚁廓、src這兩個(gè)目錄。接下來進(jìn)入src子目錄
[plain]view plaincopy
$?cd?src
在src目錄中創(chuàng)建一個(gè)talker.cpp文件厨幻,里面的內(nèi)容如下:
寫一個(gè)訂閱(Subscriber)節(jié)點(diǎn)
還是在src目錄下相嵌,創(chuàng)建一個(gè)listener.cpp文件腿时。內(nèi)容如下:
編譯創(chuàng)建的節(jié)點(diǎn)
在編譯我們創(chuàng)建的節(jié)點(diǎn)之前,我們還需要編輯Cmakelist.txt文件(注意:是beginner_tutorials項(xiàng)目包下的CMakelist文件)饭宾,告訴編輯器我們需要編輯什么文件批糟,需要什么依賴。
[plain]view plaincopy
$?gedit?CMakeLists.txt
在文件末尾添加如下語句:
將目錄切換到工作區(qū)目錄看铆,并執(zhí)行catkin_make運(yùn)行命令:
[plain]view plaincopy
$?cd?~/catkin_ws
$?catkin_make
不出意外的話徽鼎,會出現(xiàn)如下界面:
至此,程序已經(jīng)創(chuàng)建完成弹惦,而接下來我們要檢查一下我們創(chuàng)建的程序是否正確纬傲。
首先,我們得要啟動ROS核心程序roscore肤频。
[plain]view plaincopy
$?roscore
在使用我們的程序之前,需要先把程序注冊
[plain]view plaincopy
$?cd?~/catkin_ws
$?source?./devel/setup.bash
運(yùn)行talker節(jié)點(diǎn):
[plain]view plaincopy
$?rosrun?beginner_tutorials?talker
這時(shí)候會看到如下信息:
[plain]view plaincopy
[INFO]?[WallTime:?1314931831.774057]?hello?world?1314931831.77
[INFO]?[WallTime:?1314931832.775497]?hello?world?1314931832.77
[INFO]?[WallTime:?1314931833.778937]?hello?world?1314931833.78
[INFO]?[WallTime:?1314931834.782059]?hello?world?1314931834.78
[INFO]?[WallTime:?1314931835.784853]?hello?world?1314931835.78
[INFO]?[WallTime:?1314931836.788106]?hello?world?1314931836.79
這就表示發(fā)布(Publisher)節(jié)點(diǎn)已經(jīng)正確的運(yùn)行了算墨。
接下來運(yùn)行l(wèi)istener節(jié)點(diǎn):
[plain]view plaincopy
$?rosrun?beginner_tutorials?listener
這時(shí)候會看到如下信息:
[plain]view plaincopy
[INFO]?[WallTime:?1314931969.258941]?/listener_17657_1314931968795I?heard?hello?world?1314931969.26
[INFO]?[WallTime:?1314931970.262246]?/listener_17657_1314931968795I?heard?hello?world?1314931970.26
[INFO]?[WallTime:?1314931971.266348]?/listener_17657_1314931968795I?heard?hello?world?1314931971.26
[INFO]?[WallTime:?1314931972.270429]?/listener_17657_1314931968795I?heard?hello?world?1314931972.27
[INFO]?[WallTime:?1314931973.274382]?/listener_17657_1314931968795I?heard?hello?world?1314931973.27
[INFO]?[WallTime:?1314931974.277694]?/listener_17657_1314931968795I?heard?hello?world?1314931974.28
[INFO]?[WallTime:?1314931975.283708]?/listener_17657_1314931968795I?heard?hello?world?1314931975.28
這說明訂閱節(jié)點(diǎn)(listener)已經(jīng)成功的接收到了發(fā)布節(jié)點(diǎn)(talker)發(fā)布的信息宵荒。至此,整個(gè)程序結(jié)束净嘀!