Upgrading to Fuerte and Ubuntu 12.04 Woes
I recently decided to upgrade my project created on Electric on Ubuntu 10.04 to Fuerte and 12.04 for various reasons. Everything worked fine with the old setup, and many things would be broken in the upgrade. I managed to fix most of them, however there are several which I just cannot figure out and have been unable to find clear explanations about online. I've tried to make the descriptions brief so this post doesn't become monstrous, but please ask questions if you have them and I'll try to stay on top of this post. Also, I can't get the hang of formatting for these posts, so I put the lines as numbered lists, the numbers don't actually mean anything.
Thanks!
Problem A) It looks like it can't find liblog4c.so file, or that I need to manually add it. However any attempt to do so in the CMakeLists.txt file for the package just turns up more errors.
- [ 80%] Building CXX object src/utils/CMakeFiles/getFirmwareVersion.dir/getFirmwareVersion.o
- Linking CXX executable ../../../bin/getFirmwareVersion
- /usr/bin/ld: CMakeFiles/getFirmwareVersion.dir/getFirmwareVersion.o: undefined reference to symbol 'typeinfo for log4cxx::helpers::ObjectPtrBase'
- /usr/bin/ld: note: 'typeinfo for log4cxx::helpers::ObjectPtrBase' is defined in DSO /usr/lib/liblog4cxx.so.10 so try adding it to the linker command line
- /usr/lib/liblog4cxx.so.10: could not read symbols: Invalid operation
- collect2: ld returned 1 exit status <h2><br/></h2><>
Problem B) I'm very confused as to why the uvc_camera package suddenly needs a .cfg file, as it wasn't an issue before.
- CMake Error at /opt/ros/fuerte/stacks/dynamic_reconfigure/cmake/cfgbuild.cmake:82 (message):
Dynamic reconfigure has been invoked but could not find a .cfg to build.
Please add one to your package/cfg directory. Aborting. - Call Stack (most recent call first):
/opt/ros/fuerte/stacks/dynamic_reconfigure/cmake/cfgbuild.cmake:87 (gencfg_cpp)
CMakeLists.txt:25 (include) <h2><br/></h2><>
Problem C) There are many more errors similar to the ones below that I left out to make this post shorter. From what it looks like, tf got a few major changes, do I just have to go through manually and change everything to the new tf functions and objects?
- /myRos/laser_pipeline/laser_geometry/src/laser_geometry.cpp: In member function 'void laser_geometry::LaserProjection::transformLaserScanToPointCloud_(const string&, sensor_msgs::PointCloud&, const LaserScan&, tf::Transformer&, double, int)':
- /myRos/laser_pipeline/laser_geometry/src/laser_geometry.cpp:251:86: error: no matching function for call to 'btVector3::setInterpolate3(tf::Vector3&, tf::Vector3&, btScalar&)'
- /myRos/laser_pipeline/laser_geometry/src/laser_geometry.cpp:251:86: note: candidate is:
- /opt/ros/fuerte/stacks/bullet/include/LinearMath/btVector3.h:236:25: note: void btVector3::setInterpolate3(const btVector3&, const btVector3&, btScalar)
- /opt/ros/fuerte/stacks/bullet/include/LinearMath/btVector3.h:236:25: note: no known conversion for argument 1 from 'tf::Vector3' to 'const btVector3&'
- /myRos/laser_pipeline/laser_geometry/src/laser_geometry.cpp:256:48: error: no matching function for call to 'tf::Matrix3x3::getRotation ...