VMware+Ubuntu+VScode+ROS一站式教学+常见问题解决

news2025/4/4 23:42:58

目录

一.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有jazzyRolling,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-tools
 
sudo apt-get install open-vm-tools-desktop
 
sudo 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

    (2)第二种方法

    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插件一般是不会有问题的。


    如果还有问题可以留言,有时间会进行更新常见问题解决。

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

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

    相关文章

    音视频(一)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"关键词&#xff0c;但限制较弱&#xff0c;容易绕过 ?csystem("ls&…

    电子电气架构 --- 域控制器和EE架构关系

    我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

    多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测

    多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSTM冠豪猪算法优化长短期…

    使用PyTorch实现LeNet-5并在Fashion-MNIST数据集上训练

    本文将展示如何使用PyTorch实现经典的LeNet-5卷积神经网络&#xff0c;并在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的区别&#xff1f; 1.2 let 和const的区别 1.3 关于块级作用域 二、箭头函数 2.1箭头函数的特点 2.2 箭头函数的特殊性 this的问题 arguments参数集合 2.3函数传递参数时的默认值 2.4 箭头函数使用的场景有哪…

    【强化学习】近端策略优化算法(PPO)的理解

    本篇博客参考自上海大学刘树林老师的课程。B站课程链接&#xff1a;https://www.bilibili.com/video/BV17t4geUEvQ/?spm_id_from333.337.search-card.all.click&vd_source74af336a587568c23a499122c8ffbbee 文章目录 传统策略梯度训练面临的问题其他方法的改进TRPO算法的贡…

    5.好事多磨 -- TCP网络连接Ⅱ

    前言 第4章节通过回声服务示例讲解了TCP服务器端/客户端的实现方法。但这仅是从编程角度的学习&#xff0c;我们尚未详细讨论TCP的工作原理。因此&#xff0c;将详细讲解TCP中必要的理论知识&#xff0c;还将给出第4章节客户端问题的解决方案。 一、回声客户端完美实现 第4章…

    【零基础入门unity游戏开发——2D篇】SpriteMask精灵遮罩组件

    考虑到每个人基础可能不一样&#xff0c;且并不是所有人都有同时做2D、3D开发的需求&#xff0c;所以我把 【零基础入门unity游戏开发】 分为成了C#篇、unity通用篇、unity3D篇、unity2D篇。 【C#篇】&#xff1a;主要讲解C#的基础语法&#xff0c;包括变量、数据类型、运算符、…

    PyTorch中卷积层torch.nn.Conv2d

    在 PyTorch 中&#xff0c;卷积层主要由 torch.nn.Conv1d、torch.nn.Conv2d 和 torch.nn.Conv3d 实现&#xff0c;分别对应一维、二维和三维卷积操作。以下是详细说明&#xff1a; 1. 二维卷积 (Conv2d) - 最常用 import torch.nn as nn# 基本参数 conv nn.Conv2d(in_channe…

    GO语言学习(16)Gin后端框架

    目录 ☀️前言 1.什么是前端&#xff1f;什么是后端&#xff1f;&#x1f300; 2.Gin框架介绍 &#x1f337; 3.Gin框架的基本使用 -Hello&#xff0c;World例子&#x1f337; &#x1f33f;入门示例 - Hello&#xff0c;World &#x1f4bb;补充&#xff08;一些常用的网…

    RAG 在 AI 助手、法律分析、医学 NLP 领域的实战案例

    RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;是一种结合信息检索和生成模型的技术&#xff0c;广泛应用于 AI 助手、法律分析、医学 NLP 等领域。 以下是具体的实战案例和技术实现。 1. AI 助手中的 RAG 应用 案例 1&#xff1a;企业…

    大模型-提示词(Prompt)技巧

    1、什么是提示词&#xff1f; 提示词&#xff08;Prompt&#xff09;是用户发送给大语言模型的问题、指令或请求&#xff0c;用来明确地告诉模型用户想要解决的问题或完成的任务&#xff0c;是大语言模型理解用户需求并据此生成相关、准确回答或内容的基础。对于大语言模型来说…

    RNN模型与NLP应用——(9/9)Self-Attention(自注意力机制)

    声明&#xff1a; 本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】&#xff0c;结合自身的理解所作&#xff0c;旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。 材料来源&#xff1a;【Shusenwang】的视频课程【RNN模型及NLP应用…

    深度剖析:U盘打不开难题与应对之策

    一、引言 在数字化办公与数据存储的浪潮中&#xff0c;U盘凭借其小巧便携、大容量存储等优势&#xff0c;成为了人们日常数据传输与备份的得力助手。然而&#xff0c;当我们急需调用U盘中的关键数据时&#xff0c;却常常遭遇U盘打不开的棘手状况。U盘打不开不仅会影响工作进度&…

    uni-app 框架 调用蓝牙,获取 iBeacon 定位信标的数据,实现室内定位场景

    背景&#xff1a;最近需要对接了一个 叫 iBeacon 定位信标 硬件设备&#xff0c;这个设备主要的作用是&#xff0c;在信号不好的地方&#xff0c;或者室内实现定位&#xff0c;准确的找到某个东西。就比如 地下停车场&#xff0c;商城里&#xff0c;我们想知道这个停车场的某个…