[Documentation] [TitleIndex] [WordIndex

(!) Please ask about problems and questions regarding this tutorial on answers.ros.org. Don't forget to include in your question the link to this page, the versions of your OS & ROS, and also add appropriate tags.

Installing with Unison

Description: This tutorial covers a simple method to filter (create binary images) and deploy ros stacks to an embedded board or a fakeroot.

Keywords: install uninstall deploy

Tutorial Level: BEGINNER

When to do this?

Do this when you want to:

Unison

Unison is a 3rd party application (with gui frontend, usually named unison-gtk) that uses rsync under the hood to intelligently manage synchronisation between two roots. Its terribly useful and can be found in most linux distro repositories. Features:

Root Locations

Ros binaries use rpaths to find libraries, so your build host and embedded board should install the ros tree to the same location locally and remotely. To this end, we usually maintain a separate ros installation for each of our robots in a different directory. e.g. Yujin's korus robot is built under /opt/korus and also installed in /opt/korus.

Usage

It's pretty smart, conflicts wont happen that often unless you're updating from multiple sources (e.g. your team).

First time will take a while to copy, but once done, you can do minor development changes, hit unison's refresh and update with just a single click. And if you filter intelligently, you'll save bandwidth and transfer time.

Example Unison Profile

The following profile is for Yujin Robot's korus robot and saved in ~/.unison/korus.prf. It synchronises files across an ssh connection between the ubuntu build host and an intel atom embedded board.

######################################################
# Roots
######################################################

# Build root
root = /opt/korus

# Ssh root - exchange ssh keys to avoid passwords
root = ssh://yujin@192.168.3.80//opt/korus

# A fakeroot. Useful alternative to above if you want 
# to filter and tarball a binary image of your stacks.
# root = /tmp/opt/korus

######################################################
# Paths
######################################################

#path = setup.sh
path = ros
path = stacks
path = ycs
path = ecl

######################################################
# Ignores
######################################################

# Filters for a binary like installation of your trees.

# Currently the ignore for build directories may
# break with some ros packages that export stuff in
# the build directories (usually 3rd party packages).
# That sort of practice is getting discouraged, but 
# just beware if something doesn't copy correctly.

ignore = Name *.pyc
ignore = Name .svn
ignore = Name *.o
ignore = Name *.cmake
ignore = Name *.cpp
ignore = Name *.hpp
ignore = Name *.h
ignore = Name *.c
ignore = Name *.make
ignore = Name *.log
ignore = Name build
ignore = Name CMakeFiles
ignore = Name .cproject
ignore = Name .project

2019-10-12 12:35