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