VMware+Ubuntu+VScode+ROS一站式教学+常见问题解决
目录
一.VMware的安装
二.Ubuntu下载
1.前言
2.Ubuntu版本选择
三.VMware中Ubuntu的安装
四.Ubuntu系统基本设置
1.中文更改
2.中文输入法更改
3. 辅助工具 vmware tools
五.VScode的安装+ros基本插件
1.安装
2.ros辅助插件下载
六.ROS安装
1.安装ros
2.配置ROS环境变量
3.ROS经典案例乌龟教程
(1)启动ros
(2)启动图形端
(3)启动控制端
七.VScode集成ros
1.插件准备
2.项目创建
(1)工作空间创建
(2)环境配置
1.编译
2.前置准备
3.运行
(1)官方版运行方法
(2)vscode内部命令
(3)最终结果
八.常见问题解决
1.未启动ros就运行
2.ros路径报错
一.VMware的安装
这个比较简单去官网下载对应版本的正版VMware Workstation,然后去百度对应版本的密钥激活即可,如果有不会的可以去搜索其他博主的博客看看,这里不再赘述。
二.Ubuntu下载
1.前言
首先先确定你要下载ROS1还是ROS2,然后确定下载哪个版本,毕竟ROS2有jazzy,Rolling,Humble 等等版本,ROS1目前还在支持的版本就是Noetic(推荐使用)。
我来解释下为什么先选择ros版本,因为Ubuntu版本和ros版本息息相关,简单来说就是有一个版本对应关系,比如目前最新的Ubuntu24.04支持ROS2的jazzy等版本,而Ubuntu20.04支持ROS1的Noetic还有ROS2的foxy,galactic,rolling,noetic等版本,所以先确定版本是很有必要的。版本不对应可能会出现些许奇奇怪怪的问题。
2.Ubuntu版本选择
这里我以ROS1的noetic为例
(1)去Ubuntu官网 20.04版本的Ubuntu 到达后如下图所示,

(2)下载完后是一个iso格式的映像文件,也是待会在虚拟机中安装Ubuntu所要的iso文件。

三.VMware中Ubuntu的安装
我的是VMware16PRO
按下图的步骤来即可,点击创建新的虚拟机

选择推荐,(如果知道自定义选项具体干什么的也可以选择第二个自己调整)


这个自己填写即可,密码尽量别太难记,别忘了就行。

这个安装路径尽量别在C盘,改成其他盘,如果C盘很大请忽略。

分配的大小看自己配置尽量多分配点

选择自定义硬件

这东西不同配置都不一样,根据配置来填,尽可能分配多一点,不然会很卡。

然后出现以下几个阶段,等待即可,可能会比较漫长。


中间会出现一些登录等设置,点右上角skip即可(桌面上有两个是我测试用的,初次安装没有)

四.Ubuntu系统基本设置
1.中文更改
按图示步骤



中间出现选项就选install

找到简体中文,点击apply


然后回到



然后就是中文了

2.中文输入法更改



然后点击添加即可。
作者:在Ubuntu24.04中默认有中文,无需下载。
3. 辅助工具 vmware tools
这个可以让虚拟机与外界数据交换,就是可以自由复制粘贴(指的是虚拟机内与自己的电脑之间),这个版本的Ubuntu自带 vmware tools。如果是没有自带的Ubuntu版本,请自行通过命令下载
sudo apt-get autoremove open-vm-toolssudo apt-get install open-vm-tools-desktopsudo reboot // 重启电脑
五.VScode的安装+ros基本插件
1.安装
找到应用商店并打开,也可浏览器搜VScode官网下载。



2.ros辅助插件下载
中文不会换的看我的另一篇博客 vscode汉化
一些辅助插件自行下载

六.ROS安装
1.安装ros
这里照顾新手,则使用鱼香ROS大佬部署的工具安装,新手也能轻松安装。
打开一个新终端输入(注意liunx粘贴是CTRL+SHIFT+V,复制是CTRL+SHIFT+C),回车
wget http://fishros.com/install -O fishros && . fishros
输入密码后出现下面的界面

选择第一个,即输入1


然后再输入1,再输入2

然后等待更换源
选择你要安装的版本,这里Ubuntu的版本不同,ROS的版本也不同。

推荐选noetic,然后选择桌面版

然后等待即可。出现下面即为安装成功!!!

2.配置ROS环境变量
再次打开新终端,输入
wget http://fishros.com/install -O fishros && . fishros

选择4,等待环境配置完毕。

该工具还有其他功能,可自行探索。
3.ROS经典案例乌龟教程
(1)启动ros
roscore

(2)启动图形端
打开一个新终端(ctrl+shift+t),输入
rosrun turtlesim turtlesim_node
然后小乌龟就出来了

(3)启动控制端
再打开一个新终端,输入
rosrun turtlesim turtle_teleop_key
焦点必须在该终端内,按小键盘的上下左右即可控制乌龟(乌龟样貌随机),碰到边缘会有小彩蛋。


七.VScode集成ros
1.插件准备
前面说过了,这里再提一下

2.项目创建
(1)工作空间创建
新建一个任意名称的父级文件夹,里面包含一个名为src(必须是src)。

然后把父级文件夹在终端中打开,输入
catkin_make
等待即可

(2)环境配置
在vscode内打开。在刚才的终端输入
code .
即可快捷打开VS code,也可先打开vscode,再打开文件夹。
(2)创建功能包
右键src文件夹,点击红框所示

上方框内会让你输入功能包名,任意即可。

然后会让你选择依赖,常用的就是roscpp rospy std_msgs,这里使用cpp演示,所以我输入roscpp。

会出现下图的目录结构

右键.vscode文件夹,新建一个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"
}
]
}
在src文件夹下新建一个helloworld.cpp文件用来测试,内容为
/*
控制台输出 HelloVSCode !!!
*/
#include "ros/ros.h"
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
//执行节点初始化
ros::init(argc,argv,"HelloVSCode");
//输出日志
ROS_INFO("Hello VSCode!!! ");
return 0;
}
在CMakeLists.txt中加入
//137 行
add_executable(helloworld
src/helloworld.cpp
)
//152 行
target_link_libraries(helloworld
${catkin_LIBRARIES}
)
(3)编译和运行
1.编译
ctrl+shift+b进行编译,这种方法会将可执行文件生成在devel。

2.前置准备
运行程序我们需要打开一个ROS MASTER。
(1)第一种方法
打开一个新终端输入roscore即可,如下:
roscore
vscode里面可以执行直接执行指令,代替了第一种方法,不需要来会反复切换终端,减少了麻烦。
执行快捷键ctrl + shfit + p输入ROS:Start,即可打开ROS MASTER,如果想要关闭,执行ROS:Stop即可。
3.运行
(1)官方版运行方法
打开一个新终端输入rosrun 包名 节点名称即可,如下:
在这里我的包名helloworld,节点名称helloworld
rosrun helloworld helloworld
(2)vscode内部命令
执行快捷键ctrl + shfit + p输入ROS:Run a Ros executable,代替了在终端调用rosrun helloworld helloworld指令的操作,依次输入你创建的功能包的名称以及节点名称(即编译成功后二进制文件的名称)
参考至https://blog.csdn.net/g944468183/article/details/123759886?spm=1001.2014.3001.5506



然后回车等待即可。
(3)最终结果

到此如果没有问题那么ros安装完成。
八.常见问题解决
1.未启动ros就运行
报错代码
[ERROR] [1743315426.567311745]: [registerPublisher] Failed to contact master at [localhost:11311]. Retrying...
解决办法
在终端输入roscore启动ros
roscore
2.ros路径报错
问题描述:找不到ros/ros.h头文件
可能的原因1:你安装的是ros2,ros2的架构和ros1不同,ros2是不存在ros.h文件的,请下载ros1再试。
可能的原因2:路径出错

如果安装了ros插件一般是不会有问题的。
如果还有问题可以留言,有时间会进行更新常见问题解决。
相关文章:
VMware+Ubuntu+VScode+ROS一站式教学+常见问题解决
目录 一.VMware的安装 二.Ubuntu下载 1.前言 2.Ubuntu版本选择 三.VMware中Ubuntu的安装 四.Ubuntu系统基本设置 1.中文更改 2.中文输入法更改 3. 辅助工具 vmware tools 五.VScode的安装ros基本插件 1.安装 2.ros辅助插件下载 六.ROS安装 1.安装ros 2.配置ROS…...
音视频(一)ZLMediaKit搭建部署
前言 一个基于C11的高性能运营级流媒体服务框架 全协议支持H264/H265/AAC/G711/OPUS/MP3,部分支持VP8/VP9/AV1/JPEG/MP3/H266/ADPCM/SVAC/G722/G723/G729 1:环境 ubuntu22.* ZLMediaKit downlaod:https://github.com/ZLMediaKit/ZLMediaKit or https://g…...
leetcode25.k个一组翻转链表
思路源自 【力扣hot100】【LeetCode 25】k个一组翻转链表|虚拟节点的应用 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(in…...
配置 UOS/deepin 系统远程桌面,实现多台电脑协同办公
由于开发工作的需要,我的办公桌上目前有多台电脑。一台是 i7 配置的电脑,运行 UOS V20 系统,作为主力办公电脑,负责处理企业微信、OA 等任务,并偶尔进行代码编译和验证软件在 UOS V20 系统下的兼容性;另一台…...
配置Next.js环境 使用vscode
配置 Next.js 的开发环境其实非常简单,下面是一个从零开始的完整步骤,适用于 Windows、macOS 和 Linux: ✅ 一、准备工作 确保你已经安装了以下软件: 1. Node.js(推荐 LTS 版本) 官网:https:/…...
Vite相关知识点
一、自动导入vue vue-router pinia 1、安装unplugin-auto-import npm install unplugin-auto-import -D 2、引入 import AutoImport from unplugin-auto-import/vite; 3、配置vite.config.ts plugins: [ vue(), vueDevTools(), AutoImport({ include: [ /…...
RCE复现
1.过滤flag <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);代码审计过滤了"flag"关键词,但限制较弱,容易绕过 ?csystem("ls&…...
电子电气架构 --- 域控制器和EE架构关系
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测
多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSTM冠豪猪算法优化长短期…...
使用PyTorch实现LeNet-5并在Fashion-MNIST数据集上训练
本文将展示如何使用PyTorch实现经典的LeNet-5卷积神经网络,并在Fashion-MNIST数据集上进行训练和评估。代码包含完整的网络定义、数据加载、训练流程及结果可视化。 1. 导入依赖库 import torch from torch import nn from d2l import torch as d2l 2. 定义LeNet…...
19_20 js es6
目录 ES6 一、let 和 const关键字 1.1 var 和 let const的区别? 1.2 let 和const的区别 1.3 关于块级作用域 二、箭头函数 2.1箭头函数的特点 2.2 箭头函数的特殊性 this的问题 arguments参数集合 2.3函数传递参数时的默认值 2.4 箭头函数使用的场景有哪…...
自动化释放linux服务器内存脚本
脚本说明 使用Linux的Cron定时任务结合Shell脚本来实现自动化的内存释放。 脚本用到sync系统命令 sync的作用:sync 是一个 Linux 系统命令,用于将文件系统缓存中的数据强制写入磁盘。 在你执行reboot、poweroff、shutdown命令时,系统会默认执…...
【强化学习】近端策略优化算法(PPO)的理解
本篇博客参考自上海大学刘树林老师的课程。B站课程链接:https://www.bilibili.com/video/BV17t4geUEvQ/?spm_id_from333.337.search-card.all.click&vd_source74af336a587568c23a499122c8ffbbee 文章目录 传统策略梯度训练面临的问题其他方法的改进TRPO算法的贡…...
Java基础 3.30
1.结合练习 /*随机生成10个整数(1-100的范围)保存到数组,并倒序打印以及求平均值、求最大值和最大值的下标,并查找里面是否有8 */ public class ArrayHomework02 {public static void main(String[] args) {int arr[] new int[10];for (int i 0; i &l…...
5.好事多磨 -- TCP网络连接Ⅱ
前言 第4章节通过回声服务示例讲解了TCP服务器端/客户端的实现方法。但这仅是从编程角度的学习,我们尚未详细讨论TCP的工作原理。因此,将详细讲解TCP中必要的理论知识,还将给出第4章节客户端问题的解决方案。 一、回声客户端完美实现 第4章…...
【零基础入门unity游戏开发——2D篇】SpriteMask精灵遮罩组件
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、…...
Java 枚举类 Key-Value 映射的几种实现方式及最佳实践
Java 枚举类 Key-Value 映射的几种实现方式及最佳实践 前言 在 Java 开发中,枚举(Enum)是一种特殊的类,它能够定义一组固定的常量。在实际应用中,我们经常需要为枚举常量添加额外的属性,并实现 key-value 的映射关系。本文将详细…...
JVM 每个区域分别存储什么数据?
JVM(Java Virtual Machine)的运行时数据区(Runtime Data Areas)被划分为几个不同的区域,每个区域都有其特定的用途和存储的数据类型。以下是 JVM 各个区域存储数据的详细说明: 1. 程序计数器 (Program Cou…...
chromem-go + ollama + bge-m3 进行文档向量嵌入和查询
Ollama 安装 https://ollama.com/download Ollama 运行嵌入模型 bge-m3:latest ollama run bge-m3:latestchromem-go 文档嵌入和查询 package mainimport ("context""fmt""runtime""github.com/philippgille/chromem-go" )func ma…...
PyTorch中卷积层torch.nn.Conv2d
在 PyTorch 中,卷积层主要由 torch.nn.Conv1d、torch.nn.Conv2d 和 torch.nn.Conv3d 实现,分别对应一维、二维和三维卷积操作。以下是详细说明: 1. 二维卷积 (Conv2d) - 最常用 import torch.nn as nn# 基本参数 conv nn.Conv2d(in_channe…...
GO语言学习(16)Gin后端框架
目录 ☀️前言 1.什么是前端?什么是后端?🌀 2.Gin框架介绍 🌷 3.Gin框架的基本使用 -Hello,World例子🌷 🌿入门示例 - Hello,World 💻补充(一些常用的网…...
RAG 在 AI 助手、法律分析、医学 NLP 领域的实战案例
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索和生成模型的技术,广泛应用于 AI 助手、法律分析、医学 NLP 等领域。 以下是具体的实战案例和技术实现。 1. AI 助手中的 RAG 应用 案例 1:企业…...
大模型-提示词(Prompt)技巧
1、什么是提示词? 提示词(Prompt)是用户发送给大语言模型的问题、指令或请求,用来明确地告诉模型用户想要解决的问题或完成的任务,是大语言模型理解用户需求并据此生成相关、准确回答或内容的基础。对于大语言模型来说…...
RNN模型与NLP应用——(9/9)Self-Attention(自注意力机制)
声明: 本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】,结合自身的理解所作,旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。 材料来源:【Shusenwang】的视频课程【RNN模型及NLP应用…...
硬件与软件的边界-从单片机到linux的问答详解
硬件与软件的边界——从单片机到 Linux 设备驱动的问答详解 在嵌入式开发和操作系统领域,经常会有人问: “如果一个设备里没有任何代码,硬件是不是依然会工作?例如,数据收发、寄存器数据存储、甚至中断触发ÿ…...
5.实现 Channel 类,Reactor 模式初步形成
目录 由联合体epoll_data引出类Channel 结构体epoll_data_t Channel类 Channel类的使用 Epoll类的改变 由联合体epoll_data引出类Channel 在之前使用epoll时,有使用到一个结构体epoll_event // 这是联合体,多个变量共用同一块内存 typedef union…...
深度剖析:U盘打不开难题与应对之策
一、引言 在数字化办公与数据存储的浪潮中,U盘凭借其小巧便携、大容量存储等优势,成为了人们日常数据传输与备份的得力助手。然而,当我们急需调用U盘中的关键数据时,却常常遭遇U盘打不开的棘手状况。U盘打不开不仅会影响工作进度&…...
洛谷题单3-P5721 【深基4.例6】数字直角三角形-python-流程图重构
题目描述 给出 n n n,请输出一个直角边长度是 n n n 的数字直角三角形。所有数字都是 2 2 2 位组成的,如果没有 2 2 2 位则加上前导 0 0 0。 输入格式 输入一个正整数 n n n。 输出格式 输出如题目要求的数字直角三角形。 输入输出样例 输入…...
一起学大语言模型-通过ollama搭建本地大语言模型服务
文章目录 Ollama的github地址链接安装下载需求配置更改安装目录安装更改下载的模型存储位置Ollama一些目录说明日志目录 运行一个模型测试下测试下更改服务监听地址和端口号 Ollama的github地址链接 https://github.com/ollama/ollama 安装 下载 mac安装包下载地址࿱…...
AllData数据中台商业版发布版本1.2.9相关白皮书发布
文章末尾网盘链接获取白皮书,本资源通过星球社群不定时更新,加入星球后,请联系市场同事获取相关知识星球社群信息。 一、总体介绍 主要介绍了AllData商业版产品的整体情况,包括产品定位、核心优势、灵活性和扩展性等,已有150个客户使用,社区发展良好。同时,详细解析了…...
