ROS探索总结(四十三)—— 功夫手:一款基于ROS的工业机器人

  • 内容
  • 评论
  • 相关

2018年1月7日下午,第一届ROS Taipei年会顺利在台北举办,我有幸受邀参加了这次活动,并详细介绍了近两年来自己使用ROS进行机器人开发的具体细节。

在这次年会上,来自各地的开发者分享了ROS开发过程中的经验,并且展示了丰富多彩的机器人应用。

SONY DSC

ROS Taipei 2018开发者年会合影

 

image

自主设计并3D打印的机械臂

 

image

自主开发的移动机器人

 

image

做工精美的机械手

 

image

我也分享了公司创业过程中,基于ROS开发的一款工业机器人——Kungfu Arm。

 


 

以下是此次分享的详细内容

 

幻灯片1

大家好,很荣幸受邀参加ROS Taipei年会,我是ROS机器人博客“古月居”的博主——胡春旭,也是深圳星河智能科技有限公司的联合创始人。

我公司的主要产品是智能化的工业机器人控制系统,目标是让工业机器人的使用更简单、更智能。今天分享的主要内容就是基于该控制系统的工业机器人——Kungfu Arm。

首先带大家人认识一下这个会“功夫”的机器人:

在该视频中,Kungfu Arm通过一系列复杂的动作,完成了泡制功夫茶的全部过程。这是我们在2016年底深圳高交会上展示的项目,还得到了中央电视台的报道。

该展示中的Kungfu Arm集成了视觉、触觉等多种传感器,不仅可以通过摄像头确定茶杯、茶球等物体的位置,还可以使用不同的力度抓取不同的物体。

在视觉、触觉的基础上,我们还为机器人增加了听觉。丰富的外界信息提高了整个系统的智能化,适合更多应用场景。

 

幻灯片4

之所以为这款机器人取名Kungfu Arm,并不是我们要造一个会武功、能打架的机器人保镖,而是希望他像中国功夫一样:内外兼修、灵活多变

接下来我将就以上这几个方面,详细介绍这款机器人的实现细节。

 

 

幻灯片6

我所在的深圳及周边有众多工厂,很多工厂自动化程度较低 ,仍然在使用“人海战术”的生产线。虽然国家积极宣传工业4.0,但是对于这些工厂来讲,在改造成本、施工难度、管理理念等方面都存在鸿沟。

所以我们希望设计一款简单易用、高柔性、低成本、强智能的工业机器人控制系统,帮助工厂迈向自动化、智能化。

 

幻灯片7

针对以上需求,Kungfu Arm主要具备四个目标特性:

· 集成化:Kungfu Arm集成六轴机器人、灵巧手、高速摄像头、麦克风阵列等硬件,也可以根据实际应用灵活裁剪、组合;

· 智能化:控制系统中需要实现在线运动规划、自主避障、力度控制、物体识别、语义理解等多种智能化算法处理;

· 简易化:通过离线仿真、可视化编程、语音编程、开放接口等方式提高机器人的易用性,降低对操作人员的技能要求;

· 可扩展化:控制系统支持EtherCAT、Ethernet、Modbus、USB、I/O等总线或接口,灵活扩展更多外围设备。

 

 

幻灯片8

ROS-I是ROS针对工业领域的一个分支,已经得到了众多知名机器人厂家的支持。它提供了一个通用的工业机器人框架,并且集成了ROS丰富的资源,通过Simple Message协议与不同厂家的机器人控制器通讯,实现控制目的。

 

幻灯片9

Kungfu Arm的实现就基于ROS-I框架,加上最底层的机器人硬件,一共分为如图所示的六个层次。

这六个层次又可以分为两大部分:上边的四个层次基于ROS/ROS-I实现,对实时性的要求不高;下边的两层基于实时系统。

自上而下详细介绍这六个层次的具体内容:

幻灯片10

顶层是直接与用户打交道的交互界面,基于rviz开发。rviz是ROS中基于Qt的三维可视化平台,可以通过插件的形式扩展需要的功能。

我们在rviz的基础上开发了机器人相关的一系列插件,包括三维模型显示、点动控制、状态监控、控制按键、外设状态、动态配置、程序监控、离线仿真等。

 

幻灯片11

GUI以下是规划层,主要负责运动规划、图像处理、语音识别等上层算法和智能化的处理。

· 运动规划部分:主要使用ROS中的MoveIt,同时也对MoveIt进行了源码裁剪,脱离了roscore环境,以保持可用性、稳定性,满足我们的控制需求;

· 图像处理部分:主要基于OpenCV完成,为了实现更加智能的图像识别功能,我们还基于TensorFlow平台进行了一些机器学习方面的研究,比如识别图中的物体种类及摆放位姿;

· 语音识别部分:基于科大讯飞的SDK开发,同时完成了语义理解部分的功能。

 

幻灯片12

规划层处理之后的数据想要发送到下层机器人控制器进行处理,需要通过接口层的封装。接口层将控制器内部的众多数据分为四个种类:控制接口、配置接口、日志接口、状态接口。每个接口中包含一系列数据内容。

 

幻灯片13

接口层的数据通过Simple Message协议发送或接收。Simple Message是ROS-I中一种基于TCP/UDP的网络通讯协议,内容相对简单,包含前缀(数据长度)、头信息(消息类型、通讯类型、应答码)、数据内容三个部分,可以实现类似于话题、服务的通讯机制。

 

幻灯片14

整个系统的核心部分——控制层,完全脱离ROS环境,基于Linux+Xenomai的实时系统,可以在实时进程中完成机器人的关节插补、运动学求解、坐标变换等功能;同时也包含部分非实时的功能,比如参数管理、状态监控、运动准备等。

这里虽然脱离了ROS环境,但是依然离不开ROS。ROS的核心通讯机制虽然没办法在实时系统中使用,但是ROS社区中的众多功能包还是有很大参考价值的。

我们对ros_controller、TF、trac_ik、fast_ik等包进行了深度的代码裁剪、修改,使之满足功能性、实时性、稳定性的要求,这也是我们在ROS产品化探索中发现的一条可行之路。

 

幻灯片15

最下层是机器人的硬件部分,根据应用的成本、场景需求灵活搭配、更换,不需要固定使用某一种硬件。

 

 

image

在整个系统的开发过程中,我们得到了ROS众多功能包的启发和帮助,也切实体会到了ROS1在产品开发中的诸多限制。

通过架构设计、自主研发、源码复用等方法,我们克服了众多难题。经过两年的开发迭代,目前已经形成了一款稳定的机器人控制系统,并投入工厂自动化的应用阶段。

这是我们在2017年底深圳高交会展示的项目,改造了电机生产流水线中的一个重要工序——平衡。我们结合Kungfu Arm设计了一套自动化上下料工作单元,替代了工人的重复劳动,并且取得了较好的效果。

 

image

以上就是我们基于ROS开发的Kungfu Arm控制系统,有兴趣的小伙伴可以与我交流更多内容。

注:文中ppt内容可以在“古月居”微信公众号后台发送“功夫手”获取下载地址。


原创文章,转载请注明: 转载自古月居

本文链接地址: ROS探索总结(四十三)—— 功夫手:一款基于ROS的工业机器人

微信 OR 支付宝 扫描二维码
为本文作者 打个赏
pay_weixinpay_weixin

评论

19条评论
  1. Gravatar 头像

    biu 回复

    求ppt啊古月大佬,1024224658@qq.com,万分感谢!!

  2. Gravatar 头像

    王建波 回复

    PPT好漂亮 想向大佬求一份

  3. Gravatar 头像

    许忠锦 回复

    古月老师您好,我还是个在读硕士,对机械臂比较感兴趣,但我在实现基础的路径规划后,不知道如何实现轨迹的优化,看过您之前的一篇博客,是用五次多项式插值吗?那加速度震荡的问题如何解决?
    谢谢

    • 古月

      古月 回复

      @许忠锦 这个是理论算法的问题,可以参考相关的paper做优化,有一个TOPP的算法,可以参考

  4. Gravatar 头像

    吴小文 回复

    大佬您好,我们在做一个ros-igh的机械臂的毕设,我想问一下ros机械臂这块有没有回零点的这种功能包,或者说这块功能要自己写吗?

    • 古月

      古月 回复

      @吴小文 ros中可以设置固定的位姿,方便机器人回到预定义好的姿态,可以保存一个零点。

  5. Gravatar 头像

    dullard 回复

    您好,古月老师,能发我一份您的PPT吗?感谢!

    736202234@qq.com

  6. Gravatar 头像

    chris 回复

    古月你好,我准备做一个类似你这种的基于rviz的界面,目前觉得无从下手,请问有哪些参考资料,你这个界面是通过launch文件加载的还是如何启动的。谢谢

    • 古月

      古月 回复

      @chris 你好,这个是基于rviz的插件,这方面的资料不多,主要看别人实现的源码,其实方法并不难,主要还是qt编程。可以参考我之前的文章:http://www.guyuehome.com/945
      界面是通过launch文件启动的,其实就是启动rviz,做好的插件可以在rviz中添加。

  7. Gravatar 头像

    曹益烽 回复

    能提供ppt电子版吗

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据