merging different joint_states

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

merging different joint_states

Ugo Cupcic
Hi,

I have an arm and a hand publishing different joint_states messages and I'd like to merge them (having seen this discussion: http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html)

Is there an existing node to merge the joint_states messages, or do I need to implement mine?

Cheers,

Ugo

--
Ugo Cupcic | Shadow Robot Company | [hidden email]
Software Engineer | 251 Liverpool Road |
need a Hand? | London N1 1LX | +44 20 7700 2487
http://www.shadowrobot.com/hand/ @shadowrobot


_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
dlu
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

dlu
Ugo-
Your email reminded me that I was thinking about adding this feature to joint_state_publisher. I've attached a version that I'll upload to our repository after a little more testing. 

    <node name="joint_state_publisher" type="joint_state_publisher" pkg="joint_state_publisher" output="screen">
        <param name="robot_description" textfile="model.urdf" />
        <rosparam param="source_list">[head_states, body_states]</rosparam>
    </node>

This is how I launch it to merge the JointStates published on head_states and body_states. 

Let me know how well it works. 

-David!!


On Wed, Jan 19, 2011 at 8:42 AM, Ugo Cupcic <[hidden email]> wrote:
Hi,

I have an arm and a hand publishing different joint_states messages and I'd like to merge them (having seen this discussion: http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html)

Is there an existing node to merge the joint_states messages, or do I need to implement mine?

Cheers,

Ugo

--
Ugo Cupcic | Shadow Robot Company | [hidden email]
Software Engineer | 251 Liverpool Road |
need a Hand? | London N1 1LX | +44 20 7700 2487
http://www.shadowrobot.com/hand/ @shadowrobot


_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users



_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users

joint_state_publisher (9K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Weißhardt, Florian
AW: [ros-users] merging different joint_states

Hi,

we solved the problem with a joint state aggregator. You can find the package in the cob_driver stack (installation with sudo apt-get install ros-cturtle-care-o-bot), the package is called cob_joint_state_aggregator.

The aggregator collects all messages on the topic "joint_states" and combines them to a unique message published to "joint_states_combined" which is then used as an input for the joint_state_publisher to calculate tf. To configure it for your robot have a look at the /ros/launch/cob3-yaml file, where you have to specify the joint_names for your robot.

I hope this helps.

Regards,
Florian




-----Ursprüngliche Nachricht-----
Von: [hidden email] im Auftrag von David Lu!!
Gesendet: Mi 19.01.2011 21:07
An: User discussions
Betreff: Re: [ros-users] merging different joint_states

Ugo-
Your email reminded me that I was thinking about adding this feature to
joint_state_publisher. I've attached a version that I'll upload to our
repository after a little more testing.

    <node name="joint_state_publisher" type="joint_state_publisher"
pkg="joint_state_publisher" output="screen">
        <param name="robot_description" textfile="model.urdf" />
        <rosparam param="source_list">[head_states, body_states]</rosparam>
    </node>

This is how I launch it to merge the JointStates published on head_states
and body_states.

Let me know how well it works.

-David!!


On Wed, Jan 19, 2011 at 8:42 AM, Ugo Cupcic <[hidden email]> wrote:

> Hi,
>
> I have an arm and a hand publishing different joint_states messages and I'd
> like to merge them (having seen this discussion:
> http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html
> )
>
> Is there an existing node to merge the joint_states messages, or do I need
> to implement mine?
>
> Cheers,
>
> Ugo
>
> --
> Ugo Cupcic | Shadow Robot Company | [hidden email]
> Software Engineer | 251 Liverpool Road |
> need a Hand? | London N1 1LX | +44 20 7700 2487
> http://www.shadowrobot.com/hand/ @shadowrobot
>
>
> _______________________________________________
> ros-users mailing list
> [hidden email]
> https://code.ros.org/mailman/listinfo/ros-users
>
>


_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Lorenz Mösenlechner
Hi,

we found this solution pretty impractical. It introduces an error to
the TF transforms' time stamps.

The problem is that, since the JointState message has only one time
stamp for all joint states, I don't see a correct way to calculate the
correct time stamp for the merged message. That means the TF
transforms' time stamps will we wrong in any case. The only solution
we found is to not use an aggregator but to extend the
joint_state_publisher to be able to handle joint states from different
topics that produces different time stamps for the tf frames from the
different sources.

Lorenz

> Hi,
>
> we solved the problem with a joint state aggregator. You can find the package in the cob_driver stack (installation with sudo apt-get install ros-cturtle-care-o-bot), the package is called cob_joint_state_aggregator.
>
> The aggregator collects all messages on the topic "joint_states" and combines them to a unique message published to "joint_states_combined" which is then used as an input for the joint_state_publisher to calculate tf. To configure it for your robot have a look at the /ros/launch/cob3-yaml file, where you have to specify the joint_names for your robot.
>
> I hope this helps.
>
> Regards,
> Florian
>
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: [hidden email] im Auftrag von David Lu!!
> Gesendet: Mi 19.01.2011 21:07
> An: User discussions
> Betreff: Re: [ros-users] merging different joint_states
>  
> Ugo-
> Your email reminded me that I was thinking about adding this feature to
> joint_state_publisher. I've attached a version that I'll upload to our
> repository after a little more testing.
>
>     <node name="joint_state_publisher" type="joint_state_publisher"
> pkg="joint_state_publisher" output="screen">
>         <param name="robot_description" textfile="model.urdf" />
>         <rosparam param="source_list">[head_states, body_states]</rosparam>
>     </node>
>
> This is how I launch it to merge the JointStates published on head_states
> and body_states.
>
> Let me know how well it works.
>
> -David!!
>
>
> On Wed, Jan 19, 2011 at 8:42 AM, Ugo Cupcic <[hidden email]> wrote:
>
> > Hi,
> >
> > I have an arm and a hand publishing different joint_states messages and I'd
> > like to merge them (having seen this discussion:
> > http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html
> > )
> >
> > Is there an existing node to merge the joint_states messages, or do I need
> > to implement mine?
> >
> > Cheers,
> >
> > Ugo
> >
> >
> >
> > _______________________________________________
> > ros-users mailing list
> > [hidden email]
> > https://code.ros.org/mailman/listinfo/ros-users
> >
> >
>

> _______________________________________________
> ros-users mailing list
> [hidden email]
> https://code.ros.org/mailman/listinfo/ros-users


--
Lorenz Mösenlechner            | [hidden email]
Technische Universität München | Boltzmannstr. 3
85748 Garching bei München     | Germany
http://ias.cs.tum.edu/         | Tel: +49 (89) 289-26910
_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Weißhardt, Florian
Hi,

I know about the mentioned shortcomings, but for us the error was acceptable if you run the aggregator fast enough.

Of course the better way is to modify the joint_state_publisher: Do you have a solution for it which you could share?

Regards,
Florian


-----Ursprüngliche Nachricht-----
Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Lorenz Mösenlechner
Gesendet: Donnerstag, 20. Januar 2011 09:42
An: User discussions
Betreff: Re: [ros-users] merging different joint_states

Hi,

we found this solution pretty impractical. It introduces an error to
the TF transforms' time stamps.

The problem is that, since the JointState message has only one time
stamp for all joint states, I don't see a correct way to calculate the
correct time stamp for the merged message. That means the TF
transforms' time stamps will we wrong in any case. The only solution
we found is to not use an aggregator but to extend the
joint_state_publisher to be able to handle joint states from different
topics that produces different time stamps for the tf frames from the
different sources.

Lorenz

> Hi,
>
> we solved the problem with a joint state aggregator. You can find the package in the cob_driver stack (installation with sudo apt-get install ros-cturtle-care-o-bot), the package is called cob_joint_state_aggregator.
>
> The aggregator collects all messages on the topic "joint_states" and combines them to a unique message published to "joint_states_combined" which is then used as an input for the joint_state_publisher to calculate tf. To configure it for your robot have a look at the /ros/launch/cob3-yaml file, where you have to specify the joint_names for your robot.
>
> I hope this helps.
>
> Regards,
> Florian
>
>
>
>
> -----Ursprüngliche Nachricht-----
> Von: [hidden email] im Auftrag von David Lu!!
> Gesendet: Mi 19.01.2011 21:07
> An: User discussions
> Betreff: Re: [ros-users] merging different joint_states
>  
> Ugo-
> Your email reminded me that I was thinking about adding this feature to
> joint_state_publisher. I've attached a version that I'll upload to our
> repository after a little more testing.
>
>     <node name="joint_state_publisher" type="joint_state_publisher"
> pkg="joint_state_publisher" output="screen">
>         <param name="robot_description" textfile="model.urdf" />
>         <rosparam param="source_list">[head_states, body_states]</rosparam>
>     </node>
>
> This is how I launch it to merge the JointStates published on head_states
> and body_states.
>
> Let me know how well it works.
>
> -David!!
>
>
> On Wed, Jan 19, 2011 at 8:42 AM, Ugo Cupcic <[hidden email]> wrote:
>
> > Hi,
> >
> > I have an arm and a hand publishing different joint_states messages and I'd
> > like to merge them (having seen this discussion:
> > http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html
> > )
> >
> > Is there an existing node to merge the joint_states messages, or do I need
> > to implement mine?
> >
> > Cheers,
> >
> > Ugo
> >
> >
> >
> > _______________________________________________
> > ros-users mailing list
> > [hidden email]
> > https://code.ros.org/mailman/listinfo/ros-users
> >
> >
>

> _______________________________________________
> ros-users mailing list
> [hidden email]
> https://code.ros.org/mailman/listinfo/ros-users


--
Lorenz Mösenlechner            | [hidden email]
Technische Universität München | Boltzmannstr. 3
85748 Garching bei München     | Germany
http://ias.cs.tum.edu/         | Tel: +49 (89) 289-26910
_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Ingo Kresse
Hi,

On 01/20/2011 12:40 PM, Weißhardt, Florian wrote:
> Hi,
>
> I know about the mentioned shortcomings, but for us the error was acceptable if you run the aggregator fast enough.
>
> Of course the better way is to modify the joint_state_publisher: Do you have a solution for it which you could share?

There is an implementation in tum-ros-pkgs:

https://tum-ros-pkg.svn.sourceforge.net/svnroot/tum-ros-pkg

in the package robot_state_chain_publisher. It consumes arbitrary
messages on /joint_states and stores time, name and angle. It also sends
tfs for joints, which have sent no joint state message for a while (so
the robot is still visible in rviz, even without a joint state publisher).

The task is a bit tricky: The timestamps should not be touched, since
jitter in the timestamps induces jitter in the tfs. Duplicating a tf
message (with the same timestamp!) also affects the interpolation. And,
of course, we want to limit the tf publishing rate.

As the name suggests, this version does not make the tf tree a "bush"
but keeps the transform chains. We need this information for the
calculation of uncertainties in the transforms.

But these are two completely independent features.

Best regards,
Ingo

P.S.: There are still some nodes which do not use tf but the joint state
message directly, like the robot self filter. So at our lab we'll need
both: a joint state aggregator and an enhanced robot_state_publisher.


>
> Regards,
> Florian
>
>
> -----Ursprüngliche Nachricht-----
> Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Lorenz Mösenlechner
> Gesendet: Donnerstag, 20. Januar 2011 09:42
> An: User discussions
> Betreff: Re: [ros-users] merging different joint_states
>
> Hi,
>
> we found this solution pretty impractical. It introduces an error to
> the TF transforms' time stamps.
>
> The problem is that, since the JointState message has only one time
> stamp for all joint states, I don't see a correct way to calculate the
> correct time stamp for the merged message. That means the TF
> transforms' time stamps will we wrong in any case. The only solution
> we found is to not use an aggregator but to extend the
> joint_state_publisher to be able to handle joint states from different
> topics that produces different time stamps for the tf frames from the
> different sources.
>
> Lorenz
>
>> Hi,
>>
>> we solved the problem with a joint state aggregator. You can find the package in the cob_driver stack (installation with sudo apt-get install ros-cturtle-care-o-bot), the package is called cob_joint_state_aggregator.
>>
>> The aggregator collects all messages on the topic "joint_states" and combines them to a unique message published to "joint_states_combined" which is then used as an input for the joint_state_publisher to calculate tf. To configure it for your robot have a look at the /ros/launch/cob3-yaml file, where you have to specify the joint_names for your robot.
>>
>> I hope this helps.
>>
>> Regards,
>> Florian
>>
>>
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: [hidden email] im Auftrag von David Lu!!
>> Gesendet: Mi 19.01.2011 21:07
>> An: User discussions
>> Betreff: Re: [ros-users] merging different joint_states
>>
>> Ugo-
>> Your email reminded me that I was thinking about adding this feature to
>> joint_state_publisher. I've attached a version that I'll upload to our
>> repository after a little more testing.
>>
>>      <node name="joint_state_publisher" type="joint_state_publisher"
>> pkg="joint_state_publisher" output="screen">
>>          <param name="robot_description" textfile="model.urdf" />
>>          <rosparam param="source_list">[head_states, body_states]</rosparam>
>>      </node>
>>
>> This is how I launch it to merge the JointStates published on head_states
>> and body_states.
>>
>> Let me know how well it works.
>>
>> -David!!
>>
>>
>> On Wed, Jan 19, 2011 at 8:42 AM, Ugo Cupcic<[hidden email]>  wrote:
>>
>>> Hi,
>>>
>>> I have an arm and a hand publishing different joint_states messages and I'd
>>> like to merge them (having seen this discussion:
>>> http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html
>>> )
>>>
>>> Is there an existing node to merge the joint_states messages, or do I need
>>> to implement mine?
>>>
>>> Cheers,
>>>
>>> Ugo
>>>
>>>
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>> [hidden email]
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>>
>>
>
>> _______________________________________________
>> ros-users mailing list
>> [hidden email]
>> https://code.ros.org/mailman/listinfo/ros-users
>
>

_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Lorenz Mösenlechner
In reply to this post by Weißhardt, Florian
Hi,

our state publisher is based on a pretty old version of
joint_state_publisher with the difference that it does not 'flatten'
the transform tree and supports multiple joint state sources.
You can find it in our repository:

https://tum-ros-pkg.svn.sourceforge.net/svnroot/tum-ros-pkg/robot_model/robot_state_chain_publisher/

It is not perfect, but it works for us.

However, the aggregator solution, if it worked properly, feels much
cleaner. To solve the time stamp problem, I guess the only thing that
is missing is a per-joint time stamp in the joint state message.

Lorenz

> Hi,
>
> I know about the mentioned shortcomings, but for us the error was acceptable if you run the aggregator fast enough.
>
> Of course the better way is to modify the joint_state_publisher: Do you have a solution for it which you could share?
>
> Regards,
> Florian
>
>
> -----Ursprüngliche Nachricht-----
> Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Lorenz Mösenlechner
> Gesendet: Donnerstag, 20. Januar 2011 09:42
> An: User discussions
> Betreff: Re: [ros-users] merging different joint_states
>
> Hi,
>
> we found this solution pretty impractical. It introduces an error to
> the TF transforms' time stamps.
>
> The problem is that, since the JointState message has only one time
> stamp for all joint states, I don't see a correct way to calculate the
> correct time stamp for the merged message. That means the TF
> transforms' time stamps will we wrong in any case. The only solution
> we found is to not use an aggregator but to extend the
> joint_state_publisher to be able to handle joint states from different
> topics that produces different time stamps for the tf frames from the
> different sources.
>
> Lorenz
>
> > Hi,
> >
> > we solved the problem with a joint state aggregator. You can find the package in the cob_driver stack (installation with sudo apt-get install ros-cturtle-care-o-bot), the package is called cob_joint_state_aggregator.
> >
> > The aggregator collects all messages on the topic "joint_states" and combines them to a unique message published to "joint_states_combined" which is then used as an input for the joint_state_publisher to calculate tf. To configure it for your robot have a look at the /ros/launch/cob3-yaml file, where you have to specify the joint_names for your robot.
> >
> > I hope this helps.
> >
> > Regards,
> > Florian
> >
> >
> >
> >
> > -----Ursprüngliche Nachricht-----
> > Von: [hidden email] im Auftrag von David Lu!!
> > Gesendet: Mi 19.01.2011 21:07
> > An: User discussions
> > Betreff: Re: [ros-users] merging different joint_states
> >  
> > Ugo-
> > Your email reminded me that I was thinking about adding this feature to
> > joint_state_publisher. I've attached a version that I'll upload to our
> > repository after a little more testing.
> >
> >     <node name="joint_state_publisher" type="joint_state_publisher"
> > pkg="joint_state_publisher" output="screen">
> >         <param name="robot_description" textfile="model.urdf" />
> >         <rosparam param="source_list">[head_states, body_states]</rosparam>
> >     </node>
> >
> > This is how I launch it to merge the JointStates published on head_states
> > and body_states.
> >
> > Let me know how well it works.
> >
> > -David!!
> >
> >
> > On Wed, Jan 19, 2011 at 8:42 AM, Ugo Cupcic <[hidden email]> wrote:
> >
> > > Hi,
> > >
> > > I have an arm and a hand publishing different joint_states messages and I'd
> > > like to merge them (having seen this discussion:
> > > http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html
> > > )
> > >
> > > Is there an existing node to merge the joint_states messages, or do I need
> > > to implement mine?
> > >
> > > Cheers,
> > >
> > > Ugo
> > >
> > >
> > >
> > > _______________________________________________
> > > ros-users mailing list
> > > [hidden email]
> > > https://code.ros.org/mailman/listinfo/ros-users
> > >
> > >
> >
>
> > _______________________________________________
> > ros-users mailing list
> > [hidden email]
> > https://code.ros.org/mailman/listinfo/ros-users
>
>
--
Lorenz M�senlechner            | [hidden email]
Technische Universit�t M�nchen | Boltzmannstr. 3
85748 Garching bei M�nchen     | Germany
http://ias.cs.tum.edu/         | Tel: +49 (89) 289-26910

_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Ingo Kresse
In reply to this post by Ingo Kresse
Hi again,

I just read https://code.ros.org/trac/ros-pkg/ticket/4464
and have two comments about the solution that was proposed there
(namely, that if the robot_state_publisher receives a partial joint
state message, it only publishes corresponding set of tf messages):

1) How should the rate of tfs be limited? Our experience is, that a tf
receiver getting tfs at 1000 Hz is a bit slow.

2) When should the static transforms be published? (This was our primary
use case for the "repeat old messages" feature, for the position of
lasers etc.)

Extending the joint state message and having a joint state aggregator
(as Lorenz just proposed in the next twig of the discussion) is of
course another solution.

Best regards,
Ingo


On 01/20/2011 01:34 PM, Ingo Kresse wrote:

> Hi,
>
> On 01/20/2011 12:40 PM, Weißhardt, Florian wrote:
>> Hi,
>>
>> I know about the mentioned shortcomings, but for us the error was acceptable if you run the aggregator fast enough.
>>
>> Of course the better way is to modify the joint_state_publisher: Do you have a solution for it which you could share?
>
> There is an implementation in tum-ros-pkgs:
>
> https://tum-ros-pkg.svn.sourceforge.net/svnroot/tum-ros-pkg
>
> in the package robot_state_chain_publisher. It consumes arbitrary
> messages on /joint_states and stores time, name and angle. It also sends
> tfs for joints, which have sent no joint state message for a while (so
> the robot is still visible in rviz, even without a joint state publisher).
>
> The task is a bit tricky: The timestamps should not be touched, since
> jitter in the timestamps induces jitter in the tfs. Duplicating a tf
> message (with the same timestamp!) also affects the interpolation. And,
> of course, we want to limit the tf publishing rate.
>
> As the name suggests, this version does not make the tf tree a "bush"
> but keeps the transform chains. We need this information for the
> calculation of uncertainties in the transforms.
>
> But these are two completely independent features.
>
> Best regards,
> Ingo
>
> P.S.: There are still some nodes which do not use tf but the joint state
> message directly, like the robot self filter. So at our lab we'll need
> both: a joint state aggregator and an enhanced robot_state_publisher.
>
>
>>
>> Regards,
>> Florian
>>
>>
>> -----Ursprüngliche Nachricht-----
>> Von: [hidden email] [mailto:[hidden email]] Im Auftrag von Lorenz Mösenlechner
>> Gesendet: Donnerstag, 20. Januar 2011 09:42
>> An: User discussions
>> Betreff: Re: [ros-users] merging different joint_states
>>
>> Hi,
>>
>> we found this solution pretty impractical. It introduces an error to
>> the TF transforms' time stamps.
>>
>> The problem is that, since the JointState message has only one time
>> stamp for all joint states, I don't see a correct way to calculate the
>> correct time stamp for the merged message. That means the TF
>> transforms' time stamps will we wrong in any case. The only solution
>> we found is to not use an aggregator but to extend the
>> joint_state_publisher to be able to handle joint states from different
>> topics that produces different time stamps for the tf frames from the
>> different sources.
>>
>> Lorenz
>>
>>> Hi,
>>>
>>> we solved the problem with a joint state aggregator. You can find the package in the cob_driver stack (installation with sudo apt-get install ros-cturtle-care-o-bot), the package is called cob_joint_state_aggregator.
>>>
>>> The aggregator collects all messages on the topic "joint_states" and combines them to a unique message published to "joint_states_combined" which is then used as an input for the joint_state_publisher to calculate tf. To configure it for your robot have a look at the /ros/launch/cob3-yaml file, where you have to specify the joint_names for your robot.
>>>
>>> I hope this helps.
>>>
>>> Regards,
>>> Florian
>>>
>>>
>>>
>>>
>>> -----Ursprüngliche Nachricht-----
>>> Von: [hidden email] im Auftrag von David Lu!!
>>> Gesendet: Mi 19.01.2011 21:07
>>> An: User discussions
>>> Betreff: Re: [ros-users] merging different joint_states
>>>
>>> Ugo-
>>> Your email reminded me that I was thinking about adding this feature to
>>> joint_state_publisher. I've attached a version that I'll upload to our
>>> repository after a little more testing.
>>>
>>>       <node name="joint_state_publisher" type="joint_state_publisher"
>>> pkg="joint_state_publisher" output="screen">
>>>           <param name="robot_description" textfile="model.urdf" />
>>>           <rosparam param="source_list">[head_states, body_states]</rosparam>
>>>       </node>
>>>
>>> This is how I launch it to merge the JointStates published on head_states
>>> and body_states.
>>>
>>> Let me know how well it works.
>>>
>>> -David!!
>>>
>>>
>>> On Wed, Jan 19, 2011 at 8:42 AM, Ugo Cupcic<[hidden email]>   wrote:
>>>
>>>> Hi,
>>>>
>>>> I have an arm and a hand publishing different joint_states messages and I'd
>>>> like to merge them (having seen this discussion:
>>>> http://ros-users.122217.n3.nabble.com/robot-state-publisher-with-joint-states-in-different-messages-does-not-compute-tf-for-all-joints-td1945465.html
>>>> )
>>>>
>>>> Is there an existing node to merge the joint_states messages, or do I need
>>>> to implement mine?
>>>>
>>>> Cheers,
>>>>
>>>> Ugo
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> ros-users mailing list
>>>> [hidden email]
>>>> https://code.ros.org/mailman/listinfo/ros-users
>>>>
>>>>
>>>
>>
>>> _______________________________________________
>>> ros-users mailing list
>>> [hidden email]
>>> https://code.ros.org/mailman/listinfo/ros-users
>>
>>
>
> _______________________________________________
> ros-users mailing list
> [hidden email]
> https://code.ros.org/mailman/listinfo/ros-users

_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Wim Meeussen
All,

Using the robot state publisher with multiple sources of joint state
is indeed a feature we want to add. I didn't realize that so many
people were waiting for this to happen, and even implemented their own
robot state publishers!  We would love to see those efforts getting
channeled into the released version of the robot state publisher.
We're trying to be more open about our development process, and let
people know what features are planned for our stacks, and how you can
contribute. This page has some useful pointers
<http://www.ros.org/wiki/Get%20Involved>, but comments are always
welcome.

Our current proposal for this feature is described in ticket
<https://code.ros.org/trac/ros-pkg/ticket/4464>. If you have comments
or ideas, feel free to add them to the ticket. I also added this
ticket to the handoff list
<http://www.ros.org/wiki/Get%20Involved/Handoff%20List>, so if you're
interested in contributing, you can pick up the ticket and get your
patches into the 'official' robot state publisher.


Ingo, I added the comments below to the ticket:

> 1) How should the rate of tfs be limited? Our experience is, that a tf
> receiver getting tfs at 1000 Hz is a bit slow.

We can use the same mechanism as we currently use: the user specifies
a desired tf publish rate that applies to all joints, and based on
this rate we skip some of the callbacks of the joint state messages.
With multiple sources of joint states this mechanism will get more
complex, but it can still work. So the tf publish rate can not be
higher than the joint state publish rate.

> 2) When should the static transforms be published? (This was our primary
> use case for the "repeat old messages" feature, for the position of
> lasers etc.)

For fixed joints we can create a separate thread that publishes tf at
the desired rate. It might be useful here to future-date the tf
messages by the publishing period, to minimize delays.


But if you're using the current version of the robot state publisher
you can use the following workarounds to use multiple joint state
publishers:

 * Aggregate the joint states (this has timestamp problems though)
 * Split up your kinematic tree in different parts that correspond to
the joint state publishers, and create a robot state publisher for
each part

Wim

ps. The robot state publisher that will go into Diamondback supports
both flattened trees and full trees. The default is set to full trees.

--
--
Wim Meeussen
Willow Garage Inc.
<http://www.willowgarage.com)
_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users
Reply | Threaded
Open this post in threaded view
|

Re: merging different joint_states

Wim Meeussen
> Using the robot state publisher with multiple sources of joint state
> is indeed a feature we want to add. I didn't realize that so many
> people were waiting for this to happen, and even implemented their own
> robot state publishers!  We would love to see those efforts getting
> channeled into the released version of the robot state publisher.

> Our current proposal for this feature is described in ticket
> <https://code.ros.org/trac/ros-pkg/ticket/4464>.

I just pushed out an implementation of the new robot state publisher
into the 'default' branch on kforge
<https://kforge.ros.org/project/robotmodel/services/robot_model>.  I
think this version implements all requests we got from users:

 * Receive joint state messages from multiple sources without prior aggregation
 * Publish fixed joints from a separate thread
 * Full, non-flattened tree

If you want to test this out, you can download the latest robot_model
stack using:

hg clone https://kforge.ros.org/robotmodel/robot_model

If you find any problems, or have other usecases that are not covered
yet, feel free to comment or to file a ticket on
<https://code.ros.org/trac/ros-pkg>.

Wim



--
--
Wim Meeussen
Willow Garage Inc.
<http://www.willowgarage.com)
_______________________________________________
ros-users mailing list
[hidden email]
https://code.ros.org/mailman/listinfo/ros-users