ROS探索总结(二十九)——功夫茶机器人项目总结

  • 内容
  • 评论
  • 相关

终于结束了18届高交会的功夫茶项目展示,总体来讲,展示效果不错,吸引了众多各年龄段的观众,还上了回CCTV的新闻。

在这里做一个阶段性的总结,也是自己这大半年来的所做所得。

今年4月中旬我来到深圳,和其他几个师兄创建了现在的公司——深圳星河智能科技有限公司,主打工业机器人。5月份完成了Ethercat主站部分的开发,6月份使用ROS建立了整套机器人的开发环境和可视化界面,7月份在实体机器人上实现了运动控制,8月份完成了机器人点动、连续运动的开发,9月份正式开始功夫茶机器人项目,并且完成了动作框架的开发,10月份集成了视觉识别并完成了整套动作的编排调试,11月份完成细节优化和错误处理,最终就是高交会上所展示的效果。

clip_image002

公司所有人都不是工业机器人方面出身,在最初阶段对工业机器人几乎没有概念,但是我们利用深圳的众多资源,迅速学习到了大量相关方面的概念,并且付之于行动,虽然水平还很初级,但至少搭建起了一整套系统。在此之中,最大的功臣莫过于ROS,帮助我们迅速完成了系统构建和应用开发。

clip_image004

ROS中提供了众多关于机械臂方面的资源,其中最重要的莫过于MoveIt!轨迹规划在工业机器人中占据举足轻重的地位,但是对于我们这样初登大堂的开发者来说,还缺少众多专业知识,MoveIt中提供了许多轨迹规划方面的算法,可以让我们把注意力集中在系统的搭理上,而不必纠结算法实现。此外,rviz提供了可扩展的可视化界面,针对我们需要的功能开发一些插件,可以快速建立适合需求的控制监控界面。

当然ROS也不是万能的,它主要完成上层需要的功能,底层的控制器核心完全是自主开发,通过ROS-I中的simple message和上层模块通信,实现轨迹插补,日志上报,实时监控,参数配置,实时读写ethetcat总线等功能。

clip_image006

最后,来发表一些对ROS的看法。ROS虽然好用,但是目前的ROS1还只适合于研发,如果没有强大的研发能力,建议还是不要轻易应用于产品。我们在开发过程中,遇到过以下一些坑:

    1. roscore会突然挂掉,node会突然挂掉,rviz会突然挂掉,ROS的一切都会挂,系统就go die。。。

    2. moveit没办法实现连续运动,也没有点动等基本操作,需要去看moveit的底层代码然后重新组合去实现。

    3. ROS没有实时功能,需要自己搭建实时核,开发实时任务

    4. ROS资源占用率较大,对计算机的性能要求较高

目前的ROS1,在产品的研发初期,可以借助其完成快速原型开发,验证产品模型,然后在最终产品中,需要逐渐减弱对ROS的依赖,甚至彻底脱离(至少脱离ROS core),如果需要用到ROS功能包中的代码,也要对其有一定了解。

clip_image008

 


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

本文链接地址: ROS探索总结(二十九)——功夫茶机器人项目总结

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

评论

13条评论
  1. Gravatar 头像

    海漩涡 回复

    月哥
    请教个问题:我想让终端器按预想的轨迹运动,或者说过中间点,有什么好办法?

    我知道computeCartesianPath接口可以实现,我用它画出了圆。
    但是它有个缺点,规划失败率高,我看源码失败的原因是IK失败。
    而且我要规划一条轨迹必须能采样出轨迹上的一系列点才行,比如说圆必须要用方式描述且取一定数量的点。

    • 古月

      古月 回复

      @海漩涡 默认用的IK失败率确实高,改用另外一个trac_ik,容忍误差大,失败率低。我不确定moveit里面怎么做,我们是自己写算法做轨迹的,圆的话就是指定三点算出圆的方程,然后画出来。

  2. Gravatar 头像

    海漩涡 回复

    月哥,连续运动你是怎样实现的?
    我当前是将多个运行的轨迹数据合并到一个轨迹中,然后再用AddTimeParameterization赋予时间、速度、加速度。
    请问我这样做会有什么问题吗?

    • 古月

      古月 回复

      @海漩涡 目前我们在moveit里边也是这样做的,一般情况下应该没什么问题,但是如果轨迹数据很多,效率就不高了。

  3. Gravatar 头像

    海漩涡 回复

    请问下“轨迹插补”是在哪部分完成的,规划出的一系列轨迹点还不能让手臂很好的运动吗

    请问你的moveit里的ik选用的是KDL吗, 轨迹规划算法我用的是RRTConnect,你用的是哪个

    • 古月

      古月 回复

      @海漩涡 Moveit规划出来的轨迹点需要控制器完成插补,如果已经有控制器,就不需要自己完成,我们自己做控制器,插补就需要自己做。我们目前用的也是KDL

  4. Gravatar 头像

    Shawn 回复

    文章中同时提到了ROS1和ROS-I, 您其实是通过ROS-Industrial开发,然后吐槽ROSversion1一些不足吗?

    • 古月

      古月 回复

      @Shawn ROS-I包含很多ROS1中的功能包,可以说ROS-I就是把ROS1应用到工业机器人上的一种框架,所以本质是一样的

  5. Gravatar 头像

    Shawn 回复

    "moveit不能连续运动" 什么意思呢?谢谢!

    • 古月

      古月 回复

      @Shawn 你好,在moveit中只能设置点到点的运功,没办法设置多个点依次运动

      • Gravatar 头像

        SpecTian 回复

        @古月 其实多点依次运动可以用computeCartesianPath,一次添加多个pose就好了。但是moveit提供的东西确实太简单了,离工业要求还是有不少距离。

  6. Gravatar 头像

    海漩涡 回复

    厉害,大赞月哥,你也在深圳啊

发表评论

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