lucasw / ros_from_src

Build ros from source without using a PPA in a github action. Probably just copy what archlinux is doing. See also https://github.com/ros-o/ros-o
BSD 3-Clause "New" or "Revised" License
103 stars 16 forks source link

Build dependencies on 22.04 using debian base packages #6

Open lucasw opened 2 years ago

lucasw commented 2 years ago

Build all the dependencies here: https://github.com/lucasw/ros_from_src/issues/2#issuecomment-1047108920

Try this within a 22.04 docker image as well as a real 22.04 system

lucasw commented 2 years ago

After installing ros-robot-dev on 22.04, the catkin_tools from src, trying to catkin build something:

CMake Error at /home/lucasw/own/ros/staging3/ros/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by
  "joint_state_publisher" with any of the following names:

    joint_state_publisherConfig.cmake
    joint_state_publisher-config.cmake

  Add the installation prefix of "joint_state_publisher" to CMAKE_PREFIX_PATH
  or set "joint_state_publisher_DIR" to a directory containing one of the
  above files.  If "joint_state_publisher" provides a separate development
  package or SDK, be sure it has been installed.

The cmake does exist:

/usr/share/joint_state_publisher/cmake/joint_state_publisherConfig.cmake

But that directory probably isn't on the path for catkin to find, there doesn't seem to be a setup.bash to get all of those.

There's a issue complicating the above, my system is still using the staging3 completely from source paths... once that is cleaned out can't even catkin config

WARNING: Your workspace is not extending any other result space, but
it is set to use a `linked` devel space layout. This requires the
`catkin` CMake package in your source space in order to be built.

-> So can clone catkin into catkin_ws/src, cmake build and install it to $DEST/opt/ros or similar, then source $DEST/opt/ros/setup.bash, then catkin config and build

lucasw commented 2 years ago
CMake Error at /home/lucasw/catkin_ws/install/share/catkin/cmake/catkinConfig.cmake:83 (find_package):
  Could not find a package configuration file provided by
  "message_generation" with any of the following names:

    message_generationConfig.cmake
    message_generation-config.cmake

  Add the installation prefix of "message_generation" to CMAKE_PREFIX_PATH or
  set "message_generation_DIR" to a directory containing one of the above
  files.  If "message_generation" provides a separate development package or
  SDK, be sure it has been installed.
lucasw commented 2 years ago

Try rosdep init and update- no that didn't help is it using the right distro yaml files?

rosdep install --from-paths src --ignore-src -r -s  # do a dry-run first
ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies (ROS distro is not set. Make sure `ROS_DISTRO` environment variable is set, or use `--rosdistro` option to specify the distro, e.g. `--rosdistro indigo`):
lucasw commented 2 years ago

Trying to use catkin tools in a relatively fresh environment:

export DEST=$HOME/catkin_ws/other/install
export PATH=$PATH:/$DEST/bin

git clone git@github.com:lucasw/catkin_tools --branch sanitize_cmake_prefix_path
cd catkin_tools
python3 setup.py install --prefix=$DEST --record install_manifest.txt --single-version-externally-managed
$ catkin build
Traceback (most recent call last):
  File "/home/lucasw/catkin_ws2/other/install/bin/catkin", line 33, in <module>
    sys.exit(load_entry_point('catkin-tools==0.8.5', 'console_scripts', 'catkin')())
  File "/home/lucasw/catkin_ws2/other/install/bin/catkin", line 22, in importlib_load_entry_point
    for entry_point in distribution(dist_name).entry_points
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 957, in distribution
    return Distribution.from_name(distribution_name)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 548, in from_name
    raise PackageNotFoundError(name)
importlib.metadata.PackageNotFoundError: No package metadata was found for catkin-tools

Forgot PYTHONPATH

PYTHON_MAJOR_VERSION=`python --version | awk  '{print $2}' | cut -d'.' -f1`
PYTHON_MINOR_VERSION=`python --version | awk  '{print $2}' | cut -d'.' -f2`
export PYTHONPATH=$DEST/lib/python$PYTHON_MAJOR_VERSION.$PYTHON_MINOR_VERSION/site-packages/
lucasw commented 2 years ago
------------------------------------------------------------
WARNING: Your workspace is not extending any other result
space, but it is set to use a `linked` devel space layout.
This requires the `catkin` CMake package in your source
space in order to be built.
------------------------------------------------------------

Need to source a ros setup.sh? No everything should already be on the path, catkin needs updating to realize that though.

Can ignore that warning, builds still work

lucasw commented 2 years ago

ddynamic_reconfigure

CMake Error at CMakeLists.txt:59 (target_link_libraries):
  Cannot specify link libraries for target "ddynamic_reconfigure-test" which
  is not built by this project.

Need gmock->

sudo apt install libgmock-dev

but then

Errors     << ddynamic_reconfigure:make /home/lucasw/catkin_ws2/logs/ddynamic_reconfigure/build.make.000.log                                                                                                            
In file included from /usr/include/log4cxx/log4cxx.h:45,
                 from /usr/include/log4cxx/logstring.h:28,
                 from /usr/include/log4cxx/level.h:22,
                 from /usr/include/ros/console.h:46,
                 from /usr/include/ros/assert.h:35,
                 from /usr/include/ros/common.h:36,
                 from /usr/include/ros/publisher.h:32,
                 from /usr/include/ros/node_handle.h:32,
                 from /usr/include/dynamic_reconfigure/server.h:50,
                 from /home/lucasw/catkin_ws2/src/other/ddynamic_reconfigure/include/ddynamic_reconfigure/ddynamic_reconfigure.h:34,
                 from /home/lucasw/catkin_ws2/src/other/ddynamic_reconfigure/src/ddynamic_reconfigure.cpp:1:
/usr/include/log4cxx/boost-std-configuration.h:10:18: error: ‘shared_mutex’ in namespace ‘std’ does not name a type
   10 |     typedef std::shared_mutex shared_mutex;
      |                  ^~~~~~~~~~~~
/usr/include/log4cxx/boost-std-configuration.h:10:13: note: ‘std::shared_mutex’ is only available from C++17 onwards
   10 |     typedef std::shared_mutex shared_mutex;
      |             ^~~
/usr/include/log4cxx/boost-std-configuration.h:12:30: error: ‘shared_lock’ in namespace ‘std’ does not name a template type
   12 |     using shared_lock = std::shared_lock<T>;
      |                              ^~~~~~~~~~~
/usr/include/log4cxx/boost-std-configuration.h:12:25: note: ‘std::shared_lock’ is only available from C++14 onwards
   12 |     using shared_lock = std::shared_lock<T>;
      |                         ^~~
make[2]: *** [CMakeFiles/ddynamic_reconfigure.dir/build.make:76: CMakeFiles/ddynamic_reconfigure.dir/src/ddynamic_reconfigure.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:583: CMakeFiles/ddynamic_reconfigure.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

->

use this version:

https://github.com/ros-o/rosconsole/commits/obese-devel

No still see it, that version is likely the same as what is released in 22.04

catkin build is using -std=c++0x, fix that

->

ddynamic_reconfigure/CMakeLists.txt:set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
lucasw commented 2 years ago

diagnostic_updater

Warnings   << diagnostic_updater:cmake /home/lucasw/catkin_ws/logs/diagnostic_updater/build.cmake.000.log                                                                                             
/usr/share/catkin/cmake/interrogate_setup_dot_py.py:43: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
  import distutils.core
Warnings   << rqt_controller_manager:cmake /home/lucasw/catkin_ws/logs/rqt_controller_manager/build.cmake.000.log                                                                                     
/usr/share/catkin/cmake/interrogate_setup_dot_py.py:43: DeprecationWarning: The distutils package is deprecated and slated for removal in Python 3.12. Use setuptools or check PEP 632 for potential alternatives
  import distutils.core
lucasw commented 2 years ago

rviz is built against libogre-1.12, but libgazebo-dev is built against libogre-1.9?

sudo apt install libgazebo-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 libogre-1.12-dev : Conflicts: libogre-1.9-dev but 1.9.0+dfsg1-12.1ubuntu1 is to be installed
 sudo apt remove libogre-1.12-dev
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages were automatically installed and are no longer required:
  gazebo-common libdart-utils6.12
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
  libogre-1.12-dev librviz-dev ros-desktop-dev ros-desktop-full-dev ros-viz-dev
lucasw commented 2 years ago
catkin_lint .
catkin_lint: neither ROS_DISTRO environment variable nor --rosdistro option set
lucasw commented 2 years ago

can't pip install vcstool?

git clone git@github.com:dirk-thomas/vcstool.git
cd vcstool
export DEST=$HOME/catkin_ws/other/install
export PATH=$PATH:$DEST/bin
python3 setup.py install --prefix=$DEST --record install_manifest.txt --single-version-externally-managed
lucasw commented 2 years ago
~/catkin_ws/src$ vcs export > repos_2204.yaml

repos_2204.yaml.txt - though would probably also want all the ros-o versions of other packages too

Try building with those dependencies in ubuntu 20.04 also- set up a github action for that

lucasw commented 2 years ago

No rqt in the above, try that next

 sudo apt install cmake-qt-gui
git@github.com:ros-o/rqt.git
git@github.com:ros-o/qt_gui_core.git  
                 from /home/lucasw/catkin_ws/src/ros/rqt/rqt_gui_cpp/src/rqt_gui_cpp/nodelet_plugin_provider.h:36,
                 from /home/lucasw/catkin_ws/src/ros/rqt/rqt_gui_cpp/src/rqt_gui_cpp/nodelet_plugin_provider.cpp:33:
/usr/include/boost/bind.hpp:36:1: note: ‘#pragma message: The practice of declaring the Bind placeholders (_1, _2, ...) in the global namespace is deprecated. Please use <boost/bind/bind.hpp> + using namespace boost::placeholders, or define BOOST_BIND_GLOBAL_PLACEHOLDERS to retain the current behavior.’
   36 | BOOST_PRAGMA_MESSAGE(
      | ^~~~~~~~~~~~~~~~~~~~
lucasw commented 2 years ago
  File "/home/lucasw/catkin_ws/src/lucasw/dynamic_reconfigure_tools/rqt_dr_single/src/rqt_dr_single/dr_single.py", line 260, in update_description
    widget.setValue(slider_val)
TypeError: setValue(self, int): argument 1 has unexpected type 'float'

Need to fix this in rqt_dr_single -> cast to int

Regular rqt_reconfigure runs but is blank- something broken in qt?

lucasw commented 2 years ago

boost::bind vs. std::bind and std::placeholders- can I use std:: everywhere? Try it in robot_localization

https://stackoverflow.com/questions/10555566/difference-between-c11-stdbind-and-boostbind

lucasw commented 2 years ago

Could use this version of control_toolbox instead of mine: https://github.com/ros-controls/control_toolbox/pull/117

lucasw commented 2 years ago

Also sorting out some changes in ros_controllers- there were instances of _1 and _2 even after a merged PR that removed most of them, see if those are needed

https://github.com/lucasw/ros_controllers/commit/d65edb45f96bd9b881a8086ec24ff0805bf620ef

lucasw commented 2 years ago

Make locus fuse compile https://github.com/locusrobotics/fuse

apt install libgoogle-glog-dev
find . -type f -name "*.*" -exec sed -i'' -e 's/CXX_STANDARD 14/CXX_STANDARD 17/g' {} +
Errors     << fuse_models:cmake /home/lucasw/catkin_ws/logs/fuse_models/build.cmake.000.log                                                                                                              
CMake Error at /usr/share/catkin/cmake/catkinConfig.cmake:82 (find_package):
  Could not find a package configuration file provided by "tf2_2d" with any
  of the following names:

    tf2_2dConfig.cmake
    tf2_2d-config.cmake
git clone git@github.com:locusrobotics/tf2_2d.git

This needs fixing in rviz (maybe newer ros-o rviz already did?)

Errors     << fuse_viz:make /home/lucasw/catkin_ws/logs/fuse_viz/build.make.005.log                                                                                                                      
In file included from /usr/include/rviz/ogre_helpers/shape.h:36,
                 from /home/lucasw/catkin_ws/src/fuse/fuse_viz/src/mapped_covariance_visual.cpp:32:
/usr/include/OGRE/OgreVector3.h:2:62: note: ‘#pragma message: /usr/include/OGRE/OgreVector3.h is deprecated, migrate to Ogre.h’
    2 | #pragma message( __FILE__ " is deprecated, migrate to Ogre.h")
      |                                                              ^
In file included from /usr/include/eigen3/Eigen/Core:337,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/lucasw/catkin_ws/src/fuse/fuse_viz/include/fuse_viz/mapped_covariance_visual.h:41,
                 from /home/lucasw/catkin_ws/src/fuse/fuse_viz/src/mapped_covariance_visual.cpp:30:
/usr/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h: In function ‘static void Eigen::internal::selfadjoint_product_impl<Lhs, LhsMode, false, Rhs, 0, true>::run(Dest&, const Lhs&, const Rhs&, const Scalar&) [with Dest = Eigen::Block<Eigen::Matrix<double, 1, 1, 0, 1, 1>, -1, 1, false>; Lhs = Eigen::Block<Eigen::Matrix<double, 2, 2>, -1, -1, false>; int LhsMode = 17; Rhs = Eigen::CwiseBinaryOp<Eigen::internal::scalar_product_op<double, double>, const Eigen::CwiseNullaryOp<Eigen::internal::scalar_constant_op<double>, const Eigen::Matrix<double, -1, 1, 0, 2, 1> >, const Eigen::Block<Eigen::Block<Eigen::Matrix<double, 2, 2>, 2, 1, true>, -1, 1, false> >]’:
/usr/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h:229:7: error: ‘result’ may be used uninitialized [-Werror=maybe-uninitialized]
  227 |     internal::selfadjoint_matrix_vector_product<Scalar, Index, (internal::traits<ActualLhsTypeCleaned>::Flags&RowMajorBit) ? RowMajor : ColMajor,
      |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  228 |                                                 int(LhsUpLo), bool(LhsBlasTraits::NeedToConjugate), bool(RhsBlasTraits::NeedToConjugate)>::run
      |                                                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  229 |       (
      |       ^
  230 |         lhs.rows(),                             // size
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  231 |         &lhs.coeffRef(0,0),  lhs.outerStride(), // lhs info
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  232 |         actualRhsPtr,                           // rhs info
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  233 |         actualDestPtr,                          // result info
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  234 |         actualAlpha                             // scale factor
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  235 |       );
      |       ~
/usr/include/eigen3/Eigen/src/Core/products/SelfadjointMatrixVector.h:41:6: note: by argument 3 of type ‘const double*’ to ‘static void Eigen::internal::selfadjoint_matrix_vector_product<Scalar, Index, StorageOrder, UpLo, ConjugateLhs, ConjugateRhs, Version>::run(Index, const Scalar*, Index, const Scalar*, Scalar*, Scalar) [with Scalar = double; Index = long int; int StorageOrder = 0; int UpLo = 1; bool ConjugateLhs = false; bool ConjugateRhs = false; int Version = 0]’ declared here
   41 | void selfadjoint_matrix_vector_product<Scalar,Index,StorageOrder,UpLo,ConjugateLhs,ConjugateRhs,Version>::run(
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
lucasw commented 2 years ago

Make a PR for this in ros_comm

commit ff1c90f8dd9b9d4e641e8ebe36909163be10504e (HEAD -> noetic_aggregated)
Author: Lucas Walter <wsacul@gmail.com>
Date:   Sat May 7 17:33:04 2022 -0700

    use boost/bind/bind.hpp instead of the deprecated boost/bind.hpp
lucasw commented 2 years ago

lucasw kindr_ros cpp17

lucasw commented 2 years ago
git clone git@github.com:ros-geographic-info/geographic_info.git
git clone git@github.com:ros-geographic-info/unique_identifier.git
git clone git@github.com:ros/xacro.git
git clone git@github.com:PickNikRobotics/rosparam_shortcuts.git
lucasw commented 2 years ago

rviz vs. system qt version mismatch?

Errors     << rviz_lighting:cmake /home/lucasw/catkin_ws/logs/rviz_lighting/build.cmake.000.log                                                                                                                  
CMake Error at CMakeLists.txt:22 (find_package):
  Could not find a configuration file for package "Qt5" that exactly matches
  requested version "5.15.2".

  The following configuration files were considered but not accepted:

    /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake, version: 5.15.3
    /lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake, version: 5.15.3
lucasw commented 2 years ago

Try out rosconsole concise_output_roso in 20.04

Also rviz_lighting cpp17 in 20.04

lucasw commented 2 years ago

CATKIN_IGNORE this

_________________________________________________________________________________________________________________________________________________________________________________________________________________
Errors     << virtual_force_publisher:cmake /home/lucasw/catkin_ws/logs/virtual_force_publisher/build.cmake.001.log                                                                                              
CMake Warning (dev) at /usr/share/catkin/cmake/all.cmake:73 (list):
  Policy CMP0007 is not set: list command no longer ignores empty elements.
  Run "cmake --help-policy CMP0007" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.  List has value =
  [/home/lucasw/catkin_ws/devel;;/home/lucasw/other/install;/home/lucasw/other/install/lib/cmake].
Call Stack (most recent call first):
  /usr/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:5 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at /usr/share/catkin/cmake/all.cmake:75 (list):
  Policy CMP0007 is not set: list command no longer ignores empty elements.
  Run "cmake --help-policy CMP0007" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.  List has value =
  [/home/lucasw/catkin_ws/devel;;/home/lucasw/other/install;/home/lucasw/other/install/lib/cmake].
Call Stack (most recent call first):
  /usr/share/catkin/cmake/catkinConfig.cmake:20 (include)
  CMakeLists.txt:5 (find_package)
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error at /home/lucasw/catkin_ws/devel/share/kdl_conversions/cmake/kdl_conversionsConfig.cmake:109 (message):
  Project 'kdl_conversions' specifies
  '/home/lucasw/catkin_ws/src/ros/geometry/kdl_conversions/include' as an
  include dir, which is not found.  It does neither exist as an absolute
  directory nor in
  '/home/lucasw/catkin_ws/src/ros/geometry/kdl_conversions//home/lucasw/catkin_ws/src/ros/geometry/kdl_conversions/include'.
  Check the website 'http://ros.org/wiki/kdl_conversions' for information and
  consider reporting the problem.
Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/tf_conversions/tf_conversionsConfig.cmake:195 (find_package)
  /usr/share/catkin/cmake/catkinConfig.cmake:76 (find_package)
  CMakeLists.txt:5 (find_package)
lucasw commented 2 years ago

Had an unaltered image_common checked out for no reason, CATKIN_IGNORE for now, delete it later

lucasw commented 2 years ago

apt installs

sudo apt install ros-* libyaml-cpp-dev libgeographic-dev liburdfdom-dev python3-tf2-geometry-msgs libimage-view-dev vim python-is-python3

sudo apt install libpcl-ros-dev libqwt-qt5-dev libsdl-image1.2-dev libgstreamer1.0-dev libgst-dev libgstreamer-plugins-base1.0-dev libqt5svg5-dev libqt5websockets5-dev libqt5x11extras5-dev libapriltag-dev python3-venv libgmock-dev libgoogle-glog-dev libspnav-dev libv4l-dev libfrei0r-ocaml-dev liborocos-bfl-dev cython3
lucasw commented 2 years ago

lucasw graph_rviz_plugin cpp17

Also lots of deprecation warnings

/home/lucasw/catkin_ws/src/other/graph_rviz_plugin/src/qcustomplot.cpp: In member function ‘virtual QCPPainter* QCPPaintBufferPixmap::startPainting()’:
/home/lucasw/catkin_ws/src/other/graph_rviz_plugin/src/qcustomplot.cpp:670:35: warning: ‘QPainter::HighQualityAntialiasing’ is deprecated: Use Antialiasing instead [-Wdeprecated-declarations]
  670 |   result->setRenderHint(QPainter::HighQualityAntialiasing);
lucasw commented 2 years ago

Fix navigation next:

/home/lucasw/catkin_ws/src/roso/navigation/map_server/test/rtest.cpp:100:121: error: ‘_1’ was not declared in this scope

-> need to PR this https://github.com/lucasw/navigation/tree/boost_placeholders

lucasw commented 2 years ago

Can both log4cxx 0.10.0 and 0.12.0 be supported in same version?

 error: ‘log4cxx::LoggerPtr’ {aka ‘class log4cxx::helpers::ObjectPtrT<log4cxx::Logger>’} has no member named ‘get’

https://logging.apache.org/log4cxx/latest_stable/changelog.html

lucasw commented 2 years ago

ffmpeg_image_transport

In file included from /home/lucasw/catkin_ws/src/other/ffmpeg_image_transport/include/ffmpeg_image_transport/ffmpeg_publisher.h:11,
                 from /home/lucasw/catkin_ws/src/other/ffmpeg_image_transport/src/ffmpeg_publisher.cpp:4:
/opt/ros/noetic/include/image_transport/simple_publisher_plugin.h: In member function ‘image_transport::SimplePublisherPlugin<M>::PublishFn image_transport::SimplePublisherPlugin<M>::bindInternalPublisher(const PubT&) const’:
/opt/ros/noetic/include/image_transport/simple_publisher_plugin.h:234:51: error: ‘_1’ was not declared in this scope

image_common would need to release a new version (maybe 0.13) in order to get changes out that would allow dependent packages to not have to do things like the following to work around this:

https://github.com/lucasw/ffmpeg_image_transport/commit/aaeb120d801251b64dc69d4455d546d0644b69ed

Probably many packages were silently depending on _1 and _2 in the global namespace and are going to break like this (which is the whole reason global namespacing is bad), so moving forward to releasing a new image_common (or any other package that has the upstreamed placeholders changes) into noetic may be difficult.

Maybe should just require building image_common locally until that is sorted out, don't want the include hack polluting everything.

image_pipeline image_publisher has same issue

lucasw commented 2 years ago

https://github.com/ros/filters

Warnings   << filters:make /home/lucasw/catkin_ws/logs/filters/build.make.000.log                                                                                                                                                 
In file included from /home/lucasw/catkin_ws/src/ros/filters/src/median.cpp:31:
/home/lucasw/catkin_ws/src/ros/filters/include/filters/median.h: In function ‘elem_type filters::kth_smallest(elem_type*, int, int)’:
/home/lucasw/catkin_ws/src/ros/filters/include/filters/median.h:69:16: warning: ISO C++17 does not allow ‘register’ storage class specifier [-Wregister]
   69 |   register int i,j,l,m ;

-> need to use noetic-devel, defaults to a ros2 branch (but still has warnings)

lucasw commented 2 years ago

rviz

rviz
[ INFO] [1652032952.315436463 ${node} ${shortfile}:114]: rviz version 1.14.14
[ INFO] [1652032952.315488922 ${node} ${shortfile}:115]: compiled against Qt version 5.15.2
[ INFO] [1652032952.315495671 ${node} ${shortfile}:116]: compiled against OGRE version 1.12.10 (Rhagorthua)
[ INFO] [1652032952.321103157 /rviz_1652032952315526696 ${shortfile}:88]: Forcing OpenGl version 0.
[ INFO] [1652032952.642445513 /rviz_1652032952315526696 ${shortfile}:475]: Stereo is NOT SUPPORTED
[ INFO] [1652032952.642480938 /rviz_1652032952315526696 ${shortfile}:185]: OpenGL device: NVIDIA GeForce GTX 1660 Ti/PCIe/SSE2
[ INFO] [1652032952.642523693 /rviz_1652032952315526696 ${shortfile}:236]: OpenGl version: 4.6 (GLSL 4.6).
[rospack] Error: no such package media_export
[librospack]: error while executing command

(rosconsole + ros_comm and ROSCONSOLE_FORMAT don't look to be working either)

Can't load rviz_camera_stream plugin (though it may be broken https://github.com/lucasw/rviz_camera_stream/issues/47)

Do a src build of rviz

lucasw commented 2 years ago

ros_comm - odd that this _7 was missed in https://github.com/ros/ros_comm/commit/3d137ca91109a9f229d0701e618758ef7f817218

/home/lucasw/catkin_ws/src/ros/ros_comm/utilities/message_filters/include/message_filters/signal9.h:281:213: error: ‘_7’ was not declared in this scope
  281 |                      const M8ConstPtr&>(boost::bind(callback, boost::placeholders::_1, boost::placeholders::_2, boost::placeholders::_3, boost::placeholders::_4, boost::placeholders::_5, boost::placeholders::_6, _7, boost::placeholders::_8, boost::placeholders::_9));

PR this

https://github.com/lucasw/ros_comm/tree/boost_placeholders_7

lucasw commented 2 years ago
catkin_virtualenv$ touch test_catkin_virtualenv/CATKIN_IGNORE
mavros$ touch libmavconn/CATKIN_IGNORE
touch mavros_extras/CATKIN_IGNORE
lucasw commented 2 years ago

https://github.com/lucasw/jsk_common_msgs/tree/boost_placeholders -> merged https://github.com/jsk-ros-pkg/jsk_common_msgs/pull/31 https://github.com/lucasw/jsk_common/tree/cpp17 https://github.com/lucasw/joystick_drivers/tree/cpp17 https://github.com/lucasw/ros_control_boilerplate/tree/cpp17 https://github.com/lucasw/find-object/tree/boost_placeholders -> merged https://github.com/introlab/find-object/pull/120

https://github.com/lucasw/web_video_server/tree/boost_placeholders https://github.com/lucasw/async_web_server_cpp/tree/boost_placeholders

https://github.com/lucasw/pluginlib/tree/cpp17_test

ros_comm has _7

lucasw commented 2 years ago

ffmpeg works_with_dr_init_default_values -> it's now in noetic_aggregated

lucasw commented 2 years ago

https://github.com/lucasw/grid_map/tree/cpp17

grid_map/grid_map_filters/src/NormalVectorsFilter.cpp:15:10: fatal error: tbb/task_scheduler_init.h: No such file or directory
   15 | #include <tbb/task_scheduler_init.h>

https://github.com/DrTimothyAldenDavis/SuiteSparse/issues/72

CATKIN_IGNORE grid_map_filters, elevation_mapping for now

lucasw commented 2 years ago

rtabmap

CMake Error at CMakeLists.txt:452 (include):
  include could not find requested file:

    /core/rosbuild/FindPkgConfig.cmake

cmake-data provides the file but it isn't getting found:

/usr/share/cmake-3.22/Modules/FindPkgConfig.cmake

Probably can remove this -> made it used only if the file exists:

CMakeLists.txt:    include($ENV{ROS_ROOT}/core/rosbuild/FindPkgConfig.cmake)

/usr/share/ros/core/rosbuild/FindPkgConfig.cmake does exist as provided by rosbuild, if ROS_ROOT were set to /usr/share/ros the original line would have worked.

-> https://github.com/lucasw/rtabmap_ros/tree/boost_placeholders

lucasw commented 2 years ago

base_catkin_ws repos - there isn't a clean distinction between repos in ros/ and roso/, originally intended the latter to only be repos hosted in ros-o, could clean that up later.

Some can be pointed back at official upstream repos as PRs are merged (many PRs have not yet been made)

lucasw commented 2 years ago
$ roswtf
Loaded plugin tf.tfwtf
Traceback (most recent call last):
  File "/home/lucasw/base_catkin_ws/devel/bin/roswtf", line 15, in <module>
    exec(compile(fh.read(), python_script, 'exec'), context)
  File "/home/lucasw/base_catkin_ws/src/ros/ros_comm/utilities/roswtf/scripts/roswtf", line 35, in <module>
    roswtf.roswtf_main()
  File "<string>", line 89, in roswtf_main
  File "<string>", line 143, in _roswtf_main
  File "/usr/lib/python3.10/os.py", line 679, in __getitem__
    raise KeyError(key) from None
KeyError: 'ROS_ROOT'

solution ->

export ROS_ROOT=/usr/share/ros
lucasw commented 2 years ago

rosout ERROR messages aren't appearing in stdout from roslaunch, though can see them in rqt console- not sure if that is true for C++ and rospy nodes or just C++.

A test C++ node works fine via rosrun and roslaunch- there's something messed up with the particular node I'm trying to run (which works fine in noetic)- could be because it is a ros_control node?

the problem seems to be in

    lowlevel_class_loader_.loadLibrary(library_path);

Correlated with roscore

couldn't resolve publisher host []

I think that's all indicative of the crash of the node

lucasw commented 2 years ago

Do joint_trajectory_controller tests run?

rostest joint_trajectory_controller joint_trajectory_controller_vel.test 
... logging to /home/lucasw/.ros/log/rostest-lucasw-XPS-8940-860345.log
[ROSUNIT] Outputting test results to /home/lucasw/.ros/test_results/joint_trajectory_controller/rostest-test_joint_trajectory_controller_vel.xml
[Testcase: testjoint_trajectory_controller_vel_test] ... FAILURE!
FAILURE: Test node [joint_trajectory_controller/joint_trajectory_controller_vel_test] does not exist or is not executable
  File "/usr/lib/python3.10/unittest/case.py", line 59, in testPartExecutor
    yield
  File "/usr/lib/python3.10/unittest/case.py", line 591, in run
    self._callTestMethod(testMethod)
  File "/usr/lib/python3.10/unittest/case.py", line 549, in _callTestMethod
    method()
  File "/home/lucasw/base_catkin_ws/src/ros/ros_comm/tools/rostest/src/rostest/runner.py", line 93, in fn
    self.fail(message)
--------------------------------------------------------------------------------

[ROSTEST]-----------------------------------------------------------------------

[testjoint_trajectory_controller_vel_test][failed]

SUMMARY
 * RESULT: FAIL
 * TESTS: 0
 * ERRORS: 0
 * FAILURES: 1

ERROR: The following tests failed to run:
 * testjoint_trajectory_controller_vel_test

rostest log file is in /home/lucasw/.ros/log/rostest-lucasw-XPS-8940-860345.log

(do any tests run?)

--> need to build tests, catkin enable testing

catkin build joint_trajectory_controller --no-deps --catkin-make-args tests

In noetic on 20.04 (using osrf ros packages):

 rostest joint_trajectory_controller joint_trajectory_controller.test
... logging to /home/lucasw/.ros/log/rostest-lucaswsys76-16381.log
[ROSUNIT] Outputting test results to /home/lucasw/.ros/test_results/joint_trajectory_controller/rostest-test_joint_trajectory_controller.xml
[I] [1652153887.459 /controller_spawner ...roller_manager/scripts/spawner: 121]: Controller Spawner: Waiting for service controller_manager/load_controller
[I] [1652153887.464 /controller_spawner ...roller_manager/scripts/spawner: 126]: Controller Spawner: Waiting for service controller_manager/switch_controller
[I] [1652153887.468 /controller_spawner ...roller_manager/scripts/spawner: 134]: Controller Spawner: Waiting for service controller_manager/unload_controller
[I] [1652153887.473 /controller_spawner ...roller_manager/scripts/spawner: 189]: Loading controller: rrbot_controller
[I] [1652153887.531 /controller_spawner ...roller_manager/scripts/spawner: 197]: Controller Spawner: Loaded controllers: rrbot_controller
[I] [1652153887.541 /controller_spawner ...roller_manager/scripts/spawner: 206]: Started controllers: rrbot_controller
[E] [1652153889.217 /rrbot ...t_trajectory_controller_impl.h:588]: Joints on incoming goal don't match the controller joints.
...
[W] [1652153963.412 /rrbot ...roller/init_joint_trajectory.h:357]: Dropping first 1 trajectory point(s) out of 3, as they occur before the current time.
First valid point will be reached in 2.000s.
[I] [1652154004.409 /controller_spawner ...roller_manager/scripts/spawner:  55]: Shutting down spawner. Stopping and unloading controllers...
[I] [1652154004.413 /controller_spawner ...roller_manager/scripts/spawner:  64]: Stopping all controllers...
[W] [1652154004.538 /controller_spawner ...roller_manager/scripts/spawner:  72]: Controller Spawner error while taking down controllers: unable to connect to service: connection from sender terminated before handshake header received. 0 bytes were received. Please check sender for additional details.
[Testcase: testjoint_trajectory_controller_test] ... ok

[ROSTEST]-----------------------------------------------------------------------

[joint_trajectory_controller.rosunit-joint_trajectory_controller_test/stateTopicConsistency][passed]
...
[joint_trajectory_controller.rosunit-joint_trajectory_controller_test/goalToleranceViolationSingleJoint][passed]

SUMMARY
 * RESULT: SUCCESS
 * TESTS: 27
 * ERRORS: 0
 * FAILURES: 0

rostest log file is in /home/lucasw/.ros/log/rostest-lucaswsys76-16381.log

Try using the most recent versions of class_loader and pluginlib-> still works in noetic

lucasw commented 2 years ago

Looks like this show the problem (there's some additional debug output there I added in)

roslaunch joint_trajectory_controller joint_trajectory_controller_vel.test 
...
[I] [1652147779.795 /controller_spawner ...roller_manager/scripts/spawner: 121]: Controller Spawner: Waiting for service controller_manager/load_controller
[I] [1652147779.801 /controller_spawner ...roller_manager/scripts/spawner: 126]: Controller Spawner: Waiting for service controller_manager/switch_controller
[I] [1652147779.807 /controller_spawner ...roller_manager/scripts/spawner: 134]: Controller Spawner: Waiting for service controller_manager/unload_controller
[I] [1652147779.813 /controller_spawner ...roller_manager/scripts/spawner: 189]: Loading controller: rrbot_controller
[W] [1652147779.821 /rrbot ...ger/src/controller_manager.cpp:243]: Will load controller 'rrbot_controller'
[W] [1652147779.825 /rrbot ...ger/src/controller_manager.cpp:295]: Constructing controller 'rrbot_controller' of type 'velocity_controllers/JointTrajectoryController'
[W] [1652147779.825 /rrbot ...uginlib/./class_loader_imp.hpp:170]: Attempting to create managed (unique) instance for class velocity_controllers/JointTrajectoryController.
[W] [1652147779.825 /rrbot ...uginlib/./class_loader_imp.hpp:175]: load library
[W] [1652147779.825 /rrbot ...uginlib/./class_loader_imp.hpp:620]: find available 'velocity_controllers/JointTrajectoryController'
[W] [1652147779.826 /rrbot ...uginlib/./class_loader_imp.hpp:629]: library path '/home/lucasw/catkin_ws/devel/lib//libjoint_trajectory_controller.so'
[W] [1652147779.826 /rrbot ...uginlib/./class_loader_imp.hpp:645]: imp load library

[E] [1652147780.839 /controller_spawner ...roller_manager/scripts/spawner: 195]: Failed to load rrbot_controller
[I] [1652147780.842 /controller_spawner ...roller_manager/scripts/spawner: 197]: Controller Spawner: Loaded controllers: 
[I] [1652147780.852 /controller_spawner ...roller_manager/scripts/spawner: 206]: Started controllers: 
lucasw commented 2 years ago

Try out pluginlib, class_loader, and controller_manager tests

Use catkin_make run_tests because it is better supported than catkin tools

github.com/lucasw/pluginlib

[ERROR] [1652189490.604182301 ...:262]: Skipped loading plugin with error: XML Document '/usr/share/pluginlib/test/test_plugins.xml' has no Root Element. This likely means the XML is malformed or missing..

That may have to do with rospack not finding the current ws version of pluginlib:

~/tmp/catkin_make_ws3$ find . | grep test_plugins_broken.xml
./src/pluginlib/pluginlib/test/test_plugins_broken.xml
~/tmp/catkin_make_ws3$ rospack find pluginlib
/usr/share/pluginlib

catkin_make devel/bin is empty, but works in catkin tools devel.

-> Go back to using catkin tools, and put git@github.com:ros/rospack into src, then rospack find works

... but it only works for finding packages in the workspace, it doesn't find the apt installed ros packages- only the apt install rospack finds those.

lucasw commented 2 years ago

(back in catkin tools build)

catkin build joint_trajectory_controller --no-deps --catkin-make-args run_tests
...
[W] [1652192598.330 /controller_spawner ...roller_manager/scripts/spawner:  72]: Controller Spawner error while taking down controllers: unable to connect to service: connection from sender terminated before handshake header received. 0 bytes were received. Please check sender for additional details.
free(): double free detected in tcache 2
[W] [1652192598.368 /controller_spawner ...roller_manager/scripts/spawner:  72]: Controller Spawner error while taking down controllers: unable to connect to service: connection from sender terminated before handshake header received. 0 bytes were received. Please check sender for additional details.
free(): double free detected in tcache 2
double free or corruption (fasttop)
double free or corruption (fasttop)
...

-> use https://github.com/ros-o/control_toolbox

My ros_comm modifications look to be an issue also

catkin build joint_trajectory_controller && source devel/setup.bash && catkin build joint_trajectory_controller --catkin-make-args tests && rostest joint_trajectory_controller joint_trajectory_controller.test
lucasw commented 2 years ago

ros_comm at this version has the above issue

commit 3f8eca4a1f13996b33c03a5c4ee3a69fb0db3668 (HEAD -> noetic-devel, origin/noetic-devel, origin/HEAD)
Author: Robert Haschke <rhaschke@users.noreply.github.com>
Date:   Tue Jan 25 02:12:55 2022 +0100

    Fix $(dirname) resolution in include tags (#2173)

    * roslaunch: Extend $(dirname) test

    * roslaunch include: Resolve substitution args w.r.t. parent's context to ensure that $(dirname) resolves to parent's dir

if I catkin ignore it and rebuild then the joint test works- so whatever ros_comm is released into debian is older, and fine? Probably my Ubuntu 22.04 version is even older? No https://packages.ubuntu.com/jammy/python3-rosmaster

Are there patches on it in https://tracker.debian.org/pkg/ros-ros-comm?

Look at https://salsa.debian.org/science-team/ros-ros-comm

lucasw commented 2 years ago

Make a clean base_catkin_ws with no ros_comm or rosconsole in it, then make sure ROS_INFO/ERROR etc. work with test nodes built on top of that, and others already in /usr

Then when testing ability to build overlaying ros_comm/console use a new ros_base_catkin_ws

See what ldd says about built binaries, what ros core libraries are linked in, compare to similar in 20.04- does one dynamically point at the overlaying core libraries, but in 22.04 it's pointed at the /usr libs, or some broken mix of the two?

Does the debian build system result in binaries that are less 'native' than the 20.04 osrf ubuntu ones, which had abi compatibility that allowed the ros_comm overlay to work at all? Could it be a matter of so paths to absolute locations?

lucasw commented 2 years ago

rospack find

ROS_PACKAGE_PATH is empty when not sourcing a workspace, but rospack finds all the ws packages (and naturally not the ws ones).

ws rospack can't find any of the /usr/share packages (causing things like roslint to fail on package dependes) unset ROS_PACKAGE_PATH with ws rospack does't cause it to find the /usr/share/packages

If I add /usr/share/rospack to ROS_PACKAGE_PATH the ws rospack will find the /usr/share rospack

does the apt rospack not even look at ROS_PACKAGE_PATH?

~/tmp/ros-rospack$ grep -r "/usr/share" *
debian/patches/0002-Add-usr-share-as-default-ROS_PACKAGE_PATH.patch:+  sp.push_back("/usr/share/");
debian/patches/0004-Limit-search-depth-for-usr-share.patch:Subject: Limit search depth for /usr/share
debian/patches/0004-Limit-search-depth-for-usr-share.patch:+        if(name.size() == 0 || name[0] == '.' || (boost::starts_with(dit->path().string(), "/usr/share") && depth > 1))

https://salsa.debian.org/science-team/ros-rospack/-/tree/master/debian/patches

Try applying all those patches and build in base_catkin_ws, then modify so it searches /usr/share and looks at every entry in ROS_PACKAGE_PATH

(Also make a ros_comm branch that applies all of https://salsa.debian.org/science-team/ros-ros-comm/-/tree/master/debian/patches)

-> https://github.com/lucasw/rospack/tree/salsa fixes this, the /usr/share needs to go last for the right priority

even with rospack fixed catkin_lint isn't finding the packages- it isn't even using rospack?

        for pkg in info.buildtool_dep | info.build_dep | info.export_dep | info.exec_dep | info.test_dep:
            if info.env.get_package_type(pkg) == PackageType.UNKNOWN:
                info.report(ERROR, "UNKNOWN_PACKAGE", pkg=pkg, file_location=("package.xml", 0))

solved with https://github.com/lucasw/catkin_lint/tree/append_usr_share_package_path

lucasw commented 2 years ago
Call Stack (most recent call first):
  /usr/lib/x86_64-linux-gnu/cmake/Qt5Core/Qt5CoreMacros.cmake:431 (_qt5_warn_deprecated)
  CMakeLists.txt:422 (QT5_USE_MODULES)
This warning is for project developers.  Use -Wno-dev to suppress it.

->

-        QT5_USE_MODULES(rtabmapviz Widgets Core Gui)
+        target_link_libraries(rtabmapviz Qt5::Widgets Qt5::Core Qt5::Widgets Qt5::Gui)

https://stackoverflow.com/questions/31172156/what-to-use-instead-of-qt5-use-modules

lucasw commented 2 years ago

Get rid of this- need to strip(":") and replace multiples like :: with : before comparison:

------------------------------------------------------------------------------------------------------------------------------
WARNING: Your current environment's CMAKE_PREFIX_PATH is different from the cached CMAKE_PREFIX_PATH used the last time this
workspace was built.

If you want to use a different CMAKE_PREFIX_PATH you should call `catkin clean` to remove all references to the previous
CMAKE_PREFIX_PATH.

Cached CMAKE_PREFIX_PATH:
    /home/lucasw/base_catkin_ws/devel:/home/lucasw/other/install:/home/lucasw/other/install/lib/cmake
Current CMAKE_PREFIX_PATH:
    /home/lucasw/base_catkin_ws/devel::/home/lucasw/other/install:/home/lucasw/other/install/lib/cmake

https://github.com/catkin/catkin_tools/blob/main/catkin_tools/context.py#L506-L518

lucasw commented 2 years ago
Warnings   << nmea_navsat_driver:make /home/lucasw/base_catkin_ws/logs/nmea_navsat_driver/build.make.000.log                                                                                                            
ERROR: Introspect error on :1.135:/modules/kwalletd5: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
ERROR: Introspect error on :1.140:/modules/kwalletd5: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
  ERROR: Introspect error on :1.145:/modules/kwalletd5: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying

nmea_navsat_driver also wnts to do something with kdewallet in venv, strange -> CATKIN_IGNORE

also

Warnings   << test_catkin_virtualenv_inherited:make /home/lucasw/base_catkin_ws/logs/test_catkin_virtualenv_inherited/build.make.000.log                                                                                
ERROR: Introspect error on :1.220:/modules/kwalletd5: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
ERROR: Introspect error on :1.225:/modules/kwalletd5: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying
  ERROR: Introspect error on :1.230:/modules/kwalletd5: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.NoReply: Message recipient disconnected from message bus without replying

Is this something strange in the cmake of those, or something failing on my system?

touch ./other/catkin_virtualenv/test_catkin_virtualenv/CATKIN_IGNORE
touch ./other/catkin_virtualenv/test_catkin_virtualenv_inherited/CATKIN_IGNORE
touch ./other/nmea_navsat_driver/CATKIN_IGNORE

Actually just need to build catkin_virtualenv first- it seems like it needs a build_depend on it, it has a test_depend conditional- but that isn't getting used?