A repository for the development of ROS 2 on MacOS
RosDepends
currently supports the active installations of the following distributions of ROS 2 on MacOS Ventura:
- Rolling
On MacOS it's imperative to have both XCode
and homebrew
on one's system.
Once one has both of these, they can install anything else they may need
- Install XCode: XCode
- Install XCode CLI Tools:
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
- Install homebrew: Installation
RosDepends
uses installs through source development, unfortunately binaries aren't available at this time.
RosDepends
uses shell
(.zsh
) files to make the development process easier
Often times the distribution will be stored at ~/ros2_{distribution}
, so that all one must do is source the install by doing source ~ros2_{distribution}/install/setup.zsh
Additionally, RosDepends
is currently using a virtual python environment to allow easy customization per library with pipenv
, so as a distribution is created, there will be a requirements.txt
within each install so all one must do is copy the python libraries and install in the development of whatever library:
pipenv install -r path/to/requirements.txt && pipenv shell
There are two ways to install distributions and repositories from RosDepends
- Navigate through the Github website to a certain script, for example we'll use the ros2_rolling installation
Installation Link: https://github.com/CursedRock17/RosDepends/tree/main/scripts/ros2_rolling_install.zsh
From this link, simple copy and paste everything from the script into a new terminal window and hit enter
- Cloning the Repository
One may also enter in the terminal:
git clone https://github.com/CursedRock17/RosDepends.git -b main
From this point chmod +x ~/path_to_RosDepends/scripts/ros2_{distribution}_install.zsh
Then simply run ./path_to_RosDepends/scripts/ros2_{distribution}_install.zsh
and the script will do the rest of the work.
brew install llvm@{wanted version}
sudo ln -s "$(brew --prefix llvm@{wanted version})/bin/clang-format" "/usr/local/bin/clang-format-{wanted version}"
As seen in this discourse link MacOS is no longer a tier 1 platform maintained by the ROS 2 team. It has been delegated to the community due to heapfuls of problems, which has come together in many great ways to allow us to use this platform. With isolation of environment and scripts, I've been able to break up installations so they are more stable, but there will always be problems. If there's an issue in a ROS 2 repository that may be releveant to the development of ROS 2 on MacOS, creating an issue to links to that original issue is always welcome. This way we have a place to track and solve issues more readily as a community.
We need to clone the following packages from source into our repo: angles, eigen_stl_containers, fcl, geometric_shapes, launch_param_builder, object_recognition_msgs, octomap, octomap_msgs, random_numbers, rosparam_shortcuts, ruckig, srdfdom
- We need to remove all
std::tr1::unordered_map
andstd::tr1::unordered_set
definitions from the code by simply removing tr1 and moving as usual - May need to add C++14 to files that cannot run boost due to version problems so :
if (NOT CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANRDARD_REQUIRED TRUE)
endif()
- Apple Clang doesn't support all features such as, but not limited to :
- Floating Point Values in std::from_chars : Must become integers
- Need to include glog via
glog::glog
- Need to remove some boost definitions like
signals
which is no longer a package - Ros Install with sudo ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release -DPYTHON_EXECUTABLE=/opt/homebrew/bin/python3.11
- Replace condattr_setclock with condattr_setpthread
- Remove the @ in gencpp/scripts/msg.h.template in the const char* value() return