Kinect XBOX 360和六轴机械臂的实时映射
时间:2019-06
地点:深圳
邮箱:583259763@qq.com
=================================================================================
内容概要:
1.如何使用ROS控制UR5机械臂;
2.使用Kinect 1 进行人体骨骼追踪;
3.将提取的骨骼关节角度参数传给UR5机械臂。
环境及主要工具:
Ubuntu16.04、ROS(Kinetic)、CLion、OpenNI等等。
=================================================================================
ROS与UR5机械臂的通讯
UR5系列的机械臂支持使用ROS进行控制,相关的功能包在ROS开源社区就可以找到。所以安装相关的功能包非常的简单,使用如下的命令就可以:
sudo apt-get install ros-kinetic-universal-robot
当时控制真实UR机械臂时这个功能包会有问题,解决方法可以参照下面的链接ur机械臂实体联调解决方法,这样我们就完成了第一步。
Kinect1 进行人体骨骼追踪
首先我们说一下骨架空间,在Kinect里面,是通过20个关节点来表示一个骨架的,具体可以由图3-8看到。当你走进Kinect的视野范围的时候,Kinect就可以把你的20个关节点的位置找到(此时你得站着),位置通过(x,y,z)坐标表示。这样。你在Kinect前面做的很多复杂的动作的时候,因为人的动作和这些关节点的位置的变化由很大的关系。当电脑拿到这些数据后,对理解你做什么动作就很有帮助了。
骨骼追踪
在Ubuntu上使用的IDE是CLion,用起来很方便,Openni提取骨架信息代码如下:
#include <stdlib.h>
#include <iostream>
#include <vector>
#include <XnCppWrapper.h>
#include <XnModuleCppInterface.h>
#include "cv.h"
#include "highgui.h"
using namespace std;
using namespace cv;
//#pragma comment (lib,"cv210")
//#pragma comment (lib,"cxcore210")
//#pragma comment (lib,"highgui210")
//#pragma comment (lib,"OpenNI")
//【1】
xn::UserGenerator userGenerator;
xn::DepthGenerator depthGenerator;
xn::ImageGenerator imageGenerator;
/*
XN_SKEL_HEAD = 1, XN_SKEL_NECK = 2,
XN_SKEL_TORSO = 3, XN_SKEL_WAIST = 4,
XN_SKEL_LEFT_COLLAR = 5, XN_SKEL_LEFT_SHOULDER = 6,
XN_SKEL_LEFT_ELBOW = 7, XN_SKEL_LEFT_WRIST = 8,
XN_SKEL_LEFT_HAND = 9, XN_SKEL_LEFT_FINGERTIP =10,
XN_SKEL_RIGHT_COLLAR =11, XN_SKEL_RIGHT_SHOULDER =12,
XN_SKEL_RIGHT_ELBOW =13, XN_SKEL_RIGHT_WRIST =14,
XN_SKEL_RIGHT_HAND =15, XN_SKEL_RIGHT_FINGERTIP =16,
XN_SKEL_LEFT_HIP =17, XN_SKEL_LEFT_KNEE =18,
XN_SKEL_LEFT_ANKLE =19, XN_SKEL_LEFT_FOOT =20,
XN_SKEL_RIGHT_HIP =21, XN