rosserial_windows入门 对Hello World from Windows的调试

rosserial_windows入门 对Hello World from Windows的调试

wiki.ros.org上介绍了rosserial_windows调试Hello World的基本流程,但在实践过程中还是遇到了不少问题,特此写一篇博文记录下遇到的问题以及解决办法,在此附上链接供大家参考Hello World from Windows 。


0、准备工作

需要两台电脑,一台装有ros的Ubuntu系统,以及一台装有VS的Windows系统。没有尝试过虚拟机的方式,应该没有问题。尽管文档要求VS版本为2013,但经过调试VS2010一样可以调通。接下来按照文档的标号一步一步进行介绍


1、Introduction(略)


2、Generating the ros_lib

2.1、Installing rosserial_windows

在ubuntu系统上安装 rosserial windows 和 rosserial server,终端命令如下

sudo apt-get install ros-hydro-rosserial-windows
sudo apt-get install ros-hydro-rosserial-server


本人版本为indigo,所以需要将hydro替换为indigo,否则会出现安装错误

sudo apt-get install ros-indigo-rosserial-windows
sudo apt-get install ros-indigo-rosserial-server



2.2、Generate ros_lib

rosrun rosserial_windows make_libraries.py my_library

终端命令应该切换到make_libraries.py所在的位置进行

3、Add ros_lib to Visual Studio Project

3.1、Create a new Win32 Console Application

打开Visual Studio2010 文件->新建 ->项目 

模板 ->Visual C++ ->win32 win32控制台应用程序

将项目命名为rosserial_hello_world,点击确定。预编译头文件保留,不需要取消


3.2、Copy ros_lib into the project

将ros_lib中的文件添加到rosserial_hello_world项目的文件夹中,rosserial_hello_world文件夹结构如下:


将以下所以文件都添加到ros_lib文件夹中

随后将ros_lib文件夹添加到路径中, 步骤如下:

1)右键点击rosserial_hello_world项目,选择最下角的“属性”

2)在C/C++的选项中,点击“添加包含目录”,ros_lib的路径添加到目录中

在rosserial_windows文件夹中我并没有找到duration.cpp和time.cpp两个文件,而且在下一步rosserial_hello_world.cpp还会因为缺少geometry_msgs/Twist.h报错。我并没有找到解决方案,还好有之前同学做过的项目,所以将之前的ros_lib文件整体移植过来


4、Add code to main for Hello World

修改sserial_hello_world.cpp,代码如下:

// rosserial_hello_world.cpp : Example of sending command velocities from Windows using rosserial
//
#include "stdafx.h"
#include <string>
#include <stdio.h>
#include "ros.h"
#include <geometry_msgs/Twist.h>
#include <windows.h>

using std::string;

int _tmain (int argc, _TCHAR * argv[])
{
  ros::NodeHandle nh;
  char *ros_master = "1.2.3.4"; //Ubuntu系统的IP地址

  printf ("Connecting to server at %s\n", ros_master);
  nh.initNode (ros_master);

  printf ("Advertising cmd_vel message\n");
  geometry_msgs::Twist twist_msg;
  ros::Publisher cmd_vel_pub ("cmd_vel", &twist_msg);
  nh.advertise (cmd_vel_pub);

  printf ("Go robot go!\n");
  while (1)
  {
    twist_msg.linear.x = 5.1;
    twist_msg.linear.y = 0;
    twist_msg.linear.z = 0;
    twist_msg.angular.x = 0;
    twist_msg.angular.y = 0;
    twist_msg.angular.z = -1.8;
    cmd_vel_pub.publish (&twist_msg);

    nh.spinOnce ();
    Sleep (100);
  }

  printf ("All done!\n");
  return 0;
}

ros_master为Ubuntu系统的IP地址,如果不清楚的话,在系统终端使用ifconfig命令查看

可以尝试debug一下,如果没有出现错误,结果如下:



5、 Start ROS and rosserial_server

回到Ubuntu系统,在第一个终端输入:

roscore
第二个终端输入:
rosrun rosserial_server socket_node
第三个终端输入:
rostopic echo /cmd_vel

6、Run the app

回到Windows系统,再次debug,控制台输出已经有变化了


在Ubuntu这边



基本已经完成


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值