本篇教程主要是介紹ROS Windows開發環境的搭建,ROS Windows基本的使用。以及在Windows中編譯ROS Qt功能包。
ROS librviz 人機互動軟體開發系列教程中我們實現了Ubuntu端的界面開發。但是很多小夥伴問到能不能在Windows上進行開發,當時回復是不能,主要就是庫的依賴問題難解決。
但是我想了想ROS是有windows版本的,並且也能運行rviz之類的,既然rviz都可以在windows上運行,就說明是有庫可以支持的。於是本人又進行了一番探索與總結~
此release版本是本人將動態庫進行打包,可以在未安裝ROS的win10上直接運行(僅在一臺電腦測試,可能會缺少其他動態庫),下載後雙擊壓縮包內的ros_qt_demo.exe即可運行。
經測試可運行在未安裝ROS的Win10上並連接Ubuntu的Master主節點,並發布Chatter話題:
左:Ubuntu 右:win10
release地址:
https://github.com/chengyangkj/ros_qt_demo/releases/tag/v1.0
一,安裝windows版本的ROS
1,安裝Visual Studio
2,安裝ROS
3,創建ROS快捷終端
4,測試安裝
二,ROS Windows使用
1,初始化ROS工作空間
2,創建ROS功能包
3,編譯ROS功能包
4,添加ROS工作空間到環境變量
5,安裝ROS軟體包
三,ROS Qt功能包模板的編譯與使用
參考資料: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平臺開發」。
這裡安裝過程約1-2小時,請耐心等待
2,安裝ROS
@"%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"將其粘貼到命令窗口中,批准任何提示,完成後,關閉命令提示符以完成安裝。
執行如下命令行,安裝ROS
mkdir c:\opt\chocolateyset ChocolateyInstall=c:\opt\chocolateychoco source add -n=ros-win -s="https://aka.ms/ros/public" --priority=1choco upgrade ros-melodic-desktop_full -y --execution-timeout=0但是我執行最後一步遇到了錯誤(Vcpkg is not installed):
我這裡是因為使用的不是vs2019版本(2015),所以解決方法是只能去安裝vs2019才能正常的去編譯。
這裡我已經正常安裝:
由於網絡原因可能安裝緩慢或者異常失敗,這裡建議使用穩定的網絡環境,錯誤後並多次嘗試。
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」
將該快捷方式設置為管理員
右鍵單擊快捷方式,然後選擇「屬性」。
選擇快捷方式選項卡(如果尚未選擇)。
按下[高級]按鈕
選中用管理員身份運行,並確認
4,測試安裝
雙擊打開剛剛創建的ROS終端,運行roscore,並允許訪問:
rocore
再次打開新的終端運行rviz:
rosrun rviz rviz
並且其他命令經測試都是完美支持的:
rostopic list rostopic echo
到這裡ROS Windows安裝已經完成。
1,初始化ROS工作空間這裡我在E盤創建工作空間catkin_ws/src
使用e:命令跳轉到e盤
進入src目錄並初始化工作空間
cd catkin_ws\src
catkin_init_workspace
2,創建ROS功能包
依舊在src目錄下使用catkin_create_pkg進行創建,後跟依賴
catkin_create_pkg ros_test roscpp rviz
3,編譯ROS功能包
使用catkin_make命令在catkin_ws目錄下進行編譯:
4,添加ROS工作空間到環境變量
此時如果使用rosrun 運行我們創建的ros_test功能包是找不到的,因為沒有添加到環境變量中:
還記得安裝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,注意使用&&隔開。
此時再重新打開終端,運行我們的功能包,就提示可以找到包了:
這裡提示的是找不到executable是因為我們還沒有創建ros_test功能,但是不再提示找不到ros_test功能包,證明我們已經成功將工作空間添加到環境變量中。
5,安裝ROS軟體包
確定是否存在ROS軟體包的二進位發行版。
使用ROS Wiki ,找到二進位發行版名稱,然後嘗試使用進行安裝Chocolatey。
如果成功,那就萬事俱備了!
choco install ros-melodic-<package_name>如果二進位安裝失敗就只能使用源碼編譯安裝了
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二進位版本:
2,直接編譯功能包
因此我們可以直接使用Ubuntu創建的Qt Pkg模板進行開發,拿過來是可以直接進行編譯,不做任何更改。或者可以使用我這個ros_qt_demo
2.1 下載功能包下載此包或者克隆本包到自己的工作空間src目錄下
如果需要更改功能包的名稱:
2.2 編譯
回到功能包根目錄,直接執行catkin_make
可以發現ROS下的功能包不用任何更改即可編譯成功:
2.3 運行
成功發布!
2.4 打包發布
並且此功能包本人進行動態打包發布,經測試可運行在未安裝ROS的Win10上並連接Ubuntu的Master主節點,並發布Chatter話題:
左:Ubuntu 右:win10
release地址:https://github.com/chengyangkj/ros_qt_demo/releases/tag/v1.0到這裡ROS Windows開發環境搭建已經完成,在接下來繼續探索windows librviz開發~
關於開發ROS人機互動軟體,古月學院已上線相關課程專題供大家學習:
《ROS Qt環境的搭建及基礎知識介紹 · 蔣程揚》點擊下方「閱讀原文」查看課程