UNLV Autonomous Research Vehicle
UNLV Autonomous Research Vehicle
This website serves as documentation and interactive learning of setting up UNLV's Lincoln MKZ
Autonomous Research vehicle. We will cover week by week of working with the vehicle from the basic
physical operation of the vehicle, setting up the PC with ROS2, checking that our sensors are working,
setting up Autoware, and finally driving "autonomously" in a 3D scanned and 2D vectorized map.
AutonomouStuff Customer Delivery Documents
- this file contains documents delivered to UNLV by AutonomouStuff, the builder of the vehicle. Documents included are individual ADAS component customer data/programs,
training documents, data sheets, wiring diagrams and more.
Week 1
Topics - Prerequisities, Getting Started Part I, Getting Started Part II
Prerequisites (Approximate Time Investment: 4 hours)
The foundations of our Autonomous Research Vehicle are Ubuntu, ROS2, and Autoware. Autoware is a
ROS2 stack that we will cover in the later weeks. Before working with our vehicle, it is imperative that
we have a basic understanding of Ubuntu and ROS2. The resources below should be followed to get some practice.
Ubuntu can be ran on a virtual machine via VirtualBox or it can be installed natively. The virtual machine route
is objectively the best way to access Ubuntu and ROS2 without making permanent changes to your computer.
The required version of Ubuntu is 22.04.5 Jammy Jellyfish and the required version of ROS2 is ROS2 Humble.
The 11 part video series on ROS2 Humble for Beginners (see link below) covers the installation of ROS2.
The video series also covers the basics such as setting up your workspace, starting a node, creating packages,
writing publishers & subscribers, and more. This video series will be adequate for getting started with the vehicle.
Getting Started Part I (Approximate Time Investment: 2 hours)
Now that we are acquainted with Ubuntu and ROS2, we will learn the basic physical operation of the vehicle,
set up our workstation, and install Ubuntu on the vehicle's PC. Follow the instructions in the handout PDF below.
Note that the vehicle can be
driven just like a regular car. Park the vehicle in your workspace where you have access to a 120V 20A outlet.
The instrument cluster may show errors with the car's safety systems due to conflict with the aftermarket ADAS
components but this is normal. The messages can be dismissed by pressing the OK button on the steering wheel.
Getting Started Part II (Approximate Time Investment: 1 hour)
Now that we are phyiscally set up with our workspace and we have access to the vehicle's Ubuntu installed PC, we
will begin with the simple task of checking our LIDARs. The vehicle is equipped with four LIDARs. One
Ouster OS2, two Velodyne VLP16s, and one Velodyne VLP32.
In the world of Linux and ROS2's open source software, the availablity of documentation and easy to use software varies
greatly. We are checking these LIDARS first to get more familiar with our workflow and because Ouster and Velodyne offer
easy to use software that we can use to check that the LIDARs are working.
Follow the Getting Started Part II handout for directions on checking our LIDARs. The wiring diagram, breakout box schematic,
and power distribution diagrams are also provided below for any diagnostics needed.
Take Week 1 Quiz
Week 2
Topics - Getting Started Part III, Hello World I, Hello World II
Getting Started Part III (Approximate Time Investment: 1 Hour)
Getting Started Part III consists of installing ROS2 and setting up QOL changes for our ROS2 workspace.
This section should feel very familiar as it is the same procedure that was covered in the ROS2 Humble for
Beginners from the Prerequisite.
Hello World I - Blinker Node (Approximate Time Investment: 1-2 hours)
With ROS2 set up, we are moving onto Hello World I with the Blinker Node. We will install ROS drivers
for the Dataspeed drive-by-wire system so we can have bidirectional communication with ROS and the Lincoln.
Hello World I will be activating the car's rear blinkers by running a ROS package.
The Dataspeed drive by wire system is installed in our vehicle. It allows us to communicate to and with the vehicle.
The module is able to convert CAN (Controller Area Network) messages from the vehicle’s ECU (Engine Control Unit) and
transmit the messages to our PC and vice-versa. It acts as a middleware hardware for controlling the vehicle.
Hello World II - Ouster, Blinker, and Dataspeed: Input and Feedback (Approximate Time Investment: 1-2 hours)
Now that we've covered Hello World I, we will move onto Hello World II where we will incorporate a feedback
loop with an input and an output. We will create an "alarm" system where an input (motion detected by the Ouster) will
trigger an output (blinkers flash when motion is detected by the Ouster).
As mentioned before, the nature of open source Linux/ROS software is very volatile with changes (jargon: commmits) happening often, so it is good practice to read through the documentation in the drivers' repositories.
Take Week 2 Quiz
Week 3
Topics - Installing Autoware Stack and Planning Simulation
Autoware is one of the foundations of getting our car to drive autonomously. It is a ROS2 stack that acts as a middleware software between ROS2 and the vehicle’s ADAS sensors.
It is a large stack that can be containerized in Docker or installed from source. We will install it from source and run some basic simulations to check that it has installed correctly.
As previously mentioned, open source software is updated frequently so it is best to read through the references below.
- Handout:
- Resources
- Demonstration
Take Week 3 Quiz
Weeks 4 - 5
Topics - MKZ Sensor Kit, Vehicle Model, Launch Files
With Autoware installed and the simulation using the sample vehicle model and sensor kit working, we will install the following for our Autonomous MKZ Research Vehicle:
- Vehicle Model
- MKZ Specific Autoware Launch XML File
- MKZ Specific Sensor Driver XML File
- Some Debugged Scripts
- Autoware <-> MKZ Dataspeed Interface
Take Week 4-5 Quiz