如何优雅地在windows上玩ROS(一个紧致的解决方案)

news2024/11/30 8:31:37

如何优雅地在windows上玩ROS(一个紧致的解决方案) - 知乎

Excerpt

前言为了节省您的时间,本文适用的OS为win10,win11;适用的ROS1版本为melodic和noetic;适用于ROS2 foxy。如果你的目标OS和ROS不在上述的范围中,可以退出文章了,因为它无法解决你的问题。由于最近开学季,我在W…


前言

为了节省您的时间,本文适用的OS为win10,win11;适用的ROS1版本为melodic和noetic;适用于ROS2 foxy。如果你的目标OS和ROS不在上述的范围中,可以退出文章了,因为它无法解决你的问题。

由于最近开学季,我在Windows上购买了Dub的全景音效增益服务,但是平时搞ROS却要一直切换到Ubuntu系统,导致我无法充分享受更高品质的音乐,这着实有点暴殄天物。所以我想想,能不能将ROS搞到Windows上呢?网上一搜还真有,但是许多博客细节给的有点少,而且官网上给出的方案有一点点问题。我在次就作稍做补充,抛砖引玉吧。

一整套流程下来,感觉比在Ubuntu上装ROS简单很多,我觉得ROS in Window还是值得一做的。ROS wiki上给出的安装流程链接如下:

几点说明:

  • 我使用的OS是win11,win10应该也适用这套方案。
  • 请给你的C盘腾出至少10个G的空间。
  • 请在本教程开始前先下载VS2019,这很重要。
  • 下面的下载过程如果比较慢,可以尝试使用手机热点,我尝试的结果是用手机热点下载会快很多(当初在Ubuntu上下载ROS也出现了使用手机热点能加快速度的现象)。所以安装成功与你的网络状况有很大的关系。
  • 我知道有人想要装在D盘,但是我更改了安装路径参数,最终启动失败了,可能是有一些细节没有做。欢迎折腾党装在非系统盘。文章中所有软件包全都是装在C盘。

Step1: 安装包管理工具Chocolatey

首先需要为Windows安装一款包管理工具,类似于Ubuntu上的apt组件或者CentOS中的yum组件。但是由于Windows庞杂的系统环境,我们需要一个额外的工具才能像在Linux上装包一样大展手脚,对,这就是VS自带的命令行:x64 Native Tools Command Prompt for VS 2019,在命令行中搜索它,然后点击“以管理员身份运行”:

打开一个老旧的傻大黑,输入如下语句来安装Chocolatey:

@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

我的电脑因为一些不知名的原因,已经安装过了这个工具,如果安装过这个工具,会有如下的信息被打印出来:

然后输入choco -v来查看Chocolatey版本,若有版本号打印出,说明安装成功。


Step2: 安装ROS

安装前,先创建一个安装目录,顺便为Chocolatey加一下软件源:

> mkdir c:\opt\chocolatey
> set ChocolateyInstall=c:\opt\chocolatey
> choco source add -n=ros-win -s="https://aka.ms/ros/public" --priority=1

然后就是安装不同版本的ROS了:

choco upgrade <package> -y --execution-timeout=0

其中就是你需要安装的ROS软件包的名称,其与所支持版本的ROS对应如下:

ROS version
melodicros-melodic-desktop_full
noeticros-noetic-desktop_full
foxyros-foxy-desktop

由于我的机器人的上位机的ROS是melodic,所以我选择第一个,也就是输入如下语句:

choco upgrade ros-melodic-desktop_full -y --execution-timeout=0

我们宿舍wifi速度很慢,大概要下1个小时~~~。后来由于解包出错,我换了手机热点重下,差不多一倍速溶咖啡从泡完到喝完的时间,大概10分钟吧。

由此你可以看出来我们宿舍网有多LJ,就是那种,打L4D2卡到只能玩单人模式

下载完后会出现一个ROS下载的GUI窗口,不用去管,因为除了一个“cancel”按钮你也没什么按钮可以去click。这个过程主要是将下载的软件包解压。待窗口消失,没有红色的报错,安装结束。

为了以后方便访问到ROS提供的各个服务(也就是一个个exe啦),请将如下路径加入环境变量:

C:\opt\ros\melodic\x64\bin

如果你下载不是melodic,请适当调整上面的路径

下面来验证是否安装成功,还是刚刚那个以管理员权限打开的命令行(希望你没有关掉),输入如下语句:

> cd c:\opt\ros\melodic\x64
> setup.bat
> roscore

打印信息如下:

如此,说明ROS软件包安装成功了。


目前的启动方式只能在cmd中完成,而不能在powershell中完成,这着实让人有点难受。而且在每次启动前,都需要cd到指定文件夹中去启动setup.bat,这有点麻烦。为了更高的生产效率,本处提供两种方法来快速启动ROS环境。

方法一:为启动过ROS的cmd创建快捷方式

在文件资源管理器中随便点一个位置,然后右击选择新建->快捷方式,在对象位置中输入如下语句:

C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64&& set ChocolateyInstall=c:\opt\chocolatey&& c:\opt\ros\melodic\x64\setup.bat

点击下一页,快捷方式名称随便选一个自己喜欢的,我就填ROS.exe了。再随便改一个让自己露出笑容的图标,bingo:

我们先关闭所有打开的命令行窗口(如果目前还存在运行的roscore进程,那么后续运行会失败)我们先点击一个ROS.exe输入roscore,发现运行成功:

试试创建一只海龟,我们再打开一个ROS,输入rosrun turtlesim turtlesim_node:

创建成功。我们再试试运行一个键盘操控程序,再打开一个ROS,输入rosrun turtlesim turtle_teleop_key.exe:

请在运行上述键盘控制的ROS命令行位于窗口最上方再按下方向键

可以看到成功运行了。

但是上述的操作可以看到相当麻烦,为了运行一个node的控制程序,需要打开三个窗口,实在不优雅,而且傻大黑的命令行总与我的圆角半透明的果里果气的win11格格不入。为了同时解决这两个问题,我们下面尝试将上述环境下的命令行集成到Windows terminal中。所以可以先去Windows商城下载最新版的Windows terminal。

方法二:集成到Windows Terminal中

打开你的Windows Terminal,找到设置:

添加配置文件->新建空配置文件:

在命令行编辑框中输入如下内容:

C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64&& set ChocolateyInstall=c:\opt\chocolatey&& c:\opt\ros\melodic\x64\setup.bat

其余的选项你可以按照自己的喜好随便填,推荐设置一个你能摸到的启动目录。

外观什么的也可以调,我就改改字体,大小,背景图片,命令行高亮方案,光标样式:

别忘了点击右下角的保存,希望你没有复制粘贴错误,因为保存后,windows terminal会自动检测你输入语句的有效性。

保存后,点击标签栏的加号,你会发现我们新建的ROS环境以及存在了,点击它便可以创建一个ROS环境的命令行。

我们再试试之前的过程,也就是创建并控制一个海龟(记得把之前的ROS全关掉):

00:55

美中不足的是,目前的cmd无法通过Tab自动补全。后面继续探索。

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

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

相关文章

雅思写作 三小时浓缩学习顾家北 笔记总结(一)

目录 饥饿网翻译100个句子记录 There are some economically deprived communities in large cities. there is no clear link between grouping student by ability and their levels of attainment. young people without tertiary education qualification normally hav…

java八股文面试[数据库]——索引的基本原理、设计原则

索引的设计原则 索引覆盖是什么&#xff1a; 索引&#xff08;在MySQL中也叫做“键&#xff08;key&#xff09;”&#xff09; 是存储引擎用于快速找到记录的一种数据结构。这是索引的基本功能。 索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时&#xff0c;索引…

成集云 | 钉钉财务费用单同步至畅捷通 | 解决方案

源系统成集云目标系统 方案介绍 财务管理作为企业管理中重要的组成部分&#xff0c;在企业的发展和成长中扮演着重要角色&#xff0c;成集云以钉钉费用单OA审批与畅捷通TCloud系统为例&#xff0c;与钉钉连接器深度融合&#xff0c;通过数据处理和字段匹配实现了费用…

【LeetCode】290. 单词规律

这里写自定义目录标题 2023-8-30 09:34:23 290. 单词规律 2023-8-30 09:34:23 这道题目&#xff0c;我是根据 205. 同构字符串 的思路一样&#xff0c;都转化为另外一个第三方的字符串&#xff0c;在比较翻译过后的语句是不是一样的。 class Solution {public boolean wordP…

自然语言处理的多行业应用

在我们小时候&#xff0c;甚至是我们会走路或说话之前&#xff0c;就已经在察觉周围发出的声音了。我们倾听其他人发出的声响和声音。我们将声音组合成有意义的词语&#xff0c;例如“母亲”和“门”&#xff0c;并学习解读周围人的面部表情&#xff0c;以加深我们对词组的理解…

火爆全网!HubSpot CRM全面集成,引爆营销业绩!

HubSpot CRM是什么&#xff1f;它是一款强大的客户关系管理工具&#xff0c;专为企业优化销售、服务和市场营销流程而设计。它在B2B行业中扮演着极为重要的角色&#xff0c;让我来告诉你为什么吧&#xff01; HubSpot CRM不仅拥有用户友好的界面和强大的功能&#xff0c;还能够…

Dimensions网站——一个链接研究知识系统

Dimensions网站——一个链接研究知识系统 一、Dimensions网站简介 Dimensions 是一个链接的研究知识系统&#xff0c;它重新构想了发现和研究的获取。Dimensions 由 Digital Science 与全球 100 多个领先研究组织合作开发&#xff0c;汇集了资助、出版物、引文、替代指标、临…

城市内涝监测预警系统:构筑智慧城市的内涝防控网络

治理城市内涝事关人民群众生命财产安全&#xff0c;既是重大民生工程&#xff0c;又是重大发展工程。近年来&#xff0c;各地区各部门大力推进排水防涝设施建设&#xff0c;城市内涝治理取得积极进展&#xff0c;但仍存在自然调蓄空间不足、排水设施建设滞后、应急管理能力不强…

CTF学习资源

文章目录 一、buuctf靶场1、MD52、一眼解密3、Url编码4、回旋踢5、摩斯6、Password7、变异凯撒8、Quoted-printable9、Rabbit10、篱笆墙的影子11、RSA12、丢失的MD5 二、ctf题型1、PWN&#xff0c;Reverse1)Reverse2)pwn 2、Crypto1)古典密码学2)现代密码学 3、web4、Misc1)Rec…

下岗吧,Excel

ChatGPT的诞生使Excel公式变得过时。通过使用 ChatGPT 的代码解释器你可以做到&#xff1a; 分析数据创建图表 这就像用自然语言与电子表格交谈一样。我将向大家展示如何使用 ChatGPT 执行此操作并将结果导出为Excel格式&#xff1a; 作为示例&#xff0c;我将分析并创建美国…

夸克扫描王App用上了AI大模型 让扫描更清楚、提取文字更方便

对上班族来说&#xff0c;找到一个好用的工具类APP&#xff0c;绝对可以提升工作效率。比如最常见的扫描文件&#xff0c;公司的扫描仪虽然好用但是很难进行深度编辑且不能外出使用&#xff1b;很多手机App也有扫描功能&#xff0c;但技术能力总是差一点&#xff0c;当面对复杂…

Android系统-线程-java线程

引言 Android的框架应用是java环境的。java天生就是多线程。所以对java线程的理解尤为重要。 概念 线程状态转换图 NEW 初始状态 RUNNABLE 运行状态 BLOCKED 阻塞状态 WAITING 等待状态 TIME_WAITING 超时等待状态 TERMINATED 终止状态 注意&#xff1a;调用obj.wait(…

AI大模型的使用-用LangChain链式调用简化多步提示语

众所周知&#xff0c;openAI的prompt对英文比较友好&#xff0c;也就是英文提示它的结果会更准确&#xff0c;假如我们不会英文&#xff0c;我们把中文问题给到OpenAI&#xff0c;然后让它翻译成英文&#xff0c;并把翻译后的英文给到OpenAI&#xff0c;让它帮忙给出解答问题&a…

【升职加薪秘籍】我在服务监控方面的实践(9)-报警设计

大家好,我是蓝胖子&#xff0c;关于性能分析的视频和文章我也大大小小出了有一二十篇了&#xff0c;算是已经有了一个系列&#xff0c;之前的代码已经上传到github.com/HobbyBear/performance-analyze&#xff0c; 接下来这段时间我将在之前内容的基础上&#xff0c;结合自己在…

干了外包3个月,技术退步明显...

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

你觉得 Android 还有必要继续吗?

前言 这些年&#xff0c;总是听到有人说Android 开发岗位要凉了&#xff0c;不好做了。坦白说&#xff0c;市场倾向理性&#xff0c;竞争变强是很正常的事。但你发现总有些人&#xff0c;他们拿的 Offer 薪资是更高的&#xff0c;能达到年薪五六十万&#xff0c;甚至年薪百万。…

贪心算法总结篇

文章转自代码随想录 贪心算法总结篇 我刚刚开始讲解贪心系列的时候就说了&#xff0c;贪心系列并不打算严格的从简单到困难这么个顺序来讲解。 因为贪心的简单题可能往往过于简单甚至感觉不到贪心&#xff0c;如果我连续几天讲解简单的贪心&#xff0c;估计录友们一定会不耐…

房地产小程序制作要点:让你轻松搭建高效营销工具

近年来&#xff0c;随着房地产市场的不断发展和壮大&#xff0c;购房者对于房产信息的需求也日益增长。为了满足这一需求&#xff0c;许多开发商推出了看房预约小程序&#xff0c;以便让购房者更加方便快捷地了解房产信息并进行预约。然而&#xff0c;如何优化购房者体验&#…

论文阅读 FCOS: Fully Convolutional One-Stage Object Detection

文章目录 FCOS: Fully Convolutional One-Stage Object DetectionAbstract1. Introduction2. Related Work3. Our Approach3.1. Fully Convolutional One-Stage Object Detector3.2. Multi-level Prediction with FPN for FCOS3.3. Center-ness for FCOS 4. Experiments4.1. Ab…

重磅!TikTok将于8月底关闭半闭环 切断外链意在电商业务发展?

自2019年开始&#xff0c;TikTok电商业务逐渐走进人们的视线&#xff0c;并引起了市场的广泛关注。作为一家短视频平台&#xff0c;TikTok能够依靠其强大的用户基数与精准的推广策略&#xff0c;将流量成功转化为商业价值。截至目前&#xff0c;TikTok电商业务已经初步形成完整…