在Ubuntu 18.10上安装ROS Melodic

6

我不可能是唯一对Cosmic(带有Wayland)和Melodic组合感兴趣的人。

我要坦诚:在我的XPS 13(9370)上,我似乎已经成功地完成了此项任务,或者至少安装脚本[最终]成功完成。但是,这里有一个非常巧妙的解决方法。我很乐意投票支持其他尝试安装的人,无论结果如何。

基本上,我按照http://wiki.ros.org/Installation/Source上的“桌面”安装说明进行操作,并且以下是我在途中遇到的各种问题的解决方法:

  • 使用bionic代替cosmic来覆盖发行版:
    rosdep install --from-paths src --ignore-src --os=ubuntu:bionic --rosdistro melodic -y

  • Boost库错误...
    (请参见Michal Fapso的解决方案。它更快,更容易,更稳定...)
    安装aptitude后,在Boost 1.65和Boost 1.67之间来回切换,在每次切换后重试安装。真的。执行此操作的两个命令是:
    sudo aptitude install libboost1.65-all-dev
    和:
    sudo apt install libboost1.67-all-dev
    交替执行十几次,确保每次都能得到更高的软件包编号。[我认为下一代ROS将需要以不同的方式调用Boost date_time函数。]

  • 随机库---OGRE、libyaml:
    OGRE可以通过apt轻松安装(libogre-1.9-dev)
    libyaml...也可以安装,但我在成功之前尝试了三四个版本(libyaml-cpp0.3-dev)


roscore运行,显示Melodic版本1.14.3。Turtlesim与turtle_tf2_demo(远程操作)、rviz、rosgraph和Python(rospy)模块一起运行。

请报告您的错误!


那么,在Ubuntu 18.10上安装ROS的状态如何?只能从源代码安装吗?我尝试通过sources.list安装,但在更新时出现“无发布文件”错误。在Ubuntu 18.10上安装ROS时是否有任何资源或步骤需要遵循?还是只需从源代码安装并处理像你和Michael一样的问题? - Blind0ne
有其他人需要回答;我不想损坏我的安装,并且由于依赖性问题,我已经开始使用VirtualBox来安装ROS2。 - Brian Wright
1个回答

7
感谢您的提示,Q. Wright。以下是一份更详细的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

现在,在运行构建流程之前,有一些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

快速问题:您是否成功地安装了所有依赖项而没有遇到任何问题?rosdep install --from-paths src --ignore-src --os=ubuntu:bionic --rosdistro melodic -y - avermaet
@avermaet,我已经记不清了。当时我只是跟着几个ROS教程学习,现在也没有使用ROS。但是当我现在运行你提到的命令时,我得到了以下输出: ERROR: 以下软件包/堆栈无法将它们的rosdep键解析为系统依赖项: husky_gazebo:无法找到[multimaster_launch]的rosdep定义 husky_control:无法找到[teleop_twist_joy]的rosdep定义 husky_bringup:无法找到[um7]的rosdep定义 husky_navigation:无法找到[gmapping]的rosdep定义 - Michal Fapso
好的,谢谢。对我也不起作用,所以我降级到了支持的18.04版本。 - avermaet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接