ROS学习入门之一(第一个ROS小程序)

1、ROS安装

参考

https://www.linuxidc.com/Linux/2017-08/146030.htm
测试方法:小乌龟程序运行成功
分别在三个命令窗口输入

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_ke

2、创建工作区

首先第一步,

你要创建一个工作区,我们全部创建的包,都应该放到这个工作区中。你可以取一个你喜欢的名字作为你工作区的名称
例如,我所创建的工作区叫test,那么你就在你的工作区中创建catkin的工作区,使用指令

例如,我所创建的工作区叫test,那么你就在你的工作区中创建catkin的工作区,使用指令

mkdir test

然后进入这个工作区,

cd test

在你的工作区里创建一个名叫src的子目录

mkdir src

这个叫src的子目录将用于存放功能包的源代码。

第二步,

创建功能包。进入你第一步中创建的子目录src中(cd src),然后在这个目录下运行catkin_create_pkg package name。

catkin_create_pkg hello_ros

这个包可以起任何名字,这个功能包创建命令并没有做太多工作,它只不过创建了一个存放这个功能包的目录,并在那个目录下生成了两个配置文件,一个叫做package.xml。我们暂且不管他。另外一个配置文件叫CMakeLists.txt,它是一个CMake的脚本文件。这个文件包含了一系列的编译指令,包括生成可执行文件,需要哪些源文件,以及哪里可以找到所需头文件和链接库。
当你做完了以上两步,现在就可以编写ROS程序了。
创建一个名为hello.cpp的源文件放到你的功能包文件夹中,挨着package.xml和CMakeLists.txt。如图
在这里插入图片描述

#include <ros/ros.h>
 int main(int argc, char **argv) 
{ 
	ros::init(argc,argv,"hello"); 
	ros::NodeHandle n; 
	ROS_INFO("Hello ROS!");
	ros::spinOnce(); 
}

ros::init函数初始化ROS客户端库。需要在程序的起始处调用一次该函数。函数的最后一个参数是一个包含节点默认名的字符串。
ros::NodeHandle对象是你的程序用于和ROS系统交互的主要机制,创建此对象将会把你的程序注册为节点管理器的节点。
ROS_INFO_STREAM宏将生成一条消息,且这条消息被发送的不同的位置,包括控制台。

3、编译hello程序

声明依赖库,首先我们要声明程序所依赖的其他功能包,对于C++程序而言,此步骤是必须的,以确保catkin能够向C++编译器提供合适的标记来定位编译功能所需的头文件和链接库。
为了给出依赖库,编辑目录下的CMakeLists.txt文件,该文件默认版本有如下行:
find_package(catkin REQUIRED)
所依赖的其他catkin包可以添加到这一行的COMPONENTS关键词后面,如下所示:
find_package(catkin REQUIRED COMPONENTS package-names)
对于这个例程,我们需要添加名为roscpp的依赖库,它提供了ROS的C++客户端,修改后的如下所示:
find_package(catkin REQUIRED COMPONENTS roscpp)
声明可执行文件 接下来,我们还要在CMakeLists.txt文件中添加两行,声明我们需要创建的可执行文件,一般形式为:
add_executable(executable-name source-files)
target_link_libraries(executable-name ${catkin_LIBRARIES})
第一行声明了我们想要的可执行文件的文件名,以及所需的源列表。如果有多个源文件,把他们列在此处,并用空格将其分开。第二行告诉CMake当链接此可执行文件时需要链接哪些库。如果你的包里需要多个可执行文件,为每个可执行问复制和修改上述两行。
本例程中,我们需要添加一下几行
add_executable(hello hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})
完整cmake代码

cmake_minimum_required(VERSION 2.8.3)
project(hello_ros)
find_package(catkin REQUIRED COMPONENTS  roscpp)
include_directories( include ${catkin_INCLUDE_DIRS})
add_executable(hello hello.cpp)
target_link_libraries(hello ${catkin_LIBRARIES})

4、编译工作区

一旦你的CMakeLists.txt文件设置好了,你就可以编译工作区,使用以下指令:

catkin_make

注意:这个指令要在你创建的工作区test的路径下执行。他将会完成一些配置步骤,并且在工作区中创建devel和build两个子目录,这两个新生成的子目录用于存放和编译相关的文件,如自动生成的编译脚本、目标代码和可执行文件。

5、设置环境变量setup.bash

最后的步骤是执行名为setup.bash的脚本,它是catkin_make在工作区devel目录下生成的

source devel setup.bash

这个自动生成的脚本设置了若干环境变量,从而 使ROS能找到你创建的功能包和新生成可执行文件

6、执行hello程序

在执行hello程序前,首先要启动
roscore
启动后执行
rosrun hello_ros hello
其中hello_ros是你之前创建的包的名字,根据你之前自己去的名字自行修改。
运行后这个程序就会终端打印类似下面的输出

【INFO】【1543652338.493910660】:hello,ROS!

ps:这行输出的数字代表时间,从1970年1月1号开始以秒计时

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值