Skip to content

Monash-Connected-Autonomous-Vehicle/ESDA

Repository files navigation

ESDA

This repository holds the software stack for the Monash-Connected-Autonomous-Vehicle's IGVC 2024 entry, the ESDA (Electric Self Driving Automobile).

Setup and launch

Hardware setup

Some of the hardware used such as sensors require some configuration and setup prior to use as detailed below

Swiftnav Piksi multi

Install the swift console from the (Swiftnav Resource Library)[https://www.swiftnav.com/resource-library?filters=no&title=Swift+Console&search=Swift+Console&product=Swift+Console&category=Installer&release=Latest] and then run dpkg -i /<path_to_deb> or alternatively run the following command (note the version ad url may have updated since the writing of these instructions)

wget https://www.swiftnav.com/resource-files/Swift%20Console/v4.0.19/Installer/swift-console_v4.0.19_linux.deb
sudo dpkg -i ./swift-console_v4.0.19_linux.deb

Power the piksi multi and connect it using a USB to serial cable with the serial end connected to the piksi's RS2321 port and additionally connect the GPS antenna.

Open the Swiftnav console and configure the device to send all SBP message types by providing the default entry under the setting shown below (i.e. a blank entry for uart0 and 1) and saving this configuration.

VLP16

Refer to the (Velodyne LiDAR User Manual)[https://velodynelidar.com/wp-content/uploads/2019/12/63-9243-Rev-E-VLP-16-User-Manual.pdf] and/or (YouTube setup guide)[https://www.youtube.com/watch?v=Pa-q5elS_nE] on further instructions on configuring the LiDAR

Sim setup

The sim requires gazebo ros packages installed. Rrun sudo apt update; sudo apt install ros-humble-gazebo-ros-pkgs to do this

Dependencies

Ensure ROS2 Humble Hawksbill is installed

This repository also uses various third party drivers to run for example SDKs for the zed camera & piksi multi. Run the following commands to install these (or refer to their respective ROS2 driver repositories for further instructions):

Install vcstool to help set up the ros2 workspace when cloning and building

sudo apt-get update
sudo apt install python3-vcstool

Run the following in any directory for swiftnav driver deps

git clone https://github.com/swift-nav/libsbp.git
cd libsbp
git checkout v4.11.0
cd c
git submodule update --init --recursive
mkdir build
cd build
cmake DCMAKE_CXX_STANDARD=17 -DCMAKE_CXX_STANDARD_REQUIRED=ON -DCMAKE_CXX_EXTENSIONS=OFF ../ 
make
sudo make install
cd ../../../

Install the swiftnav driver updated libserialport 0.1.2 dependency:

  1. Go to the libserialport 0.1.2 release
  2. Download libserialport-0.1.2.tar.gz
  3. Extract the archive:
tar -xzf libserialport-0.1.2.tar.gz
cd libserialport-0.1.2
  1. Install the package (NOTE: will be installed under /usr/local/lib , additional install details on the offficial page if required):
./configure
make
sudo make install
sudo ldconfig
cd ..

Run the following to install zed driver dependencies

# install zed_sdk
wget -O zed_sdk https://download.stereolabs.com/zedsdk/4.1/cu121/ubuntu22
chmod +x zed_sdk
./zed_sdk

# base installer for cuda toolkit
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4

# install driver
sudo apt-get install -y nvidia-driver-550-open
sudo apt-get install -y cuda-drivers-550

Building and sourcing

Run the following commands to create, build and source the workspace once all other dependencies have been met

mkdir esda_ws;
cd esda_ws;
git clone https://github.com/Monash-Connected-Autonomous-Vehicle/ESDA.git;

# import dependencies that cannot be rosdep installed or apt installed
vcs import ESDA < ESDA/esda.repos; 

# zed-ros2-wrapper utilizes a submodule that must be initialised
cd ESDA/zed-ros-2-wrapper;
git submodule update --init;
cd ../../

# install remaining dependencies, build and source
sudo apt-get update; 
rosdep install --from-path ESDA --ignore-src -yr;
colcon build;
source install/setup.bash

Launching

The following can be used to launch the ESDA (once implemented)

ros2 launch esda_launch esda_launch.py

Or launch the sim ros2 launch esda_sim launch_sim.launch.py

Note that as of now, until a working URDF is implemented, the following static transforms should be run

ros2 run tf2_ros static_transform_publisher 2 3 1 0 0 0 swiftnav-gnss base_link

ros2 run tf2_ros static_transform_publisher 0 0 0 0 0 0 base_link base_footprint

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Anthony Oon
Anthony Oon

💻 🤔 📆 💬 🎨
Dylan Gonzales
Dylan Gonzales

🎨 🤔 🧑‍🏫 💬 💻
William Tioe
William Tioe

💻
Jiawei
Jiawei

💻
Baaset
Baaset

💻 🎨 🤔 📖
Akul Saigal
Akul Saigal

📆
Christina Prakash
Christina Prakash

📆
Jason Angus
Jason Angus

💻 🔣
Samuel Tri
Samuel Tri

💻
Andrew Joseph Ng
Andrew Joseph Ng

⚠️

This project follows the all-contributors specification. Contributions of any kind welcome!

About

Software stack for MCAVs annual IGVC entry

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published