1. 程式人生 > >ros編寫hello_ros及注意細節

ros編寫hello_ros及注意細節

下面是接觸ROS程式設計的第一個小實驗---編寫hello_ros

首先還是建立ros的工作空間,

  1. 開啟終端,輸入mkdir -p ~/catkin_op/src
  2. cd catkin_op/src
  3. 進入src,建立工作包pkg, catkin_create_pkg print_hello roscpp std_msgs (catkin_create_okg 包名 依賴)
  4. 在上面一步生成的src檔案下建立一個原始檔hello.cpp

下面就直接貼上這個hello_ros程式碼,

#include<ros/ros.h>

int main(int argc,char **argv)

{

     ros::init(argc,argv,"hello_ros");

     ros::NodeHandle nh;

     ROS_INFO("Hello_Ros!"); 

     ros::spinOnce();

}

下一步就是要注意的地方,修改CMakeLists.txt的內容,先把我這一次的內容貼出來,然後來說下自己的錯誤,(CSDN居然不能複製貼上,難受)

cmake_minimun_required(VERSION 2.8.3)            --------------------------------------1

project(print_hello)                                                   --------------------------------------2

add_compile_options(-std=c++11)                           -------------------------------------3

find_package(catkin REQUIRED COMPONENTS 

roscpp

std_msgs)                                                                -------------------------------------4

catkin_package(

INCLUDE_DIRS include

LIBRARIES print_hello

CATKIN_DEPENDS roscpp std_msgs)                 --------------------------------------5

include_directories(

#include ${catkin_INCLUDE_DIRS}

)                                                                             --------------------------------------6

add_ececutable(hello ./src/hello.cpp)                    --------------------------------------7

target_link_libraries(hello ${catkin_LIBRARIES})  --------------------------------------8

在這上面的標記中,我的錯誤開始在第5處的catkin_packge()中的內容沒有注意,這個內容是編譯自己的程式和依賴,生成可行程式的連結,而且catkin_packge()是寫在find_packge()後面的,find_packge()是我們需要使用的依賴。

如果又錯誤,執行catkin_make編譯的時候,會爆出來的,根據紅色錯誤,可以一點點的找到問題。

關於這個CMakeLists.txt的內容每一項是什麼意思,可以在其他部落格中找到,不過自己也應該整理一份方便自己理解,時間不夠了,後面有空閒時間自己在整理下1.2.3.4.5.6.7.8.以及.xml檔案的每一項的意思。

然後就是在catkin_op這個工作空間下開啟終端,輸入:catkin_make,編譯整個程式

注意到,最後兩行的兩個100%後面的內容,一個連結到/devel/lib下的可執行程式,一個是hello.cpp構建成功,說明該ros程式的編譯完成。(出現這個結果很重要)

最後,在ros下執行該程式的輸出,

開啟一個終端,輸入:roscore,啟動ros環境

再開啟一個終端,輸入:cd catkin_op

                            再輸入:source devel/setup.bash  ,重新整理環境

最後輸入:rosrun print_hello hello      ,執行該節點