Table of Contents

Homework 03 - Factorgraph localization

Assignment

Workspace Configuration

Enter Singularity shell:

singularity shell deploy/images/robolab_noetic.simg

or

deploy/scripts/start_singularity_aro

Configure workspace with the provided hw_03_pkgs. Add the folders to your workspace (overriding the aro_sim package). Then catkin build and source devel/setup.bash as usual. If catkin build results in an error, try catkin clean and then catkin build again. This may fix your problem.

Package Structure

Get familiar with the package. The structure of the package is as follows:

Package Usage

Don't forget to source your workspace:

source "${ws}/devel/setup.bash"

To test the aro_localization node in simulator:

roslaunch --sigint-timeout 1 --sigterm-timeout 1 aro_localization sim.launch fuse_icp_slam:=false
It also runs keyboard (and gamepad) controls, so you can manually move the robot using keyboard (keys WSADX) if the terminal is focused. Worlds to test: stage_1, stage_2, stage_3, stage_4, world, aro_maze_1, aro_maze_2.

On the real robot, run

roslaunch aro_localization aro_loc.launch

There are a few differences between the simulator and the real robot:

Node aro_localization

This is definition of the API of the aro_localization node you will be working on.

Private parameters

Only the important parameters are listed here. For the full view, refer to scripts/aro_localization source code.

Subscriptions

Publications

Published Transforms

Required Transforms

Your Homework

Find places in src/aro_localization/factor_graph.py with comment TODO: ARO homework 3 and fill in the missing pieces so that the fused localization works.

You will need to fill in the residuals for each factor in the graph, and compute the relevant Jacobian entries:

Evaluation

Upload the package aro_localization to Brute. Your factor_graph.py file will be used on a set of static datasets to find out it works correctly.