Skip to content

Demo_cn

段双达 edited this page Jan 6, 2019 · 2 revisions

如何运行代码

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