This repository aims to implement various Gausian filters - Kalman Filter(KF), Extended Kalman Filter(EKF), and Unscented Kalman Filter(UKF). It also deals with addition of noise measurements to camera and radar sensor measurements that aims to reduce Mean Squared Error (MSE) for the fused object after object tracking. The source code for the filtering techniques and noise generation scripts are built upon existing program by RWTH Institute for Automotive Engineering. This project is under the ACDC Research Project Course by the IKA, RWTH Aachen University.
This project aims to:
- Implement EKF and UKF source codes to the ROS nodes.
- apply different kinds of noise distributions to sensor measurement data.
A detailed documentation regarding this project can be found here.
-
Follow all steps described under Installation in this repository's Wiki to setup your coding environment.
-
Clone this repository with the contained submodules:
git clone --recurse-submodules https://github.com/mananvora/acdc.git
-
Pull the Docker image that is needed to run our tasks.:
docker pull rwthika/acdc:latest
-
In a terminal, navigate to the Docker directory of this repository and launch the ACDC Docker container with the provided run script:
# acdc/docker ./ros1_run.sh
Once you run this script, the docker container will start running. When this is done, proceed to the Quick start section.
-
Open a new terminal and run the ACDC Docker container again. After that, compile the C++ ROS code and source the
setup.bash
file with the following script:catkin build source devel/setup.bash
-
The simulations can be launched now. They can be executed with their respective launch commands:
Launch RVIZ playback node:
roslaunch acdc_launchpack bag_playback.launch
Launch and object_fusion_wrapper node:
roslaunch object_fusion_wrapper fusion.launch
Play bag files to visualize fused object:
rosbag play -l ../bag/Bagfiles_original/KF_bagfiles/acdc_fusion_guidance_noise_gaussian_noise.bag or rosbag play -l /home/rosuser/ws/bag/Bagfiles_original/KF_bagfiles/acdc_fusion_guidance_noise_gaussian_noise.bag
Record bag files: Launch and object_fusion_wrapper node:
roslaunch object_fusion_wrapper record_and_play_fused_object.launch
To find which bag file to be played please look into README_bagfiles_structure.md.
- Recording of the bag files is further explained in README.md
Note: The source code files StateFuser.cpp and StatePredictor.cpp must be changed for different filters. Further, the parameteres for fusion also have to be changed. This has explained here
Copyright (c) 2022, Institute for Automotive Engineering (ika), RWTH University