zoukankan      html  css  js  c++  java
  • 基于VS2017+ROS的ROSOnWindows开坑之旅

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

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

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

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

    C:WindowsSystem32cmd.exe /k "C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7ToolsVsDevCmd.bat" -arch=amd64 -host_arch=amd64

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

    安装Chocolatey(下面为一行命令)

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

    安装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
    osmelodicx64
    setup.bat

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

    增加 && c:opt
    osmelodicx64setup.bat
    即变为 C:WindowsSystem32cmd.exe /k "C:Program Files (x86)Microsoft Visual Studio2017CommunityCommon7ToolsVsDevCmd.bat" -arch=amd64 -host_arch=amd64 && c:opt
    osmelodicx64setup.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,然后等待编译完成

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

    运行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
  • 相关阅读:
    PHP+NGINX
    mysql添加索引
    SecureFX 乱码问题
    kali ssh服务连接问题,无法远程管理
    Nginx安装配置
    redhat mysql安装配置
    shell脚本-1
    Improved Semantic Representations From Tree-Structured Long Short-Term Memory Networks-paper
    Parsing with Compositional Vector Grammars--paper
    Reasoning With Neural Tensor Networks For Knowledge Base Completion-paper
  • 原文地址:https://www.cnblogs.com/Pyrokine/p/10680484.html
Copyright © 2011-2022 走看看