Skip to content

Commit

Permalink
Release for CNURobotics ROS2 Humble setup
Browse files Browse the repository at this point in the history
  • Loading branch information
David Conner committed Jul 4, 2022
0 parents commit 832e823
Show file tree
Hide file tree
Showing 16 changed files with 561 additions and 0 deletions.
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
*~
.rosinstall
.rosinstall.bak
.catkin_workspace
.ssh/
build/
log/
install/
setup.bash
src/
stacks/
scripts/
rosinstall/optional/custom
logs/
videos/
external/
93 changes: 93 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
# CNU Robotics CHRISLab ROS Workspace Installation

Install and setup files for the basic setup of our software.

Computer Setup
--------------

* Follow the [ROS Installation] instructions for setting up your ROS system on Ubuntu.
* This system has been tested on ROS 2 Humble Release on `Ubuntu 22.04`.
* We recommend `ros-humble-desktop` as the base for this system; it includes most of the required packages, including the Gazebo simulator for testing.
* Install ROS stand alone tools
* `sudo apt-get install python3-rosinstall`
* `sudo apt-get install python3-rosdep`
* `sudo apt-get install python3-wstool`
* Our install script (below) uses rosinstall tools
* Install your favorite editor or IDE. (e.g. atom, QtCreator, CLion, ...)




CNURobotics Software Setup
-----------------------

#### *If installing a new workspace, remove existing workspace setup from .bashrc, and
#### reopen terminal sourcing only the /opt/ros/humble/setup.bash prior to running this script.*

1. Create workspace root folder (e.g. ~/CHRISLab) and change to that directory
<pre>
cd ~
mkdir CHRISLab
cd CHRISLab
</pre>

2. Clone the install setup
* **Note: This is for the public CNURobotics GitHub Server for development**
* `git clone https://github.com/CNURobotics/chris_install.git .`
* *_Note: the dot at end of below command is critical!_*
* We are choosing to clone within our workspace root folder, as opposed to creating the folder during the clone.
* The cloned folder should *NOT* be named chris_install.
* Alternately, you could replaced dot ('.') with desired name of the workspace and clone from home directory (skipping step 1 above)

3. Change to correct branch
* e.g., `git checkout humble-devel-github`
* **Note: This is for the public CNURobotics GitHub Server for development**
* This version has options for selectively installing the standard ROS 2 Turtlebot3 and CHRISLab Kobuki-based Turtlebot2 demonstrations for
`flexible_navigation` and `flexible_behavior_trees` demonstrations.

4. Run the install script
`./install.sh`

5. Follow on-screen instructions to add the new setup to bashrc and re-source the terminal
* You can open a new terminal, or just `. ~/.bashrc`
6. Test the setup
`rws`
* you should be in the workspace root (e.g. ~/CHRISLab )

7. Install the CHRISLab specific code by choosing one of the following
* `./rosinstall/install_scripts/install_flex_base.sh` for just base software without demonstrations, or
* `./rosinstall/install_scripts/install_flex_turtlebot3.sh` for base + Turtlebot 3 Simulation demonstration setup
* `./rosinstall/install_scripts/install_chris_turtlebot2.sh` for base + CHRISLab specific Turtlebot 2 simulation and hardware setup

For basic demonstration with minimal dependencies, choose the `install_flex_turtlebot3.sh` installation.

The installations can be run separated with the required packages merged in the rosinstall files.

8. Build and install any external libraries installed in the `$WORKSPACE_ROOT/external` folder
* For example:
<pre>
cd $WORKSPACE_ROOT/external/sbpl
mkdir build
cd build
cmake ..
make
sudo make install
</pre>

Currently we do *NOT* require any external builds for these demonstrations.

9. Build our system
<pre>
ccb
. setup.bash
</pre>

> NOTE: `ccb` is using a safe alias for `colcon build` defined in the setup script created by the install script.
> It changes to the ROS workspace first to avoid accidentally building in a source folder.
> There are variants for colcon build --packages-select (ccbs) and --packages-up-to (ccbu)
> NOTE: Be sure to re-run the setup.bash script whenever a new package is added to the workspace.
10. Enjoy!

[ROS Installation]: https://docs.ros.org
5 changes: 5 additions & 0 deletions install.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
#!/bin/bash

WORKSPACE_ROOT=$(cd `dirname $0`; pwd)
source ./rosinstall/install_scripts/install_script.sh "$@"

2 changes: 2 additions & 0 deletions rosinstall/default.rosinstall
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Define any standard source installs here
- git: {local-name: src/chris_scripts, uri: 'https://github.com/CNURobotics/chris_scripts.git', version: humble-devel }
23 changes: 23 additions & 0 deletions rosinstall/install_scripts/install_chris_jackal.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
#!/bin/bash

#cd $WORKSPACE_ROOT

if [ -z $WORKSPACE_ROOT ]; then
echo "Variable WORKSPACE_ROOT not set, make sure the workspace is set up properly!"
exit 1
fi

echo "Installing CHRISLab Jackal software setup ..."

cd $WORKSPACE_ROOT

# List the rosinstall files containing any packages we wish to install here
wstool merge rosinstall/optional/chris_jackal.rosinstall

if [ $? -eq 0 ]
then
echo "Successfully merged ROS install files, now update and build ..."
sh rosinstall/install_scripts/update_and_build.sh $1
else
echo "Could not merge jackal repos!" >&2
fi
40 changes: 40 additions & 0 deletions rosinstall/install_scripts/install_chris_turtlebot2.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/bin/bash

#cd $WORKSPACE_ROOT

if [ -z $WORKSPACE_ROOT ]; then
echo "Variable WORKSPACE_ROOT not set, make sure the workspace is set up properly!"
exit 1
fi

echo "Installing CHRISLab Turtlebot software setup ..."

cd $WORKSPACE_ROOT

# List the rosinstall files containing any packages we wish to install here
wstool merge rosinstall/optional/flexible_navigation.rosinstall
if [ $? -eq 0 ]
then
echo "Successfully merged FlexBE + Flexible Navigation ROS install files, now merge third party repos ..."
wstool merge rosinstall/optional/chris_third_party.rosinstall
else
echo "Failed to merge flexible navigation repos !"
exit 1
fi

if [ $? -eq 0 ]
then
echo "Successfully merged third party ROS install files, now merge CHRISLab TurtleBot 2 repos ..."
wstool merge rosinstall/optional/chris_turtlebot2.rosinstall
else
echo "Failed to merge third party files!"
exit 1
fi

if [ $? -eq 0 ]
then
echo "Successfully merged required ROS install files, now update and build ..."
sh rosinstall/install_scripts/update_and_build.sh $1
else
echo "Could not merge turtlebot demo repos " >&2
fi
31 changes: 31 additions & 0 deletions rosinstall/install_scripts/install_flex_base.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/bash

#cd $WORKSPACE_ROOT

if [ -z $WORKSPACE_ROOT ]; then
echo "Variable WORKSPACE_ROOT not set, make sure the workspace is set up properly!"
exit 1
fi

echo "Installing CHRISLab software setup ..."

cd $WORKSPACE_ROOT

# List the rosinstall files containing any packages we wish to install here
wstool merge rosinstall/optional/flexible_navigation.rosinstall
if [ $? -eq 0 ]
then
echo "Successfully merged FlexBE + Flexible Navigation ROS install files, now merge standard third party repos for base ..."
wstool merge rosinstall/optional/chris_third_party.rosinstall
else
echo "Failed to merge flexible navigation repos !"
exit 1
fi

if [ $? -eq 0 ]
then
echo "Successfully merged ROS install files, now update and build ..."
sh rosinstall/install_scripts/update_and_build.sh $1
else
echo "Could not merge flexible navigation repos " >&2
fi
41 changes: 41 additions & 0 deletions rosinstall/install_scripts/install_flex_turtlebot3.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/bash

#cd $WORKSPACE_ROOT

if [ -z $WORKSPACE_ROOT ]; then
echo "Variable WORKSPACE_ROOT not set, make sure the workspace is set up properly!"
exit 1
fi

echo "Installing Simulation setup and FlexBE demonstrations using standard Turtlebot3 setup ..."

cd $WORKSPACE_ROOT

# List the rosinstall files containing any packages we wish to install here
wstool merge rosinstall/optional/flexible_navigation.rosinstall
if [ $? -eq 0 ]
then
echo "Successfully merged FlexBE + Flexible Navigation ROS install files, now merge third party repos ..."
wstool merge rosinstall/optional/chris_third_party.rosinstall
else
echo "Failed to merge flexible navigation repos !"
exit 1
fi

if [ $? -eq 0 ]
then
echo "Successfully merged FlexBE + Flexible Navigation ROS install files, now merge Turtlebot3 specific repos ..."
wstool merge rosinstall/optional/flex_turtlebot3.rosinstall
else
echo "Failed to merge flexible navigation repos !"
exit 1
fi


if [ $? -eq 0 ]
then
echo "Successfully merged required ROS install files, now update and build ..."
sh rosinstall/install_scripts/update_and_build.sh $1
else
echo "Could not merge turtlebot demo repos " >&2
fi
34 changes: 34 additions & 0 deletions rosinstall/install_scripts/install_package_dependencies.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
echo "No additional package dependencies for now!"
# rosdep and package dependencies should catch everything

# This should be extended to first check if everything is installed and only do the sudo requiring call when there's anything missing.
#echo "Installing needed packages (both ROS package and system dependency .deb packages) ..."
#
#PACKAGES_TO_INSTALL="\
#mercurial \
#git \
#python-catkin-tools \
#protobuf-compiler \
#libargtable2-dev \
#libcoin80-dev \
#libglew-dev \
#libgsl0-dev \
#liblapack-dev \
#libsnappy-dev \
#libsoqt4-dev \
#libtinyxml-dev \
#libunittest++-dev \
#python-rosinstall \
#libsdl-image1.2-dev \
#libvtk-java \
#python-pymodbus \
#ros-$ROS_DISTRO-spacenav-node \
#ros-$ROS_DISTRO-bfl \
#ros-$ROS_DISTRO-cmake-modules \
#ros-$ROS_DISTRO-desktop \
#ros-$ROS_DISTRO-eigen-stl-containers \
#ros-$ROS_DISTRO-map-server \
#ros-$ROS_DISTRO-laser-assembler"
#
#
#sudo apt-get -y install $PACKAGES_TO_INSTALL
Loading

0 comments on commit 832e823

Please sign in to comment.