Спасибо за ваши подсказки, Q. Райт.Вот более подробное руководство для начинающих ROS, таких как я:)
Эта часть из http://wiki.ros.org/melodic/Installation/Source и включает трюк Q. Wright с указанием более старого дистрибутива Ubuntu:
sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential
sudo rosdep init
rosdep update
mkdir ~/projects/ros_catkin_ws
cd ~/projects/ros_catkin_ws
rosinstall_generator desktop_full --rosdistro melodic --deps --tar > melodic-desktop-full.rosinstall
wstool init -j8 src melodic-desktop-full.rosinstall
rosdep install --from-paths src --ignore-src --os=ubuntu:bionic --rosdistro melodic -y
Теперь, прежде чем мы запустим процесс сборки, есть ошибки библиотеки повышения, о которых упоминал В. Райт.Они вызваны функцией 'boost :: posix_time :: milliseconds', которая в более новых версиях boost принимает только целочисленный аргумент, а пакет actionlib в ROS дает ему значение float в нескольких местах.Вы можете перечислить все файлы, используя эту функцию:
find -type f -print0 | xargs -0 grep 'boost::posix_time::milliseconds' | cut -d: -f1 | sort -u
Откройте их в текстовом редакторе и найдите вызов функции boost :: posix_time :: milliseconds.Аргумент с плавающей точкой передается в следующих файлах:
./src/actionlib/include/actionlib/client/simple_action_client.h
./src/actionlib/include/actionlib/destruction_guard.h
./src/actionlib/include/actionlib/server/simple_action_server_imp.h
./src/actionlib/src/connection_monitor.cpp
./src/actionlib/test/destruction_guard_test.cpp
и заменяет вызовы следующим образом:
boost::posix_time::milliseconds(loop_duration.toSec() * 1000.0f));
на:
boost::posix_time::milliseconds(int(loop_duration.toSec() * 1000.0f)));
и эти:
boost::posix_time::milliseconds(1000.0f)
to:
boost::posix_time::milliseconds(1000)
Теперь мы наконец можем построить ROS, надеюсь, безо всяких ошибок:
./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release