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上给出的安装流程链接如下:
几点说明:
首先需要为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版本,若有版本号打印出,说明安装成功。
安装前,先创建一个安装目录,顺便为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 -y --execution-timeout=0
其中就是你需要安装的ROS软件包的名称,其与所支持版本的ROS对应如下:
ROS version | |
---|---|
melodic | ros-melodic-desktop_full |
noetic | ros-noetic-desktop_full |
foxy | ros-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环境。
在文件资源管理器中随便点一个位置,然后右击选择新建->快捷方式,在对象位置中输入如下语句:
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,找到设置:
添加配置文件->新建空配置文件:
在命令行编辑框中输入如下内容:
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自动补全。后面继续探索。