Here, we will use ROS
and Python3
to execute the robot localization task.
The system dependency preparation depends on your local system. Basically, you need to install Ubuntu to complete this homework. We recommend Ubuntu 20.04
.
- Linux (Ubuntu)
- There is no preparation needed. Continue to install ROS :)
- Windows
- You can set up a dual-boot system with Ubuntu.
- You can use
Windows Subsystem for Linux
to install Ubuntu. You can check instructions on the official website or the recitation. - You can use virtual machine to install Ubuntu. The VirtualBox is free.
- Mac
- You can use
Bootcamp
to install set dual-boot system with Ubuntu. - You can use virtual machine to install Ubuntu. The VirtualBox is free. The Parallels Desktop is also good.
- Note: If you're unable to visualize the robot in rviz, try disabling 3D acceleration in your virtual machine setting.
- You can use
You also need to install ROS (Robot Operating System) after installing Ubuntu. ROS Noetic
is matched with the recommended Ubuntu 20.04
. You can find the detailed installation instructions on ROS Wiki.
These packages are required. You can install them by typing pip install $package name$
.
We provide a dummy filter which you can run to test if you have set up your environment correctly.
- Open a terminal, run
roscore
. - Check
config/settings.yaml
, ensure thefilter_name
is set totest
. - Open a new terminal, run
rviz
. - We open a visualization config file. In your rviz, click
file
->open config
, chooserviz/default.rviz
in the homework folder. - Open a new terminal, run
python3 run.py
. - You should be able to see your a robot moving in
rviz
.
You should expect to see the visualization shown below. In this figure, green path
represents command path without action noise, which is the path we want our robot to follow. blue path
represents the exact path that the robot moves due to action noise. The red ellipse
and the red arrow
represent the filter prediction pose for the robot.
Parameters can be modified in config/settings.yaml
.
You will only need to modify filter_name
and Lie2Cart
.
filter_name
: The filter you would like to run. Options include:EKF
,UKF
,PF
,InEKF
, andtest
.Lie2Cart
: Set toTrue
if you finish implementing the extra points question 2.E.
- All the filters are as follows:
filter/EKF.py
filter/UKF.py
filter/PF.py
filter/InEKF.py
- In
utils/util.py
, we havefunc()
lieToCartesian()
mahalanobis()