Skip to content

Instantly share code, notes, and snippets.

@Tiryoh
Created October 16, 2019 03:33
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Tiryoh/76be0ac467c09667ca51b5f8d9f4b3bc to your computer and use it in GitHub Desktop.
Save Tiryoh/76be0ac467c09667ca51b5f8d9f4b3bc to your computer and use it in GitHub Desktop.
ROS Melodic installation on Raspberry Pi Zero/Raspberry Pi Zero W
#!/usr/bin/env bash
set -eu
# (C) 2019 Daisuke Sato
# https://tiryoh.mit-license.org/2019
# Special thanks to @nomumu
sudo apt update
sudo apt install -y build-essential gdebi
mkdir -p ~/tmp && pushd ~/tmp
wget https://github.com/nomumu/ros4raspbian/releases/download/1.0.0/ros4raspbian-melodic-armhf-1.0.0.zip
unzip ros4raspbian-melodic-armhf-1.0.0.zip
sudo gdebi ros4raspbian-melodic-armhf-1.0.0.deb
popd
rosdep update
@Tiryoh
Copy link
Author

Tiryoh commented Oct 16, 2019

This script has tested on Raspbian Buster.

Usage

curl -SsfL https://u.ty0.jp/ros_melodic_install_raspizero | bash

or

wget https://gist.githubusercontent.com/Tiryoh/76be0ac467c09667ca51b5f8d9f4b3bc/raw/ros_melodic_install_raspizero.bash
bash ./ros_melodic_install_raspizero.bash

Install log

This warning is for gdebi.

$ gdebi --version
0.9.5.7+nmu3
$ sudo gdebi ros4raspbian-melodic-armhf-1.0.0.deb
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading state information... Done
Requires the installation of the following packages: autoconf automake autotools-dev binfmt-support blt bzip2-doc bzr cmake cmake-data default-libmysqlclient-dev docutils-common docutils-doc fonts-liberation fonts-lyx freeglut3 gdal-data geoclue-2.0 gfortran gfortran-8 google-mock googletest graphviz gstreamer1.0-plugins-base hddtemp ibverbs-providers icu-devtools iio-sensor-proxy libaacs0 libaec0 libaom0 libapr1 libapr1-dev libaprutil1 libaprutil1-dev libarchive13 libarmadillo9 libarpack2 libassimp-dev libassimp4 libassuan-dev libavahi-glib1 libavcodec-dev libavcodec58 libavformat-dev libavformat58 libavresample-dev libavresample4 libavutil-dev libavutil56 libbdplus0 libbluray2 libboost-all-dev libboost-atomic-dev libboost-atomic1.67-dev libboost-atomic1.67.0 libboost-chrono-dev libboost-chrono1.67-dev libboost-chrono1.67.0 libboost-container-dev libboost-container1.67-dev libboost-container1.67.0 libboost-context-dev libboost-context1.67-dev libboost-context1.67.0 libboost-coroutine-dev libboost-coroutine1.67-dev libboost-coroutine1.67.0 libboost-date-time-dev libboost-date-time1.67-dev libboost-date-time1.67.0 libboost-dev libboost-exception-dev libboost-exception1.67-dev libboost-fiber-dev libboost-fiber1.67-dev libboost-fiber1.67.0 libboost-filesystem-dev libboost-filesystem1.67-dev libboost-filesystem1.67.0 libboost-graph-dev libboost-graph-parallel-dev libboost-graph-parallel1.67-dev libboost-graph-parallel1.67.0 libboost-graph1.67-dev libboost-graph1.67.0 libboost-iostreams-dev libboost-iostreams1.67-dev libboost-iostreams1.67.0 libboost-locale-dev libboost-locale1.67-dev libboost-locale1.67.0 libboost-log-dev libboost-log1.67-dev libboost-log1.67.0 libboost-math-dev libboost-math1.67-dev libboost-math1.67.0 libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.67-dev libboost-mpi-python1.67.0 libboost-mpi1.67-dev libboost-mpi1.67.0 libboost-numpy-dev libboost-numpy1.67-dev libboost-numpy1.67.0 libboost-program-options-dev libboost-program-options1.67-dev libboost-program-options1.67.0 libboost-python-dev libboost-python1.67-dev libboost-python1.67.0 libboost-random-dev libboost-random1.67-dev libboost-random1.67.0 libboost-regex-dev libboost-regex1.67-dev libboost-regex1.67.0 libboost-serialization-dev libboost-serialization1.67-dev libboost-serialization1.67.0 libboost-signals-dev libboost-signals1.67-dev libboost-signals1.67.0 libboost-stacktrace-dev libboost-stacktrace1.67-dev libboost-stacktrace1.67.0 libboost-system-dev libboost-system1.62.0 libboost-system1.67-dev libboost-system1.67.0 libboost-test-dev libboost-test1.67-dev libboost-test1.67.0 libboost-thread-dev libboost-thread1.62.0 libboost-thread1.67-dev libboost-thread1.67.0 libboost-timer-dev libboost-timer1.67-dev libboost-timer1.67.0 libboost-tools-dev libboost-type-erasure-dev libboost-type-erasure1.67-dev libboost-type-erasure1.67.0 libboost-wave-dev libboost-wave1.67-dev libboost-wave1.67.0 libboost1.67-dev libboost1.67-tools-dev libbrotli1 libbz2-dev libcaf-openmpi-3 libcdparanoia0 libcdt5 libcgraph6 libcharls2 libchromaprint1 libcoarrays-dev libcoarrays-openmpi-dev libcodec2-0.8.1 libconsole-bridge-dev libconsole-bridge0.4 libcppunit-1.14-0 libcppunit-dev libcurl4-openssl-dev libdap25 libdapclient6v5 libdapserver7v5 libdc1394-22 libdc1394-22-dev libdouble-conversion1 libdrm-amdgpu1 libdrm-common libdrm-dev libdrm-etnaviv1 libdrm-exynos1 libdrm-freedreno1 libdrm-nouveau2 libdrm-omap1 libdrm-radeon1 libdrm-tegra0 libdrm2 libegl-mesa0 libegl1 libegl1-mesa-dev libeigen3-dev libepsilon1 libevdev2 libevent-core-2.1-6 libevent-pthreads-2.1-6 libexif-dev libexif-doc libexif12 libfreeimage3 libfreexl1 libfyba0 libgbm1 libgd3 libgdal20 libgdcm2-dev libgdcm2.8 libgeos-3.7.1 libgeos-c1v5 libgeotiff2 libgfortran-8-dev libgif7 libgl1 libgl1-mesa-dev libgl1-mesa-dri libgl2ps1.4 libglapi-mesa libgles1 libgles2 libgles2-mesa-dev libglu1-mesa libglu1-mesa-dev libglvnd-core-dev libglvnd-dev libglvnd0 libglx-mesa0 libglx0 libgme0 libgmp-dev libgmpxx4ldbl libgnutls-dane0 libgnutls-openssl27 libgnutls28-dev libgnutlsxx28 libgpg-error-dev libgpgme-dev libgpgme11 libgphoto2-6 libgphoto2-dev libgphoto2-l10n libgphoto2-port12 libgsm1 libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtest-dev libgts-0.7-5 libgts-bin libgudev-1.0-0 libgvc6 libgvpr2 libhdf4-0-alt libhdf5-103 libhdf5-openmpi-103 libhwloc-dev libhwloc-plugins libhwloc5 libhyphen0 libibverbs-dev libibverbs1 libice6 libicu-dev libidn2-dev libilmbase-dev libilmbase23 libinput-bin libinput10 libjbig-dev libjpeg-dev libjpeg62-turbo-dev libjs-jquery-isonscreen libjs-jquery-metadata libjs-jquery-tablesorter libjs-jquery-throttle-debounce libjs-jquery-ui libjsoncpp1 libjxr0 libkmlbase1 libkmlconvenience1 libkmldom1 libkmlengine1 libkmlregionator1 libkmlxsd1 liblab-gamut1 libldap2-dev liblept5 libllvm8 liblog4cxx-dev liblog4cxx10v5 libltdl-dev libltdl7 liblz4-dev liblzma-dev libmariadb-dev libmariadb-dev-compat libmariadb3 libmbim-glib4 libmbim-proxy libminizip1 libmm-glib0 libmp3lame0 libmpg123-0 libmtdev1 libnetcdf-c++4 libnetcdf13 libnl-3-dev libnl-route-3-dev libnotify4 libnspr4 libnss3 libodbc1 libogdi3.2 libogg0 libogre-1.9-dev libogre-1.9.0v5 libopencv-calib3d-dev libopencv-calib3d3.2 libopencv-contrib-dev libopencv-contrib3.2 libopencv-core-dev libopencv-core3.2 libopencv-dev libopencv-features2d-dev libopencv-features2d3.2 libopencv-flann-dev libopencv-flann3.2 libopencv-highgui-dev libopencv-highgui3.2 libopencv-imgcodecs-dev libopencv-imgcodecs3.2 libopencv-imgproc-dev libopencv-imgproc3.2 libopencv-ml-dev libopencv-ml3.2 libopencv-objdetect-dev libopencv-objdetect3.2 libopencv-photo-dev libopencv-photo3.2 libopencv-shape-dev libopencv-shape3.2 libopencv-stitching-dev libopencv-stitching3.2 libopencv-superres-dev libopencv-superres3.2 libopencv-ts-dev libopencv-video-dev libopencv-video3.2 libopencv-videoio-dev libopencv-videoio3.2 libopencv-videostab-dev libopencv-videostab3.2 libopencv-viz-dev libopencv-viz3.2 libopencv3.2-java libopencv3.2-jni libopenexr-dev libopenexr23 libopengl0 libopenjp2-7 libopenmpi-dev libopenmpi3 libopenmpt0 libopus0 liborc-0.4-0 libp11-kit-dev libpaper-utils libpaper1 libpathplan4 libpciaccess0 libpcre16-3 libpcre2-16-0 libpcre3-dev libpcre32-3 libpcrecpp0v5 libpmix2 libpoco-dev libpococrypto60 libpocodata60 libpocodatamysql60 libpocodataodbc60 libpocodatasqlite60 libpocoencodings60 libpocofoundation60 libpocojson60 libpocomongodb60 libpoconet60 libpoconetssl60 libpocoredis60 libpocoutil60 libpocoxml60 libpocozip60 libpoppler82 libpq5 libproj13 libpthread-stubs0-dev libqhull7 libqmi-glib5 libqmi-proxy libqt5concurrent5 libqt5core5a libqt5dbus5 libqt5designer5 libqt5gui5 libqt5help5 libqt5network5 libqt5opengl5 libqt5opengl5-dev libqt5positioning5 libqt5printsupport5 libqt5qml5 libqt5quick5 libqt5sensors5 libqt5sql5 libqt5sql5-sqlite libqt5svg5 libqt5test5 libqt5webchannel5 libqt5webkit5 libqt5widgets5 libqt5xml5 libraw1394-11 libraw1394-dev libraw1394-tools libraw19 librhash0 libsctp-dev libsctp1 libsensors-config libsensors5 libserf-1-1 libshine3 libsigsegv2 libsm6 libsnappy1v5 libsocket++1 libsodium23 libsoxr0 libspatialite7 libspeex1 libsqlite3-dev libssh-gcrypt-4 libssl-dev libsuperlu5 libsvn1 libswresample-dev libswresample3 libswscale-dev libswscale5 libsz2 libtasn1-6-dev libtasn1-doc libtbb-dev libtbb2 libtcl8.6 libtesseract4 libtheora0 libtiff-dev libtiffxx5 libtinyxml-dev libtinyxml2-6a libtinyxml2-dev libtinyxml2.6.2v5 libtk8.6 libtool libtwolame0 libunbound8 liburdfdom-dev liburdfdom-headers-dev liburdfdom-model liburdfdom-model-state liburdfdom-sensor liburdfdom-world liburiparser1 libutf8proc2 libuv1 libva-drm2 libva-x11-2 libva2 libvdpau-va-gl1 libvdpau1 libvisual-0.4-0 libvorbis0a libvorbisenc2 libvorbisfile3 libvpx5 libvtk6.3 libvulkan-dev libvulkan1 libwacom-bin libwacom-common libwacom2 libwavpack1 libwayland-bin libwayland-dev libwayland-server0 libwoff1 libwxbase3.0-0v5 libwxgtk3.0-gtk3-0v5 libx11-dev libx11-xcb-dev libx11-xcb1 libx264-155 libx265-165 libxau-dev libxaw7 libxcb-dri2-0 libxcb-dri2-0-dev libxcb-dri3-0 libxcb-dri3-dev libxcb-glx0 libxcb-glx0-dev libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-present-dev libxcb-present0 libxcb-randr0 libxcb-randr0-dev libxcb-render-util0 libxcb-render0-dev libxcb-shape0 libxcb-shape0-dev libxcb-sync-dev libxcb-sync1 libxcb-util0 libxcb-xfixes0 libxcb-xfixes0-dev libxcb-xinerama0 libxcb-xkb1 libxcb1-dev libxdamage-dev libxdmcp-dev libxdot4 libxerces-c3.2 libxext-dev libxfixes-dev libxkbcommon-x11-0 libxmu6 libxpm4 libxshmfence-dev libxshmfence1 libxss1 libxt6 libxvidcore4 libxxf86vm-dev libxxf86vm1 libyaml-cpp-dev libyaml-cpp0.6 libzvbi-common libzvbi0 libzzip-0-13 m4 mariadb-common mercurial mercurial-common mesa-common-dev mesa-va-drivers mesa-vdpau-drivers modemmanager mpi-default-bin mpi-default-dev mysql-common nettle-dev notification-daemon ocl-icd-libopencl1 odbcinst odbcinst1debian2 opencv-data openmpi-bin openmpi-common poppler-data proj-bin proj-data pyqt5-dev python-bcrypt python-blinker python-bzrlib python-catkin-pkg python-configobj python-coverage python-cycler python-defusedxml python-distro python-docutils python-empy python-gnupg python-httplib2 python-jwt python-kiwisolver python-launchpadlib python-lazr.restfulclient python-lazr.uri python-matplotlib python-matplotlib2-data python-nacl python-netifaces python-nose python-oauthlib python-opencv python-opengl python-paramiko python-psutil python-pyasn1 python-pygments python-pyparsing python-pyqt5 python-pyqt5.qtopengl python-pyqt5.qtwebkit python-roman python-rosdep2 python-rosdistro python-rosinstall python-rosinstall-generator python-rospkg python-simplejson python-sip python-sip-dev python-subprocess32 python-tk python-vcstools python-wadllib python-wstool python-wxgtk3.0 python-wxtools python-wxversion python-yaml python3-catkin-pkg python3-coverage python3-docutils python3-empy python3-mock python3-nose python3-pbr python3-pygments python3-pyparsing python3-roman python3-rosdep2 python3-rosdistro python3-rospkg python3-yaml qt5-gtk-platformtheme qt5-qmake qt5-qmake-bin qtbase5-dev qtbase5-dev-tools qtchooser qttranslations5-l10n sbcl sgml-base sip-dev subversion tango-icon-theme tk8.6-blt2.5 ttf-bitstream-vera uuid-dev va-driver-all vdpau-driver-all x11proto-core-dev x11proto-damage-dev x11proto-dev x11proto-fixes-dev x11proto-xext-dev x11proto-xf86vidmode-dev xml-core xorg-sgml-doctools xtrans-dev

ROS melodic packages for Raspbian(buster).
Do you want to install the software package? [y/N]:y
/usr/bin/gdebi:113: FutureWarning: Possible nested set at position 1
  c = findall("[[(](\S+)/\S+[])]", msg)[0].lower()
Get:1 http://archive.raspberrypi.org/debian buster/main armhf libdrm-common all 2.4.99-1~bpo10~1 [14.0 kB]

@JoshFagan
Copy link

JoshFagan commented Apr 24, 2020

Thanks for putting this together!

I tried out the curl command and it did not perform the install (I think because of the "set -eu" flags). I ran the code in the .bash file, line by line in my terminal and that worked perfectly!

Edit: I neglected to mention that when I ran the code line-by-line, I skipped the "set -eu" line and just started with line 8.

@GoldExperience
Copy link

Thank you!
This is the most convenient way I have found so far.

@crashmatt
Copy link

Sato-san, many thanks for sharing your solution. This has saved me many days of failed attempts to build it myself.

Did not use curl. Ran the script line-by-line so I could see what was happening.

@Benoit-LdL
Copy link

You are an absolute hero Tiryoh, thanks for this great script ❤️

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