Hi Pat, <div><br></div><div>Thanks for the suggestion. I've added it to the migration guide. </div><div><br></div><div>Tully<br><br><div class="gmail_quote">On Wed, Jun 13, 2012 at 5:23 PM, Patrick Bouffard <span dir="ltr"><<a href="mailto:bouffard@eecs.berkeley.edu" target="_blank">bouffard@eecs.berkeley.edu</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Could/should this perhaps be included in or linked to from the Fuerte<br>
migration guide (<a href="http://ros.org/wiki/fuerte/Migration" target="_blank">http://ros.org/wiki/fuerte/Migration</a>)? It took me<br>
awhile to find this again, as I didn't recall that it was a ros-users<br>
post.<br>
<br>
Thanks,<br>
Pat<br>
<div><div class="h5"><br>
On Mon, Nov 28, 2011 at 8:05 PM, Tully Foote <<a href="mailto:tfoote@willowgarage.com">tfoote@willowgarage.com</a>> wrote:<br>
> Hi everyone,<br>
><br>
> If you are using Bullet datatypes this effects you! As we are approaching<br>
> the release of ROS Fuerte, please read!<br>
><br>
> If you want the quick version jump to the = Updates to code = section below.<br>
><br>
><br>
> = Background =<br>
> As we build up the ROS ecosystem we are working hard to keep standardization<br>
> for as much code as possible.  When we started using Bullet we provided many<br>
> patches to bullet upstream for patches and consistency in the API.  We have<br>
> provided those patches to the ROS users of Bullet in the form of a patched<br>
> library.  Some of these patches have not been able to be accepted upstream.<br>
>  Although the patches make Bullet easier to use in robotics context,  as ROS<br>
> grows, we do not want to keep a divergent Bullet API in our repository.<br>
>  Unfortunately this sort of change is a painful one.<br>
><br>
> We have discussed this change at length as part of the fuerte Planning<br>
> Thirdparty SIG <a href="http://www.ros.org/wiki/fuerte/Planning/Thirdparty" target="_blank">http://www.ros.org/wiki/fuerte/Planning/Thirdparty</a> and could<br>
> do a full tick-toc cycle and be done in 1.5 years, leave<br>
> things significantly out of date, and also wouldn't prevent nasty bugs in<br>
> unmigrated code.  The following method will provide most users with compile<br>
> errors, except for the people using significant amounts of bullet's API.  We<br>
> realize these changes are a pain, but we believe that the pain is worth it.<br>
><br>
><br>
> = The change =<br>
> The portion of the Bullet LinearMath library which was used by tf has been<br>
> copied into the tf namespace and renamed to avoid collisions.<br>
><br>
> == Requirements to port your code ==<br>
> Datatype copies:<br>
> btMatrix3x3 -> tf::Matrix  (previously a typedef)<br>
> btVector3 -> tf::Vector3  (previously a typedef)<br>
> btScalar  -> tf::Scalar<br>
> btQuaternion -> tf::Quaternion  (previously a typedef)<br>
> btMinMax -> tf::MinMax<br>
> btQuadWord -> tf::QuadWord<br>
><br>
> Include path changes:<br>
> LinearMath/bt*.h -> tf/LinearMath/*.h<br>
><br>
><br>
><br>
> == Differences between the patched version and the unpatched version ==<br>
> If you have not made the above transition you will observe the following<br>
> differences, note some of these cannot be caught by the compiler.<br>
><br>
> btTransform.setEulerZYX and getEulerZYX ROS version (Yaw pitch roll about<br>
> ZYX axes respectively, BT form are about respectively about XYZ)  (marked as<br>
> deprecated in ROS version)<br>
> btQuaternion(yaw, pitch, roll)  ROS version axes ZYX, BT version YXZ<br>
> btMatrix3x3 loses setRPY and getRPY methods do not exist in Bullet version<br>
> btQuaternion no longer has angleShortestPath method<br>
><br>
><br>
> = Updates to code =<br>
> Choose one of the following two sections<br>
><br>
> == Packages not depending on bullet directly ==<br>
> If you are using the tf datatypes(previously typedefed) no changes are<br>
> needed.<br>
> If you are using the bullet datatypes listed above and no other bullet<br>
> datatypes the following command is expected to fix most stacks.<br>
><br>
> In a package which you want to convert run the following:<br>
><br>
> `rosrun tf bullet_migration_sed.py`<br>
><br>
> This will attempt to fix all your include paths and type declarations to use<br>
> the new data types in that directory recursively.  If you make sure that<br>
> bullet is not in your manifest and then errors should be caught by the<br>
> compiler.<br>
><br>
> == Packages using other bullet datatypes ==<br>
> If you are using more of the Bullet API you should not run this script.  And<br>
> you will need to audit all of your Euler angle methods to confirm their<br>
> order.  Please review every instance of the APIs listed above for usage.<br>
><br>
> All of these changes are avoided if you use the new tf types.  For easier<br>
> interoperability, the tf types have a method toBt() and assignment operators<br>
> from the equivilant Bullet datatypes.  The above referenced sed script can<br>
> form a good basis for your own scripts if necessary.<br>
><br>
> If you have any questions about how to update any portion of your code for<br>
> the API changes please ask with the snippet of code on <a href="http://answers.ros.org" target="_blank">answers.ros.org</a> with<br>
> bullet_migration as the tag.<br>
><br>
> The script is also attached.  The script has been used to successfully<br>
> completely convert several test packages so far.  If there are improvements<br>
> which can be made please ticket them and we will rerelease it such that<br>
> others can get the improvements quickly.<br>
><br>
> Tully<br>
><br>
><br>
> --<br>
> Tully Foote<br>
> Systems Engineer<br>
> Willow Garage, Inc.<br>
> <a href="mailto:tfoote@willowgarage.com">tfoote@willowgarage.com</a><br>
> <a href="tel:%28650%29%20475-2827" value="+16504752827">(650) 475-2827</a><br>
><br>
</div></div><div class="im">> _______________________________________________<br>
> ros-users mailing list<br>
> <a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
</div>> <a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
<div class="im">><br>
_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
</div><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"><div><br></div>-- <br>Tully Foote<br><a href="mailto:tfoote@willowgarage.com" target="_blank">tfoote@willowgarage.com</a><br>(650) 475-2827<br>
</div>