感谢您的提示,Q. Wright。这是针对像我这样的 ROS 初学者的更详细的指南:)
这部分来自http://wiki.ros.org/melodic/Installation/Source 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
现在,在我们运行构建过程之前,存在 Q. Wright 提到的 boost 库错误。它们是由“boost::posix_time::milliseconds”函数引起的,该函数在较新的 boost 版本中仅接受整数参数,但 ROS 中的 actionlib 包在多个位置为其提供了浮点数。您可以使用该函数列出所有文件:
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));
to:
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