我的Linux与ROS的不眠不休:从入门到入土(三)——hellow,ROS

2023-05-16

一、ROS回顾

没啥好回顾的。

ros操作简单又功能强大(百度这么说的),但学起来也没那么容易。

二、Hellow,ROS

上一篇说过,ROS程序员需要写的程序,其实就是创造节点。那么,怎么样写,写在哪里?需要先了解一些概念。

1、工作空间

ros的工作空间基本可以看作是工程项目了。工作空间下,装载着这个项目需要的依赖包,头文件,执行文件,代码等等文件。可以通过一个树状分级了解一下。

        想要通过ROS建立一个机器人,首先建立一个机器人项目文件,也就是工作空间。工作空间下,又3个文件,分别是build,装着依赖包,库文件等杂七杂八的底层依赖的地方,devel,装着环境配置文件的地方,src,装功能包的地方。除了src,其余两个很少打交道。

        当一个机器人项目被创建,就要开始构思机器人的功能了,ROS提供了功能包这一个概念,意思是,完成这一个功能的代码,都放在这个文件下就好了。

当一个功能包被创建,在其下方也存在一个src文件夹,代码就放在这个src文件夹下。

2、在ROS中,输出hellow_word

        首先,创建一个机器人项目,也就是工作空间 //在~下

mkdir -p wsp_hellow_ros/src

        在工作空间下,与src文件夹同级的目录,使用命令//在wsp_hellow_ros下

catkin_make

        这时候,cmake工具会自动创建需要的环境与依赖,生成build和devel文件。同时src下也有一个.txt文件,是用来负责编译环境配置,库连接等等工作的。

        创建一个功能包 //在src下

catkin_create_pkg hellow_ros cpp

        参数1为功能包名,参数二为功能包所需依赖。 创建完后,src下应有一个文件夹hellow_ros,同时该文件夹下存在2个文件夹,2个txt文件。

        来到功能包下的src,创建一个节点Node,实际上就是开始写程序了。创建一个cpp文件,建议文件名与希望生成的节点名相同。

        程序如下:

#include<ros/ros.h>
#include<iostream>

using namespace std;

int main(int argc,char*argv[] )
{
  ros::init(argc,argv,"printf_hellow"); //创建一个节点,名为printf_hellow
  
  while(ros::ok())
  {
     ROS_INFO("hellow,ROS!");
     sleep(1);//等待1s
  
  }	


}

        c++程序是需要编译才能运行的,通过cmake工具编译,要将编译的文件目标导入功能包下src里的CMake....txt下,不是工程下的src哦。

        编辑CMake.txt文件添加这两句。

add_executable(exe1 src/printf_hellow_ros.cpp)
target_link_libraries(exe1 ${catkin_LIBRARIES})

        这两句实际上在文件里是有原型的,他们的意思也简单易懂。

        add_executable就是为目标文件生成 .exe的执行文件,第一个参数是,生成执行文件的名字。第二个参数是,想要编译的文件的路径。

        target_link_libraries则为生成的  .exe文件提供库的支持。二者必不可少。

        最终回到工作空间目录。catkin_make一下。

        

打开终端,运行roscore

打开另一个终端,rosrun功能包下的执行文件,就能看见输出的hellow_ros

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我的Linux与ROS的不眠不休:从入门到入土(三)——hellow,ROS 的相关文章

随机推荐