Rosserial实现Windows-ROS交互操作

本文详细介绍了如何在Ubuntu和Windows系统间通过rosserial进行ROS通信的过程。首先,需在Ubuntu下安装必要软件包并编译库,然后将生成的ros_lib文件夹复制到Windows工程中。使用Visual Studio 2013创建C++工程,添加ros_lib,并配置附加包含目录。代码示例展示了如何使用rosserial发布Twist消息,以及如何在ROS端启动服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 安装
sudo apt-get install ros-indigo-rosserial-windows
sudo apt-get install ros-indigo-rosserial-server
  1. 编译
rosrun rosserial_windows make_libraries.py my_library

运行后会产生一个my_library文件夹,在my_library这个文件夹下会生成ros_lib文件夹

  1. Windows下创建代码工程
  • 复制ubuntu下my_library的ros_lib文件夹至windows系统
  • Windows系统下安装VisualStudio 2013
  •  

     

    创建C++工程(rosserial_hello_world),选项中不要选择预编译
     
     
  1. 添加ros_lib至工程文件夹


     
     
  2. VS2013工程配置
  • 将ros_lib文件夹下没有子文件夹的所有文件复制一份至工程目录下


     
     
  • 在VS2013属性中配置附加包含目录


     
     
  • 代码
#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";  //ROS的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;
}
  1. ROS端启动服务
$roscore
$rosrun rosserial_server socket_node
rostopic echo /cmd_vel
 
 
  1. 启动客户端


     


作者:forrestsun
链接:https://www.jianshu.com/p/64842460ef2d
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

转载于:https://www.cnblogs.com/dayspring/p/9801929.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值