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
无法完成下载
经过尝试 出现两个问题:
- 包的sha-256对不上
- 无法下载完整的内容
在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
遇到了两个无法解决的问题,目前无法解决:
qt_gui_cpp
包编译失败tinyxml2
相关包的编译问题
三个python执行
第一个是python官网安装 第二个是brew安装 第三个是系统自带
删除前面两个后,重新安装 python3.9后
这个是系统自带 无法删除
从头开始安装,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
聊以慰藉
也纪念逝去的三天时间