ros入门 第一个小程序 最简单的hello程序+添加自定义头文件.hpp和源文件.cpp

1、创建工作区

工作区中要包含src文件夹

mkdir test #新建test文件夹作为工作区
cd test	#进入工作区
mkdir src #工作区中新建src文件夹

2、创建功能包

cd src	#进入src文件夹
catkin_create_pkg hello_ros	#创建功能包,名字为hello_ros

此时src文件夹会生成两个文件CMakelist.txt package.xml

3、创建编写源文件

在src文件夹下创建hello.cpp文件并编写代码

#include <ros/ros.h>
 int main(int argc, char **argv) 
{ 
	ros::init(argc,argv,"hello"); 	#初始化ROS客户端库
	ros::NodeHandle n; 	#创建此对象,此程序被注册为节点管理器的节点
	ROS_INFO("Hello ROS!");	#生成一条消息,终端会打印这句话
	ros::spinOnce(); 	#处理节点订阅话题的所有回调函数
}

4、编辑CMakeLists.txt文件

声明依赖库,确保catkin能向c++编辑器提供合适的标记来定位所需的头文件和链接库

cmake_minimum_required(VERSION 2.8.3)	#自动生成
project(hello_ros)	#自动生成的,后面是功能包的名字
find_package(catkin REQUIRED COMPONENTS  roscpp)	#所依赖的其他catkin包添加到COMPONENTS后面,用空格隔开
include_directories( include ${catkin_INCLUDE_DIRS})	#包含的索引路径
add_executable(hello hello.cpp)	#手动添加 第一个是可执行文件的文件名,后面是源,可以多个,用空格隔开
target_link_libraries(hello ${catkin_LIBRARIES})	#此可执行文件所需的链接库,第一个可执行文件名,后面为链接库,可多个,用空格隔开

5、编译工作区

回到工作区路径下,编译工作区

cd test	#回到工作区路径,就是src的上一层
catkin_make	#编译工作区

此时工作区中会出现devel和build两个子目录

6、设置环境变量setup.bash

source devel setup.bash

7、执行hello程序

先启动

roscore

启动后,执行程序

rosrun hello_ros hello	#hello_ros是功能包的名字,后面是可执行文件名

运行后终端会打印如下

【INFO】【1543652338.493910660】:hello,ROS!

添加自定义头文件.hpp和源文件.cpp

1、编写test.hpp文件,放在功能包文件夹下 include/hello 文件夹下
#ifndef _TEST_H_
#define _TEST_H_
class test
{
	public:
	void show() const;
};
#endif
2、编写test.cpp文件,放在功能包文件夹下 src 文件夹下
#include "test.hpp"		//注意下面3.1步的路径,否则可能找不到文件
#include <iostream>
void test::show() const
{
	std::cout<<"test"<<std::endl;
}
3、修改CMakeLists.txt文件

修改的地方有三个
1、

include_directories(
include             ##此处原本有#号,去掉,这里是.hpp文件的路径
include/hello    ##实际.hpp存放在include下的hello文件夹中,可以添加多个
${catkin_INCLUDE_DIRS}
)

2、

add_library(   ##用来手动链接.hpp和.cpp文件
test           ##自定义的链接库名,后面用来识别
include/hello/test.hpp    ##.hpp的路径
src/test.cpp			  ##.cpp的路径
)

3、

target_link_libraries(hellotest  ##可执行文件名
test							 ##上面自定义的链接库名
${catkin_LIBRARIES}				 ##原来的链接库名
)

4、main函数调用自定义库
#include <ros/ros.h>
#include “test.hpp”		//注意上面3.1步的路径,否则可能找不到文件
 int main(int argc, char **argv) 
{ 
	ros::init(argc,argv,"hello"); 	#初始化ROS客户端库
	ros::NodeHandle n; 	#创建此对象,此程序被注册为节点管理器的节点
	ROS_INFO("Hello ROS!");	#生成一条消息,终端会打印这句话
	test my_test;		//自定义的class
	my_test.show();	//调用自定义的函数,会打印test
	ros::spinOnce(); 	#处理节点订阅话题的所有回调函数
}
5、编译、运行

具体步骤重复上面的5、6、7步骤
最终运行结果为

【INFO】【1543652338.493910660】:hello,ROS!
test
  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值