在macOS上构建ROS 2
目录
系统要求
我们支持macOS 10.14 (Mojave)。 [待校准@5706]
但是,一些新版本 (如10.13.x) 和一些旧版本 (如10.11.x和10.10.x) 也可以使用。 [待校准@5707]
安装先决条件 [待校准@5708]
为了编译ROS 2,您需要安装以下内容: [Alyssa@5709]
Unix [待校准@5710]
如果尚未安装,请安装Xcode。 [待校准@5711]
注意: 11.3.1之后的Xcode版本无法再安装在macOS Mojave上,因此您需要手动安装旧版本,请参阅: https://stackoverflow.com/a/61046761 [Alyssa@5712]
另外,如果尚未安装它,请通过命令行工具安装: [Alyssa@5713]
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 * (需要安装更多的东西; 你可能已经安装了这个工具) *: [Alyssa@5714]
安装说明请参阅:http://brew.sh/ [Alyssa@5715]
可选 : 通过运行以下命令检查您的系统配置是否满足
brew
的需求: [小鱼@5716]brew doctor
修复它识别的任何问题。 [待校准@5717]
使用
brew
安装更多包: [Alyssa@5718]brew install cmake cppcheck eigen pcre poco tinyxml wget bullet brew install python@3.8 brew unlink python # Make the python command be Python 3.8 brew link --force python@3.8 # install dependencies for Fast-RTPS if you are using it brew install asio tinyxml2 brew install opencv # install console_bridge for rosbag2 brew install console_bridge # 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 dependencies for rcl_logging brew install log4cxx spdlog # install CUnit for Cyclone DDS brew install cunit
安装rviz的依赖项 [Alyssa@5719]
# install dependencies for Rviz brew install qt@5 freetype assimp # Add the Qt directory to the PATH and CMAKE_PREFIX_PATH export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/usr/local/opt/qt@5 export PATH=$PATH:/usr/local/opt/qt@5/bin
安装rqt的依赖项 [Alyssa@5720]
brew install graphviz pyqt5 sip
使用
python3 -m pip
(pip
可能安装Python3或Python2) 安装更多包: [Alyssa@5721]python3 -m pip install -U \ argcomplete catkin_pkg colcon-common-extensions coverage \ cryptography empy flake8 flake8-blind-except flake8-builtins \ flake8-class-newline flake8-comprehensions flake8-deprecated \ flake8-docstrings flake8-import-order flake8-quotes ifcfg \ importlib-metadata lark-parser lxml mock mypy==0.761 netifaces \ nose pep8 pydocstyle pydot pygraphviz "pyparsing>=2.4,<3" \ pytest-mock rosdep rosdistro setuptools vcstool
请确保 “$ PATH'' 环境变量包含了二进制文件的安装位置 (默认值:“ $ HOME/Library/Python/<version>/bin'') [Alyssa@5722]
Optional: if you want to build the ROS 1<->2 bridge, then you must also install ROS 1:
从标准安装说明开始: https://wiki.ros.org/kinetic/Installation/OSX/Homebrew/Source [Alyssa@5724]
当您进行调用
rosinstall_generator
来获取源文件的步骤时,这里有一个可选命令,它只安装一些为了生成有用的bridge所需的最低限度依赖包: [Alyssa@5725]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之前source生成的
install_isolated/setup.bash
文件。 [Alyssa@5726]
禁用系统完整性保护 (SIP)
macOS/OS X版本 > = 10.11时默认情况下启用了系统完整性保护。为使SIP不阻止继承动态链接器的环境变量的进程,如 DYLD_LIBRARY_PATH
,你需要禁用它 参考此说明文档。 [Alyssa@5728]
获取ROS 2代码
创建工作空间并克隆所有仓库: [Alyssa@5492]
mkdir -p ~/ros2_foxy/src
cd ~/ros2_foxy
wget https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
vcs import src < ros2.repos
安装其他DDS供应商 (可选) [待校准@5729]
如果你想使用除了默认的eProsima的快速RTPS,以外的DDS或RTPS供应商,你可以在 here 找到说明。 [Alyssa@5496]
编译ROS 2代码 [Alyssa@5604]
运行 colcon
工具来编译一切 (更多关于 colcon
的使用在 this tutorial 中): [Alyssa@5730]
cd ~/ros2_foxy/
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 [Alyssa@5731]
环境设置
设置ROS 2安装文件的环境变量: [Alyssa@5732]
. ~/ros2_foxy/install/setup.bash
这将自动为其支持的任何DDS供应商设置编译环境。 [Alyssa@5611]
尝试运行一些例子 [Alyssa@5504]
在一个终端中,如上所述设置ROS 2环境,然后运行一个c++的 talker
: [Alyssa@5733]
ros2 run demo_nodes_cpp talker
在另一个终端源文件中,source安装文件,然后运行一个Python的 listener
: [Alyssa@5545]
ros2 run demo_nodes_py listener
你应该看到了 talker
说这是 Publishing
消息 ,listener
说 I 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) 可以在运行时进行替换。查看 guide 了解如何使用多个RMWs。 [Alyssa@5513]
了解最新情况 [Alyssa@5518]
请参阅 维护ROS 2Foxy源文件的检出 以定期的刷新安装源。 [Alyssa@5519]
故障排除
故障排除技术可以参考 here 。 [Alyssa@5735]
卸载
如果你按照上面的指示用colcon安装了你的工作空间, "uninstalling" 可能只是打开一个新的终端,而没有source工作空间的
setup
文件。因此,您的环境就会表现得好像您的系统上没有安装Foxy。 [Alyssa@5523]如果您还打算释放所有空间,则可以使用以下命令删除整个工作空间的目录: [Alyssa@5524]
rm -rf ~/ros2_foxy