ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)

1829
5
2020年7月27日 09时43分

前言

在ROS librviz 人机交互软件开发系列教程中我们实现了Ubuntu端的界面开发。但是很多小伙伴问到能不能在Windows上进行开发,当时回复是不能,主要就是库的依赖问题难解决。但是我想了想ROS是有windows版本的,并且也能运行rviz之类的,既然rviz都可以在windows上运行,就说明是有库可以支持的。于是本人又进行了一番探索与总结.
本篇教程主要是介绍ROS Windows开发环境的搭建,ROS Windows基本的使用。以及在Windows中编译ROS Qt功能包。

实现效果

1. Windows运行rviz

ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图

2. ROS Windows QT 功能包编译并运行

ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(1)

3. ROS Windows Qt 功能包release版本

此release版本是本人将动态库进行打包,可以在未安装ROS的win10上直接运行(仅在一台电脑测试,可能会缺少其他动态库),下载后双击压缩包内的ros_qt_demo.exe即可运行。
经测试可运行在未安装ROS的Win10上并连接Ubuntu的Master主节点,并发布Chatter话题:
ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(2)
左:Ubuntu 右:win10
release地址:github

目录

一,安装windows版本的ROS
1,安装Visual Studio
2,安装ROS
3,创建ROS快捷终端
4,测试安装
二,ROS Windows使用
1,初始化ROS工作空间
2,创建ROS功能包
3,编译ROS功能包
4,添加ROS工作空间到环境变量
5,安装ROS软件包
三,ROS Qt功能包模板的编译与使用

一,安装windows版本的ROS

参考资料:ROS wiki
目标Windows ROS 支持kinetic,melodic,noetic,这里主要演示melodic版本的,其他版本大同小异,可参考wiki教程,确保c盘有10g以上的安装空间。
安装时对网络环境要求比较高,这就需要小伙伴们自己去寻找一个稳定的网络环境

1,安装Visual Studio

需要利用vs编译ROS代码,所以需要安装Visual Studio 2019
==这里注意要使用vs2019,ROS wiki给的教程是使用2019,由于我安装的是vs2015导致后面安装出现了一些问题==
注意安装以下组件:

  • “使用c++的桌面开发”。
  • “通用Windows平台开发”。
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(3)
    这里安装过程约1-2小时,请耐心等待

2,安装ROS

  • 在“开始”菜单中,找到“ VS 2019 x64本机工具命令提示符”项。
  • 右键单击,选择“更多”,然后选择“以管理员身份运行”

ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(4)

  • 复制以下命令行:
    @"%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:
    如上所述,重新打开Visual Studio命令窗口。
    即使您已将其安装为应用程序,也请使用此处的命令安装Git。

      choco upgrade git -y
    
  • 确认git是否安装成功
    git --version
  • 安装ROS
    • 执行如下命令行,安装ROS
      mkdir c:\opt\chocolatey
      set ChocolateyInstall=c:\opt\chocolatey
      choco source add -n=ros-win -s="https://aka.ms/ros/public" --priority=1
      choco upgrade ros-melodic-desktop_full -y --execution-timeout=0
      

      但是我执行最后一步遇到了错误(Vcpkg is not installed):
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(5)
      我这里是因为使用的不是vs2019版本(2015),所以解决方法是只能去安装vs2019才能正常的去编译。
      这里我已经正常安装:
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(6)
      由于网络原因可能安装缓慢或者异常失败,这里建议使用稳定的网络环境,错误后并多次尝试

      3,创建ROS快捷终端

      为避免每次打开终端都需要加载ROS环境变量,这里我们可以为ROS创建一个终端

  • 右键单击Windows资源管理器文件夹,选择“新建”>“快捷方式”
  • 在路径选项中粘贴以下,注意Visual Studio2019 VsDevCmd.bat的路径和ROS版本需要根据自己实际路径进行更改:
      C:\Windows\System32\cmd.exe /k "D:\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 Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(7)

  • 将快捷方式命名为“ ROS”
  • 将该快捷方式设置为管理员
    • 右键单击快捷方式,然后选择“属性”。
    • 选择快捷方式选项卡(如果尚未选择)。
    • 按下[高级]按钮
    • 选中用管理员身份运行,并确认
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(8)

      4,测试安装

  • 双击打开刚刚创建的ROS终端,运行roscore,并允许访问:
    rocore
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(9)
  • 再次打开新的终端运行rviz:
    rosrun rviz rviz
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(10)
    并且其他命令经测试都是完美支持的:

    rostopic list 
    rostopic echo
    

    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(11)
    到这里ROS Windows安装已经完成

    二,ROS Windows使用

    1,初始化ROS工作空间

    这里我在E盘创建工作空间catkin_ws/src
    使用e:命令跳转到e盘
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(12)
    进入src目录并初始化工作空间
    cd catkin_ws\src
    catkin_init_workspace

    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(13)

    2,创建ROS功能包

    依旧在src目录下使用catkin_create_pkg进行创建,后跟依赖
    catkin_create_pkg ros_test roscpp rviz
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(14)
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(15)

    3,编译ROS功能包

    使用catkin_make命令在catkin_ws目录下进行编译:
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(16)

    4,添加ROS工作空间到环境变量

    此时如果使用rosrun 运行我们创建的ros_test功能包是找不到的,因为没有添加到环境变量中:
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(17)
    还记得安装ROS时配置的那个终端的快捷方式的终端吗,
    我们在哪里添加了c:\opt\melodic\setup.bat的环境变量,所以我猜测在那里添加我们自己的工作空间的setup.bat应该是可以的:

    C:\Windows\System32\cmd.exe /k "D:\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&&E:\catkin_ws\devel\setup.bat
    

    在最后使用添加E:\catkin_ws\devel\setup.bat,注意使用&&隔开
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(18)
    此时再重新打开终端,运行我们的功能包,就提示可以找到包了:
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(19)
    这里提示的是找不到executable是因为我们还没有创建ros_test功能,但是不再提示找不到ros_test功能包,证明我们已经成功将工作空间添加到环境变量中

    5,安装ROS软件包

    1. 二进制安装

    确定是否存在ROS软件包的二进制发行版。
    使用ROS Wiki ,找到二进制发行版名称,然后尝试使用进行安装Chocolatey。
    如果成功,那就万事俱备了!
    choco install ros-melodic-<package_name>

    2. 源码编译安装

    如果二进制安装失败就只能使用源码编译安装了

    三,ROS Qt功能包模板的编译与使用

    1. 编译安装依赖

    这里本人主要就是进行ROS Qt可视化程序开发,在前面一系列Ubuntu ROS Qt开发教程中提到如果想要创建Qt Pkg需要使用catkin_create_qt_pkg进行创建功能包,这个命令会创建一个qt的模板功能包,但是想要使用这个命令需要安装qt_create和qt_build:
    这里使用Choco命令进行二进制安装:
    choco install ros-melodic-qt-create
    显然这个包目前不存在Windows二进制版本:
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(20)

    2. 直接编译功能包

    因此我们可以直接使用Ubuntu创建的Qt Pkg模板进行开发,拿过来是可以直接进行编译,不做任何更改。或者可以使用我这个ros_qt_demo

    2.1 下载功能包

    下载此包或者克隆本包到自己的工作空间src目录下
    如果需要更改功能包的名称:

    • 使用文本编辑器的查找与替换功能替换cmakelist.txtpackage.xml中的ros_qt_demo为自己想要的名称
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(21)
    • 更改include目录下的文件夹名称为自己的功能包名称
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(22)
    • 更改src目录下三个cpp文件的的包含目录
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(23)
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(24)

      2.2 编译

      回到功能包根目录,直接执行catkin_make
      可以发现ROS下的功能包不用任何更改即可编译成功:
      ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(25)

      2.3 运行

  • 首先打开个终端运行roscore,再运行当前功能包:
    rosrun ros_qt_demo ros_qt_demo
  • 同意权限,运行成功:
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(26)
  • 可以发现和Ubuntu下的基本相同,测试下功能是否正常
    由于我们在本机运行roscore,所以rosmaster和ros ip都填本地回环地址(127.0.0.1),点击连接:
  • 同意权限,连接成功并发布话题:
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(27)
  • 使用rostopic echo chatter查看话题是否发布:
    ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(28)

成功发布!

2.4 打包发布

并且此功能包本人进行动态打包发布,经测试可运行在未安装ROS的Win10上并连接Ubuntu的Master主节点,并发布Chatter话题:
ROS Windows 人机交互软件开发探索与总结一(开发环境搭建及ROS Win10 Qt功能包的编译运行)插图(2)
左:Ubuntu 右:win10
release地址:github

到这里ROS Windows开发环境搭建已经完成,在接下来继续探索windows librviz开发

发表评论

后才能评论

评论列表(5条)

  • 8arln_0184 2020年12月19日 下午5:21

    大神你好,我参照很多帖子包括你的这篇,安装完使用rviz都会报这个错:
    qt.qpa.plugin: Could not find the Qt platform plugin “windows” in “”
    This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
    请问该如何解决呢?我之前开发的时候配置过QT的环境变量了,
    QT_PLUGIN_PATH
    D:\InstallPath\Develop\Qt\Qt5.13.1\5.13.1\msvc2017_64\plugins

  • s4jk0_3084 2020年11月2日 上午9:43

    大神,我照你这个装完,rostopic list下面只有rosout和rosout_agg,要怎么办啊?

  • ieefj_3841 2020年9月30日 上午11:32

    古月大神, window版本上可以 安装多个 ros版本么? 然后,我这边安装了 新版本 noetic ,发现大家都在用melodic,顿时感觉不爱了,不想用了,你这边会采用noetic版本么? 谢谢

    • ieefj_3841 回复 ieefj_3841 2020年9月30日 下午2:19

      尝试了下,可以多版本。 anyway, 目前noetic版本好像还没melodic好用。尴尬