the Frontera Project

Frontera is an open-source implementation of an Installation by Lilia Perez.

When a user touches the Frontera-screen it creates a magic-mirror image, projecting a pre-recorded player onto the screen who touches the user's hand and keeps following it..

The opening on July 11 2008 at The Netherlands Institute for Media Art was great fun! Currently there are over 60 portraits to interact with..

The exhibition will be open for three weeks Monday-Saturday until July 26 at Keizersgracht 264, Amsterdam, NL.

still a few days to go. For now I've uploaded some pictures in my blog. There is also going to be a Symposium on Tuesday 15 July 19:30 - I'll see if I can get this wiki page up to scratch before then.

Frontera Hardware

just a large diffusing screen, a beamer and two web-cameras; plus a video-camera for recording. At the montevideo exhibition, Eelko Wagenar and Lilia built two separate screens - one for playback, and a booth for recording, thus we required 4 wide-angle webcams for position tracking.

  • IEEE-1394 C-2xx?? cams with 94deg lens (lenses were bought separately) for hand-tracking
  • Elphel - source-inside 3.2Mpix video-camera for recording.
  • Beamer and a flat-screen monitor
  • a few firewire hubs, network cable and two PCs

Frontera Software

 svn co frontera

Frontera tracks the hand of the user and projects a mirror image from recorded footage full-screen.

Besides the operating-system (gnu/linux ubuntustudio) and OS-automation, Frontera consists of position-tracking , video recording, playback and controlling software. Position-tracking is used for both playback and recording while the installation is either in record or in playback modeā€¦

The communication between the recorder, player, tracker and user-interface is done via OSC, video-data exchange between different installations is performed with rsync.

  • Justpoint - position tracking (C++, openCV)
  • ElphelOGM / mencoder - video recording (customized version - store timecode, OSC controlled)
  • xjadeo/xj-five - video playback (customized version of xjadeo)
  • control interface & GUI (various perl, python, c-code and shell scripts)

System / Backup

frontera runs live from DVD - bootcdwrite with a few tricks was used to create bootable ISO images. The /home dir is an ext3-image residing on an external HDD auto-mounted to /var/frontera.

# bootcdwrite.conf
# look for man bootcdwrite.conf(5) for more informations
# this path was added as prefix to KERNEL, INITRD, DISABLE_CRON, NOT_TO_CD
# and NOT_TO_RAM, if this are relativ paths (without starting "/")
# Define the kernel which is used
# size of each ramdisk ram1 and ram2 (ram1: /dev /etc /home /root /tmp,
# (ram2: /var)
# typ is CD or DVD
# specify one or more CD devices to boot from, first is default
# "auto" try to find the bootcd on all SCSI and IDE CDROMS
CDDEV="auto /dev/hda /dev/hdb /dev/hdc /dev/hdd /dev/scd0 /dev/scd1"
# Text to Display at Boottime (see syslinux doku)
# This option is not supported for hppa
# do some checks or not
# additional options for the kernel
# exclude some files or directories from writing to cd
NOT_TO_CD="/home-old /var/frontera-old"
# exclude some files or directories from loading to ram
# Because most people's home and root dir are to large to include
# in RAM, subdirectories can be excluded:
NOT_TO_RAM="$(find $SRCDISK/home $SRCDISK/root $SRCDISK/var/frontera-old -maxdepth 1 -mindepth 1 -type d)"
# If you are using ssh it is helpful to have a unique ssh hostkey for
# each CD.
# If you are using udev filesystem and install the image only on other
# machines you need to set this to "yes" because the network interfaces are
# hardwired in /etc/udev/rules.d/z25_persistent-net.rules and we must remove
# them. You can do this also on bootcd2disk.
# logfile
# where the image resists after build
# FLOPPY_RUNTIME_DEV=<floppy device>|""
# When you boot from cd you read changes from this device.
# If you want to boot from FLOPPY specify BOOTFLOPPY=yes. This reduces
# space on floppy used by bootcdflopcp. For this to work FLOPPY_CREATE_DEV
# has to be specified.
# For hppa this option is not supported and must be set to no.
# Default:
# If you want to boot several machines from the same cdrom, you must have
# the individual configuartion (exp: /etc/network/interfaces) on floppy.
# If one can not be mounted it is a good idea to stop booting and to wait
# for manual interaction instead of comming up with a wrong configuration.
# delete some chached files in /var
# If FASTBOOT=yes then additional images for the ramdisk will be created
# by bootcdwrite and copied to CD. This allows faster booting,
# but needs extra space on CD
# use isolinux (yes,no,auto), auto check for isolinux and use it
# use -s (save, slow, stupid) option on syslinux
# choose the architecture
# ARCH=auto|hppa|i386|ia64
# use devfs or not
# path to initrd
# addiditionel entries to fstab
# TO_FSTAB="/dev/hdc1 /home ext3 defaults 1 1
# /dev/usb0 /mnt/usb ext3 defaults 1 1 "
UUID=B246-A751  /var/frontera   vfat defaults,uid=1000,umask=000 0 0
/var/frontera/pl_home.ext3 /home        ext3 loop,defaults 0 0
# transparent compression of ISO 9660/Rock Ridge filessytem
# ("auto" checks for space to compress the image on the local system)
# COMPRESS=<yes|no|auto>
# Files or Directory-Trees that should never be compressed on CD can be listed
# here. You have to define the Path as it is on the CD, (with /
# instead of /var)
# Files listed in DISABLE_CRON will be on the cdrom with a .no_run_on_bootcd
# suffix so run-parts won't execute them. The original file will be a link to
# /bin/true.
DISABLE_CRON="etc/cron.daily/find etc/cron.daily/standard etc/cron.daily/security"
# With this variable you can add or delete some options
# given to mkisofs by bootcdwrite.
#   Please create debian-bugreports if you have to use special
#   options, not mentioned here. Then I can list this options here.
# function extra_changes()
# It is possible to define a function called extra_changes to have some
# files modified on the ISO image. Here is an example:
#   function extra_changes() {
#     echo "noname" >$VAR/changes/
#     mkdir -p $VAR/changes/
#     ( echo "auto lo"
#       echo "iface lo inet loopback"
#       echo ""
#       echo "auto eth0"
#       echo "iface eth0 inet static"
#       echo "       address"
#       echo "       netmask"
#     ) >$VAR/changes/
#     echo " localhost noname" >$VAR/changes/
#     cat $SRCDISK/etc/passwd |
#     grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/
#     cat $SRCDISK/etc/shadow |
#     grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/
#     cat $SRCDISK/etc/group |
#     grep -v -e "^bs:" -e "^bianca:" -e "^tim:" >$VAR/changes/
#   }
# BOOTCDMODPROBE=standard|bootcd|auto
# If booted from initrd bootcd has to load the necessary modules.
# If only modules provided by initramfs-tools are needed you can
# specify "standard" here. If bootcd should try extra hard to load
# neccessary modules you can specify "bootcd" here.
# Bootcd will use discover for this purpose. So discover has to be installed.
# If you specify auto, bootcd will check if discover is installed.
# If it is installed # BOOTCDMODPROBE=bootcd will be set, if not
# BOOTCDMODPROBE=standard will be set.
# Be aware that people have reported, that sometimes BOOTCDMODPROBE=bootcd
# may not work but sometimes it is needed.




misc. References

software development

wiki/frontera.txt · Last modified: 04.10.2008 14:35 by rgareus