Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arduino 如何获得SKEL_头kinect的x位置?_Arduino_Processing_Kinect - Fatal编程技术网

Arduino 如何获得SKEL_头kinect的x位置?

Arduino 如何获得SKEL_头kinect的x位置?,arduino,processing,kinect,Arduino,Processing,Kinect,我正在用Arduino、Processing和Kinect编写安装代码。 我想要的是从处理Kinect用户的示例代码中获取SKEL_头的x-as 稍后,我想将我头部的x-as映射到180度伺服电机 现在,当Kinect处于活动状态时,我在头上画一个红色圆圈 void drawSkeleton(int userId) { // to get the 3d joint data /* PVector jointPos = new PVector(); context.getJoint

我正在用Arduino、Processing和Kinect编写安装代码。 我想要的是从处理Kinect用户的示例代码中获取SKEL_头的x-as

稍后,我想将我头部的x-as映射到180度伺服电机

现在,当Kinect处于活动状态时,我在头上画一个红色圆圈

void drawSkeleton(int userId) {
  // to get the 3d joint data
  /*
  PVector jointPos = new PVector();
  context.getJointPositionSkeleton(userId,SimpleOpenNI.SKEL_NECK,jointPos);
  println(jointPos);
  */

  // Get X position of HEAD
  PVector jointPos = new PVector();
  context.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_HEAD, jointPos);
  println("jointPos " + jointPos);

  PVector jointPos2d = new PVector();
  context.convertRealWorldToProjective(jointPos,jointPos2d);  


  fill(255,0,0); // Fill the shape
  ellipse(jointPos2d.x, jointPos2d.y, 40,40); // Create the shape

你的代码应该可以工作。调用ConvertRealWorldTopProjective应将三维坐标转换为二维坐标。我想知道的是,这是否是您想要的贴图:头部的2d位置,而不是头部在Y轴上的旋转

如果你想映射头部的旋转,你应该能够分解头部关节的3D变换矩阵,尽管我不确定这会有多精确。如果这不起作用,就没有办法确定头部的方位

如果您所追求的是映射到伺服位置的2D位置,那么只要跟踪您所追求的骨架,就应该简单地调用函数来对齐位置范围(可能是0-640px,取决于您的kinect设置,也可能是0-180,取决于您的伺服设置-值可能会偏移一点

绘制一个自上而下的视图,将头部在平面中的位置映射到伺服旋转可能会很方便。这听起来有点像“看”场景,伺服需要旋转,以便对象面对头部2d位置