Mac安装ROS2

Mac下ROS2的安装

一直想在mac上安装一下ROS2,感受一下ROS2的新特性

闲来无事 特此尝试了一下 期间遇到了很多坑 记录一下其中出现的问题和解决情况

利用网站https://index.ros.org/进行安装

install参考

https://index.ros.org/doc/ros2/Installation/Eloquent/macOS-Install-Binary/

building参考

https://index.ros.org/doc/ros2/Installation/Eloquent/macOS-Install-Binary/

安装ROS2 Eloquent版本

先贴一下官方的教程 再说一下不同与对比,及解决的问题

System requirements

We support macOS 10.14 (Mojave).

However, some older versions like 10.13.x are known to work as well.

我现在采用的是MacOS11.1

Install prerequisite

1. Xcode

xcode-select --install
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

2. brew更新

brew docker

3. 利用brew安装组件

brew install cmake cppcheck eigen pcre poco python3 tinyxml wget

# 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_log4cxx
brew install log4cxx

# install CUnit for Cyclone DDS
brew install cunit

4.Install rviz dependencies

# install dependencies for Rviz
brew install qt freetype assimp

# Add the Qt directory to the PATH and CMAKE_PREFIX_PATH
export CMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH:/usr/local/opt/qt
export PATH=$PATH:/usr/local/opt/qt/bin

5.Install rqt dependencies

brew install graphviz pyqt5 sip

#Fix some path names when looking for sip stuff during install (see ROS 1 wiki):

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

在brew安装graphviz时 出现了很多问题

首先是依赖的jdk包openjdk-15.0.1_osx-x64_bin.tar无法完成下载

经过尝试 出现两个问题:

  1. 包的sha-256对不上
  2. 无法下载完整的内容

google-driver中wget下载完整openjdk,然后重命名为336948b1d9a8eba79fadf26569f4af0cb2fe147fde214fc9d9bf6b66f2f927d2--jdk-15.0.1-ga.tar 放在User/bokaichen/Library/Caches/Homebrew/downloads底下 然后通过 brew时出现了个问题 ,brew安装了python3.9 随后setuptools安装又出现了问题 brew无法安装setuptools,然后pip安装时,安装在了python3.7下 并不会安装在python3.9下面

之前~/.bash_profile下控制python3版本:

PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
export PATH

但是现在发现这种方式的问题是 会产生brew中是python3.9,而Python.framework中又存在很多版本

随后重新来过

sudo rm -rf /Library/Frameworks/Python.framework
sudo rm -rf /usr/local/bin/python3

nano ~/.bash_profile
#清空所有内容

brew update
brew install python
brew install python3

完成python3.9和python2.7的安装

但是导致python3执行出错 python3: error: can't exec '/Applications/Xcode.app/Contents/Developer/usr/bin/python3'

但是用python3.9可以打开编辑器

brew search python3
==> Formulae
boost-python3       python@3.7          python@3.8          python@3.9 ✔

忽略了这个问题 然后继续前进

6. Install SROS2 dependencies

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

后发现python安装会出错,python setup.py egg_info

ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.

因为在Python.framework无法找到对应的python库

所以又安装了python3.8 感觉这块是一个ros2在macOS11.1下的bug 对于python链接位置,两块安装并不统一.

但是python3.8下安装的库可以直接链接到ros2下使用 安装完成后pip3的命令又在python3.8下进行安装了

Downloading ros2

~/Downloads/ros2-release-distro-date-macos-amd64.tar.bz2.

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

设置环境变量. ~/ros2_eloquent/ros2-osx/setup.bash 例子 ros2 run demo_nodes_cpp talker ros2 run demo_nodes_py listener 也没有出现问题 都正常可以使用了


Homebrew 常用命令一览

Homebrew 常用命令一览

$ brew --help #简洁命令帮助

$ man brew #完整命令帮助

$ brew install git #安装软件包(这里是示例安装的Git版本控制)

$ brew uninstall git #卸载软件包

$ brew search git #搜索软件包

$ brew list #显示已经安装的所有软件包

$ brew update #同步远程最新更新情况,对本机已经安装并有更新的软件用*标明

$ brew outdated #查看已安装的哪些软件包需要更新

$ brew upgrade git #更新单个软件包

$ brew info git #查看软件包信息

$ brew home git #访问软件包官方站

$ brew cleanup #清理所有已安装软件包的历史老版本

$ brew cleanup git #清理单个已安装软件包的历史版本

macos下ros2的编译

不甘心 内心还想挑战一下在mac下的源码编译安装

building参考https://index.ros.org/doc/ros2/Installation/Eloquent/macOS-Install-Binary/

python-vsc的安装

brew Install python3-vcstool

colcon的安装

pip3 install colcon-common-extensions

遇到了两个无法解决的问题,目前无法解决:

  1. qt_gui_cpp 包编译失败
  2. tinyxml2 相关包的编译问题

WechatIMG892.jpeg

三个python执行

第一个是python官网安装 第二个是brew安装 第三个是系统自带

删除前面两个后,重新安装 python3.9后

WechatIMG966.jpeg

这个是系统自带 无法删除

从头开始安装,pyqt5和sip通过 但是tinyxml2安装问题导致编译无法通过 tinyxml2_vendor编译出错

tinyxml2只提供了依赖Library/Frameworks/python3.8*中的路径,而且只有3.8.

从而放弃


Building失败后,Installing继续

python接口需要rclpy库支持,但是python3.9没有相关库 无奈,又重新安装python3.8

在python3.8下 安装依赖后,pyqt5与sip也没有出现问题,能正常运行 注意:一定是先卸载python,安装依赖后,再安装python3.8及依赖,这样rqt相关命令就不会有问题.


ros2的系统依赖升级还不够满足macos的升级,包括python的升级. 而且,mac最近的m1,带动了一大堆依赖库强行升级一波,但是ros2还没有跟进.

后续等一段时间,接着尝试吧.

先这样,贴一张tunrtlesim

聊以慰藉

也纪念逝去的三天时间

截屏2021-02-02 上午10.05.13.png

updatedupdated2021-02-182021-02-18