前面尝试了很多算法之后,得先找个能用的环境跑起来试试,于是决定尝试下ROS环境,但是我一直没有尝试也就是这个原因,坑太多了,文末估计会有很多的参考链接
首先,安装ROS环境,这个坑是最少的,参考古月居55的教程
首先安装VS2017,笔者装的Community版,因此这一步可以跳过了
然后创建一个快捷方式,后面所使用的所有操作都是从这个入口开始,因为这个需要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(第二步有时候会等很久,很像卡住了,但是请耐心等待,建议一直看着安装,以防报错)
choco source add -n=ros-win -s="https://roswin.azurewebsites.net/api/v2" --priority=1 choco upgrade ros-melodic-desktop -y
然后古月居里面有简单的测试,这里不再赘述
然后是在Windows下编译源码的问题,这部分才是深坑
首先需要使用到pthread这个库,因此需要在下面这个链接里下载下图的压缩包
ftp://sourceware.org/pub/pthreads-win32
包里有三个文件夹,我们需要Pre-built.2这个文件夹,其中包含了pthreads for win32 的头文件和库文件,下面有三个文件夹,分别包含了dll、include和lib
include文件夹下的头文件拷到VS头文件目录下 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\include\ lib文件夹下的静态库文件拷到VS库文件目录下 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.11.25503\lib dll文件夹下x86文件拷到 C:\Windows\SysWOW64 dll文件夹下x64文件拷到 C:\Windows\System32
然后修改pthread.h文件,可以解决“timespec”:“struct”类型重定义错误
#if !defined( PTHREAD_H ) #define PTHREAD_H 下面加上一行宏定义 #define HAVE_STRUCT_TIMESPEC
然后编译时可能会报错gtest-NOTFOUND
打开要编译的包里面的CMakeLists.txt,然后将
target_link_libraries( rtest
gtest
${catkin_LIBRARIES}
)
更改为
target_link_libraries( rtest
${GTEST_LIBRARIES}
${catkin_LIBRARIES}
)
未完待续。。。
感谢以下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