下面是接触ROS编程的第一个小实验---编写hello_ros
首先还是创建ros的工作空间,
- 打开终端,输入mkdir -p ~/catkin_op/src
- cd catkin_op/src
- 进入src,创建工作包pkg, catkin_create_pkg print_hello roscpp std_msgs (catkin_create_okg 包名 依赖)
- 在上面一步生成的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 ,运行该节点
上面的[INFO]后面看到了输出的:Hello_Ros!