macOS(源码)

系统要求

我们目前支持macOS Mojave(10.14)。

安装先决条件

构建ROS 2需要安装以下内容:

  1. Xcode

    • 如果您尚未安装Xcode,请安装[Xcode](https://apps.apple.com/app/xcode/id497799835)。

    • 注意:Xcode 11.3.1 之后的版本无法在 macOS Mojave 上安装,因此您需要手动安装旧版本,参见:https://stackoverflow.com/a/61046761

    • 此外,如果您尚未安装命令行工具,请安装:

      xcode-select --install
      # This command will not succeed if you have not installed Xcode.app
      sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
      # If you installed Xcode.app manually, you need to either open it or run:
      sudo xcodebuild -license
      # To accept the Xcode.app license
      
  2. **brew**(需要安装其他工具;您可能已经安装了此工具):

    • 按照 http://brew.sh/ 上的安装说明进行安装。

    • 可选: 运行以下命令检查 brew 是否满意您的系统配置:

      brew doctor
      

      解决任何它识别出的问题。

  3. 使用 brew 安装更多内容:

    brew install asio assimp bison bullet cmake console_bridge cppcheck \
      cunit eigen freetype graphviz opencv openssl orocos-kdl pcre poco \
      pyqt5 python qt@5 sip spdlog tinyxml tinyxml2
    
  4. 设置一些环境变量:

    # Add the openssl dir for DDS-Security
    # if you are using BASH, then replace '.zshrc' with '.bashrc'
    echo "export OPENSSL_ROOT_DIR=$(brew --prefix openssl)" >> ~/.zshrc
    
    # Add the Qt directory to the PATH and CMAKE_PREFIX_PATH
    export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:$(brew --prefix qt@5)
    export PATH=$PATH:$(brew --prefix qt@5)/bin
    
  5. 使用 python3 -m pip``(只安装 ``pip 可能会安装Python3或Python2)安装更多内容:

    python3 -m pip install -U \
     argcomplete catkin_pkg colcon-common-extensions coverage \
     cryptography empy flake8 flake8-blind-except==0.1.1 flake8-builtins \
     flake8-class-newline flake8-comprehensions flake8-deprecated \
     flake8-docstrings flake8-import-order flake8-quotes \
     importlib-metadata lark==1.1.1 lxml matplotlib mock mypy==0.931 netifaces \
     nose pep8 psutil pydocstyle pydot pygraphviz pyparsing==2.4.7 \
     pytest-mock rosdep rosdistro setuptools==59.6.0 vcstool
    

    请确保``$PATH``环境变量包含二进制文件的安装位置($(brew --prefix)/bin)。

  6. 可选: 如果您想构建ROS 1<->2桥接器,那么您还必须安装ROS 1:

    • 按照正常的安装说明开始: http://wiki.ros.org/kinetic/Installation/OSX/Homebrew/Source

    • 当您到达调用``rosinstall_generator``以获取源代码的步骤时,下面是一个替代的调用方式,只引入生成有用桥接器所需的最小代码:

      rosinstall_generator catkin common_msgs roscpp rosmsg --rosdistro kinetic --deps --wet-only --tar > kinetic-ros2-bridge-deps.rosinstall
      wstool init -j8 src kinetic-ros2-bridge-deps.rosinstall
      

      否则,请按照正常的说明进行,然后在此处构建ROS 2之前,使用生成的``install_isolated/setup.bash``进行源码配置。

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

macOS/OS X版本>=10.11默认启用系统完整性保护 (SIP)。为了防止SIP阻止进程继承动态链接器环境变量,如``DYLD_LIBRARY_PATH``,您需要按照`此处的说明 <https://developer.apple.com/library/content/documentation/Security/Conceptual/System_Integrity_Protection_Guide/ConfiguringSystemIntegrityProtection/ConfiguringSystemIntegrityProtection.html>`__来禁用它。

获取ROS 2代码

创建一个工作空间并克隆所有仓库:

mkdir -p ~/ros2_humble/src
cd ~/ros2_humble
vcs import --input https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos src

安装额外的DDS供应商(可选)

如果您想使用默认之外的其他DDS或RTPS供应商,您可以在这里找到说明:这里

构建ROS 2代码。

使用``colcon``工具构建所有内容(有关使用``colcon``的更多信息,请参阅:此教程):

cd ~/ros2_humble/
colcon build --symlink-install --packages-skip-by-dep python_qt_binding

注意:由于SIP、Qt@5和PyQt5存在未解决的问题,我们需要禁用``python_qt_binding``才能成功构建。此问题解决后将会移除,详情请参阅:https://github.com/ros-visualization/python_qt_binding/issues/103

环境设置

将ROS 2的设置文件设置为源文件:

. ~/ros2_humble/install/setup.zsh

这将自动为支持构建的任何DDS供应商设置环境。

尝试一些示例

在一个终端中,按照上述说明设置ROS 2环境,然后运行一个C++``talker``:

ros2 run demo_nodes_cpp talker

在另一个终端中,先源文件设置文件,然后运行一个Python listener

ros2 run demo_nodes_py listener

你应该看到“talker”说它正在“发布”消息,而“listener”说“我听到了”这些消息。这验证了C++和Python API都正常工作。太棒了!

安装后的下一步

继续进行`教程和演示 <../../Tutorials>`,以配置您的环境、创建自己的工作空间和软件包,并学习ROS 2核心概念。

使用 ROS 1 桥接器

ROS 1 桥接器可以连接 ROS 1 和 ROS 2 的主题。请参阅专门的 文档 以了解如何构建和使用 ROS 1 桥接器。

其他RMW实现(可选)

ROS 2使用的默认中间件是“Fast DDS”,但是中间件(RMW)可以在运行时替换。请参阅:doc:`指南 <../../How-To-Guides/Working-with-multiple-RMW-implementations>`以了解如何使用多个RMW。

保持更新

参见:doc:`../Maintaining-a-Source-Checkout`以定期刷新你的源代码安装。

故障排除

故障排除技术可在 此处 找到。

卸载

  1. 如果按照上述指示使用 colcon 安装了工作空间,则“卸载”可能只是打开新终端而不加载工作空间的“setup”文件。这样,您的环境将表现得好像系统中没有安装 Humble。

  2. 如果您还想释放空间,可以使用以下命令删除整个工作空间目录:

    rm -rf ~/ros2_humble