使用 VScode 开发 ROS 的Python程序(简例)
一、任务介绍
本篇作为ROS学习的第二篇,是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序,输出“Hello!”的内容介绍。
首先我们来了解下ROS的文件系统,ROS文件系统级指的是在硬盘上ROS源代码的组织形式,其结构大致可以如下图所示:

|--- devel:开发空间,用于存放编译后生成的目标文件,包括头文件、动态&静态链接库、可执行文件等。
|--- build:编译空间,用于存放CMake和catkin的缓存信息、配置信息和其他中间文件。
|--- src: 源码|-- package:功能包(ROS基本单元)包含多个节点、库与配置文件|-- CMakeLists.txt 配置编译规则,比如源文件、依赖项、目标文件|-- package.xml 包信息,比如:包名、版本、作者、依赖项...(以前版本是 manifest.xml)|-- scripts 存储python文件|-- src 存储C++源文件
二、实施
1.创建ROS工作空间
在“主文件夹>主目录中”右键,点击新建文件夹,输入文件夹名称,要以‘_ws’结尾,创建工作空间。

创建src,双击demo02_ws,进入文件夹再继续创建src文件夹,然后右键,选择“在终端打开”

2.编译工作空间
在终端输入catkin_make,回车后,会在工作空间demo02中生成另外两个文件夹。

(以上操作也可以使用命令行,怎么方便怎么来)
3.使用VScode打开工作空间
在demo02_ws右键终端内输入“code ./”然后回车就会以VSCode环境打开打开demo02_ws。

4.vscode 中编译 ros
按下快捷键 ctrl + shift + B 调用编译,选择:catkin_make:build,选择后面的小齿轮

点击小齿轮后进入vscode/tasks.json 文件,将其中的代码全部替换成下面代码,这样可以以后直接将快捷键“ ctrl + shift + B”配置设置为默调用编译。
替换成的代码:
{
// 有关 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"}]
}
替换后:

5.创建 ROS 功能包
鼠标右键选中 src> create catkin package,然后再输入框键入工作包名称

添加依赖,这里主要有3个 roscpp rospy std_msgs
回车之后,可以在demo02_ws工作空间内看到创建好的ROS功能包“hello”
6.创建python文件
在hello文件夹内继续创建python的存储文件夹scrpits,右击hello>新建文件夹,命名为scripts,接着继续右击scripts,选择创建文件,并命名为“helloworld_p.py”

这里,我们要实现的功能是直接打印“HelloWorld!”代码如下:
#! /usr/bin/env python
#coding:utf-8
import rospy if __name__ == "__main__":rospy.init_node("Hello_Vscode_p") # 2.初始化 ROS 节点 rospy.loginfo("HelloWorld, 我是 VSCode!") #3.日志输出 HelloWorld
7.添加python可执行权限
①右击scripts文件,选择在集成终端中打开,然后输入“chmod +x *.py”为script文件夹内的python文件添加可执行权限,通过调用“ll” 可以查看是否添加成功。

8.配置 CMakeLists.txt
在CMakeLists.txt中找到大概第162行的catkin_install_python,将原来的自动生成python文件名改成你自定义文件名.py

9.编译python文件
①按下快捷键ctrl + shift + B,如果编译没有问题就可以继续下一步操作。
②打开新的终端,然后打开roscore。(roscore === 是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信)

③再继续打开一个新的终端,输入“source ./devel/setup.bash”回车之后,继续输入“rosrun hello helloworld_p.py” 即“rosrun+包名+.py名”:运行指定的ROS节点

以上就是在Ubuntu中使用Vscode来编写一个ros的python文件,今天你学废了吗?
相关文章:
使用 VScode 开发 ROS 的Python程序(简例)
一、任务介绍 本篇作为ROS学习的第二篇,是关于如何在Ubuntu18.04中使用VSCode编写一个Python程序,输出“Hello!”的内容介绍。 首先我们来了解下ROS的文件系统,ROS文件系统级指的是在硬盘上ROS源代码的组织形式,其结构…...
2022年03月 C/C++(一级)真题解析#中国电子学会#全国青少年软件编程等级考试
第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536 输入 只有一行,一个双精度浮点数。 输出 一行,保留8位小数的浮点数。 样例输…...
HarmonyOS/OpenHarmony应用开发-ArkTSAPI系统能力SystemCapability列表
SysCap,全称SystemCapability,即系统能力,指操作系统中每一个相对独立的特性。 开发者使用某个接口进行开发前,建议先阅读系统能力使用说明,了解Syscap的定义和使用指导。 说明 当前列表枚举出3.1 Beta版本中支持的…...
【01】基础知识:typescript安装及使用,开发工具vscode配置
一、typescript 了解 typeScript 是由微软开发的一款开源的编程语言。 typeScript 是 javascript 的超级,遵循最新的 es6、es5规范。 typeScript 扩展了 javaScript 的语法。 typeScript 更像后端 java、C# 这样的面向对象语言,可以让 js 开发大型企…...
用C++实现的RTS游戏的路径查找算法(A*、JPS、Wall-tracing)
在实时策略(RTS)游戏中,路径查找是一个关键的问题。游戏中的单位需要能够找到从一个地方到另一个地方的最佳路径。这个问题在计算机科学中被广泛研究,有许多已经存在的算法可以解决这个问题。在本文中,我们将探讨三种在…...
helm 制作应用的离线安装包
helm 制作应用的离线安装包 1、安装helm 到helm下载对应的压缩包:https://github.com/helm/helm/releases 解压,将helm文件cp到/usr/local/bin/ 文件夹下,查看helm版本;不同的k8s对应不同的helm版本,下载时留心注意…...
RN实现混合式开发-内嵌html
介绍 React Native WebView是一个用于在React Native应用中嵌入Web内容的组件。它允许你在应用中显示网页、加载HTML字符串、运行JavaScript代码等。 使用 首先,你需要在你的React Native项目中安装React Native WebView库。可以使用以下命令进行安装:…...
2000-2022年全国各地级市绿色金融指数数据
2000-2022年全国各地级市绿色金融指数数据 1、时间:2000-2022年 2、来源:来源:统计局、科技部、中国人民银行等权威机构网站及各种权威统计年鉴,包括全国及各省市统计年鉴、环境状况公报及一些专业统计年鉴,如 《中国…...
MachineLearningWu_13/P60-P64_Tensorflow
P60-P64的学习目录如下, x.1 TF网络模型实现 以一个简单的TF的分类网络为例,将模型翻译成框架下的语义,即如右侧所表达的。 当然上面对于分类网络的解释是一个简洁的解释,我们来进行更加具象的了解一下。左边是机器学习的三步骤&…...
centos7实现负载均衡
目录 一、基于 CentOS 7 构建 LVS-DR 集群。 1.1 配置lvs负载均衡服务 1.1.1 下载ipvsadm 1.1.2 增加vip 1.1.3 配置ipvsadm 1.2 配置rs1 1.2.1 编写测试页面 1.2.2 手工在RS端绑定VIP、添加路由 1.2.3 抑制arp响应 1.3 配置rs2 1.4 测试 二、配置nginx负载…...
Django笔记之数据库函数之日期函数
日期函数主要介绍两个大类,Extract() 和 Trunc() Extract() 函数作用是提取日期,比如我们可以提取一个日期字段的年份,月份,日等数据 Trunc() 的作用则是截取,比如 2022-06-18 12:12:12,我们可以根据需求…...
系统架构师---开发方法---敏捷开发
目录 前言 极限编程 四大价值观 沟通 简单 反馈 勇气 尊重: 十二个最佳实践 计划游戏 小型发布 隐喻 简单设计 测试先行 重构 结对编程 集体代码所所有制 持续集成 每周工作40小时 现场客户 编码标准 前言 2001年2月,在美国的犹他州…...
数据中心液冷技术:规模扩张的新里程碑
数据中心液冷技术:规模扩张的新里程碑 数据中心的液冷技术正处在规模扩张的关键阶段。这篇文章将深入探讨液冷技术的发展历程,当前的应用状况,以及未来的发展趋势。 目录 液冷技术的发展历程液冷技术的当前应用状况液冷技术的优势与挑战数据…...
页面静态化(模板引擎Freemarker)
1、浏览器请求web服务器 2、服务器渲染页面,渲染的过程就是向jsp页面(模板)内填充数据(模型)。 3、服务器将渲染生成的页面返回给浏览器。 所以模板引擎就是:模板数据输出,Jsp页面就是模板,页面中嵌入的jsp标签就是数据&#x…...
详细记录Pycharm配置已安装好的Conda虚拟环境
当安装好conda环境之后,想要在Pycharm中使用,那么就要在Pycharm中导入,我这里使用的pycharm-professional-2023.2这个版本,下面是详细步骤: 1.打开File->Settings: 2.找到Project——>Python Inter…...
photoshop生成器引入到electron项目(electron与photoshop建立通信)
Photoshop引入了nodejs,在启动的时候,通过pipe调起nodejs运行时核心generator-builtin,通过KLVR机制与ps进行通信和交互,同时会加载用户编写的扩展。 这里记录一下引入时的踩坑过程 generator-core就是它的源码,elect…...
Stable Diffuion webui Mac版本安装过程
系统环境 操作系统:MacOS Ventura13.5 芯片:Apple M2 Max Python: 3.10 安装前置准备 git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git注意事项:修改源码内全部 git clone 链接,设置代理 https://ghpr…...
ARM64 指令用法学习整理
1. CBZ 当我们谈论ARM64指令集时,CBZ(Compare and Branch on Zero)是一种条件分支指令。它用于在寄存器上进行比较,并且如果该寄存器的值为零,则跳转到指定的标签或地址。 CBZ指令的基本语法如下: CBZ &…...
stable-diffusion 模型效果+prompt
摘自个人印象笔记,图不完整可查看原笔记:https://app.yinxiang.com/fx/55cda0c6-2af5-4d66-bd86-85da79c5574ePrompt运用规则及技巧 : 1. https://publicprompts.art/(最适用于OpenArt 线上模型 https://openart.ai/)…...
uniapp 小兔鲜儿 - 首页模块(1)
目录 自定义导航栏 静态结构 安全区域 通用轮播组件 静态结构 自动导入全局组件 全局组件类型声明 .d.ts文件 注册组件 vue/runtime-core 首页 – 轮播图指示点 首页 – 获取轮播图数据 首页 – 轮播图数据类型并渲染 首页 – 轮播图总结 首页分类 首页 – 前…...
西电C语言期末考什么?我用Python爬了36道XDOJ真题,帮你划重点(附难度分级)
用Python爬取XDOJ题库:C语言期末考重点分析与备考策略 当C语言期末考的阴影笼罩校园时,大多数学生还在机械地刷着往届试题,而我选择了一条不同的路——用Python爬虫技术从XDOJ平台抓取36道真题,通过数据分析揭示考试规律。这不仅是…...
PowerShell与JSON的精妙转换
在现代IT环境中,PowerShell作为一种强大的脚本语言,广泛应用于自动化任务和管理。今天,我们将探讨如何利用PowerShell来处理Exchange Online的数据,并将其转换为JSON格式,这是许多现代应用和API交互的标准格式。 背景介绍 在处理Exchange Online的共享邮箱权限时,我们通…...
终极游戏模组管理指南:如何用Nexus Mods App解决100+插件冲突问题
终极游戏模组管理指南:如何用Nexus Mods App解决100插件冲突问题 【免费下载链接】NexusMods.App Home of the development of the Nexus Mods App 项目地址: https://gitcode.com/gh_mirrors/ne/NexusMods.App Nexus Mods App是一款开源的游戏模组管理器&am…...
【C++26反射工业级应用禁地】:为什么头部自动驾驶公司已禁用传统模板元编程,全面迁移至`std::reflect`?
更多请点击: https://intelliparadigm.com 第一章:C26反射元编程的工业级演进动因 现代C系统软件正面临前所未有的复杂性挑战:微服务网关需在编译期校验协议字段兼容性,嵌入式固件要求零运行时开销的序列化配置注入,金…...
内存计算架构建模与仿真技术解析
1. 内存计算架构的建模与仿真技术全景 在传统冯诺依曼架构中,数据需要在处理器和内存之间频繁移动,这已成为制约计算系统性能提升的主要瓶颈。内存计算(Processing-in-Memory, PIM)技术通过将计算单元直接嵌入内存层级,…...
暴力枚举就够了?你可能错过了这道题真正的“降维打击”
暴力枚举就够了?你可能错过了这道题真正的“降维打击” 很多人第一次看到这道题——最大单词长度乘积(Maximum Product of Word Lengths),第一反应都是: “不就是两两比较嘛?我会。” 结果代码写完,一跑数据—— 慢得像在拨号上网。 更扎心的是: 你优化了半天,别人一…...
零基础打造专业直播间:obs-backgroundremoval插件实战指南
零基础打造专业直播间:obs-backgroundremoval插件实战指南 【免费下载链接】obs-backgroundremoval An OBS plugin for removing background in portrait images (video), making it easy to replace the background when recording or streaming. 项目地址: http…...
收藏!大模型面试八题深度复盘,带你从小白到技术大牛
本文详细复盘了美团大模型算法暑期实习二面过程,包含八道核心问题的逐题解析、考察意图及深度答案。内容涵盖实习项目、强化学习框架、模型幻觉处理、推理模式、行业趋势、MoE原理及代码实现等,旨在帮助大模型方向求职者提升面试准备,强调项目…...
Linux内核驱动开发踩坑记:为什么我的Makefile一编译就报错?原来是-Werror在搞鬼
Linux内核驱动开发实战:当-Werror让编译崩溃时如何精准排雷 深夜两点,屏幕上的红色错误信息格外刺眼——昨天还能正常编译的内核模块,今天突然因为几个"无关紧要"的未使用变量报错退出。这种场景对Linux内核开发者来说再熟悉不过&a…...
MARS算法原理与Python实现详解
1. MARS算法核心原理拆解多元自适应回归样条(Multivariate Adaptive Regression Splines)是一种非线性回归技术,由Jerome Friedman在1991年提出。其核心思想是通过分段线性基函数的线性组合来拟合复杂数据关系,特别擅长处理高维数据中的交互效应。1.1 基…...
