• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、ROS安装
参考

https://www.linuxidc.com/Linux/2017-08/146030.htm

测试方法:小乌龟程序运行成功
分别在三个命令窗口输入

roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key

若出现小乌龟窗口,并能用方向键控制小乌龟的移动表示安装成功
rosrun 后两个参数,第一个为包名,第二个为可执行文件名

2、创建工作区
首先第一步,你要创建一个工作区,我们全部创建的包,都应该放到这个工作区中。你可以取一个你喜欢的名字作为你工作区的名称
例如,我所创建的工作区叫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

注意:这个指令要在你创建的工作区的路径下执行。他将会完成一些配置步骤,并且在工作区中创建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人参与评论

请发表评论

全部评论

专题导读
上一篇:
检测微信小程序输入内容是否合法~发布时间:2022-07-18
下一篇:
小程序转义字符去空格 发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap