AI-Robot-Challenge-Lab/intera.sh

185 строки
6.0 KiB
Bash
Executable File

#!/bin/bash
# Copyright (c) 2013-2016, Rethink Robotics
# All rights reserved.
# This file is to be used in the *root* of your Catkin workspace.
# This is a convenient script which will set up your ROS environment and
# should be executed with every new instance of a shell in which you plan on
# working with Intera.
# Clear any previously set your_ip/your_hostname
unset your_ip
unset your_hostname
#-----------------------------------------------------------------------------#
# USER CONFIGURABLE ROS ENVIRONMENT VARIABLES #
#-----------------------------------------------------------------------------#
# Note: If ROS_MASTER_URI, ROS_IP, or ROS_HOSTNAME environment variables were
# previously set (typically in your .bashrc or .bash_profile), those settings
# will be overwritten by any variables set here.
# Specify Robot's hostname
robot_hostname="paule.local"
# Set *Either* your computers ip address or hostname. Please note if using
# your_hostname that this must be resolvable to the Robot.
# your_ip="127.0.XXX.XXX"
your_hostname=`hostname`
# Specify ROS distribution (e.g. indigo, hydro, etc.)
ros_version="kinetic"
#-----------------------------------------------------------------------------#
tf=$(mktemp)
trap "rm -f -- '${tf}'" EXIT
# If this file specifies an ip address or hostname - unset any previously set
# ROS_IP and/or ROS_HOSTNAME.
# If this file does not specify an ip address or hostname - use the
# previously specified ROS_IP/ROS_HOSTNAME environment variables.
if [ -n "${your_ip}" ] || [ -n "${your_hostname}" ]; then
unset ROS_IP && unset ROS_HOSTNAME
else
your_ip="${ROS_IP}" && your_hostname="${ROS_HOSTNAME}"
fi
# If argument provided, set robot_hostname to argument
# If argument is sim or local, set robot_hostname to localhost
if [ -n "${1}" ]; then
if [[ "${1}" == "sim" ]] || [[ "${1}" == "local" ]]; then
robot_hostname="localhost"
if [[ -z ${your_ip} || "${your_ip}" == "192.168.XXX.XXX" ]] && \
[[ -z ${your_hostname} || "${your_hostname}" == "my_computer.local" ]]; then
your_hostname="localhost"
your_ip=""
fi
else
robot_hostname="${1}"
fi
fi
topdir=$(basename $(readlink -f $(dirname ${BASH_SOURCE[0]})))
cat <<-EOF > ${tf}
[ -s "\${HOME}"/.bashrc ] && source "\${HOME}"/.bashrc
[ -s "\${HOME}"/.bash_profile ] && source "\${HOME}"/.bash_profile
# verify this script is moved out of intera_sdk folder
if [[ -e "${topdir}/intera_sdk/package.xml" ]]; then
echo -ne "EXITING - This script must be moved from the intera_sdk folder \
to the root of your catkin workspace.\n"
exit 1
fi
# verify ros_version lowercase
ros_version="$(tr [A-Z] [a-z] <<< "${ros_version}")"
# check for ros installation
if [ ! -d "/opt/ros" ] || [ ! "$(ls -A /opt/ros)" ]; then
echo "EXITING - No ROS installation found in /opt/ros."
echo "Is ROS installed?"
exit 1
fi
# if set, verify user has modified the robot_hostname
if [ -n ${robot_hostname} ] && \
[[ "${robot_hostname}" == "robot_hostname.local" ]]; then
echo -ne "EXITING - Please edit this file, modifying the \
'robot_hostname' variable to reflect your Robot's current hostname.\n"
exit 1
fi
# if set, verify user has modified their ip address (your_ip)
if [ -n ${your_ip} ] && [[ "${your_ip}" == "192.168.XXX.XXX" ]]; then
echo -ne "EXITING - Please edit this file, modifying the 'your_ip' \
variable to reflect your current IP address.\n"
exit 1
fi
# if set, verify user has modified their computer hostname (your_hostname)
if [ -n ${your_hostname} ] && \
[[ "${your_hostname}" == "my_computer.local" ]]; then
echo -ne "EXITING - Please edit this file, modifying the \
'your_hostname' variable to reflect your current PC hostname.\n"
exit 1
fi
# verify user does not have both their ip *and* hostname set
if [ -n "${your_ip}" ] && [ -n "${your_hostname}" ]; then
echo -ne "EXITING - Please edit this file, modifying to specify \
*EITHER* your_ip or your_hostname.\n"
exit 1
fi
# verify that one of your_ip, your_hostname, ROS_IP, or ROS_HOSTNAME is set
if [ -z "${your_ip}" ] && [ -z "${your_hostname}" ]; then
echo -ne "EXITING - Please edit this file, modifying to specify \
your_ip or your_hostname.\n"
exit 1
fi
# verify specified ros version is installed
ros_setup="/opt/ros/\${ros_version}"
if [ ! -d "\${ros_setup}" ]; then
echo -ne "EXITING - Failed to find ROS \${ros_version} installation \
in \${ros_setup}.\n"
exit 1
fi
# verify the ros setup.sh file exists
if [ ! -s "\${ros_setup}"/setup.sh ]; then
echo -ne "EXITING - Failed to find the ROS environment script: \
"\${ros_setup}"/setup.sh.\n"
exit 1
fi
# verify the user is running this script in the root of the catkin
# workspace and that the workspace has been compiled.
if [ ! -s "devel/setup.bash" ]; then
echo -ne "EXITING - \n1) Please verify that this script is being run \
in the root of your catkin workspace.\n2) Please verify that your workspace \
has been built (source /opt/ros/\${ros_version}/setup.sh; catkin_make).\n\
3) Run this script again upon completion of your workspace build.\n"
exit 1
fi
[ -n "${your_ip}" ] && export ROS_IP="${your_ip}"
[ -n "${your_hostname}" ] && export ROS_HOSTNAME="${your_hostname}"
[ -n "${robot_hostname}" ] && \
export ROS_MASTER_URI="http://${robot_hostname}:11311"
# source the catkin setup bash script
source devel/setup.bash
# setup the bash prompt
export __ROS_PROMPT=\${__ROS_PROMPT:-0}
[ \${__ROS_PROMPT} -eq 0 -a -n "\${PROMPT_COMMAND}" ] && \
export __ORIG_PROMPT_COMMAND=\${PROMPT_COMMAND}
__ros_prompt () {
if [ -n "\${__ORIG_PROMPT_COMMAND}" ]; then
eval \${__ORIG_PROMPT_COMMAND}
fi
if ! echo \${PS1} | grep '\[intera' &>/dev/null; then
export PS1="\[\033[00;33m\][intera - \
\${ROS_MASTER_URI}]\[\033[00m\] \${PS1}"
fi
}
if [ "\${TERM}" != "dumb" ]; then
export PROMPT_COMMAND=__ros_prompt
__ROS_PROMPT=1
elif ! echo \${PS1} | grep '\[intera' &>/dev/null; then
export PS1="[intera - \${ROS_MASTER_URI}] \${PS1}"
fi
EOF
${SHELL} --rcfile ${tf}
rm -f -- "${tf}"
trap - EXIT
# vim: noet