This project is being developed as an educational platform for undergraduate students to get exposure into the domain of autonomous vehicles.
This platform will allow students to delve into:
- Mechanical Design
- Electrical system integration
- Software and algorithm development
- IoT
This repository holds some documentation for the electrical and mechanical design but is mainly a set of ROS packages to interface with the car platform in simulation or real life.
The easiest way to get up and running with the environment is Docker.
- Make sure you have docker client (and daemon) installed on your host OS (see instructions at https://docs.docker.com/get-started/)
- Check your docker daemon is running correctly. Running most basic docker client commands will verify this e.g.:
docker image ls
- If the above fails (typically on Ubuntu), you may need to restart your docker daemon:
sudo service docker stop sudo service docker start
- Make sure you have nvidia drivers and the nvidia-cuda-toolkit installed or your container will try to use the inbuilt CPU graphics instead, and won't run properly. To install the toolkit:
sudo apt-get install nvidia-cuda-toolkit
- Install nvidia-docker by following the instructions at https://github.com/NVIDIA/nvidia-docker. This essentially boils down to:
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit
git clone https://github.com/RVSagar/uw-auto-rc-car.git
cd uw-auto-rc-car
git submodule update --init --recursive
make
(make vnc
if running on remote server)- Start the docker
./start_docker.sh latest yes
or./start_docker_no_nvidia.sh latest yes
if you don't have an NVIDIA card. cd catkin_ws
catkin build
to build all the packagessource devel/setup.bash
roslaunch auto_rc_car_demos simple_lane_demo_sim.launch
to launch Gazebo and rviz- Open a new terminal and type
rosrun auto_rc_car_demos simple_lane_drive.py
simple_lane_demo_sim.launch
has a few optional command line arguments such as record:=true
to enable logging via a rosbag, bag_prefix:=MY_PREFIX
to specify a file name prefix for that rosbag, and topics:="TOPIC1 TOPIC2"
to choose what topics to record (record all if left unspecified). If multiple arguments are supplemented, separate them with whitespace.
git clone https://github.com/RVSagar/uw-auto-rc-car.git
cd uw-auto-rc-car
git submodule update --init --recursive
docker pull ghcr.io/rvsagar/uw-auto-rc-car/uw_rc_car:tf-cpu
(this will take a while, it'll download the latest tf-cpu image from the GitHub Container Registry)- Start the docker
./start_docker_no_nvidia.sh tf-cpu yes
- You should now have a usable container with Tensorflow/Keras that will train on a CPU. ROS Melodic is also available in this image.
auto_rc_car_api
: core package that contains custom messages, services and nodes to interface with a simulated or real carauto_rc_car_control
: controllers for simulating the car in Gazeboauto_rc_car_demos
: demo nodes and launch files for lane-following and obstacle avoidanceauto_rc_car_description
: URDF file and configurations for simulating car platform in Gazebo/rviz. Contains kinematic and dynamic modelauto_rc_car_worlds
: nodes, launch files, textures and images for creating Gazebo worlds for more realistic simulationshardware_testing
: scripts and launch files to test sensors on the vehiclesensor_wrappers
: lightweight wrappers that remap default sensor topics to ones used by the car API