在移植之初,读者需要先在Windows系统中安装好ROS系统,本教程安装的melodic版本,为 Windows 构建 ROS 项目需要 Visual Studio,这里安装的是 Visual Studio 2017 (Community)。
具体安装过程可以参考以下两个连接
ROS on Windows installation
视频教程
温馨提示
按照Ros 用于 Windows 移植说明书,需要将ROS的工作区放到C盘的根目录。因为Visual Studio 2017体积过于庞大,我这里安装在D盘,在运行ros程序的时候只要在创建 ROS 命令窗口快捷方式时修改好相应的路径,也能够使得程序正常运行。
例如我在创建ROS命令窗口快捷方式时的设置:
1、Windows系统中创建ROS工作空间
在Windows系统和在Linux系统创建功能包没有太大区别,我这里将catkin_ws设置在c盘的根目录下。
2、Windows系统中编译ROS工作空间
输入以下两条指令,这个时候虽然没有功能包,但是是可以正常编译的。
结果如下:
3、创建功能包
4、在learning_topic中的创建一个c++文件,输入以下代码。(有古月居21讲的例程代码,可以直接将learning_topic中的velocity_publisher.cpp文件复制过来。)
如果是新手,不知道这部分代码什么意思可以去看这个视频。古月居21讲
5、配置CMakeLists.txt中的编译规则
设置需要编译的代码和生成的可执行文件,设置链接库。
这里执行的操作是将以下两句话拷贝到learning_topic目录下的CMakeLists.txt中照片所示的位置。
6、再次进行编译
再次执行编译出现了如下报错:
C:ros_wssrclearning_topicsrcvelocity_publisher.cpp: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请 将该文件保存为 Unicode 格式以防止数据丢失C:ros_wssrclearning_topicsrcvelocity_publisher.cpp(28): error C2065: “vel_msg”: 未声明的标识符C:ros_wssrclearning_topicsrcvelocity_publisher.cpp(29): error C2065: “vel_msg”: 未声明的标识符C:ros_wssrclearning_topicsrcvelocity_publisher.cpp(32): error C2065: “vel_msg”: 未声明的标识符C:ros_wssrclearning_topicsrcvelocity_publisher.cpp(33): error C2065: “vel_msg”: 未声明的标识符C:ros_wssrclearning_topicsrcvelocity_publisher.cpp(37): error C2065: “loop_rate”: 未声明的标识符NMAKE : fatal error U1077: “D:PROGRA~1MICROS~12017COMMUN~1VCToolsMSVC1416~1.270binHostx64x64cl.exe”: 返回 代码“0x2”Stop.NMAKE : fatal error U1077: “"D:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023binHostX64x64nmake.exe"”: 返回代码“0x2”Stop.NMAKE : fatal error U1077: “"D:Program Files (x86)Microsoft Visual Studio2017CommunityVCToolsMSVC14.16.27023binHostX64x64nmake.exe"”: 返回代码“0x2”Stop.Invoking "nmake" failed解决这个问题需要使用Visual Studio 2017打开我们创建的(或者直接复制过来的)velocity_publisher.cpp文件,点击"文件",点击"高级保存选项",在编码这栏中选择Unicode(UTF-8 带签名)- 代码页65001,然后点击确定即可。
参考网页
再次保存文件,再次执行catkin_make指令。
7、在执行程序之前,需要设置坏境变量
在Linux系统中执行要运行这个发布者的程序需要进行以下步骤
在Windows系统中只有第三行命令的执行的方式不同,在cmd中不能识别source这个命令,而且在Windows系统中在devel文件中生成的是setup.bat文件,windows系统中与source devel/setup.bash执行相同效果的是,进入到devel文件,并执行setup.bat文件。
这就走完了在windows下执行一个发布者程序的所有坑。
实验过程1、双击ROS命令窗口快捷方式,输入roscore。
2、运行海龟仿真器
3、运行自己功能包指令
直接在命令窗口输入指令的话他会出现错误提示。
我们需要先执行以下命令,才能让小海龟顺利跑起来。
##存在的问题
在linux中,每次执行source devel/setup.bash会很麻烦,一般会将该命令加入到隐藏文件.bashrc文件中,这样就不用每次在终端执行这条指令。
在Windows中,我考虑的解决办法是右击ROS命令窗口快解方式,点击属性,在目标那一栏加入&& c:catkin_wsdevelsetup.bat,这样可以起到相同的效果。