He, Peng

A Roboticist.

The secret of getting ahead is getting started.


Why Is C-Space So Important To A Roboticist ?

Abstract: Configuration Space, short as C-Space, is a map for a roboticist finding some collision-free paths with a robot. A lot people don't get this idea truly understand and become confused in the next learning step. I'm going to contribute all my knowledge on this, trying to keep the article short and hit the key points.

Goal

Don't forget at any point, our goal is find a trajectory for a robot traveling from an initial posture to a goal posture.

  • Posture: the robot's position + orientation.

  • Trajectory: a sequence of trajectory elements.

  • Element: a posture + a time frame.

In all, we want find a time sequence of elements. Each element includes some parameters of the robot and if we somehow make the robot to execute this sequence, it will finally arrive at our goal !

How to make it happen?

If we through all these parameters in the world of computer(science), it is the C-Space. Once we have a init and a goal, it become an equation: Init (x) C-Space = Goal. All we need to do is sit down and drink a coffee, wait for the computer to find the answer. Fantastic !

Recall: A C-Space is not only the set of the robot's joints configurations but also the all possible postures where it could be in the workspace.


The Maze of a C-Space

Let's start from a Human level example. Suppose we have this simple 2D maze and we want to start with the green point, end at the red point.

A Simple 2D Maze

There are a lot algorithms can help us finding the path (remember a path is just a simple line of walking without hitting any obstacles). The easiest one would be line up these two points and check collision on the router, if hit, then follow the obstacle, either right or left and always going towards the red point if possible.

Finding a path

The orange line is our intuitive direction and the sky-blue line is our true path.

Recall that this is our final goal! Several parts engaged in this problem are:

  1. Will the robot always be a point?
  2. How to make the maze can be read by a computer?
  3. Is there a smarter algorithm that finds the path?
  4. When you say check collision, as a human I understand but a computer, how?
  5. My name is Peng and this is my notes.

For Q1, the general idea is reduce the robot size and enlarge the obstacle's. Like this:
Enlarge the obstacle size

In motion planning, the key concept of configuration is:

A complete specification of the position of every point in the system. 1

Now let's be sure you know some item about the "space". A workspace (sometimes known as reachable space) is all places that the end effector (gripper) can reach. 2
Workspace

When you "add" the workspace to the obstacles you are going to get the remaining part as free-space and the whole part as the C-space. In this example, the as robot's workspace become larger you can see its C-space get changed.

More examples

One more example on how to do this.

2D Shape with Rotation

Now life becomes harder. We finish talking about a 2D shape only have transforms and we are going to talk about a 2D shape with transforms and one single rotation.

Rotate

We layer the theta rotation up as the Z-axis in Cartesian space. You will see a strange object. This space is in SE(2), we will talk about this later in anther note.

Polygonal robot translating & rotating in 2-D workspace

Result

By having the knowledge above, we now have a wonderful map that tells us how to solve reach the goal of the labyrinth, cheers! Let's see this result of a successful 2D rigid body planning.
2D Rigid Planning

Job Done !
But wait... don't we miss some part of the problem?

Yes! If you are clever enough, we skip the part "how to check collisions" because this is something related to topology. Which is super hard. However, don't worry. I'll buy some coffee and scarify myself to eat about this in next note.


[1]: Some Pictures and Quotes are referenced from Howie's Lecture slides.

[2]: Robot Arm Tutorial - How to Build a Robot Tutorials

Recent Posts

Implementing A Star (A*) Path Planning Algorithm On A 3-DOF PR2 Robot In Python

Abstract: A Star Algorithm has been widely used in motion planning problems. This article will start…

In A*, Python, AStarRead More
Earlier Posts

Installing OpenRave 0.9 on Ubuntu 14.04

Abstract: Doing settings of installation is always a pain. My new class in motion planning requires…

In Config, Motion PlanningRead More
comments powered by Disqus