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 ros1 classic gazebo on 23.10 #32

Closed lucasw closed 6 months ago

lucasw commented 9 months ago
git clone https://github.com/gazebosim/gz-sim
mkdir build_gazebo
cd build_gazebo
cmake ../src/gz-sim  -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$DEST
CMake Error at CMakeLists.txt:13 (find_package):
  By not providing "Findgz-cmake3.cmake" in CMAKE_MODULE_PATH this project
  has asked CMake to find a package configuration file provided by
  "gz-cmake3", but CMake did not find one.

  Could not find a package configuration file provided by "gz-cmake3" with
  any of the following names:

    gz-cmake3Config.cmake
    gz-cmake3-config.cmake

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

(https://gazebosim.org/api/sim/8/install.html has more of the unhelpful 'install from source' instructions that require first installing some gazebo binaries...)

lucasw commented 9 months ago
sudo apt install libprotobuf-c-dev protobuf-c-compiler protobuf-compiler libzmq-dev libzip-dev
git clone git@github.com:gazebosim/gz-cmake.git
mkdir build_gazebo_cmake
cd build_gazebo_cmake
cmake ../src/gz-cmake  -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$DEST
make
make install

and do same for all of these:

git clone git@github.com:gazebosim/gz-math.git
git clone git@github.com:gazebosim/gz-msgs.git
git clone git@github.com:gazebosim/gz-transport.git
git clone git@github.com:gazebosim/gz-plugin.git
git clone git@github.com:gazebosim/gz-utils.git

(in this order)

git clone git@github.com:gazebosim/gz-common
git clone git@github.com:gazebosim/gz-fuel-tools
git clone git@github.com:gazebosim/gz-rendering
git clone git@github.com:gazebosim/gz-gui
git clone git@github.com:gazebosim/sdformat
git clone git@github.com:gazebosim/gz-physics
git clone git@github.com:gazebosim/gz-sensors
lucasw commented 9 months ago
In file included from /home/lucasw/ros/ros1_gazebo/src/gz-common/geospatial/src/ImageHeightmap.cc:18:
/home/lucasw/ros/ros1_gazebo/src/gz-common/geospatial/include/gz/common/geospatial/ImageHeightmap.hh:27:10: fatal error: gz/common/Image.hh: No such file or directory
   27 | #include <gz/common/Image.hh>
      |          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.

missed this error before:

CMake Warning at /home/lucasw/other/install/share/cmake/gz-cmake3/cmake3/GzConfigureBuild.cmake:68 (message):
   CONFIGURATION WARNINGS:
   -- Skipping component [graphics]: Missing dependency [FreeImage].
      ^~~~~ Set SKIP_graphics=true in cmake to suppress this warning.

   -- Skipping component [graphics]: Missing dependency [gts] - GNU Triangulation Surface library.
      ^~~~~ Set SKIP_graphics=true in cmake to suppress this warning.

   -- Skipping component [av]: Missing dependency [libavdevice].
      ^~~~~ Set SKIP_av=true in cmake to suppress this warning.

Call Stack (most recent call first):
  CMakeLists.txt:139 (gz_configure_build)
sudo apt install libfreeimage-dev libgts-dev libavdevice-dev
lucasw commented 9 months ago
-- Could NOT find Qt5QuickControls2 (missing: Qt5QuickControls2_DIR)
CMake Warning at /home/lucasw/other/install/share/cmake/gz-cmake3/cmake3/GzFindPackage.cmake:243 (find_package):
  Found package configuration file:

    /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake

  but it set Qt5_FOUND to FALSE so package "Qt5" is considered to be NOT
  FOUND.  Reason given by package:

  Failed to find Qt5 component "QuickControls2" config file at
  "/usr/lib/x86_64-linux-gnu/cmake/Qt5QuickControls2/Qt5QuickControls2Config.cmake"

Call Stack (most recent call first):
  CMakeLists.txt:84 (gz_find_package)

-> qtquickcontrols2-5-dev

lucasw commented 9 months ago

gz-rendering

sudo apt install libogre-next-dev

Don't want to uninstall libogre-1.12-dev for 1.9

sudo apt install libignition-rendering-ogre2-dev

Maybe any of the libignition packages in debian would work?

lucasw commented 9 months ago

gz-sensors

-- Searching for <gz-rendering8> component [ogre2]
CMake Warning at /home/lucasw/other/install/lib/cmake/gz-rendering8/gz-rendering8-config.cmake:202 (find_package):
  By not providing "Findgz-rendering8-ogre2.cmake" in CMAKE_MODULE_PATH this
  project has asked CMake to find a package configuration file provided by
  "gz-rendering8-ogre2", but CMake did not find one.

  Could not find a package configuration file provided by
  "gz-rendering8-ogre2" (requested version 8.0.0) with any of the following
  names:

    gz-rendering8-ogre2Config.cmake
    gz-rendering8-ogre2-config.cmake

just build it anyway

lucasw commented 9 months ago

gazebo built and installed, now want to build gazebo_ros

catkin config  --cmake-args -DCMAKE_CXX_STANDARD_INCLUDE_DIRECTORIES=$DEST/include -DCMAKE_BUILD_TYPE=Release -Wno-deprecated
lucasw commented 9 months ago

Whoops, looks like everything above is for the newer (previously 'ignition') version of gazebo, which works with ros1 or not? But even if it does work with ros1 older gazebo ros packages won't work with it?

https://github.com/gazebosim/gazebo-classic

sdformat branch sdf9

sudo apt install ignition-tools

No do source install

git clone git@github.com:gazebosim/gz-tools.git --branch ign-tools1

(not sure about the branch, but it has been updated recently)


-- BUILD ERRORS: These must be resolved before compiling.
--  Missing: libtar
--  Missing: Ignition msgs5 library (libignition-msgs5-dev).
--  Missing: Ignition Transport (libignition-transport8-dev)
--  Missing: Ignition Common (libignition-common3-dev
--  Missing: Ignition Fuel Tools (libignition-fuel-tools4-dev
-- END BUILD ERRORS
sudo apt install libtar-dev
gz-msgs branch ign-msgs5
gz-transport branch ign-transport8
gz-common ign-common3
gz-fuel-tools ign-fuel-tools4
lucasw commented 9 months ago

Have gazebo_* ros packages built, now try a project that uses it:

but it crashes out

[I] [1702856047.734, , 0.500 /gazebo ...t_trajectory_controller_impl.h:277]: Initialized controller 'eff_joint_traj_controller' with:
- Number of joints: 6
- Hardware interface type: 'hardware_interface::EffortJointInterface'
- Trajectory segment type: 'trajectory_interface::QuinticSplineSegment<double>'
[I] [1702856047.776, 0.543 /ros_control_controller_spawner ...lib/controller_manager/spawner: 197]: Controller Spawner: Loaded controllers: joint_state_controller, eff_joint_traj_controller
[I] [1702856047.778, 0.545 /ros_control_controller_spawner ...lib/controller_manager/spawner: 206]: Started controllers: joint_state_controller, eff_joint_traj_controller
Segmentation fault (core dumped)
[gazebo_gui-3] process has died [pid 325827, exit code 139, cmd /home/lucasw/ros/ros1_gazebo/src/gazebo_ros_pkgs/gazebo_ros/scripts/gzclient __name:=gazebo_gui __log:=/home/lucasw/terraclear/data/2023_12_17/log/aeb29592-9d34-11ee-b051-b07b2517d43d/gazebo_gui-3.log].
log file: /home/lucasw/terraclear/data/2023_12_17/log/aeb29592-9d34-11ee-b051-b07b2517d43d/gazebo_gui-3*.log

gazebo classic can be brittle, try a few more times

Gazebo multi-robot simulator, version 11.14.0
Copyright (C) 2012 Open Source Robotics Foundation.
Released under the Apache 2 License.
http://gazebosim.org

no can't get it working even standalone

lucasw commented 9 months ago

Go back to trying the latest gazebo - this is the newer gazebo but at least has all the install instructions in one place without referring to binary installs