机器人如何实时确定他们的状态，并从带有噪声的传感器测量量获得周围环境的信息？在这个模块中，你将学习怎样让机器人把不确定性融入估计，并向动态和变化的世界进行学习。特殊专题包括用于定位和绘图的概率生成模型和贝叶斯滤波器。

Loading...

来自 University of Pennsylvania 的课程

机器人学：估计和学习

283 个评分

机器人如何实时确定他们的状态，并从带有噪声的传感器测量量获得周围环境的信息？在这个模块中，你将学习怎样让机器人把不确定性融入估计，并向动态和变化的世界进行学习。特殊专题包括用于定位和绘图的概率生成模型和贝叶斯滤波器。

从本节课中

Mapping

We will learn about robotic mapping. Specifically, our goal of this week is to understand a mapping algorithm called Occupancy Grid Mapping based on range measurements. Later in the week, we introduce 3D mapping as well.

- Daniel LeeProfessor of Electrical and Systems Engineering

School of Engineering and Applied Science

Previously, we used the 2D range sensor and

learned about occupancy grade mapping for 2D map.

The world is actually in three dimensions.

You might be curious about how to extend what we have learned to 3D cases.

This lecture, I will introduce what kind of 3D sensors there are.

And what kind of map representations are used for 3D.

Even though details go beyond the scope of our module

I hope to give you a peek into the 3D world of robots.

This video shows the THOR humanoid robot that Steve and I worked on.

It is performing missions at the DARPA Robotics Challenge finals.

As you can see, when robots interact with the real world,

2D maps can be very limiting.

We eventually want to sense the 3D world and

represent 3D spatial information in our map.

I'm now going to introduce some popular 3D sensors in robotics.

The first type is the LIDAR range sensor

that we have seen in the previous lectures.

If the sensors can see environments while rotating around an axis as illustrated,

then we can generate a 3D point cloud.

The next sensor stereo cameras work like human eyes.

Two cameras will observe the same scene while slightly apart from each other.

The slight separation makes depth information computable.

A depth camera is another 3D sensor used often in robotics.

A depth camera gives depth information as just another image.

Most depth cameras work in indoor environments.

They are more applicable to near distance tasks than LIDAR sensors.

Now, let us talk about map representations, as a review,

the occupancy grid mapping algorithm used a grid representation.

We discretized locations, and we had an equation to compute the coordinate on the grid,

from a given location.

This representation has pros and cons.

One good thing about grid representations, is that, when we

receive the new measurements, when we want to find a closest grid cell on the map.

We can directly compute the corresponding index of a point without searching.

But it comes with two big bad things.

First, this representation has a large memory requirement

to store both the occupied cells and free empty cells no

matter how many occupied cells are observed.

Second, numbers must be discretized by the nature of the grid so

we lose information of precise location.

The first disadvantage gets worse in the 3D domain.

Now a grid cell is a volume, thus there will be more grid cells, and

typically more empty grid cells.

Then what if we save the occupied points only?

This helps in terms of memory and the precision of locations.

However, if you keep a naive list of points,

when you receive a new measurement and you want to update your map you

have to check all the points to find the closest one.

This is really bad in 3D because your measurement usually consists of

thousands of points and your map would become very large very quickly.

Checking these points to match your new measurements in the existing

map will take a very long time without a strategy.

However, if you build a map with a certain structure,

then the search time can be reduced significantly.

To build a 3D map, from 3D point cloud we can use a special data

structure called a tree that is organized for efficient maintenance of data points.

I'm going to show you two examples of such a structure.

The first tree structure we are going to see is the kd-tree.

The way it organizes 3D data is as follows.

Select one of the three dimension axes, and

pick a point that has a median value in that particular dimension.

That point becomes a node, which is the root, in this case.

Centered at that point, the note expands branches where

one branch will be associated with points of smaller values than the median point.

The other branches stores the points of larger values than the median point.

Next, select a different axis, of the three dimensions, and pick the point for

each group, that has the median value in that particular dimension.

That point becomes a new node of the branch, coming from its parent node.

Center at that point the node expands branches below.

Again, one branch will be associated with points of smaller values

than the median point.

And the other branches stores the points of larger values.

This keeps going down until we have no points to add to the tree and

no branch can be made.

Another tree structure we are going to see is called the octree.

As the name implies, it has something to do with the number eight.

As compared to the kD tree which is a binary tree,

octree creates eight branches from a single node.

Then that node which represents a box in 3D is divided into smaller octants.

Thus Octree represents the whole world as recursive octants.

The nodes at the lowest level may contain the data points.

And parents nodes contained a pointer to their children nodes.

Note that this representation is different from a full grid.

Since our node stops expanding its branches when

the corresponding box is empty.

I have introduced 3D sensors and 3D map representations for your further studies.

Throughout this week, we made a huge assumption that

the pose of the robot is known, in order to focus on the mapping problem.

However, the problem of estimating a robot's pose,

which is called localization, is another big issue in robotics,

and is actually closely related to mapping.

Steve is going to guide you through this topic, localization, next week.