在macOS上安装ROS 2

本页介绍如何在macOS上从预编译的二进制包安装ROS 2。 [Alyssa@5737]

注解

预构建的二进制文件不包括所有ROS 2包。包括 ROS base variant 中的所有包,并且只包括 ROS desktop variant 中的包的一个子集。包的准确列表可在 this ros2.repos file 列的仓库中查看。 [Alyssa@5738]

系统要求

我们支持macOS Mojave (10.14)。

安装先决条件

在安装ROS 2之前,您需要安装以下内容。 [待校准@5740]

  • brew * (需要安装更多的东西; 你可能已经安装了这个工具) *: [Alyssa@5714]

  • 使用 brew 安装更多包: [Alyssa@5718]

    brew install python@3.8
    # Unlink in case you have python@3.7 installed already
    brew unlink python
    # Make the python command be Python 3.8
    brew link --force python@3.8
    
    # install asio and tinyxml2 for Fast-RTPS
    brew install asio tinyxml2
    
    # install dependencies for robot state publisher
    brew install tinyxml eigen pcre poco
    
    # OpenCV isn't a dependency of ROS 2, but it is used by some demos.
    brew install opencv
    
    # install OpenSSL for DDS-Security
    brew install openssl
    # if you are using ZSH, then replace '.bashrc' with '.zshrc'
    echo "export OPENSSL_ROOT_DIR=$(brew --prefix openssl)" >> ~/.bashrc
    
    # install Qt for RViz
    brew install qt freetype assimp
    
    # install console_bridge for rosbag2
    brew install console_bridge
    
    # install dependencies for rcl_logging_log4cxx
    brew install log4cxx spdlog
    
    # install CUnit for Cyclone DDS
    brew install cunit
    
  • 安装ros2 doctor的依赖项 [Alyssa@5741]

    python3 -m pip install rosdistro

  • 安装rqt的依赖项 [Alyssa@5720]

    brew install sip pyqt5

    在安装过程中查找sip相关内容时,需要修复一些路径名 (参见 ROS 1 wiki ): [Alyssa@5744]

    ln -s /usr/local/share/sip/Qt5 /usr/local/share/sip/PyQt5

    brew install graphviz

    python3 -m pip install pygraphviz pydot

    注解

    安装 pygraphviz 时,你可能会遇到 "error: Error locating graphviz" 的问题。请尝试以下install命令: [Alyssa@5748]

    python3 -m pip install --install-option="--include-path=/usr/local/include/" --install-option="--library-path=/usr/local/lib/" pygraphviz
    
  • 安装SROS2的依赖项 [Alyssa@5749]

    python3 -m pip install lxml

  • 为命令行工具安装其他运行时依赖项: [待校准@5751]

    python3 -m pip install catkin_pkg empy ifcfg lark-parser lxml netifaces numpy pyparsing pyyaml setuptools argcomplete
    

禁用系统完整性保护 (SIP)

macOS/OS X版本 > = 10.11时默认情况下启用了系统完整性保护。为使SIP不阻止继承动态链接器的环境变量的进程,如 DYLD_LIBRARY_PATH ,你需要禁用它 参考此说明文档[Alyssa@5728]

下载ROS 2

  • 打开发行版本页面: https://github.com/ros2/releases [Alyssa@5687]

  • 下载macOS的最新软件包; 让我们假设它最终下载到 “~/Downloads/ros2-release-distro-date-macos-amd64.tar.bz2”。 [Alyssa@5752]

    • 注意: 可能有多个二进制下载选项,这可能会导致文件名不同。 [待校准@5534]

  • 解压: [Alyssa@5535]

    mkdir -p ~/ros2_foxy
    cd ~/ros2_foxy
    tar xf ~/Downloads/ros2-release-distro-date-macos-amd64.tar.bz2
    

安装额外的DDS实现 (可选) [待校准@5495]

如果您想使用除默认的eProsima快速RTPS之外的其他DDS或RTPS供应商,您可以参考 here. [Alyssa@5664]

环境设置

设置ROS 2安装文件的环境变量: [Alyssa@5732]

. ~/ros2_foxy/ros2-osx/setup.bash

尝试运行一些例子 [Alyssa@5504]

在一个终端中,如上所述设置ROS 2环境,然后运行一个c++的 talker : [Alyssa@5733]

ros2 run demo_nodes_cpp talker

在另一个终端中,设置ROS 2环境,然后运行Python listener : [待校准@5753]

ros2 run demo_nodes_py listener

你应该看到了 talker 说这是 Publishing 消息 ,listenerI heard 这些消息。这证明了C++和Python的APIs都是正常工作的。万岁! [Alyssa@5507]

安装后的下一步

继续使用 tutorials and demos 来配置您的环境,创建您自己的工作空间和包,并学习ROS 2核心概念。 [Alyssa@5734]

使用ROS 1 bridge

ROS 1bridge可以连接从ROS 1到ROS 2的话题,反之亦然。看看这个专门的文献 documentation 如何编译和使用ROS 1bridge。 [Alyssa@5511]

附加RMW实现 (可选)

ROS 2使用的默认中间件是 Fast-RTPS ,但中间件 (RMW) 可以在运行时替换。有关如何使用多个RMWs的信息,请参阅 guide[待校准@5754]

故障排除

故障排除技术可以参考 here[Alyssa@5735]

卸载

  1. 如果你按照上面的指示用colcon安装了你的工作空间, "uninstalling" 可能只是打开一个新的终端,而没有source工作空间的 setup 文件。因此,您的环境就会表现得好像您的系统上没有安装Foxy。 [Alyssa@5523]

  2. 如果您还打算释放所有空间,则可以使用以下命令删除整个工作空间的目录: [Alyssa@5524]

    rm -rf ~/ros2_foxy