1.4 ROS2集成开发环境搭建
1.4.1 安装VSCode
VSCode全称Visual Studio Code,是微软推出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、GIT 等特性,支持插件扩展,并针对网页开发和云端应用开发做了优化。软件跨平台支持Win、Mac以及Linux。
1.下载
vscode下载:https://code.visualstudio.com/Download。
历史版本下载链接:https://code.visualstudio.com/updates。
2.vscode 安装与卸载
2.1 安装
方式1:双击安装即可(或右击选择安装);
方式2:sudo dpkg -i xxxx.deb
。
2.2 卸载
sudo dpkg --purge code
3.VSCode启动
VSCode启动也比较简单,可以直接在Show Applications(显示应用程序) 中搜索VSCode直接启动(也可以将其添加到收藏夹)。
或者,也可以在终端下进入需要被打开的目录(比如:前面创建的ROS2工作空间ws00_helloworld),然后输入命令:code .
。
4.VSCode插件
VSCode支持插件扩展,依赖于VSCode丰富多样的插件,可以大大提高程序开发效率,为了方便ROS2程序开发,我们也需要安装一些插件。
首先点击侧边栏的Extensions(插件)选项或者使用快捷键Ctrl+Shift+X
打开插件窗口,本课程建议安装的插件如下:
当然,上述只是部分推荐插件,大家可以根据自身需求安装其他扩展。
5.VSCode配置
在VSCode中,cpp文件中的#include "rclcpp/rclcpp.hpp"
包含语句会抛出异常,这是因为没有设置VSCode配置文件中 includepath属性,可以按照如下步骤解决此问题:
- 将鼠标移到错误提示语句,此时会出现弹窗;
- 点击弹窗中的快速修复,会有新的弹窗,再点击
编辑"includePath"设置
; - 在新页面中,包含路径属性对应的文本域中,换行输入被包含的路径
/opt/ros/humble/include/**
。
至此,问题修复。
VSCode安装并配置完毕后,大家就可以在其中编写ROS2程序了。当然为了提高编码效率,我们会经常性的使用到一些快捷键,VSCode的快捷键可以在菜单栏的“帮助”中查看。
1.4.2 安装终端
在ROS2中,需要频繁的使用到终端,且可能需要同时开启多个窗口,推荐一款较为好用的终端:Terminator。效果如下:
1.安装
sudo apt install terminator
2.启动
可以直接在Show Applications(显示应用程序) 中搜索terminator直接启动(也可以将其添加到收藏夹);或者,也可以直接使用快捷键Ctrl+Alt+T
启动。
3.Terminator 常用快捷键
第一部份:关于在同一个标签内的操作
Alt+Up //移动到上面的终端
Alt+Down //移动到下面的终端
Alt+Left //移动到左边的终端
Alt+Right //移动到右边的终端
Ctrl+Shift+O //水平分割终端
Ctrl+Shift+E //垂直分割终端
Ctrl+Shift+Right //在垂直分割的终端中将分割条向右移动
Ctrl+Shift+Left //在垂直分割的终端中将分割条向左移动
Ctrl+Shift+Up //在水平分割的终端中将分割条向上移动
Ctrl+Shift+Down //在水平分割的终端中将分割条向下移动
Ctrl+Shift+S //隐藏/显示滚动条
Ctrl+Shift+F //搜索
Ctrl+Shift+C //复制选中的内容到剪贴板
Ctrl+Shift+V //粘贴剪贴板的内容到此处
Ctrl+Shift+W //关闭当前终端
Ctrl+Shift+Q //退出当前窗口,当前窗口的所有终端都将被关闭
Ctrl+Shift+X //最大化显示当前终端
Ctrl+Shift+Z //最大化显示当前终端并使字体放大
Ctrl+Shift+N or Ctrl+Tab //移动到下一个终端
Ctrl+Shift+P or Ctrl+Shift+Tab //Crtl+Shift+Tab 移动到之前的一个终端
第二部份:有关各个标签之间的操作
F11 //全屏开关
Ctrl+Shift+T //打开一个新的标签
Ctrl+PageDown //移动到下一个标签
Ctrl+PageUp //移动到上一个标签
Ctrl+Shift+PageDown //将当前标签与其后一个标签交换位置
Ctrl+Shift+PageUp //将当前标签与其前一个标签交换位置
Ctrl+Plus (+) //增大字体
Ctrl+Minus (-) //减小字体
Ctrl+Zero (0) //恢复字体到原始大小
Ctrl+Shift+R //重置终端状态
Ctrl+Shift+G //重置终端状态并clear屏幕
Super+g //绑定所有的终端,以便向一个输入能够输入到所有的终端
Super+Shift+G //解除绑定
Super+t //绑定当前标签的所有终端,向一个终端输入的内容会自动输入到其他终端
Super+Shift+T //解除绑定
Ctrl+Shift+I //打开一个窗口,新窗口与原来的窗口使用同一个进程
Super+i //打开一个新窗口,新窗口与原来的窗口使用不同的进程
1.4.3 安装git
Git 是一个免费和开源的分布式版本控制系统,旨在高速高效的处理从小型到大型项目的所有内容。在Ubuntu下可以调用如下命令安装git:
sudo apt install git
在本教程中会经常使用git clone 仓库地址
的方式来将Git仓库拷贝到本地。
关于git工具使用可以在终端下输入:git --help
查看帮助文档。关于git的其他详细信息请参考:https://git-scm.com/
相关文章:

1.4 ROS2集成开发环境搭建
1.4.1 安装VSCode VSCode全称Visual Studio Code,是微软推出的一款轻量级代码编辑器,免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、GIT 等特性,支持插件…...
数组和对象在内存中的区别
一、内存分配方式 数组在内存中是一段连续的存储空间,每个元素占据一个位置,这种连续存储方式使得数组的访问速度更快。对象在内存中是以键值对的形式存储的,每个键值对都需要单独的内存空间,这种非连续的存储方式可能会导致访问…...

智能胎教仪,科技与教育的融合-N9301胎教仪语音方案
随着科学技术的不断进步,人们对婴幼儿教育的认知也日趋成熟和全面。其中,胎教作为一种重要的早期教育方式,近年来备受瞩目。而胎教仪语音芯片的研发,正是为了满足这一需求,为胎儿的健康成长提供更加便捷的胎教方案。 一…...
代码随想录2链表
2 移除元素 Leetcode203 设置虚拟头节点 dummyHead...
Java8新特性常见用法
Java8新特性 示例类Stream API 使用示例forEach:遍历Stream:创建流map:转换元素filter:过滤元素collect(收集元素) 和 Collectors(分组、连接)sorted 和 comparing(搭配排序)toMap:转换Map元素collectingAndThen:过滤掉相同数据toUpperCase:转大写distinct:去重c…...

Web3 前端攻击:原因、影响及经验教训
DeFi的崛起引领了一个创新和金融自由的新时代。然而,这种快速增长也吸引了恶意行为者的注意,他们试图利用漏洞进行攻击。尽管很多焦点都集中在智能合约安全上,但前端攻击也正在成为一个重要的威胁向量。 前端攻击的剖析 理解攻击者利用前端漏…...
C++ 如何解决回调地狱问题
“地狱回调”(Callback Hell)是指在编程中使用过多嵌套回调函数,导致代码难以阅读和维护。C 提供了多种方法来解决这个问题,包括以下几种常见的方法: 使用 Lambda 表达式和标准库的 std::function使用 std::future 和…...
普利姆最小生成树算法 c++
普里姆(Prim)算法是一种用于在加权连通无向图中查找最小生成树(MST, Minimum Spanning Tree)的贪心算法。最小生成树是一个子图,它包括图中的所有顶点,并且边的总权重最小。该算法的基本思想是从一个顶点开始,逐步扩展生成树,直到包括所有顶点。 算法步骤 初始化: 从…...

Golang 依赖注入设计哲学|12.6K 的依赖注入库 wire
一、前言 线上项目往往依赖非常多的具备特定能力的资源,如:DB、MQ、各种中间件,以及随着项目业务的复杂化,单一项目内,业务模块也逐渐增多,如何高效、整洁管理各种资源十分重要。 本文从“术”层面&#…...
ubuntu 23 连接正点imx6ull的uboot网络设置(nfs和tftp)
由于使用ubuntu23,无法连接正点的imx6ull的uboot,因为这个uboot里面的nfs是v2,ubuntu23内核是6.5不支持uboot v2。配置/etc/default/nfs-kernel-server sudo vim /etc/default/nfs-kernel-server 更改以下参数: RPCNFSDCOUNT"…...
CC6利用链分析
CC1的两条利用链,在JDK 8u71之后已修复,不可利用。 学一下不受版本限制的CC6利用链 分析版本 Commons Collections 3.2.1 JDK 8u65 环境配置参考JAVA安全初探(三):CC1链全分析 分析过程 我的Github主页Java反序列化学习同步更新,有简单…...
多线程编程的基本概念,C++标准库中的多线程支持(std::thread,std::async),如何处理线程同步和并发问题。
多线程编程在现代计算机系统中非常重要,因为它能够使程序同时执行多个操作,提高计算效率。以下是多线程编程的基本概念及如何在C标准库中使用std::thread和std::async进行多线程编程,同时处理线程同步和并发问题。 多线程编程的基本概念 线程…...

Linux的Socket开发概述
套接字(socket)是 Linux 下的一种进程间通信机制(socket IPC),在前面的内容中已经给大家提到过,使用 socket IPC 可以使得在不同主机上的应用程序之间进行通信(网络通信),…...

LLM调优,大模型怎么学
背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型(LLM)工作原理的工具,旨在增加这些复杂系统的透明度。它提供了一个交互式界面,用户可以通过它观察、分析模型对特定输入(prompts)的反应…...

XLSX + LuckySheet + LuckyExcel实现前端的excel预览
文章目录 功能简介简单代码实现效果参考 功能简介 通过LuckyExcel的transformExcelToLucky方法, 我们可以把一个文件直接转成LuckySheet需要的json字符串, 之后我们就可以用LuckySheet预览excelLuckyExcel只能解析xlsx格式的excel文件,因此对…...
在Ubuntu上创建和启用交换文件的简单步骤
文章目录 为什么使用交换文件?步骤 1:创建交换文件步骤 2:设置正确的权限步骤 3:将文件格式化为交换空间步骤 4:启用交换文件步骤 5:验证交换文件步骤 6:永久启用交换文件步骤 7:调整…...

Java [ 基础 ] HashMap详解 ✨
目录 ✨探索Java基础 HashMap详解✨ 总述 主体 1. HashMap的基本概念 2. HashMap的工作原理 3. HashMap的常用操作 4. HashMap的优缺点 总结 常见面试题 常见面试题解答 1. HashMap的底层实现原理是什么? 2. 如何解决HashMap中的哈希冲突?…...
vue2项目迁移vue3与gogocode的使用
#背景 公司有个项目使用vue2jswebpack框架开发的,由于该项目内部需要安扫,导致很多框架出现了漏洞需要升级,其中主要需要从vue2升vue3,但是重新搭框架推翻重做成本太高,于是找到了gogocode。 #升级步骤踩坑 1. 安装 gogocode插…...
【Python123题库】#数列求和 #百分制成绩转换五分制(循环) #正负交错数列前n项和 #求数列前n项的平方和
禁止转载,原文:https://blog.csdn.net/qq_45801887/article/details/140079866 参考教程:B站视频讲解——https://space.bilibili.com/3546616042621301 有帮助麻烦点个赞 ~ ~ Python123题库 数列求和百分制成绩转换五分制(循环)正负交错数列…...

Edge浏览器选中后,出现AI智能生成 AI专业写作
这个是扩展里边的“ 网页万能复制 & ChatGPT AI写作助手”造成的,这个拓展增加了AI写作功能。关闭这个拓展就解决了。...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...

SQL注入篇-sqlmap的配置和使用
在之前的皮卡丘靶场第五期SQL注入的内容中我们谈到了sqlmap,但是由于很多朋友看不了解命令行格式,所以是纯手动获取数据库信息的 接下来我们就用sqlmap来进行皮卡丘靶场的sql注入学习,链接:https://wwhc.lanzoue.com/ifJY32ybh6vc…...