#!/bin/bash #--------------------------------------------------------------------------- # Copyright (c) 2018 FIRST. All Rights Reserved. # Open Source Software - may be modified and shared by FRC teams. The code # must be accompanied by the FIRST BSD license file in the root directory of # the project. #---------------------------------------------------------------------------- #---------------------------------------------------------------------------- # Invoke gazebo, giving it the environment variables # it needs to find the FRC plugins and models. #---------------------------------------------------------------------------- usage() { echo $1: Invoke Gazebo for FRC echo Usage: echo " $1 name-of-world-file" } d=`dirname "$0"` fulldir=`(cd "$d"; pwd)` sharedir=/usr/share/frcgazebo if [ -d "$fulldir/../share" ] ; then sharedir=`(cd "$fulldir/../share/frcgazebo"; pwd)` fi # While we wait for the frc gazebo models to have a proper # home, we require the user to make them accessible if [ ! -d "$sharedir" ] ; then cravedir=`(cd "$fulldir/../"; pwd)` echo Error: you must manually place the models and world into $cravedir/share/frcgazebo exit 2 fi libsdir=/invalid/directory if [ -d "$fulldir/../libs" ] ; then libsdir=`(cd "$fulldir/../libs"; pwd)` fi # Use exactly the file they gave us, or find it in ../share/frcgazebo/worlds, # or find it there by adding a .world extension world="$1" if [ ! -f "$world" ] ; then world="$sharedir/worlds/$1" fi if [ ! -f "$world" ] ; then world="$sharedir/worlds/$1.world" fi if [ $# -ne 1 -o "x${1:0:1}" = "x-" ] ; then usage `basename $0` exit 1 fi if [ ! -f "$world" ] ; then echo Could not find $1 directly or in $sharedir/worlds exit 2 fi export GAZEBO_MODEL_PATH="$sharedir/models":$GAZEBO_MODEL_PATH for x in `find "$libsdir" -type d -name shared` ; do export GAZEBO_PLUGIN_PATH="$x:$GAZEBO_PLUGIN_PATH" done gazebo "$world"