zoukankan      html  css  js  c++  java
  • ROS编程基础(二)发布者节点的创建和运行

      ROS消息通信中使用的发布者(Publisher)和订阅者(Subscriber)可以被发送和接收所代替。在ROS中,发送端称为发布者,接收端称为订阅者。本节旨在创建一个简单的msg文件,并创建和运行发布者和订阅者节点。

    1.创建功能包

      以下命令是创建ros_tutorials_topic功能包的命令。这个功能包依赖于message_generation、std_msgs和roscpp功能包,因此将这些用作依赖选项。第二行命令意味着将使用创建新的功能包时用到的message_generation表示将使用创建新消息的功能包std_msgs(ROS标准消息功能包)和roscpp(在ROS中使用C/C ++的客户端程序库)必须在创建功能包之前安装。用户可以在创建功能包时指定这些相关的功能包设置,但也可以在创建功能包之后直接在package.xml中修改。

    cd ~/catkin_ws/src
    catkin_create_pkg ros_tutorials_topic message_generation std_msgs roscpp 

       创建功能包时,将在~/catkin_ws/src目录中创建ros_tutorials_topic功能包目录,并在该功能包目录中创建ROS功能包的默认目录和CMakeLists.txt和package.xml文件。可以使用下面的ls命令检查它,并使用基于GUI的Nautilus(类似Windows资源管理器)来检查功能包的内部。

    cd ros_tutorials_topic
    ls
    include          → 头文件目录
    src              → 源代码目录
    CMakeLists.txt   → 构建配置文件
    package.xml      → 功能包配置文件

     2.修改功能包配置文件

      ROS的必备配置文件package.xml是一个包含功能包信息的XML文件,其中包含用于描述功能包名称、作者、许可证和依赖包的信息。使用以下命令,利用编辑器(gedit、vim、emacs等)打开文件,并修改它以匹配当前节点。

    vim package.xml
    

      以下代码显示如何修改package.xml文件以匹配我们这次要创建功能包。笔者的个人信息包含在如下文件内容中,您可以修改它,以适应您的需求。有关每个选项的详细说明,咱们后面再说。

    3.修改构建配置文件(CMakeLists.txt)

      ROS的构建系统catkin基本上使用CMake,它在功能包目录中的CMakeLists.txt文件中描述了构建环境。该文件设置可执行文件的创建、依赖包优先构建、链接创建等。

    vim CMakeLists.txt
    

     以下是为了匹配正在创建的功能包而修改的CMakeLists.txt。同样,有关每个选项的详细说明,咱们后面再讲。

     

     4.创建消息文件

      在上述的CMakeLists.txt文中添加了如下选项。

    add_message_files(FILES MsgTutorial.msg)
    

      这意味着在构建时要包含消息MsgTutorial.msg,该消息将在此节点中被使用。现在我们还没有创建MsgTutorial.msg,因此按以下顺序创建它:

    roscd ros_tutorials_topic    → 移动到功能包目录
    mkdir msg                    → 功能包中创建新的msg消息目录
    cd msg                       → 转到创建的msg目录
    vim MsgTutorial.msg          → 创建新的MsgTutorial.msg文件并修改内容
    

     

      内容很简单。如下所示,创建一个time消息类型的stamp消息和一个int32消息类型的data消息, 除了这些消息类型之外,还有一些如bool、int8、int16、float32、string、time、duration和common_msgs等基本消息类型,以及在ROS中收集常用消息的common_msgs。这里我们只是为了创建一个简单的例子,因此用了time和int32。 

     4.创建发布者节点

    在前面的CMakeLists.txt文件中,给了生成以下可执行文件的选项。

    add_executable(topic_publisher src/topic_publisher.cpp)
    

      换句话说,是在src目录中构建topic_publisher.cpp文件以创建topic_publisher可执行文件。那么我们按如下顺序创建一个执行发布者节点函数的源代码。

    roscd ros_tutorials_topic/src      → 移至src目录,该目录是功能包的源代码目录
    gedit topic_publisher.cpp          → 新建源文件并修改内容
    

      

    作者:kay
    出处:https://www.cnblogs.com/kay2018/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
    如果文中有什么错误,欢迎指出。以免更多的人被误导。
  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/kay2018/p/10308773.html
Copyright © 2011-2022 走看看