The objective of this assignment is to make you familiar with Grid Localization which is a variant of discrete Bayes Localization. In addition you will learn how to create your own messages in ROS and how to use them. Also you will get your hands on working with rosbag files.
NOTE: This lab will be worth 15% of your total grade in the class. The other labs were worth 10%.
Grid Localization
Grid Localization is a variant of discrete Bayes Localization. In this method, the map is an occupancy grid. At each time step, the algorithm finds out the probabilities of the robot presence at every grid cell. The grid cells with maximum probabilities at each step, characterize the robots trajectory. Grid Localization runs in two iterative steps Movement and Observation.
After each movement, you should compute if that movement can move the robot between grid cells. For each observation, you should find the most probable cells where that measurement could have occurred.
ROSbag files
Rosbag is used for dumping the messages published on certain topics to files. For this assignment, we have provided a bag file for you which includes the movements and observation information from one scenario. You need to read the bag file to simulate your localization algorithm running on a robot executing this scenario. For this purpose, read through the Rosbag tutorials. After that go through the following steps.
- Create a ROS package named lab4 and create two messages in the package Motion.msg int32 timeTag geometrymsgs/Quaterninon rotation1 float64 translation geometrymsgs/Quaternion rotation2
and Observation.msg int32 timeTag int32 tagNum float64 range
geometry msgs/Quaternion bearing
- Use rosbag info command to find the required information for the given bag file. This tutorial may be helpful
- Using the tutorials and acquired information, write code to read the bag file
Motion Model, Observation Model and Map
For localization, you need a map. There are six landmarks in the robot map, and they are at the following locations:
- Tag 0: x=1.25m, y=5.25m
- Tag 1: x=1.25m, y=3.25m
- Tag 2: x=1.25m, y=1.25m
- Tag 3: x=4.25m, y=1.25m
- Tag 4: x=4.25m, y=3.25m
- Tag 5: x=4.25m, y=5.25m
The robot moves in the area within these landmarks, observing some at any given time. You should make a grid for 7m*7m coverage. Your cell size should be 20cm*20cm. You also should assume a dimension for the robots heading. So your grid is 3 dimensional. The third dimension covers the robots heading. You can discretize that with your desired value (10 degree, 20 degree or more). The initial pose of your robot within the grid is (12, 28) and the first heading is 200.52 degree. The robots first pose in the 3rd dimension depends on your selected discretization size. For example, if your discretization size is 90 degrees, the cell number in 3rd dimension will be 200.52/90+1 = 3. So the robots initial pose is (12 , 28, 3). (Notice that I have assumed there is no cell with index zero).
As you may have noticed, the motion model of this robot is (rotation, translation, rotation) and the observation model is (range, bearing). In Grid Localization, for the purpose of moving robot between cells, the motion and observation noise should be adjusted. You need a translation and rotation noise for movement and range and bearing noise for your observation. A good selection for this purpose is half the cell size. So for the example of 20*20 cells and 90 degree discretization, range and translation noises are 10cm, and bearing and rotation noises are 45 degrees.
Reviews
There are no reviews yet.