From ros-users-bounces@code.ros.org  Sun Mar 27 20:29:44 2011
Return-Path: <ros-users-bounces@code.ros.org>
X-Original-To: www-data@code.ros.org
Delivered-To: www-data@code.ros.org
Received: from pub5.willowgarage.com (localhost [127.0.0.1])
	by pub5.willowgarage.com (Postfix) with ESMTP id D96552EC689;
	Sun, 27 Mar 2011 20:29:44 -0700 (PDT)
X-Original-To: ros-users@code.ros.org
Delivered-To: ros-users@code.ros.org
Received: from smtp.stanford.edu (smtp2.Stanford.EDU [171.67.219.82])
	by pub5.willowgarage.com (Postfix) with ESMTPS id 4449725C7D2
	for <ros-users@code.ros.org>; Sun, 27 Mar 2011 20:29:44 -0700 (PDT)
Received: from smtp.stanford.edu (localhost.localdomain [127.0.0.1])
	by localhost (Postfix) with SMTP id DCD648238;
	Sun, 27 Mar 2011 20:29:43 -0700 (PDT)
Received: from [192.168.1.4] (c-76-21-117-180.hsd1.ca.comcast.net
	[76.21.117.180])
	(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
	(No client certificate requested) (Authenticated sender: pgoebel)
	by smtp.stanford.edu (Postfix) with ESMTPSA id 394788236;
	Sun, 27 Mar 2011 20:29:43 -0700 (PDT)
Message-ID: <4D9000A6.4090900@pirobot.org>
Date: Sun, 27 Mar 2011 20:29:42 -0700
From: Patrick Goebel <patrick@pirobot.org>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US;
	rv:1.9.2.13) Gecko/20101208 Thunderbird/3.1.7
MIME-Version: 1.0
To: User discussions <ros-users@code.ros.org>
References: <AANLkTikQZsiEVV0m0FR8gEhwdQMeRzshQqr0LaLx9BJq@mail.gmail.com>	<4D8E2C58.3010806@pirobot.org>	<AANLkTi=3sicX4uDT7hsbZ7tmituwwm9oOTQSADgVuJha@mail.gmail.com>	<4D8E53D2.6020708@pirobot.org>
	<AANLkTi=4nMHCpUsd4dFR=5ivtPcAWaH2MfFdo0+cVuFs@mail.gmail.com>
In-Reply-To: <AANLkTi=4nMHCpUsd4dFR=5ivtPcAWaH2MfFdo0+cVuFs@mail.gmail.com>
Subject: Re: [ros-users] Skeletons
X-BeenThere: ros-users@code.ros.org
X-Mailman-Version: 2.1.9
Precedence: list
Reply-To: User discussions <ros-users@code.ros.org>
List-Id: User discussions <ros-users.code.ros.org>
List-Unsubscribe: <https://code.ros.org/mailman/listinfo/ros-users>,
	<mailto:ros-users-request@code.ros.org?subject=unsubscribe>
List-Archive: </lurker/list/ros-users.html>
List-Post: <mailto:ros-users@code.ros.org>
List-Help: <mailto:ros-users-request@code.ros.org?subject=help>
List-Subscribe: <https://code.ros.org/mailman/listinfo/ros-users>,
	<mailto:ros-users-request@code.ros.org?subject=subscribe>
Content-Type: multipart/mixed; boundary="===============5666148962016030866=="
Mime-version: 1.0
Sender: ros-users-bounces@code.ros.org
Errors-To: ros-users-bounces@code.ros.org

This is a multi-part message in MIME format.
--===============5666148962016030866==
Content-Type: multipart/alternative;
 boundary="------------010100070209010106040302"

This is a multi-part message in MIME format.
--------------010100070209010106040302
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

Hi Marcus,

I haven't thought through use cases very much but one application would 
be creating a library of human gestures and poses that the robot can 
learn to recognize.  The only reason I created a Skeleton message type 
for my pi_tracker package is that I wanted to have access to the joint 
confidence values.  Otherwise, I think the standard ROS tf/tfMessage 
type comes close.

In the meantime, and just for fun, I have created a skeleton_markers 
package at:

http://www.ros.org/wiki/skeleton_markers

This allows the visualization of the tracked joints in RViz.  There are 
two ways to run the package--two different Python scripts: one is used 
with pi_tracker and subscribes to the skeleton message topic.  The other 
uses just the transforms published by the openni_tracker package.  See 
the Wiki page for details.  Here is a short video of the result:

http://www.youtube.com/watch?v=nTRi_kIgGW0

--patrick

On 03/26/2011 03:27 PM, Marcus Liebhardt wrote:
> Hi there!
>
> That indeed looks like a tree to me.
> I would be interested in the use cases you have in mind for these 
> skeleton messages.
> What information would you like to gather in those messages?
> Poses of the tracked frames, interconnections of each frame, also 
> distances between the connected frames?
>
> I don't have deep knowledge about the processing of the KInect or the 
> openni_tracker. I'm currently just using the transforms. But I think 
> there are simplifications made for some frames, which could be useful 
> to take into account. For example, I think the neck is always half way 
> between the left and right shoulder, and the head is always on top of 
> it. Things like that might be interesting as well to keep in the 
> message, so that one can easily reproduce the previously mentioned 
> skeleton - if that is one of the use cases.
>
> Best regards,
>
> :-) Marcus
>
>
>
> 2011/3/26 Patrick Goebel <patrick@pirobot.org 
> <mailto:patrick@pirobot.org>>
>
>     I see what you mean--the user looks more like a cactus than a
>     tree. :)))  However, I think if you take the torso joint as the
>     root, don't you end up with a tree structure?  e.g.
>
>     torso->neck->head
>     torso->left_shoulder->left_elbow->left_hand
>     torso->right_shoulder->right_elbow->right_hand
>     torso->left_hip->left_knee->left_foot
>     torso->right_hip->right_knee->right_foot
>
>     Maybe this is what you meant by it depends on how you define them.
>
>     --patrick
>
>
>     On 03/26/2011 12:22 PM, David Lu!! wrote:
>>     It depends on how you define them. The skeleton visualized with
>>     the kinect (
>>     http://www.ros.org/wiki/openni_tracker?action=AttachFile&do=get&target=nite.png
>>     <http://www.ros.org/wiki/openni_tracker?action=AttachFile&do=get&target=nite.png>)
>>     isn't a tree, although it could be converted to be one, I suppose
>>
>>     On Sat, Mar 26, 2011 at 1:11 PM, Patrick Goebel
>>     <patrick@pirobot.org <mailto:patrick@pirobot.org>> wrote:
>>
>>         Hi David,
>>
>>         I agree it would be nice to have a standardized Skeleton
>>         message.  If all skeleton's are trees (is this true?) then
>>         perhaps an existing tree message type could be used if it
>>         exists.  KDL has kinematic chains and tf is already built
>>         around trees (right?).  That's about as far as I've thought
>>         it through...
>>
>>         --patrick
>>
>>
>>         On 03/22/2011 04:17 PM, David Lu!! wrote:
>>>         Hey Ros-users-
>>>
>>>         Has there been any talk of creating a standardized Skeleton
>>>         message? Right now, it seems like the openni_tracker package
>>>         just publishes transforms. It seems like if the Kinect does
>>>         skeleton tracking, there should be a skeleton message.
>>>
>>>         I know pi_tracker has its own Skeleton message, which looks
>>>         like it might fit the bill, although I don't think it
>>>         defines which parts are connected (hip bone is connected to
>>>         the thigh bone).
>>>         http://www.ros.org/doc/api/pi_tracker/html/msg/Skeleton.html
>>>
>>>         It might be good to have for not only the Kinect, but for
>>>         other motion capture rigs (Vicon and the like).
>>>
>>>         Are there any other similar message out there?
>>>
>>>         -David!!
>>>
>>>
>>>         _______________________________________________
>>>         ros-users mailing list
>>>         ros-users@code.ros.org  <mailto:ros-users@code.ros.org>
>>>         https://code.ros.org/mailman/listinfo/ros-users
>>
>>
>
>     _______________________________________________
>     ros-users mailing list
>     ros-users@code.ros.org <mailto:ros-users@code.ros.org>
>     https://code.ros.org/mailman/listinfo/ros-users
>
>
>
> _______________________________________________
> ros-users mailing list
> ros-users@code.ros.org
> https://code.ros.org/mailman/listinfo/ros-users

--------------010100070209010106040302
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#ffffff">
    Hi Marcus,<br>
    <br>
    I haven't thought through use cases very much but one application
    would be creating a library of human gestures and poses that the
    robot can learn to recognize.&nbsp; The only reason I created a Skeleton
    message type for my pi_tracker package is that I wanted to have
    access to the joint confidence values.&nbsp; Otherwise, I think the
    standard ROS tf/tfMessage type comes close.<br>
    <br>
    In the meantime, and just for fun, I have created a skeleton_markers
    package at:<br>
    <br>
    <a class="moz-txt-link-freetext" href="http://www.ros.org/wiki/skeleton_markers">http://www.ros.org/wiki/skeleton_markers</a><br>
    <br>
    This allows the visualization of the tracked joints in RViz.&nbsp; There
    are two ways to run the package--two different Python scripts: one
    is used with pi_tracker and subscribes to the skeleton message
    topic.&nbsp; The other uses just the transforms published by the
    openni_tracker package.&nbsp; See the Wiki page for details.&nbsp; Here is a
    short video of the result:<br>
    <br>
    <a class="moz-txt-link-freetext" href="http://www.youtube.com/watch?v=nTRi_kIgGW0">http://www.youtube.com/watch?v=nTRi_kIgGW0</a><br>
    <br>
    --patrick<br>
    <br>
    On 03/26/2011 03:27 PM, Marcus Liebhardt wrote:
    <blockquote
      cite="mid:AANLkTi=4nMHCpUsd4dFR=5ivtPcAWaH2MfFdo0+cVuFs@mail.gmail.com"
      type="cite">Hi there!<br>
      <br>
      That indeed looks like a tree to me.<br>
      I would be interested in the use cases you have in mind for these
      skeleton messages.<br>
      What information would you like to gather in those messages?<br>
      Poses of the tracked frames, interconnections of each frame, also
      distances between the connected frames?<br>
      <br>
      I don't have deep knowledge about the processing of the KInect or
      the openni_tracker. I'm currently just using the transforms. But I
      think there are simplifications made for some frames, which could
      be useful to take into account. For example, I think the neck is
      always half way between the left and right shoulder, and the head
      is always on top of it. Things like that might be interesting as
      well to keep in the message, so that one can easily reproduce the
      previously mentioned skeleton - if that is one of the use cases.<br>
      <br>
      Best regards,<br>
      <br>
      :-) Marcus<br>
      <br>
      <br>
      <br>
      <div class="gmail_quote">2011/3/26 Patrick Goebel <span dir="ltr">&lt;<a
            moz-do-not-send="true" href="mailto:patrick@pirobot.org"
            target="_blank">patrick@pirobot.org</a>&gt;</span><br>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <div text="#000000" bgcolor="#ffffff"> I see what you
            mean--the user looks more like a cactus than a tree. :)))&nbsp;
            However, I think if you take the torso joint as the root,
            don't you end up with a tree structure?&nbsp; e.g.<br>
            <br>
            torso-&gt;neck-&gt;head<br>
            torso-&gt;left_shoulder-&gt;left_elbow-&gt;left_hand<br>
            torso-&gt;right_shoulder-&gt;right_elbow-&gt;right_hand<br>
            torso-&gt;left_hip-&gt;left_knee-&gt;left_foot<br>
            torso-&gt;right_hip-&gt;right_knee-&gt;right_foot<br>
            <br>
            Maybe this is what you meant by it depends on how you define
            them.<br>
            <font color="#888888"> <br>
              --patrick</font>
            <div>
              <div><br>
                <br>
                On 03/26/2011 12:22 PM, David Lu!! wrote:
                <blockquote type="cite">It depends on how you define
                  them. The skeleton visualized with the kinect ( <a
                    moz-do-not-send="true"
href="http://www.ros.org/wiki/openni_tracker?action=AttachFile&amp;do=get&amp;target=nite.png"
                    target="_blank">http://www.ros.org/wiki/openni_tracker?action=AttachFile&amp;do=get&amp;target=nite.png</a>)
                  isn't a tree, although it could be converted to be
                  one, I suppose&nbsp;<br>
                  <br>
                  <div class="gmail_quote">On Sat, Mar 26, 2011 at 1:11
                    PM, Patrick Goebel <span dir="ltr">&lt;<a
                        moz-do-not-send="true"
                        href="mailto:patrick@pirobot.org"
                        target="_blank">patrick@pirobot.org</a>&gt;</span>
                    wrote:<br>
                    <blockquote class="gmail_quote" style="margin: 0pt
                      0pt 0pt 0.8ex; border-left: 1px solid rgb(204,
                      204, 204); padding-left: 1ex;">
                      <div text="#000000" bgcolor="#ffffff"> Hi David,<br>
                        <br>
                        I agree it would be nice to have a standardized
                        Skeleton message.&nbsp; If all skeleton's are trees
                        (is this true?) then perhaps an existing tree
                        message type could be used if it exists.&nbsp; KDL
                        has kinematic chains and tf is already built
                        around trees (right?).&nbsp; That's about as far as
                        I've thought it through...<br>
                        <br>
                        --patrick
                        <div>
                          <div><br>
                            <br>
                            On 03/22/2011 04:17 PM, David Lu!! wrote: </div>
                        </div>
                        <blockquote type="cite">
                          <div>
                            <div>Hey Ros-users-
                              <div><br>
                              </div>
                              <div>Has there been any talk of creating a
                                standardized Skeleton message? Right
                                now, it seems like the openni_tracker
                                package just publishes transforms. It
                                seems like if the Kinect does skeleton
                                tracking, there should be a skeleton
                                message.&nbsp;</div>
                              <div><br>
                              </div>
                              <div>I know pi_tracker has its own
                                Skeleton message, which looks like it
                                might fit the bill, although I don't
                                think it defines which parts are
                                connected (hip bone is connected to the
                                thigh bone).&nbsp;</div>
                              <div> <a moz-do-not-send="true"
                                  href="http://www.ros.org/doc/api/pi_tracker/html/msg/Skeleton.html"
                                  target="_blank">http://www.ros.org/doc/api/pi_tracker/html/msg/Skeleton.html</a></div>
                              <div><br>
                              </div>
                              <div>It might be good to have for not only
                                the Kinect, but for other motion capture
                                rigs (Vicon and the like).&nbsp;</div>
                              <div><br>
                              </div>
                              <div>Are there any other similar message
                                out there?</div>
                              <div><br>
                              </div>
                              <div>-David!!</div>
                            </div>
                          </div>
                          <pre><fieldset></fieldset>
_______________________________________________
ros-users mailing list
<a moz-do-not-send="true" href="mailto:ros-users@code.ros.org" target="_blank">ros-users@code.ros.org</a>
<a moz-do-not-send="true" href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a>
</pre>
                        </blockquote>
                      </div>
                    </blockquote>
                  </div>
                  <br>
                </blockquote>
              </div>
            </div>
          </div>
          <br>
          _______________________________________________<br>
          ros-users mailing list<br>
          <a moz-do-not-send="true" href="mailto:ros-users@code.ros.org"
            target="_blank">ros-users@code.ros.org</a><br>
          <a moz-do-not-send="true"
            href="https://code.ros.org/mailman/listinfo/ros-users"
            target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
          <br>
        </blockquote>
      </div>
      <br>
      <pre wrap="">
<fieldset class="mimeAttachmentHeader"></fieldset>
_______________________________________________
ros-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a>
<a class="moz-txt-link-freetext" href="https://code.ros.org/mailman/listinfo/ros-users">https://code.ros.org/mailman/listinfo/ros-users</a>
</pre>
    </blockquote>
  </body>
</html>

--------------010100070209010106040302--

--===============5666148962016030866==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
ros-users mailing list
ros-users@code.ros.org
https://code.ros.org/mailman/listinfo/ros-users

--===============5666148962016030866==--

