Hi Pat,
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
> https://code.ros.org/mailman/listinfo/ros-users
On Mon, Nov 28, 2011 at 8:05 PM, Tully Foote <tfoote@willowgarage.com> 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
>
https://code.ros.org/mailman/listinfo/ros-users