admin管理员组文章数量:1122846
将ros包移植到Windows 10系统
在移植之初,读者需要先在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命令窗口快捷方式时的设置:
C:\Windows\System32\cmd.exe /k "D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\Tools\VsDevCmd.bat" -arch=amd64 -host_arch=amd64&& set ChocolateyInstall=c:\opt\chocolatey&& c:\opt\ros\melodic\x64\setup.bat
以古月居21讲中发布话题为例
1、Windows系统中创建ROS工作空间
在Windows系统和在Linux系统创建功能包没有太大区别,我这里将catkin_ws设置在c盘的根目录下。
mkdir c:\catkin_ws\src
cd c:\catkin_ws\src
catkin_init_workspace
2、Windows系统中编译ROS工作空间
输入以下两条指令,这个时候虽然没有功能包,但是是可以正常编译的。
cd c:\catkin_ws
catkin_make
结果如下:
3、创建功能包
cd c:\catkin_ws\src
catkin_create_pkg learning_topic roscpp rospy std_msgs geometry_msgs turtlesim
4、在learning_topic中的创建一个c++文件,输入以下代码。(有古月居21讲的例程代码,可以直接将learning_topic中的velocity_publisher.cpp文件复制过来。)
如果是新手,不知道这部分代码什么意思可以去看这个视频。古月居21讲
/**
* 该例程将发布turtle1/cmd_vel话题,消息类型geometry_msgs::Twist
*/
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
int main(int argc, char **argv)
{
// ROS节点初始化
ros::init(argc, argv, "velocity_publisher");
// 创建节点句柄
ros::NodeHandle n;
// 创建一个Publisher,发布名为/turtle1/cmd_vel的topic,消息类型为geometry_msgs::Twist,队列长度10
ros::Publisher turtle_vel_pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel", 10);
// 设置循环的频率
ros::Rate loop_rate(10);
int count = 0;
while (ros::ok())
{
// 初始化geometry_msgs::Twist类型的消息
geometry_msgs::Twist vel_msg;
vel_msg.linear.x = 0.5;
vel_msg.angular.z = 0.2;
// 发布消息
turtle_vel_pub.publish(vel_msg);
ROS_INFO("Publsh turtle velocity command[%0.2f m/s, %0.2f rad/s]",
vel_msg.linear.x, vel_msg.angular.z);
// 按照循环频率延时
loop_rate.sleep();
}
return 0;
}
5、配置CMakeLists.txt中的编译规则
设置需要编译的代码和生成的可执行文件,设置链接库。
这里执行的操作是将以下两句话拷贝到learning_topic目录下的CMakeLists.txt中照片所示的位置。
add_executable(velocity_publisher src/velocity_publisher.cpp)
target_link_libraries(velocity_publisher ${catkin_LIBRARIES})
6、再次进行编译
cd c:\catkin_ws
catkin_make
再次执行编译出现了如下报错:
C:\ros_ws\src\learning_topic\src\velocity_publisher.cpp: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请 将该文件保存为 Unicode 格式以防止数据丢失
C:\ros_ws\src\learning_topic\src\velocity_publisher.cpp(28): error C2065: “vel_msg”: 未声明的标识符
C:\ros_ws\src\learning_topic\src\velocity_publisher.cpp(29): error C2065: “vel_msg”: 未声明的标识符
C:\ros_ws\src\learning_topic\src\velocity_publisher.cpp(32): error C2065: “vel_msg”: 未声明的标识符
C:\ros_ws\src\learning_topic\src\velocity_publisher.cpp(33): error C2065: “vel_msg”: 未声明的标识符
C:\ros_ws\src\learning_topic\src\velocity_publisher.cpp(37): error C2065: “loop_rate”: 未声明的标识符
NMAKE : fatal error U1077: “D:\PROGRA~1\MICROS~1\2017\COMMUN~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\cl.exe”: 返回 代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.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文件。
cd devel
setup.bat
这就走完了在windows下执行一个发布者程序的所有坑。
实验过程
1、双击ROS命令窗口快捷方式,输入roscore。
2、运行海龟仿真器
3、运行自己功能包指令
直接在命令窗口输入指令的话他会出现错误提示。
我们需要先执行以下命令,才能让小海龟顺利跑起来。
cd c:\catkin_ws
catkin_make
cd devel
setup.bat
rosrun learning_topic velocity_publisher
##存在的问题
在linux中,每次执行source devel/setup.bash
会很麻烦,一般会将该命令加入到隐藏文件.bashrc文件中,这样就不用每次在终端执行这条指令。
在Windows中,我考虑的解决办法是右击ROS命令窗口快解方式,点击属性,在目标那一栏加入&& c:\catkin_ws\devel\setup.bat
,这样可以起到相同的效果。
版权声明:本文标题:Windows 10下安装ROS系统并执行ROS功能包 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1735490039a1868510.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论