在Ubuntu 18.10上安装ROS Melodic

时间:2018-11-12 16:44:45

标签: boost ros

不能是唯一对此宇宙(与Wayland结合)和旋律有兴趣的人。

我会提前:我似乎已经在我的XPS 13(9370)上成功地管理了此操作,或者至少[成功]完成了安装脚本。但是,有一个真正的解决方法。不管结果如何,我都会很乐意投票给其他尝试安装的人。

基本上,我在http://wiki.ros.org/Installation/Source上运行了“桌面”安装的说明,以下是我如何处理各种障碍的方法:

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

  • 提升库错误...
    (请参阅下面的Michal Fapso的解决方案。它更快,更轻松,更不会出现错误……)
    安装智能后,在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:
    可以使用apt(libogre-1.9-dev)轻松轻松地安装OGRE。
    libyaml ...也可以安装,除了在此卡死之前我尝试了三个或四个版本(libyaml-cpp0.3-dev)


roscore运行,显示旋律版本1.14.3。 Turtlesim使用turtle_tf2_demo(远程操作)运行,rviz可以运行,并且可以使用rosgraph和Python(rospy)模块。

请报告您的错误!

1 个答案:

答案 0 :(得分:4)

感谢您的提示,赖特(Q. Wright)。这是针对像我这样的ROS初学者的更详细指南:)

这部分来自http://wiki.ros.org/melodic/Installation/Source,其中包括Q. Wright的技巧,它指定了较旧的ubuntu发行版:

TypeError: array([[[223, 198, 219],
        [215, 185, 209],
        [207, 174, 201],
        ...,
        [230 has type numpy.ndarray, but expected one of: bytes

现在,在运行构建过程之前,存在Q. Wright提到的boost库错误。它们是由“ boost :: posix_time :: milliseconds”函数引起的,该函数在较新的boost版本中仅接受整数参数,但是ROS中的actionlib程序包在多个位置上对其进行了浮动处理。您可以使用该功能列出所有文件:

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”函数调用。在这些文件中传递了float参数:

find -type f -print0 | xargs -0 grep 'boost::posix_time::milliseconds' | cut -d: -f1 | sort -u

并替换这样的呼叫:

./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)

现在我们终于可以构建ROS,希望不会出现任何错误:

boost::posix_time::milliseconds(1000)