zoukankan      html  css  js  c++  java
  • 在ubuntu16上用vscode编译ros历程记录

    记录一下ubuntu16上用vscode编译ros的过程

    拓展中搜索并安装ROS插件

    配置文件:tasks.json

    Ctrl+Shift+P: Configure Default Build Task

    在新增的tasks.jsonz中配置如下内容

    {
        "version": "2.0.0",
        "tasks": [
            {
                "type": "catkin_make",
                "problemMatcher": [
                    "$catkin-gcc"
                ],
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
                "label": "catkin_make: build"
            }
        ]
    }

    Ctrl+Shift+P

    创建一个ros包 :ROS:Create Catikin Package

    命名为myros

    在myros包的src新建myros_node.cpp文件

    myros_node.cpp

    #include "ros/ros.h"
    #include "std_msgs/String.h"
    
    #include <sstream>
    
    class myclass 
    {
      private:
        int hello;
      public:
      int get_hello(void)
      {
        return this->hello;
      }
    };
    
    /**
     * This tutorial demonstrates simple sending of messages over the ROS system.
     */
    int main(int argc, char **argv)
    {
      /**
       * The ros::init() function needs to see argc and argv so that it can perform
       * any ROS arguments and name remapping that were provided at the command line.
       * For programmatic remappings you can use a different version of init() which takes
       * remappings directly, but for most command-line programs, passing argc and argv is
       * the easiest way to do it.  The third argument to init() is the name of the node.
       *
       * You must call one of the versions of ros::init() before using any other
       * part of the ROS system.
       */
      ros::init(argc, argv, "talker");
    
      /**
       * NodeHandle is the main access point to communications with the ROS system.
       * The first NodeHandle constructed will fully initialize this node, and the last
       * NodeHandle destructed will close down the node.
       */
      ros::NodeHandle n;
    
      /**
       * The advertise() function is how you tell ROS that you want to
       * publish on a given topic name. This invokes a call to the ROS
       * master node, which keeps a registry of who is publishing and who
       * is subscribing. After this advertise() call is made, the master
       * node will notify anyone who is trying to subscribe to this topic name,
       * and they will in turn negotiate a peer-to-peer connection with this
       * node.  advertise() returns a Publisher object which allows you to
       * publish messages on that topic through a call to publish().  Once
       * all copies of the returned Publisher object are destroyed, the topic
       * will be automatically unadvertised.
       *
       * The second parameter to advertise() is the size of the message queue
       * used for publishing messages.  If messages are published more quickly
       * than we can send them, the number here specifies how many messages to
       * buffer up before throwing some away.
       */
      ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);
    
      ros::Rate loop_rate(10);
    
      /**
       * A count of how many messages we have sent. This is used to create
       * a unique string for each message.
       */
      int count = 0;
      while (ros::ok())
      {
        /**
         * This is a message object. You stuff it with data, and then publish it.
         */
        std_msgs::String msg;
    
        std::stringstream ss;
        ss << "hello world " << count;
        msg.data = ss.str();
    
        ROS_INFO("%s", msg.data.c_str());
    
        /**
         * The publish() function is how you send messages. The parameter
         * is the message object. The type of this object must agree with the type
         * given as a template parameter to the advertise<>() call, as was done
         * in the constructor above.
         */
        chatter_pub.publish(msg);
    
        ros::spinOnce();
    
        loop_rate.sleep();
        ++count;
      }
    
    
      return 0;
    }

    新建的文件提示找不到下面两个头文件。

    #include "ros/ros.h"
    #include "std_msgs/String.h"

    此时:Ctrl+Shift+B进行编译错误就会消失。

    在myros包下的CMakeLists.txt取消注释得到如下图的三条语句

    再Ctrl+Shitf+B进行编译

    编译成功后:Ctrl+Shift+P在出现大框框中分别执行:

    ROS:start core

    ROS:Run a Ros excutable -> myros->myrosnode

    执行结果:

  • 相关阅读:
    WINDOWPOS结构
    HTML 4.01 符号实体
    建立窗体时所响应的消息
    如何用正确的方法来写出质量好的软件的75条体会
    Onload加载多个方法函数
    UML中的一些概念
    aop应用范围
    如何成为“10倍效率”开发者
    网页引入taglibs
    XML编程—CRUD
  • 原文地址:https://www.cnblogs.com/cczyd/p/14119866.html
Copyright © 2011-2022 走看看