当前位置: 首页 > news >正文

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

ROS使用VScode创建项目步骤

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

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

1.创建ROS工作空间

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

mkdir -p demo/src  # (必须得有 src)
cd demo
catkin_make

在这里插入图片描述

2.启动VScode

进入到demo路径下,启动VScode

cd demo
code .

3.VScode编译ROS

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

{// 有关 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 python3import rospyif __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
      

      在这里插入图片描述

相关文章:

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

ROS使用VScode创建项目步骤 1.创建ROS工作空间2.启动VScode3.VScode编译ROS4.创建ROS功能包C语言开发Python语言开发 本文章介绍了如何在Ubuntu18.04系统下搭建VScode 的ROS项目 搭建项目分为一下几个步骤: 1.创建ROS工作空间 创建一个demo的ROS工作空间&#xff0…...

nodejs从基础到实战学习笔记-nodejs简介

一、Node.js简介 • Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境。 • Node采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。 1.1 特性 …...

2024年最新版------二进制安装部署Kubernetes(K8S)集群

Kubernetes二进制集群部署 文章目录 Kubernetes二进制集群部署资源列表基础环境一、环境准备1.1、绑定映射关系1.2、所有主机安装Docker1.3、所有主机设置iptables防火墙 二、生成通信加密证书2.1、master上成功CA证书2.2.1、创建证书存放位置并安装证书生成工具2.2.2、拷贝证书…...

【mysql】关键词搜索实现

关键词搜索实现两种方式 -- 方式1 模糊匹配搜索 -- 场景一:搜索出来地址内包含‘李’和‘中国’的 select * from tn_md_cust_link where address like concat (%李%) or address like concat (%中国%) -- 场景二:搜索地址或者名称包含 ‘181’ 的 …...

Python面试十问2

一、如何使用列表创建⼀个DataFrame # 导入pandas库 import pandas as pd# 创建一个列表,其中包含数据 data [[A, 1], [B, 2], [C, 3]]# 使用pandas的DataFrame()函数将列表转换为DataFrame df pd.DataFrame(data, columns[Letter, Number]) # 列名# 显示创建的…...

C# OpenCvSharp 图像处理函数-颜色通道-cvtColor

使用 OpenCvSharp 中的 cvtColor 函数进行图像颜色转换 在图像处理领域,颜色空间转换是一个非常常见的操作。OpenCvSharp 提供了一个强大的函数 cvtColor 来处理这类转换。本文将详细介绍 cvtColor 函数的使用方法,并通过具体的示例演示如何在实际项目中应用这些知识。 函数…...

总结之LangChain(三)——模型IO缓存

一、聊天模型缓存 LangChain为聊天模型提供了一个可选的缓存层。这有两个好处: 如果您经常多次请求相同的完成结果,它可以通过减少您对LLM提供程序的API调用次数来帮您节省费用。 它可以通过减少您对LLM提供程序的API调用次数来加快您的应用程序速度。…...

判断一个Java服务是不是GateWay

方法 直接在对应服务的url后变加上后缀/actuator/gateway/routes,看是否会返回Gateway的路由信息。 如果返回了GateWay的路由列表,则该服务为Gateway服务。...

三次插值曲线--插值技术

三次插值曲线 1.1.三次样条曲线 三次样条曲线的基本思想是,在给定的一系列点(称为控制点或数据点)之间,通过一系列三次多项式曲线段来拟合这些点,使得整个曲线既平滑又准确地通过所有控制点。 1.1.1.数学定义 给定…...

python循环结构

1.while 循环 语句&#xff1a; while 循环条件表达式&#xff1a; 代码块 else&#xff1a; 代码块 小练&#xff1a; 设计一百以内的偶数相加 n 0 while n < 100:n 1if n % 2 0 :print(n) 判断是不是闰年&#xff08;四年一润和百年不润&#xff0c;或者四百年一润&am…...

深入理解Netty的Pipeline机制:原理与实践详解

深入理解Netty的Pipeline机制&#xff1a;原理与实践详解 Netty是一个基于Java的高性能异步事件驱动的网络应用框架&#xff0c;广泛应用于高并发网络编程。&#xff08;学习netty请参考&#xff1a;深入浅出Netty&#xff1a;高性能网络应用框架的原理与实践&#xff09;Nett…...

直方图均衡化示例

禹晶、肖创柏、廖庆敏《数字图像处理&#xff08;面向新工科的电工电子信息基础课程系列教材&#xff09;》 图3-17...

私域电商新纪元:消费增值模式的创新与成功实践

大家好&#xff0c;我是吴军&#xff0c;很高兴能够与您分享私域电商领域的魅力与机遇。今天&#xff0c;我将为大家呈现一个令人瞩目的成功案例&#xff0c;这个案例充分展现了私域电商的巨大潜力和无限可能。 在短短一个月的时间里&#xff0c;我们的客户成功实现了业绩的飞跃…...

Java——IO流(一)-(6/8):字节流-FileInputStream 每次读取多个字节(示例演示)、一次读取完全部字节(方式一、方式二,注意事项)

目录 文件字节输入流&#xff1a;每次读取多个字节 实例演示 注意事项 文件字节输入流&#xff1a;一次读取完全部字节 方式一 方式二 注意事项 文件字节输入流&#xff1a;每次读取多个字节 用到之前介绍过的常用方法&#xff1a; 实例演示 需求&#xff1a;用每次读取…...

服务器SSH 免密码登录

1. 背景 为了服务器的安全着想&#xff0c;设置的服务器密钥非常长。但是这导致每次连接服务器都需要输入一长串的密码&#xff0c;把人折腾的很痛苦&#xff0c;所以我就在想&#xff0c;能不能在终端SSH的时候无需输入密码。 windows 可以使用 xshell 软件&#xff0c;会自…...

Linux安装MySQL以及远程连接

1、Linux安装MySQL 1.1、准备解压包 MySQL5.x解压包 提取码&#xff1a;9y7n 1.2、通过rpm脚本安装 切记安装顺序&#xff1a;common --> libs --> client --> server 因为它们之间存在依赖关系&#xff0c;所以务必按照顺序安装 安装前请确保当前目录/文…...

SQL Server 数据库分页技术详解:选择最佳方法优化查询性能”。

当今数据驱动的应用程序中&#xff0c;数据库分页技术在优化查询性能和提升用户体验中扮演着重要角色。在 SQL Server 环境下&#xff0c;开发者面对大数据集时&#xff0c;常常需要选择合适的分页方法以平衡功能需求和性能优化。本文将详细介绍 SQL Server 中几种主要的分页技…...

electron录制-镜头缩放、移动

要求 1、当录屏过程中&#xff0c;鼠标点击&#xff0c;镜头应该往点击处拉近&#xff0c;等一段时间还原 2、录屏过程中&#xff0c;可能会发生多次点击&#xff0c;但是点击位置偏差大&#xff0c;可能会导致缩放之后&#xff0c;画面没出来&#xff0c;因此需要移动镜头帧 …...

红队内网攻防渗透:内网渗透之内网对抗:信息收集篇自动项目本机导出外部打点域内通讯PillagerBloodHound

红队内网攻防渗透 1. 内网自动化信息收集1.1 本机凭据收集类1.1.1、HackBrowserData 快速获取浏览器的账户密码1.1.2、Searchall 快速搜索服务器中的有关敏感信息还有浏览器的账户密码1.1.3、Pillager 适用于后渗透期间的信息收集工具,可以收集目标机器上敏感信息1.2 对外打点…...

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发&#xff08;发布&#xff09;-SelectCamelWords[选中驼峰单词]&#xff08;idea源代码&#xff09; 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址&#xff1a;https://github.com/yangfeng…...

ElementPlus el-tabs样式踩坑全记录:从‘这怎么改’到‘原来如此’的心路历程

ElementPlus el-tabs样式深度定制实战&#xff1a;从困惑到精通的全过程解析 第一次在产品需求文档里看到"标签页要设计得与众不同"时&#xff0c;我完全没意识到这个看似简单的需求会让我在ElementPlus的样式迷宫里转了三天的圈。作为团队里负责后台管理系统重构的前…...

KMS智能激活工具终极指南:免费解锁Windows与Office完整功能

KMS智能激活工具终极指南&#xff1a;免费解锁Windows与Office完整功能 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统提示"需要激活"而烦恼吗&#xff1f;Office试…...

DiagramPainter(图表制作软件)

链接&#xff1a;https://pan.quark.cn/s/9edc83129f49DiagramPainter是一款界面简洁的图表制作软件&#xff0c;内部有很多的图标可以使用&#xff0c;能够快速制作流程图、思维导图、结构图等等图表&#xff0c;还有数字水彩效果&#xff0c;支持保存为多种图像格式&#xff…...

智能体框架(Harness)深度解析:模型+框架=智能体,一文带你秒懂!

智能体框架&#xff08;Harness&#xff09;到底是什么&#xff1f;一文拆透 先把结论摆出来 智能体 模型 框架 如果你不是模型&#xff0c;你就是框架。这个公式听起来简单&#xff0c;但真正理解它需要费点功夫。 所谓框架&#xff08;Harness&#xff09;&#xff0c;就是…...

CircuitPython微控制器图形保存实战:从屏幕截图到BMP文件生成

1. 项目概述&#xff1a;为什么我们需要在微控制器上保存图形&#xff1f; 在嵌入式开发领域&#xff0c;尤其是当我们使用像Adafruit PyPortal、PyGamer这类带有彩色显示屏的开发板时&#xff0c;图形界面的调试和内容存档一直是个不大不小的痛点。想象一下&#xff0c;你花了…...

‌失落大陆建模:亚特兰蒂斯数字重建的结构验证‌

一、项目背景与目标设定在数字孪生与虚拟考古技术飞速发展的当下&#xff0c;亚特兰蒂斯这一传说中失落大陆的数字重建&#xff0c;不仅是对古老神话的技术致敬&#xff0c;更是对复杂场景建模与结构验证能力的极致考验。本项目旨在依托Blender等3D建模工具&#xff0c;结合最新…...

6种专业计时模式!OBS高级计时器插件让你的直播时间管理精准到秒

6种专业计时模式&#xff01;OBS高级计时器插件让你的直播时间管理精准到秒 【免费下载链接】obs-advanced-timer 项目地址: https://gitcode.com/gh_mirrors/ob/obs-advanced-timer 还在为直播时间控制而烦恼吗&#xff1f;OBS Advanced Timer计时器插件就是你的救星&…...

大语言模型驱动SVG代码生成:原理、实践与应用前景

1. 项目概述&#xff1a;当大语言模型遇上SVG图形生成最近在开源社区里&#xff0c;一个名为“ximinng/LLM4SVG”的项目引起了我的注意。这个项目名字直译过来就是“用于SVG的大语言模型”&#xff0c;它瞄准了一个非常具体且有趣的交叉领域&#xff1a;利用大语言模型来生成或…...

Linux内核驱动开发:从传统proc接口到现代seq_file与proc_ops的迁移指南

1. 项目概述&#xff1a;为什么我们需要关注/proc的新接口&#xff1f;如果你在Linux内核驱动开发领域摸爬滚打过几年&#xff0c;一定对/proc文件系统这个“老伙计”又爱又恨。爱它&#xff0c;是因为在调试和状态监控时&#xff0c;它提供了一个极其简单、直观的窗口&#xf…...

开源笔记Memos与AI助手Copaw集成:打造自动化知识管理工作流

1. 项目概述&#xff1a;当开源笔记遇上AI助手最近在折腾个人知识管理工具&#xff0c;发现一个挺有意思的组合&#xff1a;Hailpeng的copaw-memos-integration。简单来说&#xff0c;它把两个独立但都很棒的工具给“焊”在了一起。一边是Memos&#xff0c;一个极简、开源、自部…...