[ros-users] merging different joint_states

Ingo Kresse kresse at in.tum.de
Thu Jan 20 12:34:37 UTC 2011


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: ros-users-bounces at code.ros.org [mailto:ros-users-bounces at code.ros.org] 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: ros-users-bounces at code.ros.org 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<ugo at shadowrobot.com>  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
>>> ros-users at code.ros.org
>>> https://code.ros.org/mailman/listinfo/ros-users
>>>
>>>
>>
>
>> _______________________________________________
>> ros-users mailing list
>> ros-users at code.ros.org
>> https://code.ros.org/mailman/listinfo/ros-users
>
>




More information about the ros-users mailing list