基于VS2017+ROS的ROSOnWindows开坑之旅

前面尝试了很多算法之后,得先找个能用的环境跑起来试试,于是决定尝试下ROS环境,但是我一直没有尝试Windows版也是因为这个原因,坑太多了,不过现在找到了微软IoT移植的ROSOnWindows,并且比较简单易用,因此打算尝试一下(注意,这个和ROS2 Windows版是不一样的

首先,安装ROS环境,这个坑是最少的,参考古月居55的教程

首先 安装VS2017 ,笔者装的Community版,因此这一步可以跳过了

然后 创建一个快捷方式 后面所使用的所有ROS相关命令行操作都是从这个入口开始,因为这个需要VS的环境,右键创建一个快捷方式,然后输入下面内容,并保存名字为ROS,具体版本根据自己安装的而定

C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64

然后赋予管理员权限(图片来自古月居)

安装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"

安装Git

choco install git -y

安装ROS(第二步有时候会在一个地方提示你删除20-default.list的地方卡住,但是请耐心等待,一定时间后会自动跳过,建议一直看着安装,以防报错)

choco source add -n=ros-win -s="https://roswin.azurewebsites.net/api/v2" --priority=1
choco upgrade ros-melodic-desktop_full -y

如果是桌面环境,建议加上“_full”,这样就基本能安装上大部分需要的库,如果缺少对应库就使用“install”命令,如果某些库安装失败,但是会显示为安装成功,可以用install --force命令强制重装,也可以安装chocolatey gui来使用图形化界面操作

古月居里面有简单的测试,这里不再赘述

正确的源文件

之所以会遇到这些问题,是因为这些源码都是ROS的源码(很可能你也会下载到这个源码),你需要下载微软Iot移植过的源码,如果直接使用ROS的源码,会因为需要包含Linux下的库而报错,可以自行移植,这里暂不介绍。下面会贴上move_base的链接和基础包turtlesim的链接,因为这个需要包含非常多的库,所以可以验证前面的安装是否有问题,而直接编译这两个库是不会报错的,如果遇到问题,基本上是前面说的安装的问题,重新去检查安装的库是否正确,比如去opt文件夹下搜索是否存在对应的文件等等方法

ros_tutorials包 https://github.com/ms-iot/ros_tutorials
move_base包 https://github.com/ms-iot/navigation

 Catkin编译

编译必须处于ROS环境下,因此只要执行和ROS相关的操作每次开启ROS命令行之后都需要setup一次这个setup是将当前文件夹设置为环境,如果后面使用编译好的包,里面也有对应的setup.bat,使用对应的包的时候切换到相应的目录下运行setup.bat

cd C:\opt\ros\melodic\x64
setup.bat

 如果使用默认环境时可以简化过程,即在前面ROS快捷方式的目标路径后面增加一段代码,也可以再复制一个快捷方式作为专门入口

增加 && c:\opt\ros\melodic\x64\setup.bat
即变为 C:\Windows\System32\cmd.exe /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64 && c:\opt\ros\melodic\x64\setup.bat

ROS的包用的是catkin_make编译,不使用CMake编译,编译准备方式略有不同,下面以 ros_tutorials 包为例展示编译过程

新建一个编译专用的文件夹,笔者命名为build_package_name(如build_ros_tutorials_win),这个名字可以随意命名,然后在里面创建 src 文件夹 ,这个名字是固定的,稍后在该文件夹还会产生两个文件夹,分别是产生编译中间文件的biuld和编译结果的devel,然后把 ros_tutorials 文件夹放到src文件夹下

然后cd进入build_tutorials_win文件夹,输入catkin_make,然后等待编译完成

在devel\lib\turtlesim下就是编译结果,其中exe就是核心的文件,其他的如pdb符号文件、ilk链接文件都不是必须的,lib\pkgconfig下的是pc文件,即CMakeLists里面pkg_check_modules检查的文件,所以核心包就是devel\lib下的exe文件和lib等文件,具体可以对照opt路径下的文件,这些是可以打包提取出去单独使用的(需要保持文件结构不变,如果有其他文件那也是需要的),储存方式参考C:\opt\ros\melodic\x64\lib下的储存方式

运行Package

 具体运行原理可以阅读古月居的博客或者著作《ROS机器人开发实践》,下面直接实践,首先需要开启一个核心ROS MASTER,即在cmd输入 roscore ,如果使用launch方式启动,则不需要单独启动roscore

roscore

然后开启一个新的cmd,作为一个新的结点,如果是简单的例程,比如自带的turtlesim,可以运行turtlesim_node,然后再开启一个新的cmd,作为一个新的结点,运行turtle_teleop_key,不分先后顺序,然后就可以用方向键操控乌龟了(配图使用了官方例程)

但如果一个包需要启动的节点较多,并且涉及到参数传递问题,则需要使用了launch文件来启动,launch文件可以放在任意位置,建议放在包下的launch文件夹里面,方便管理,这里编写上面这个例程对应的launch文件,复杂的编写方式可以阅读古月居的相关博客和阅读例程

pkg对应前面的文件夹名字,即包的名字,type对应可执行文件的名字,即节点,name名字可以自己取,其他参数暂不介绍,然后就可以用roslaunch命令启动了,这里只需在这个包下setup,不需要启动roscore

roslaunch turtlesim.launch

然后就可以达到上面的效果了

  然后还可以用 rqt_graph 命令查看节点之间通信情况

 

感谢以下Geeks:
ROS探索总结(五十五)—— Windows版ROS安装试用
http://www.guyuehome.com/2192
VS2017配置使用#indlude
https://blog.csdn.net/cry1994/article/details/79115394?tdsourcetag=s_pcqq_aiomsg
ROS on Windows Documentation staging repo
https://ms-iot.github.io/ROSOnWindows/GettingStarted/UsingROSonWindows.html

 

转载于:https://www.cnblogs.com/Pyrokine/p/10680484.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值