rosserial简介

rosserial是用于非ROS设备与ROS设备进行通信的一种协议。它为非ROS设备的应用程序提供了ROS节点和服务的发布/订阅功能,使在非ROS环境中运行的应用能够通过串口或网络能够轻松地与ROS应用进行数据交互。

rosserial分为客户端服务器两部分。rosserial客户端运行在运行在没有安装ROS的环境的应用中,通过串口或网络与运行在ROS环境中的rosserial服务器连接,并通过服务器节点在ROS中发布/订阅话题。

1 rosserial服务器

rosserial服务器是运行在ROS设备中的一个节点,作为串行协议和ROS网络的连接。rosserial服务器有C++和Python两种语言的实现。

1.1 rosserial_python

rosserial_python是一个基于python的rosserial协议实现。它包含主机端rosserial连接的Python实现,能够自动处理连接的支持rosserial的设备的设置、发布和订阅(注意:需要安装pyserial才能使用)。

rosserial_python功能包的serial_node.py节点,与启用了rosserial的设备通过串口通信。该节点根据存储在设备中的配置信息自动启动订阅者和发布者。要使节点以指定的波特率与指定的串口设备连接,例如在/dev/ttyACM1,则必须在命令行上指定参数:

rosrun rosserial_python serial_node.py _port:=/dev/ttyACM1 _baud:=115200

也可以通过launch文件指定以下参数:

<launch>
  <node pkg="rosserial_python" type="serial_node.py" name="serial_node">
    <param name="port" value="/dev/ttyACM1"/>
    <param name="baud" value="115200"/>
  </node>
</launch>

1.2 rosserial_server

rosserial_server功能包包含主机端rosserial连接的C ++实现。它会自动处理已连接的启用rosserial的设备的设置,发布和订阅。

这些节点使用topic_tools/ShapeShifter元消息来重新发布来自客户机的消息,而不必在编译时了解它们。这种方法的惟一警告是服务器没有消息的完整文本定义(因为它不是存储在客户端或部分rosserial协议中)。它使用rosserial_python功能包中的message_info_service.py节点提供的辅助服务,该服务允许C ++驱动程序查找消息定义和散列字符串,而这些消息定义和散列字符串在编译时是未知的,从而使其可以完全发布来自微控制器的话题。

rosserial_server提供serial_nodesocket_node两个节点,分别用于串口连接和网络套接字连接。建议的用法是在消息信息节点侧启动主服务器节点。提供了启动文件以启动串行链接。服务器节点的启动方法如下:


                
  • 5
    点赞
  • 97
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值