最新消息:

ROS探索总结-43.ROS产品化探索之开发工具篇

ROS1/一代机器人系统 少儿编程 1894浏览 0评论
ROS探索总结

本文转载自古月居,原作者古月,原文链接:https://www.guyuehome.com/1660。

ROS探索总结-43.ROS产品化探索之开发工具篇

概要

  • 上篇讲到,在通信机制部分,我们完全舍弃了ROS基于话题和服务的通信机制,自己又实现了一套通信系统,具体的实现主要基于Linux系统的各种通信方式,此处暂且不表,这篇我们来看下ROS另外一个重要部分——开发工具,如何在机器人产品化过程中应用。

  • ROS相关的开发工具有很多,大致可以分为以下几种类型:

    1.ROS原生工具,比如rviz、qt工具箱、命令行工具等

    2.编译和测试工具,基于已有工具进一步的包装;

    3.第三方工具,基于成熟工具,使用一些插件或接口和ROS系统兼容。

  • 就这三种类型的工具,我们来具体分析。

一、ROS原生工具

  • ROS的原生工具非常丰富,可以参考wiki上的说明:http://wiki.ros.org/Tools

  • 无论是可视化的qt工具还是命令行工具,都频繁用于ROS开发,这些工具和ROS系统的依赖性最强,想要实现产品化并不容易。

  • rviz

  • 首先来看最重要的一个工具——rviz

ROS探索总结-43.ROS产品化探索之开发工具篇

  • rviz是ROS中的一个三维可视化平台。为什么说它是ROS最重要的一个工具呢?因为rviz可以把不直观的数据统统可视化地显示出来,比如图像、地图、模型、路径等等,这些还只是rviz官方提供的显示插件。

ROS探索总结-43.ROS产品化探索之开发工具篇

  • 上图是我们自己项目开发中设计的rviz插件,作为机器人控制的上位机。

  • rviz原生的显示组件配合定制化开发的插件,功能强大,开发迅速,简直不能再好用了!

  • OK!吹了半天rviz的强大,也得说说它的问题!

  • rviz最大的问题就是对ROS核心通信机制的强依赖,系统中必须要运行ROS Master,显示的数据需要通过话题发布,运行不稳定等等。。。很多时候在启动rviz的过程中,总是伴随着警告和错误,一次启动失败就再来一次,最多三四次还是可以启动成功的。。。

  • 基于上边这些问题,rviz基本不可能直接拿来产品化,作为开发过程中的工具还是非常棒的。不过,rviz的架构设计还值得参考,我曾“企图”利用rviz的源码重新开发一个类似的界面工具,摆脱对ROS的依赖,不过最终还是因为没有时间而放弃了,有兴趣的小伙伴可以试一下。

  • 命令行工具和rqt工具

ROS探索总结-43.ROS产品化探索之开发工具篇

  • ROS提供的命令行工具非常丰富,比如rostopic、rosservice、rosnode、rosparam等等。虽然没有图形化工具那么直观,但是很多时候更加简洁明快。

  • ROS还提供了一系列轻量化的可视化工具,比如:

  • 显示计算图的rqt_graph

ROS探索总结-43.ROS产品化探索之开发工具篇

  • 显示数据包的rqt_bag

ROS探索总结-43.ROS产品化探索之开发工具篇

  • 绘制数据曲线的rqt_plot

ROS探索总结-43.ROS产品化探索之开发工具篇

  • 这些工具的问题和rviz类似,或者说ROS的原生工具都有这样的问题,毕竟是“直系血亲”,和ROS核心部分紧密相连,同样继承了ROS通信机制部分的问题。

  • 所以,如果想在机器人产品中为用户提供相关的工具,需要慎重考虑一下面向的对象,和对稳定性的需求。

二、编译和测试工具

  • 第二个部分是ROS提供的编译和测试工具。

  • 编译系统——catkin

ROS探索总结-43.ROS产品化探索之开发工具篇

  • ROS的编译系统基于CMake,针对ROS本身的特点进行了包装,可以比较方便的管理包之间的依赖关系,而且ROS功能包可以实现系统模块化、松耦合的管理机制,编译开发版和发布版都没有问题。

  • 功能包或编译系统和ROS的核心通信机制没有直接关系,所以代码里边没有任何ROS相关的代码,一样可以使用。在机器人开发过程中,我们项目中的所有代码都使用ROS包管理、catkin编译。

  • 这种方案还有一个很大的好处,就是很容易在CMakeLists中链接ROS的库,比如tf库。tf库是坐标变换的数学处理库,而我们常用的tf功能包是在tf库的基础上加入了ROS封装,所以两者是有区别的。借助tf库可以帮助我们实现坐标变换,不需要再重复造这个轮子。

  • 单元测试——gtest

ROS探索总结-43.ROS产品化探索之开发工具篇

  • ROS的单元测试系统基于谷歌的gtest,结合catkin编译系统,非常好用。我们项目所有的单元测试,都是通过这种方式完成,相关的语法和gtest一样,可以参考:http://wiki.ros.org/gtest

  • 可以说,ROS的编译和测试工具在产品化开发过程中可以直接使用,而且包管理机制、单元测试方法让整个软件系统的框架清晰明了、分工明确。

三、第三方工具

  • ROS的迅速崛起,也不断吸收更多第三方工具的加入,比如Gazebo、Matlab、Qt Creator、SolidWorks等。

  • 机器人仿真是机器人开发过程中非常重要的一个环节,可以针对机器人模型、应用功能、算法处理、环境状态等方面做仿真。Gazebo是ROS中主要的仿真工具,现在已经独立维护,可以通过ROS接口接入ROS环境,所以无论我们是否使用ROS,都可以使用Gazebo,从开发到产品的过渡相对平滑。

ROS探索总结-43.ROS产品化探索之开发工具篇

  • Matlab是数据处理方面的强大工具,2013之后的机器人工具箱也提供了对ROS的支持,实现了ROS核心通信的大部分功能,可以运行ROS Master和节点,并且发布话题消息。这为ROS开发提供了一个强大的数据演算后台,也可以利用matlab的可视化编程功能,实现人机界面的开发。

ROS探索总结-43.ROS产品化探索之开发工具篇

  • Qt Creator、SolidWorks等工具,都是以插件的形式提供对ROS的支持,从而实现与ROS相关的功能。

ROS探索总结-43.ROS产品化探索之开发工具篇

总结

  • 随着ROS的发展,会有越来越多的第三方工具加入ROS的生态环境,这些“兵器”也必定会直接带来生产效率的提高,促进机器人产品化的进程!

  • 本篇针对ROS相关的部分工具进行了分析,当然还有很多工具没有涵盖进来。工具的根本目的是提高我们的开发效率,每一种工具都有其擅长之地,也有其不足之处,所以在我们设计、开发机器人产品的过程中,可以综合考虑,发挥每一个开发工具的优势。

您必须 登录 才能发表评论!