macOS(源码)
目录
安装先决条件
构建ROS 2需要安装以下内容:
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
**brew**(需要安装其他工具;您可能已经安装了此工具):
按照 http://brew.sh/ 上的安装说明进行安装。
可选: 运行以下命令检查
brew
是否满意您的系统配置:brew doctor
解决任何它识别出的问题。
使用
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
设置一些环境变量:
# 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
使用
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
)。可选: 如果您想构建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环境,然后运行一个C++``talker``:
ros2 run demo_nodes_cpp talker
在另一个终端中,先源文件设置文件,然后运行一个Python listener
:
ros2 run demo_nodes_py listener
你应该看到“talker”说它正在“发布”消息,而“listener”说“我听到了”这些消息。这验证了C++和Python API都正常工作。太棒了!
使用 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。