Starofus

你好呀,我是Sans

【Sim2real】01:ROS , Moveit , Gazebo 和凸包

2022-08-18

用UR5机器人开发实际工业加工的项目,Sim2Real的基础项目搭建

本次的代码:https://github.com/mrzhuzhe/Gurren

1. 简介:

需要开发一个实际操作工业机器人的程序,并且在实际机器人测试计通过。

业务场景为:碳纤维模具的表面打磨

  • 1. 模具大多为形状有凹凸圆环, 也有少部分有不规则形状
  • 2. 碳纤维比较脆,硬度和金属相当,需要打磨上面突起的毛刺和污染物

工具为:

  • 1. UR5机器人
  • 2. 末端执行器(打磨头/吸盘等
  • 3. 相机,力传感器

所需要的功能点:

  • 1. 根据模具CAD生成路径点
  • 2. 用 ROS 系列软件: Moveit 来做IK(逆运动学)规划, Gazebo 来做场景模拟
  • 3. 归纳测试中出现的问题,保证交付后健壮性和可维护性

2. 演示

UR5 演示:

Gazebo 演示:

3. 相关工作:

4. 方案

几何形状求凸包:

可维护性和健壮性

ROS和moveit方面:

  • 项目目前没有做pybind
  • 打包工具catkin类似于cmake
  • 后面会重点再深入研究OMPL

业务方面:

  • 现在准备马上安装上执行器做测试
  • 需要有一个模具限位器,把模具固定在一个特定位置
  • 需要反复测试迭代改进工艺问题

5. 实验:

实验设计:

实验一:实体机器人运行沿着模具法相量等高线运行一圈并复位, 要求跟gazebo中模拟尽可能一致,机器人执行器上要有一个摄像头

实验一视频:

实验一结论:基本符合预期,摄像头gazebo中模拟摄像头和实际摄像头看到的画面基本一致

6. 结论:

未解决问题:

  • 1. 经过过调研,接触操作都需要用到力控,需要调研力控的用法和实现。
  • 2. 需要一些辅助测量的结构: 例如,需要自定义ros节点做一个激光测量的定位
  • 3. 需要一些继电器控制的辅助设备,例: 使用ur io 的八个输出来控制气动阀
  • 4. 需要几何算法做表面提取:其实经过测试3d上不能直接用凸包法
  • 5. 需要把相机改成自定义驱动的相机
  • 6. 需要一个自定义的模具夹持结构

思考:

其实最主要的问题就是问题1
实际上接触操作都会因为机器人本身的误差和接触摩擦反冲造成很大的误差 需要 “Impediance control” Wiki pedia来主动“阻抗”外部环境摩擦和反冲的干扰
这个需要自定义ros_controler 和 KDL

其他问题: 如问题4 涉及大规模几何计算,会另外单独拆分出来作为“HPC”专项单独跟进

下一步计划:

围绕问题1跟进,做一套ros中gazebo的力控阻抗控制模拟

  • 1. 阅读ros control 源码 包含: ros 硬件接口 机器人transmision joint_limit 等的定义 ros_control
  • 2. 阅读ros contoller 源码, 在ros_contoler 的实现之上增加了前向控制,轨迹控制等的实现
  • 3. 阅读 Universal_Robots_ROS_Driver 源码, 这个其实没有阻抗控制的实现,需要自己加进去,网上有网友已经实现了 网友实现
  • 4. 阅读 panda 机器人的控制器源码 frankaemike controler example这个里边有阻抗控制的实现
Robotic