Skip to content

Kitting Experiment Tutorial cn

段双达 edited this page Jan 6, 2019 · 1 revision

Baxter机器人分拣任务

背景介绍

在工业机器人分拣工作中,机器人抓取的物体可能会意外滑落; 或是由于视觉误差机器人末端执行器抓取不到物体; 或是在人与机器人交互的过程中,人意外的与机器人发生了碰撞。在这些场景中,机器人往往只能按照人为的设定的程序继续执行而对这些错误视而不见而产生不好的结果。特别是在服务机器人领域,机器人能够感知自身的行为往往是十分重要的。而如何赋予机器人长时间自主运行能力的基础是机器人能够意识到自己的错误,并且能够及时修复。

硬件

  • 力传感器 Robotiq
  • 触觉传感器
  • 视觉传感器

软件

如何下载:

$ cd ~/your src direction
$ wstool init . # creates an empty .rosinstall file
$ wstool merge https://github.com/birlrobotics/birl_kitting_experiment/blob/master/sdk.rosinstall
$ wstool update # will call git pull on all relevant repo's.

与本系统相关的包:

主要功能

在这个项目中,我们赋予了机器人自我感知的能力,当异常行为发生时,机器人能够:

  1. 异常检测: 当机器人发生了异常行为的时候,系统能够及时发现并停止机器人的下一步行为。
  2. 异常分类: 在异常被识别后,系统能够根据异常信号的不同进行分类。
  3. 生成相应的修复策略: 当异常被有效的分类之后,机器人能够产生相应的修复动作

如何运行代码

1.启动Baxter机器人

2.更行机器人的URDF

由于我们在机器人右手末端执行器安装了力传感器以及触觉传感器,而机器人原来的URDF是没有这些东西的,这会使得机器人认为这是外部的负载而影响机器人的动力学/运动学解。为了机器人能够知道自己的本体发生了变化,我们需要人为的每次在机器人重启后更新其URDF

rosrun birl_baxter_online_urdf_update update_urdf.py

3.启动相机,现在我们有两种方案:

方案一:启动安装在机器人腹部的Xtion相机

roslaunch openni2_launch openni2.launch 

方案二:启动Baxter机器人左手相机

rosrun birl_kitting_experiment setup_baxter_left_hand_camera.py

为了能够使机器人左手相机能够更好的检测到物体,我们手动的设置了一组固定的机器人左手关节角来使机器人运行到固定的位置

rosrun birl_kitting_experiment set_left_arm2static_pose.py

在现在的实验中,我们选择是在物体上张贴QRMarker来识别物体的ID和姿态。由于视觉的误差以及张贴的Marker发布出来的坐标轴Z轴朝上,而机器人抓取时需要Z轴朝下,所以我们对物体原来的姿态进行了变换。

roslaunch birl_kitting_experiment alvar_marker_demo.launch

4.配置传感器

  • 启动力传感器
rosrun robotiq_force_torque_sensor rq_sensor
  • 启动触觉传感器 由于不知名的原因,如果出现/tty/*找不到,则可能需要多次插拔。 如果出现/tty/ busy的情况,则可能要输入 chmod 776 /tty/*
rosrun tactilesensors4 PollData4

5** 启动Moveit** 这里的Moveit由于我们在机器人末端增加了传感器,所以我们相应的也需要更行moveit,否则机器人的规划和求解都会有问题

  • 在启动Moveit之前,由于moveit需要与机器人通信,在这里baxter采用了joint_action_server 来作为连接器
rosrun baxter_interface joint_trajectory_action_server.py

同时由于moveit机制的问题,moveit需要接收的是topic: robot/joint_state 而baxter发送出来的是topic: robot/joint_states为了使两者能够一致,我们人为的进行了重映射。 已经加入到了moveit的launch文件中

roslaunch birl_moveit_r_ft_config birl_baxter_gripper.launch

6.运行实验

rosrun birl_kitting_experiment smach_based_kitting_experiment_runner.py

7.启动异常检测 运行这条命令之前,需要采集到足够的正常数据训练模型才能够有效的检测到异常,一般来说每一个阶段都需要5组数据

rosrun smach_based_introspection_framework anomaly_detection.py

8.启动异常分类 同样的,要能够做到异常分类,我们需要采集到足够多的异常数据

rosrun smach_based_introspection_framework redis_based_anomaly_classification.py

数据处理

1.采集数据 本系统为数据驱动的方法,需要有足够的实验数据来训练模型。为了采集数据,我们需要运行命令1-6。采集的数据是以ROSBAG的格式储存在 smach_based_introspection_framework/introspection_data_folder/experiment_record_folder

2.RosbagtoCsv 为了便于处理,我们将bag文件转成了csv。完成后数据存储在smach_based_introspection_framework/introspection_data_folder/dataset_folder/

rosrun smach_based_introspection_framework  process_experiment_record_to_dataset.py

3.训练模型 训练完模型之后,模型存储在smach_based_introspection_framework/introspection_data_folder/model_folder/