Skip to content

Commit

Permalink
Merge pull request #6 from jetsonhacks/dev
Browse files Browse the repository at this point in the history
Update ROS GPG Key
  • Loading branch information
jetsonhacks authored Sep 4, 2021
2 parents 36a6e64 + ef39de8 commit 96820ab
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 31 deletions.
85 changes: 76 additions & 9 deletions installROS.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,34 @@
#!/bin/bash
# Install ROS on NVIDIA Jetson Developer Kits
# Copyright (c) JetsonHacks, 2019-2021

# MIT License
# Maintainer of ARM builds for ROS is http://answers.ros.org/users/1034/ahendrix/
# Information from:
# http://wiki.ros.org/melodic/Installation/UbuntuARM

# Get code name of distribution
# lsb_release gets the Ubuntu Description Release and Code name
DISTRIBUTION_CODE_NAME=$( lsb_release -sc )

case $DISTRIBUTION_CODE_NAME in
"xenial" )
echo "This Ubuntu distribution is Ubuntu Xenial (16.04)"
echo "This install is not the ROS recommended version for Ubuntu Xenial."
echo "ROS Bionic is the recommended version."
echo "This script installs ROS Melodic. You will need to modify it for your purposes."
exit 0
;;
"bionic")
echo "This Ubuntu distribution is Ubuntu Bionic (18.04)"
echo "Installing ROS Melodic"
;;
*)
echo "This distribution is $DISTRIBUTION_CODE_NAME"
echo "This script will only work with Ubuntu Xenial (16.04) or Bionic (18.04)"
exit 0
esac

# Install Robot Operating System (ROS) on NVIDIA Jetson Developer Kit
# Maintainer of ARM builds for ROS is http://answers.ros.org/users/1034/ahendrix/
# Information from:
Expand All @@ -8,7 +38,7 @@
# Green is 2
# Reset is sgr0

function usage
usage ()
{
echo "Usage: ./installROS.sh [[-p package] | [-h]]"
echo "Install ROS Melodic"
Expand All @@ -22,7 +52,7 @@ function usage
echo "-h | --help This message"
}

function shouldInstallPackages
shouldInstallPackages ()
{
tput setaf 1
echo "Your package list did not include a recommended base package"
Expand Down Expand Up @@ -87,9 +117,9 @@ sudo apt-add-repository restricted
# Setup sources.lst
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
# Setup keys
sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
# If you experience issues connecting to the keyserver, you can try substituting hkp://pgp.mit.edu:80 or hkp://keyserver.ubuntu.com:80 in the previous command.
# Installation
sudo apt install curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -

tput setaf 2
echo "Updating apt-get"
tput sgr0
Expand Down Expand Up @@ -120,24 +150,61 @@ tput setaf 2
echo "Installing rosdep"
tput sgr0
sudo apt-get install python-rosdep -y
# Certificates are messed up on earlier version Jetson for some reason
# sudo c_rehash /etc/ssl/certs
# Initialize rosdep
tput setaf 2
echo "Initializaing rosdep"
tput sgr0
sudo rosdep init
# To find available packages, use:
rosdep update
# Environment Setup - Don't add /opt/ros/melodic/setup.bash if it's already in bashrc
# Environment Setup - source melodic setup.bash
# Don't add /opt/ros/melodic/setup.bash if it's already in bashrc
grep -q -F 'source /opt/ros/melodic/setup.bash' ~/.bashrc || echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc
# Install rosinstall
tput setaf 2
echo "Installing rosinstall tools"
tput sgr0
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential -y

# Install useful ROS dev tools
sudo apt-get install -y python-rosinstall \
python-rosinstall-generator \
python-wstool \
build-essential

# Use ip to get the current IP addresses of eth0 and wlan0; parse into form xx.xx.xx.xx
ETH0_IPADDRESS=$(ip -4 -o addr show eth0 | awk '{print $4}' | cut -d "/" -f 1)
WLAN_IPADDRESS=$(ip -4 -o addr show wlan0 | awk '{print $4}' | cut -d "/" -f 1)

if [ -z "$ETH0_IPADDRESS" ] ; then
echo "Ethernet (eth0) is not available"
else
echo "Ethernet (eth0) is $ETH0_IPADDRESS"
fi
if [ -z "$WLAN_IPADDRESS" ] ; then
echo "Wireless (wlan0) is not available"
else
echo "Wireless (wlan0) ip address is $WLAN_IPADDRESS"
fi

# Default to eth0 if available; wlan0 next
ROS_IP_ADDRESS=""
if [ ! -z "$ETH0_IPADDRESS" ] ; then
ROS_IP_ADDRESS=$ETH0_IPADDRESS
else
ROS_IP_ADDRESS=$WLAN_IPADDRESS
fi
if [ ! -z "$ROS_IP_ADDRESS" ] ; then
echo "Setting ROS_IP in ${HOME}/.bashrc to: $ROS_IP_ADDRESS"
else
echo "Setting ROS_IP to empty. Please change ROS_IP in the ${HOME}/.bashrc file"
fi

#setup ROS environment variables
grep -q -F ' ROS_MASTER_URI' ~/.bashrc || echo 'export ROS_MASTER_URI=http://localhost:11311' | tee -a ~/.bashrc
grep -q -F ' ROS_IP' ~/.bashrc || echo "export ROS_IP=${ROS_IP_ADDRESS}" | tee -a ~/.bashrc
tput setaf 2

echo "Installation complete!"
echo "Please setup your Catkin Workspace"
tput sgr0
Expand Down
58 changes: 36 additions & 22 deletions setupCatkinWorkspace.sh
Original file line number Diff line number Diff line change
@@ -1,33 +1,47 @@
#!/bin/bash
# Create a Catkin Workspace and setup ROS environment variables
# Usage setupCatkinWorkspace.sh dirName
# Create a Catkin Workspace
# Copyright (c) JetsonHacks, 2019-2021

# MIT License
# Maintainer of ARM builds for ROS is http://answers.ros.org/users/1034/ahendrix/
# Information from:
# http://wiki.ros.org/melodic/Installation/UbuntuARM
#

source /opt/ros/melodic/setup.bash
DEFAULTDIR=~/catkin_ws
CLDIR="$1"
if [ ! -z "$CLDIR" ]; then
DEFAULTDIR=~/"$CLDIR"
fi
if [ -e "$DEFAULTDIR" ] ; then
echo "$DEFAULTDIR already exists; no action taken"

# Usage setupCatkinWorkspace.sh dirName
help_usage ()
{
echo "Usage: ./setupCatkinWorkspac.sh <path>"
echo " Setup a Catkin Workspace at the path indicated"
echo " Default path is ~/catkin_ws"
echo " -h | --help This message"
exit 0
}

CATKIN_DIR=""
case $1 in
-h | --help) help_usage ;;
*) CATKIN_DIR="$1" ;;
esac


CATKIN_DIR=${CATKIN_DIR:="${HOME}/catkin_ws"}

if [ -e "$CATKIN_DIR" ] ; then
echo "$CATKIN_DIR already exists; no action taken"
exit 1
else
echo "Creating Catkin Workspace: $DEFAULTDIR"
echo "Creating Catkin Workspace: $CATKIN_DIR"
fi
echo "$DEFAULTDIR"/src
mkdir -p "$DEFAULTDIR"/src
cd "$DEFAULTDIR"/src
echo "$CATKIN_DIR"/src
mkdir -p "$CATKIN_DIR"/src
cd "$CATKIN_DIR"/src
catkin_init_workspace
cd "$DEFAULTDIR"
cd ..
catkin_make


#setup ROS environment variables
grep -q -F ' ROS_MASTER_URI' ~/.bashrc || echo 'export ROS_MASTER_URI=http://localhost:11311' | tee -a ~/.bashrc
grep -q -F ' ROS_IP' ~/.bashrc || echo "export ROS_IP=$(hostname -I)" | tee -a ~/.bashrc
echo "export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH" >> ~/.bashrc

echo "The Catkin Workspace has been created"
echo "Please modify the placeholders for ROS_MASTER_URI and ROS_IP placed into the file ${HOME}/.bashrc"
echo "to suit your environment."
echo "Catkin workspace: $CATKIN_DIR created"

0 comments on commit 96820ab

Please sign in to comment.