Skip to content

Instantly share code, notes, and snippets.

@jmtatsch
Forked from mikepurvis/gist:9837958
Last active March 15, 2017 13:00
Show Gist options
  • Save jmtatsch/3aa268d41ae40c89b35a to your computer and use it in GitHub Desktop.
Save jmtatsch/3aa268d41ae40c89b35a to your computer and use it in GitHub Desktop.
Install ROS Jade on OS X El Capitan
# NOTE: These instructions do not represent a robust, self-troubleshooting install; they
# are definitely not suitable for dumping to a giant script and running as one. If you
# use them, they should be run one at a time, with an eye out for errors or problems
# along the way.
#
# The #1 issue you are likely to encounter is with Homebrew or Python packages whose
# binary components link against system Python. This will result in runtime segfaults,
# especially in rviz. If you suspect this is occurring, you can attempt to remove and
# reinstall the offending packages, or go for the nuclear option--- empty your Cellar
# and site-packages folders and start over with brewed python from the beginning.
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# If a cleanup is necessary, proceed with extreme caution!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
# Remove old ROS installations, don't do this tutorial if you have several versions of ros installed
sudo rm -rf /opt/ros
rm -rf ~/ros_catkin_ws
sudo rm /etc/ros/rosdep/sources.list.d/20-default.list
# Clean up all python packages
sudo rm -rf /Library/Python/2.7/site-packages
# Uninstall homebrew, warning this will cause trouble for anything linked against older hombrewed libraries
brew install wget
wget https://gist.githubusercontent.com/mxcl/1173223/raw/a833ba44e7be8428d877e58640720ff43c59dbad/uninstall_homebrew.sh
bash uninstall_homebrew.sh && rm uninstall_homebrew.sh
rm -rf /usr/local/Cellar /usr/local/.git
rm -rf /usr/local/Library/Taps
# Comment everything related to ROS in your .bashrc/.zshrc
nano .zshrc
# Now we are ready to start fresh.
# If you haven't already, install XQuartz using the installer from its own website:
# https://xquartz.macosforge.org
# Install Homebrew
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
# Install zshell, if you want to use bash instead, you should change the sourced files from .zsh to .bash
brew install zsh
echo export PATH='/usr/local/bin:$PATH' >> ~/.zshrc
source .zshrc
# Install brewed python
brew install python
mkdir -p ~/Library/Python/2.7/lib/python/site-packages
echo "$(brew --prefix)/lib/python2.7/site-packages" >> ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth
# Homebrew taps for prerequisites
brew tap ros/deps
brew tap osrf/simulation
brew tap homebrew/versions
brew tap homebrew/science
brew tap homebrew/dupes
brew tap dartsim/dart
# Prerequisites
brew install cmake libyaml lz4 theora
brew install boost --with-python --c++11
brew install opencv --with-qt --with-eigen --with-tbb
brew install homebrew/science/pcl --HEAD --without-apps --without-qt #https://github.com/Homebrew/homebrew-science/issues/2593
#brew install opencv3 --with-qt --with-eigen --with-tbb
brew install fltk --devel
# Install the ROS infrastructure tools, you may have to run this several times until all python deps are properly installed
sudo -H pip install -U setuptools rosdep rosinstall_generator wstool rosinstall catkin_tools catkin_pkg bloom empy sphinx
# Download ROS sources
mkdir ros_catkin_ws && cd ros_catkin_ws
rosinstall_generator desktop_full --rosdistro jade --deps --tar > jade.rosinstall
wstool init -j8 src jade.rosinstall
# Install the necessary ROS dependencies
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src --rosdistro jade -y
# fix pcl_ros according to https://github.com/ros-perception/perception_pcl/issues/106#issuecomment-134948296
if [ -d src/perception_pcl/pcl_ros ]; then
sed -i -e 's/find_package(Eigen3 REQUIRED)/find_package(PkgConfig)\
pkg_search_module(Eigen3 REQUIRED eigen3)/g' src/perception_pcl/pcl_ros/CMakeLists.txt
fi
# fix Ogre 1.74 according to mike
# Grabbing these older meshes allows rviz to run with Ogre 1.7 rather than Ogre 1.8+. Although formulae and patches
# exist to build Ogre 1.9, rviz, and Gazebo together, I have found this approach to be the most solid and consistent.
if [ -d src/rviz ]; then
pushd src/rviz/ogre_media/models
curl https://raw.githubusercontent.com/ros-visualization/rviz/hydro-devel/ogre_media/models/rviz_cone.mesh > rviz_cone.mesh
curl https://raw.githubusercontent.com/ros-visualization/rviz/hydro-devel/ogre_media/models/rviz_cube.mesh > rviz_cube.mesh
curl https://raw.githubusercontent.com/ros-visualization/rviz/hydro-devel/ogre_media/models/rviz_cylinder.mesh > rviz_cylinder.mesh
curl https://raw.githubusercontent.com/ros-visualization/rviz/hydro-devel/ogre_media/models/rviz_sphere.mesh > rviz_sphere.mesh
popd
fi
# Build in parallel with catkin ~40 min on my computer, make sure the python version matches
sudo mkdir -p /opt/ros/jade
sudo chown $USER /opt/ros/jade
catkin config --install --install-space /opt/ros/jade
catkin build \
-DCMAKE_BUILD_TYPE=Release \
-DPYTHON_LIBRARY=/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib \
-DPYTHON_INCLUDE_DIR=/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7
# to work around the dyld issue https://github.com/mikepurvis/ros-install-osx/issues/12#issuecomment-149336634
# well this patch doesnt work yet but you get the idea
sed -i 's/#!/usr/bin/env bash/export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/opt/ros/jade/lib/g' /opt/ros/jade/bin/rosrun
# Source the build ROS, prepare the workspace and from then on only source this one
source /opt/ros/jade/setup.zsh
cd ~/ros_catkin_ws
mv src src_isolated
mv devel devel_isolated
mv build build_isolated
mkdir src
catkin_make
echo 'source ~/ros_catkin_ws/devel/setup.zsh' >> ~/.zshrc
@ramamoorthyluxman
Copy link

Hi. I am stuck with this. Somebody help me please ?

rosdep install --from-paths src --ignore-src --rosdistro jade -y
executing command [brew install homebrew/science/pcl --HEAD]
==> Installing pcl from homebrew/science
==> Installing dependencies for homebrew/science/pcl: cminpack, qhull, libusb, glew, vtk
==> Installing homebrew/science/pcl dependency: cminpack
==> Downloading http://devernay.free.fr/hacks/cminpack/cminpack-1.3.4.tar.gz
Already downloaded: /Library/Caches/Homebrew/cminpack-1.3.4.tar.gz
Error: SHA256 mismatch
Expected: 3b517bf7dca68cc9a882883db96dac0a0d37d72aba6dfb0c9c7e78e67af503ca
Actual: 640ad842776ed2d80b08887f8400e6ac35e09456b2175fc7fd6fecbddde6319f
Archive: /Library/Caches/Homebrew/cminpack-1.3.4.tar.gz
To retry an incomplete download, remove the file above.
ERROR: the following rosdeps failed to install
homebrew: command [brew install homebrew/science/pcl --HEAD] failed

@ramamoorthyluxman
Copy link

Homebrew installation of PCL libraries (homebrew/science/pcl, Line# 65) isn't working currently due to upstream problem. If you get the above error as I did, I have a solution. Download PCL 1.8 master from GitHub (https://github.com/PointCloudLibrary/pcl). Edit the " /opt/ros/jade/share/pcl_conversions/cmake/pcl_msgsConfig.cmake" using nano or VI editor. Just find the text "pcl-1.6" in the file and replace them with "pcl-1.8". And then follow the remaining steps.

@RPEK001
Copy link

RPEK001 commented Mar 2, 2016

Starting ==> rospack

[rospack] ==> '/Users/RoyPekJunJie/ros_catkin_ws/build/rospack/build_env.sh /usr/bin/make --jobserver-fds=3,4 -j' in '/Users/RoyPekJunJie/ros_catkin_ws/build/rospack'
Scanning dependencies of target rospack
[ 11%] Building CXX object CMakeFiles/rospack.dir/src/rospack.cpp.o
[ 22%] Building CXX object CMakeFiles/rospack.dir/src/rospack_backcompat.cpp.o
make[2]: *** No rule to make target /usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib', needed by/Users/RoyPekJunJie/ros_catkin_ws/devel/lib/librospack.dylib'. Stop.
make[2]: *** Waiting for unfinished jobs....
[ 33%] Building CXX object CMakeFiles/rospack.dir/src/rospack_cmdline.cpp.o
[ 44%] Building CXX object CMakeFiles/rospack.dir/src/utils.cpp.o
/Users/RoyPekJunJie/ros_catkin_ws/src/rospack/src/rospack.cpp:78:9: warning: 'PyUnicode_FromString' macro redefined [-Wmacro-redefined]

define PyUnicode_FromString PyString_FromString

    ^

/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7/unicodeobject.h:194:10: note: previous definition is here
define PyUnicode_FromString PyUnicodeUCS2_FromString
^
1 warning generated.
make[1]: *** [CMakeFiles/rospack.dir/all] Error 2
make: *** [all] Error 2
[rospack] <== '/Users/RoyPekJunJie/ros_catkin_ws/build/rospack/build_env.sh /usr/bin/make --jobserver-fds=3,4 -j' failed with return code '2'

Failed <== rospack [ 6.9 seconds ]
Finished <== ros_comm [ 2 minutes and 55.6 seconds ]
[build] There were '1' errors:

Failed to build package 'rospack' because the following command:

Command to reproduce:
cd /Users/RoyPekJunJie/ros_catkin_ws/build/rospack && /Users/RoyPekJunJie/ros_catkin_ws/build/rospack/build_env.sh /usr/bin/make --jobserver-fds=3,4 -j; cd -

Path to log:
cat /Users/RoyPekJunJie/ros_catkin_ws/build/build_logs/rospack.log

Exited with return code: 2

[build] Runtime: 5 minutes and 27.2 seconds

@jacksonkr - facing the same issue as you I think... Have you gotten a solution?

@jaeyoung-han
Copy link

@RPEK001, @jacksonkr

I had the same issue -- "Python.h" file not found, and I solved.

The reason is that the version of python described in line 106 and 107 of the above code is different from your actual version.
Check the version of your python. Your python version may be 2.7.11.

python --version

Makefiles are already created with invalid version number, you should reset and restart build with your python version number.

(I deleted ros_catkin_ws directory and restarted from line 73.)

In case of python 2.7.11, use below.

catkin build \
  -DCMAKE_BUILD_TYPE=Release \
  -DPYTHON_LIBRARY=/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib \
  -DPYTHON_INCLUDE_DIR=/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7

@sorjef
Copy link

sorjef commented Mar 10, 2016

A small note to the previous comment:
You may just delete ros_catkin_ws/build directory and start catkin build right away.

So the commands to fix this issue will be:

rm -rf build

and

catkin build \
  -DCMAKE_BUILD_TYPE=Release \
  -DPYTHON_LIBRARY=/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib \
  -DPYTHON_INCLUDE_DIR=/usr/local/Cellar/python/2.7.11/Frameworks/Python.framework/Versions/2.7/include/python2.7

@jmtatsch
Copy link
Author

Just built again from source again, pretty much works as expected :)

@asvetly
Copy link

asvetly commented Mar 21, 2016

Hello there! I have some issue with -ltbb. Can someone help with this?

Starting ==> polled_camera                                                                                                                                                                                  
Finished <== polled_camera                    [ 11.1 seconds ]                                                                                                                                              
Starting ==> compressed_depth_image_transport                                                                                                                                                               

[compressed_depth_image_transport] ==> '/Users/Alexander/ros_catkin_ws/build/compressed_depth_image_transport/build_env.sh /usr/bin/make --jobserver-fds=3,4 -j' in '/Users/Alexander/ros_catkin_ws/build/compressed_depth_image_transport'
Scanning dependencies of target compressed_depth_image_transport_gencfg
[ 16%] Generating dynamic reconfigure files from cfg/CompressedDepthPublisher.cfg: /Users/Alexander/ros_catkin_ws/devel/include/compressed_depth_image_transport/CompressedDepthPublisherConfig.h /Users/Alexander/ros_catkin_ws/devel/lib/python2.7/site-packages/compressed_depth_image_transport/cfg/CompressedDepthPublisherConfig.py
Generating reconfiguration files for CompressedDepthPublisher in compressed_depth_image_transport
Wrote header file in /Users/Alexander/ros_catkin_ws/devel/include/compressed_depth_image_transport/CompressedDepthPublisherConfig.h
[ 16%] Built target compressed_depth_image_transport_gencfg
Scanning dependencies of target compressed_depth_image_transport
[ 33%] Building CXX object CMakeFiles/compressed_depth_image_transport.dir/src/compressed_depth_publisher.cpp.o
[ 50%] Building CXX object CMakeFiles/compressed_depth_image_transport.dir/src/compressed_depth_subscriber.cpp.o
[ 66%] Building CXX object CMakeFiles/compressed_depth_image_transport.dir/src/codec.cpp.o
[ 83%] Building CXX object CMakeFiles/compressed_depth_image_transport.dir/src/manifest.cpp.o
/Users/Alexander/ros_catkin_ws/src/image_transport_plugins/compressed_depth_image_transport/src/codec.cpp:333:1: warning: control may reach end of non-void function [-Wreturn-type]
}
^
1 warning generated.
[100%] Linking CXX shared library /Users/Alexander/ros_catkin_ws/devel/lib/libcompressed_depth_image_transport.dylib
ld: library not found for -ltbb
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [/Users/Alexander/ros_catkin_ws/devel/lib/libcompressed_depth_image_transport.dylib] Error 1
make[1]: *** [CMakeFiles/compressed_depth_image_transport.dir/all] Error 2
make: *** [all] Error 2
[compressed_depth_image_transport] <== '/Users/Alexander/ros_catkin_ws/build/compressed_depth_image_transport/build_env.sh /usr/bin/make --jobserver-fds=3,4 -j' failed with return code '2'

Failed   <== compressed_depth_image_transport [ 11.7 seconds ]                                                                                                                                              
Finished <== pluginlib_tutorials              [ 3 minutes and 26.2 seconds ]                                                                                                                                
[build] There were '1' errors:                                                                                                                                                                              

Failed to build package 'compressed_depth_image_transport' because the following command:

# Command to reproduce:
cd /Users/Alexander/ros_catkin_ws/build/compressed_depth_image_transport && /Users/Alexander/ros_catkin_ws/build/compressed_depth_image_transport/build_env.sh /usr/bin/make --jobserver-fds=3,4 -j; cd -

# Path to log:
cat /Users/Alexander/ros_catkin_ws/build/build_logs/compressed_depth_image_transport.log

Exited with return code: 2 

[build] Runtime: 29 minutes and 13.7 seconds 

@Forest-Dewberry
Copy link

When I run the line:
brew install boost --with-python --c++11

I get this:
==> Downloading https://downloads.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.bz2
==> Downloading from http://netcologne.dl.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.bz2

################################################################## 100.0%

==> Patching
patching file boost/graph/adjacency_matrix.hpp
==> ./bootstrap.sh --prefix=/usr/local/Cellar/boost/1.60.0_1 --libdir=/usr/local/Cellar/boost/1.60.0_1/lib --witho
==> ./b2 headers
==> ./b2 --prefix=/usr/local/Cellar/boost/1.60.0_1 --libdir=/usr/local/Cellar/boost/1.60.0_1/lib -d2 -j4 --layout=

Then it just stops. My terminal stops doing anything. I have to ctrl-C out of it. What's going on? How do I fix this?

@jemdiggity
Copy link

@Forest-Dewberry I had the same issue. It built fine if drop the --c++11 flag, ie brew install boost

@jemdiggity
Copy link

after running catkin_make, I get a error about not finding nosetests:
CMake Warning at /opt/ros/jade/share/catkin/cmake/test/nosetests.cmake:98 (message): nosetests not found, Python tests can not be run (try installing package 'python-nose') Call Stack (most recent call first): /opt/ros/jade/share/catkin/cmake/all.cmake:147 (include) /opt/ros/jade/share/catkin/cmake/catkinConfig.cmake:20 (include) CMakeLists.txt:52 (find_package)

I found that nosetests is in /usr/local/Cellar/numpy/1.11.0/libexec/nose/bin/. Should it be linked somewhere else?

@weimzh
Copy link

weimzh commented Aug 27, 2016

@fangbq if you are from China you need a VPN as some download sources are GFW'ed.

@Needrom
Copy link

Needrom commented Sep 7, 2016

I failed to install some of the pack in it .I could not use it completely.so I want to uninstall it .but how to uninstall fully

@taozhi8833998
Copy link

taozhi8833998 commented Oct 25, 2016

@ramamoorthyluxman an easy to fix the sha256 not match error, you should not download the cminpack-1.3.4.tar.gz through browser, you chould get it by thunder or download it from here and change the file name to cminpack-1.3.4.tar.gz. the SHA256 matched, take a look at this page.
And then follow the remaining steps, it worked for me.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment