Ben and David, <br>robot_state_publisher does not have persistence currently because if you have persistence you must have policies about how long to persist things before erroring etc.  These persistence models are very robot and application specific.  <br>

<br>If you need persistence for a specific application it actually makes sense to keep that knowledge outside of the robot state publisher in something like David's aggregator.  <br><br>
in general republishing old data is not very good thing to do.  That 
information has already been sent out and has been recorded in tf 
buffers around the system.  <br><br>One thing which I think might help your use cases is to allow publishing of partial trees not starting at the root.  Such that if you provide data about M of N  links it will publish data about the M links even if they are disjoint and skip the remaining links.<br>

<br>Would this handle your use cases?<br>Tully<br><br><div class="gmail_quote">On Fri, Oct 1, 2010 at 6:35 AM, David Lu!! <span dir="ltr"><<a href="mailto:davidvlu@gmail.com">davidvlu@gmail.com</a>></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;">This is a problem I've run into as well. The way I usually fix it is<br>
to write a node that aggregates the joint state messages and send out<br>
a new stream with all the joints. But I agree, robot_state_publisher's<br>
lack of memory is a problem sometimes.<br>
-DL!!<br>
<div><div></div><div class="h5"><br>
On Fri, Oct 1, 2010 at 8:07 AM, Axelrod, Benjamin <<a href="mailto:baxelrod@irobot.com">baxelrod@irobot.com</a>> wrote:<br>
> I am using the robot_state_publisher to convert my joint angles to tf<br>
> transforms.  However, it seems that the robot_state_publisher doesn’t like<br>
> it when you send it different joints at different times.  In other words,<br>
> robot_state_publisher doesn’t maintain any state…<br>
><br>
><br>
><br>
> For example, my urdf has 2 joints:<br>
><br>
> Base -> joint1 -> link1 -> joint2 -> link2<br>
><br>
><br>
><br>
> If I send it joint1, then at a later time I send it joint 2, I get this<br>
> error:<br>
><br>
><br>
><br>
> Node: /robot_state_publisher<br>
><br>
> Time: 1285876513.251897000<br>
><br>
> Severity: Error<br>
><br>
> Location:<br>
> /home/arm_user/darpa_arm_software/stacks/robot_model/robot_state_publisher/src/robot_state_publisher.cpp:RobotStatePublisher::publishTransforms:78<br>
><br>
> Published Topics: /rosout, /tf<br>
><br>
> Could not compute link poses. The tree or the state is invalid.<br>
><br>
><br>
><br>
> But if I send both joints at once, then everything is fine.  This seems like<br>
> a major limitation to me.  Am I missing something?<br>
><br>
><br>
><br>
> I am using boxturtle.  And am using robot_state_publisher running as a node.<br>
><br>
><br>
><br>
> Thanks,<br>
><br>
> -Ben<br>
><br>
><br>
><br>
> Ben Axelrod<br>
><br>
> Research Scientist<br>
><br>
> iRobot Corporation<br>
><br>
> 8 Crosby Drive, Mail Stop 8-1<br>
><br>
> Bedford, MA 01730<br>
><br>
> (781) 430-3315 (Tel)<br>
><br>
> (781) 960-2628 (Fax)<br>
><br>
> <a href="mailto:baxelrod@irobot.com">baxelrod@irobot.com</a><br>
><br>
><br>
><br>
</div></div>> _______________________________________________<br>
> ros-users mailing list<br>
> <a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
> <a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
><br>
><br>
_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Tully Foote<br>Systems Engineer<br>Willow Garage, Inc.<br><a href="mailto:tfoote@willowgarage.com">tfoote@willowgarage.com</a><br>(650) 475-2827<br>