编写ROS的第一个程序hello_world

1.工作空间的创建

打开命令行终端Ctrl+Alt+T

1)先回到主目录

cd ~/

2)新建工作空间文件夹

mkdir catkin_ws

3)在catkin_ws目录下新建src文件夹

cd catkin_ws
mkdir src

4)初始化src目录,生成的CMakeLists.txt为功能包编译配置

cd src
catkin_init_workspace

5)返回catkin_ws目录,对该工作空间执行一次编译

cd ~/catkin_ws
catkin_make

6)环境变量配置,使新建的catkin_ws工作空间可用

source devel/setup.bash

这时,便已经创建好了一个ROS的工作空间了,接下来就是在catkin_ws工作空间下的src目录下新建功能包并进行功能包程序编写了


2.创建功能包

1)在catkin_ws/src/下创建取名为hello_world的功能包
2)ROS功能包命名规范:只允许使用小写字母、数字和下划线,
3)且首字符必须为一个小写字母。

cd ~/catkin_ws/src/
catkin_create_pkg hello_world 

注:可以在创建功能包时直接添加依赖包,也可后续对功能包目录下的CMakeLists.txt文件进行修改添加

这时候在~/catkin_ws/src/目录下能看到一个叫hello_world的文件夹,文件夹名称就是功能包的名称以及功能包的唯一标识符,这个说明功能包创建成功

3.编写代码

在hello_world目录下新建一个my_hello_world_node.cpp文件。

touch my_hello_world_node.cpp

用文本编辑器gedit打开my_hello_world_node.cpp文件,并输入如下内容。

gedit my_hello_world_node.cpp
#include "ros/ros.h"

int main(int argc,char **argv) 
{
  ros::init(argc,argv,"hello_node");
  ros::NodeHandle nh;
  ROS_INFO_STREAM("hello world!!!");
}

注:

  • #include “ros/ros.h”这一句是包含头文件ros/ros.h,这是ROS提供的C++客户端库,是必须包含的头文件,在后面的编译配置中要添加相应的依赖库roscpp。
  • ros::init(argc,argv,"hello_node");这一句是初始化ros节点并指明节点的名称,这里给节点取名为hello_node,一旦程序运行后就可以在ros的计算图中被注册为hello_node名称标识的节点。
  • ros::NodeHandle nh;这一句是声明一个ros节点的句柄,初始化ros节点必须的。
  • ROS_INFO_STREAM("hello world!!!");这一句是调用了roscpp库提供的方法ROS_INFO_STREAM来打印信息,这里打印字符串"hello world!!!"。
     

4.编译配置

由于创建功能包时没有添加依赖包,而my_hello_world_node.cpp程序中又包含了<ros/ros.h>这个库,因此我们需要添加名为roscpp的依赖库。

1)打开功能包目录下的CMakeLists.txt文件

在find_package(catkin REQUIRED ...)字段中添加roscpp,添加后的字段如下:

find_package(catkin REQUIRED COMPONENTS roscpp)

2)找到include_directories(...)字段,去掉${catkin_INCLUDE_DIRS}前面的注释,如下:

include_directories(
# include
 ${catkin_INCLUDE_DIRS}
)


3)打开功能包目录下的package.xml文件,找到这样一句话<buildtool_depend>catkin</buildtool_depend>,
在这句话的下面添加如下内容:

<build_depend>roscpp</build_depend>
<build_export_depend>roscpp</build_export_depend>
<exec_depend>roscpp</exec_depend>

4)在CMakeLists.txt文件最后一行添加


add_executable(my_hello_world_node ~/catkin_ws/src/hello_world/my_hello_world_node.cpp)
target_link_libraries(my_hello_world_node ${catkin_LIBRARIES})

注:
第一行声明了我们想要的可执行文件的文件名,以及生成此可执行文件所需的源文件列表。
如果你有多个源文件,把它们列在此处,并用空格将其区分开。
第二行告诉 Cmake 当链接此可执行文件时需要链接哪些库(在上面的 find_package 中定义)。
如果你的包中包括多个可执行文件,为每一个可执行文件复制和修改上述两行代码。
5)编译

cd ~/catkin_ws/
catkin_make 

6.运行

1)启动ROS节点管理器,ROS节点管理器是所有节点运行的基础。
打开命令行终端:

roscore

2)用source devel/setup.bash激活catkin_ws工作空间

cd ~/catkin_ws/
source devel/setup.bash

3)用rosrun <package_name> <node_name>启动功能包中的节点。

rosrun hello_world my_hello_world_node


 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dtge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值