VScode创建ROS项目 ROS集成开发环境

news2024/12/23 0:23:03

ROS使用VScode创建项目步骤

  • 1.创建ROS工作空间
  • 2.启动VScode
  • 3.VScode编译ROS
  • 4.创建ROS功能包
  • C++语言开发
  • Python语言开发

本文章介绍了如何在Ubuntu18.04系统下搭建VScode 的ROS项目
搭建项目分为一下几个步骤:

1.创建ROS工作空间

创建一个demo的ROS工作空间,并进行编译,此时home路径下会生成一个demo的工作空间,demo文件下的结构如图所示

```powershell
mkdir -p demo/src  # (必须得有 src)
cd demo
catkin_make
```
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c75c6223bdf640a897a4b65348eb1e9e.png)

在这里插入图片描述

2.启动VScode

进入到demo路径下,启动VScode

```powershell
cd demo
code .
```

3.VScode编译ROS

使用快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build点击设置进行编译配置,会生成一个.vscode/tasks.json 文件,修改.vscode/tasks.json 文件的内容,将tasks.json的内容换为如下内容
在这里插入图片描述
tasks.json文件内容

```powershell
{
	// 有关 tasks.json 格式的文档,请参见
    // https://go.microsoft.com/fwlink/?LinkId=733558
    "version": "2.0.0",
    "tasks": [
        {
            "label": "catkin_make:debug", //代表提示的描述性信息
            "type": "shell",  //可以选择shell或者process,如果是shell代码是在shell里面运行一个命令,如果是process代表作为一个进程来运行
            "command": "catkin_make",//这个是我们需要运行的命令
            "args": [],//如果需要在命令后面加一些后缀,可以写在这里,比如-DCATKIN_WHITELIST_PACKAGES=“pac1;pac2”
            "group": {"kind":"build","isDefault":true},
            "presentation": {
                "reveal": "always"//可选always或者silence,代表是否输出信息
            },
            "problemMatcher": "$msCompile"
        }
    ]
}
```

4.创建ROS功能包

  • 选定 src 右击 —> create catkin package
    在这里插入图片描述
  • 创建一个hello_world功能包
    在这里插入图片描述
  • 使用roscpp rospy std_msgs作为依赖库
    在这里插入图片描述

hello_world功能包下的结构如图所示,功能包创建成功
在这里插入图片描述

C++语言开发

  • 在hello_world功能包的src文件夹下新建一个cpp文件

    #include "ros/ros.h"
    
    int main(int argc, char *argv[])
    {
        setlocale(LC_ALL,"");  // 设置可以显示中文
        //执行节点初始化
        ros::init(argc,argv,"HelloWorld");
    
        //输出日志
        ROS_INFO("Hello World!!!哈哈哈哈哈哈哈哈哈哈");
        return 0;
    }
    
    

    在这里插入图片描述

  • 配置CMakeLists.txt
    修改hello_world功能包下的CMakeLists.txt,找到add_executable和target_link_libraries,修改成如图所示,hello_world定义的是节点,可以自己随机命名,但add_executable和target_link_libraries的节点要保持一致
    在这里插入图片描述

  • 编译执行

    • 按快捷键ctrl + shift + B 编译,如何所示,说明项目没有问题
      在这里插入图片描述

    • 开启一个Terminal,运行roscore命令在这里插入图片描述

    • 再开启一个新的Terminal,执行以下命令,运行程序

      cd demo
      source ./devel/setup.bash
      rosrun hello_world hello_world # 第一个hello_world表示的是hello_world功能包,第二个hello_world表示的hello_world节点
      

      在这里插入图片描述

Python语言开发

  • 在 hello_world 功能包新建一个 scripts 文件,在 scripts 下新建一个 hello_world_p.py 文件

    #! /usr/bin/env python3
    
    import rospy
    
    
    if __name__ == "__main__":
        
        rospy.init_node("hello_p")
    
        rospy.loginfo("hello world! this is python")
    

    在这里插入图片描述

  • 给 python 文件添加可执行权限
    进入到scripts文件夹下,执行 chmod +x hello_world_p.py 给python文件添加可执行的文件

    cd src/hello_world/scripts
    chmod +x hello_world_p.py
    
  • 配置 CMakeLists.txt
    修改hello_world功能包下的CMakeLists.txt,找到catkin_install_python,修改成如图所示:
    在这里插入图片描述

  • 编译执行

    • 按快捷键ctrl + shift + B 编译,如何所示,说明项目没有问题
      在这里插入图片描述

    • 开启一个Terminal,运行roscore命令
      在这里插入图片描述

    • 再开启一个新的Terminal,执行以下命令,运行程序

      cd deno
      source ./devel/setup.bash
      rosrun hello_world hello_world_p.py
      

      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1847623.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言中操作符详解(一)

众所周知,在我们的C语言中有着各式各样的操作符,并且在此之前呢,我们已经认识并运用了许许多多的操作符,都是诸君的老朋友了昂 操作符作为我们使用C语言的一个非常非常非常重要的工具,诸君一定要加以重视,…

pretender:一款功能强大的红队MitM安全测试工具

关于pretender pretender是一款功能强大的红队MitM安全测试工具,该工具专为红队研究人员设计,该工具不仅能够进行MitM和中继攻击,而且还支持执行DHCPv6 DNS接管以及mDNS、LLMNR和NetBIOS-NS欺骗攻击。在该工具的帮助下,广大研究人…

51单片机STC89C52RC——4.1 独立按键(数码管显示按键值)

目录 目录 目的 一,STC单片机模块 二,矩阵按键模块 2.1 针脚定义 ​编辑 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程…

186.二叉树:二叉搜索树中的插入操作(力扣)

代码解决 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* Tre…

ASP.NET Core 6.0 多种部署方式

IIS 环境准备和部署 安装并配置 IIS 安装 IIS,在搜索输入并打开 启用或关闭 Windows 功能。 配置IIS 需要配置 ASPNETCore 部署IS 程序包安装 (ASP.NET Core Module v2) Download .NET 6.0 (Linux, macOS, and Windows).NET 6.0 downloads…

鸿蒙开发系统基础能力:【@ohos.accessibility (辅助功能)】

辅助功能 说明: 本模块首批接口从 API version 7 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 导入模块 import accessibility from ohos.accessibility;AbilityState 辅助应用状态类型。 系统能力:以下各项对应的…

电子杂志制作工具推荐:让你轻松成为编辑大人

在这个数字化的时代,电子杂志已经成为信息传播的重要载体。它不仅能够满足人们对阅读的需求,还能够提供更加丰富、互动的阅读体验。因此,掌握一款好用的电子杂志制作工具,已经成为每个编辑大人的必备技能。接下来告诉大家一个超简…

永磁同步电机驱动死区补偿

1 死区效应及补偿 1. 1 死区效应 在本文的电机控制嵌入式系统中,逆变器为三 相电压型桥式逆变电路,如图 1 所示。 在理想状态 下,上桥臂和下桥臂的控制信号满足互补通断原则, 即上桥臂开通时,下桥臂关断,反之亦然。 而在实际 应用中,开关管的通断需要一定的开通时…

Java项目:基于SSM框架实现的绿色农产品推广应用网站果蔬商城水果商城蔬菜商城【ssm+B/S架构+源码+数据库+答辩PPT+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的绿色农产品推广应用网站果蔬商城水果商城蔬菜商城 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能…

容器之按钮盒构件演示

代码; #include <gtk-2.0/gtk/gtk.h> #include <glib-2.0/glib.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);GtkWidget *window;window gtk_window_new(GTK_WINDO…

如何使用Windows备份轻松将数据转移到新电脑?这里有详细步骤

序言 我们都知道那种买了一台新电脑,就想直接上手的感觉。我记得在过去的日子里,要花几个小时传输我的文件,并试图复制我的设置。在当今传输数据的众多方法中,Windows备份提供了一个简单可靠的解决方案。 登录到你的Microsoft帐户 Microsoft在传输过程中使用其云存储来保…

理解 JTBD 框架和EJ 理念:深挖以用户为中心的设计

在与用户的交流中&#xff0c;我们发现对用户需求的精准洞察普遍困扰着产品经理、设计、企划人员&#xff0c;因为当今消费者行为已经由单品消费转向场景消费&#xff0c;千人千面的个性化需求出现&#xff0c;消费者数据维度极大丰富&#xff0c;这对把握用户体验造成了很大挑…

第六十六天打卡 | 卡码网101 孤岛的总面积、卡码网102 沉没孤岛、卡码网103 水流问题、卡码网104 建造最大岛屿

卡码网101 孤岛的总面积 这一题在昨天的基础上&#xff0c;将比较得出最大孤岛面积的逻辑改为统计所有孤岛面积之和的逻辑即可。 最近做项目的时候也发现&#xff0c;很多时候代码逻辑能够复用最好就不要再自己写&#xff0c;防止出错&#xff0c;当然刷代码题的时候不…

【已解决】手机进入fastboot无法退出

文章目录 报错及效果图报错代码效果图 解决方案必要的解决方法可能有用的解决方法 报错及效果图 报错代码 手机屏幕显示fastboot&#xff0c;长按电源键无法正常启动 效果图 解决方案 必要的解决方法 1.在电脑上下载并安装adb/fastboot驱动&#xff0c;可以在这里免费下载&…

功能测试【测试用例模板、Bug模板、手机App测试】

功能测试 Day01 web项目环境与测试流程、业务流程测试一、【了解】web项目环境说明1.1 环境的定义&#xff1a;项目运行所需要的所有的软件和硬件组合1.2 环境(服务器)的组成&#xff1a;操作系统数据库web应用程序项目代码1.3 面试题&#xff1a;你们公司有几套环境&#xff1…

【对抗去偏】BiasAdv: Bias-Adversarial Augmentation for Model Debiasing

原文标题&#xff1a; BiasAdv: Bias-Adversarial Augmentation for Model Debiasing 原文代码&#xff1a; 暂无 发布年度&#xff1a; 2023 发布期刊&#xff1a; CVPR 摘要 Neural networks are often prone to bias toward spurious correlations inherent in a dataset, …

路由器的Wi-Fi性能是否限制了你的网速?这里有你想要的答案

​你的无线网络速度阻碍了你吗?信不信由你,升级到超快的互联网计划可能不值得。以下是如何判断路由器的Wi-Fi速度是否阻碍了你,以及你能做些什么。 如何测试你的Wi-Fi速度 比较你的有线速度和无线速度可以表明你的路由器是否阻碍了你。虽然很多人认为“Wi-Fi”和“互联网”…

网络虚拟化考题

vrrp讲过吗&#xff1f;&#xff1f;&#xff1f; d 每一层都是什么设备啊 abcd 为啥流量不可控不可视 c是啥意思 讲过吗 abc aNET网络虚拟化是啥啊 为啥&#xff1f;&#xff1f; 啥是CDN&#xff1f;&#xff1f;&#xff1f;&#xff1f;&#xff1f;

【python】OpenCV——Color Correction

文章目录 cv2.aruco 介绍imutils.perspective.four_point_transform 介绍skimage.exposure.match_histograms 介绍牛刀小试遇到的问题 参考学习来自 OpenCV基础&#xff08;18&#xff09;使用 OpenCV 和 Python 进行自动色彩校正 cv2.aruco 介绍 一、cv2.aruco模块概述 cv2.…

关于微信小程序取消获取用户昵称的一些思考

官方说明&#xff0c;有部分小程序乱用授权&#xff0c;强迫用户提交头像和昵称。 核心是微信担心用户信息被滥用。 其一 &#xff0c;微信头像经常是本人真是照片&#xff0c;在现在人工智能算法的加持下&#xff0c;人脸数据太容易被套取。 其二&#xff0c;微信名称同理&…