GuideRobot
From jderobot
![]() |
| |
|
|
|
|
Our approach specifically addresses issues such as safe navigation in unmodified and dynamic environments, like Departamental II of this university. We've solved the following problems:
- Navigation in dynamic environments. Public places are often packed with people. People behave not necessarily cooperatively. Our approach provides means for safe and effective navigation through crowds.
- Navigation in unmodified environments. No modification of the environment is necessary for the robot's operation.
- Localization. In every operation, our robot continuously tracks its position using its maps. Position estimates are necessary for the robot to know where to move when navigating to a specific goal, and to ensure the robot does not accidentally leave its operational area.
Contents |
People
- Julio Vega Pérez - Homepage (julio [dot] vega [at] urjc [dot] es)
- José María Cañas (jmplaza [at] gsyc [dot] es)
- Darío Rodríguez de Diego(drd [dot] sqki [at] gmail [dot] com)
- Víctor Hidalgo
Development
- Jde Version: jde-4.2.1
- SVN Repository: source code
- Trac. It is the trac already used for JDE development, but all the relevant tickets to this project belongs to the "guiderobot" milestone
- Source License: GPLv3
- Document License: Creative Commons Attribution-Share Alike 3.0 Unported License
- Tags: robot, guide, navigation, vision, recognition
- Technology: c, c++, jde suite, openGL
Documentation
- Julio's Master Thesis: Guide Robot Project PDF (latex code)
- Julio's Technical Report on VisualSonar: Floor 3D Recognition PDF (latex code)
- Guide Robot Resource Manuals
- PFC jmvega
Hardware
We actually have two robots (by ActivMedia). One of them has attached a pan-tilt unit (by Directed Perception) to control the camera/s orientation. And the other one has two directionable cameras. Furthermore, both include a Hokuyo scanning laser as main sensor.
|
|
| |
|
|
|
|
Greatest hits
| Pioneer wanders to avoid obstacles | FollowPerson behavior | Gradient Path Planning |
| | | |
| Gradient Path Planning (hybrid) | Laser localization | Visual localization |
| | | |
| Path planner using visibility graphs | Vision wander | Identification of environment |
| | | |
Timeline
- 2009.07.17
We have improved the local navigation algorithm. See more details
- 2009.06.16
Floor 3D recognition using monocular vision from robot camera. See more details
- 2009.05.20
Pioneer's running between two lines (like a road) using only visual information. See more details
- 2009.04.28
First implementation of VFF algorithm based on the visual information. See more details
- 2009.04.19
Mari Angeles project has been included as a precursor of this project. See Mari Angeles project website
- 2009.04.05
Ricardo Palacios project has been included as a precursor of this project. See Ricardo Palacios project website
- 2009.03.25
GlobalNavigation schema with Gazebo simulator. See more details
- 2009.03.24
Frontera schema using OpenCV. See more details
- 2009.03.20
Frontera schema includes the virtual Pioneer. And it has been tested under "Cartabon test". See more details
- 2009.03.12
Pedro Díaz project has been included as a precursor of this project. See Pedro Díaz project website
Ricardo Ortiz project has been included as a precursor of this project. See Ricardo Ortiz project website
- 2009.03.10
Developed a new 'frontera' schema interface in order to see the virtual scene completely. See more details
- 2009.03.04
Alejandro Lopez project has been included as a precursor of this project. See Alejandro Lopez project website
- 2009.02.25
Redouane Kachach's project has been included as a precursor of this project. See Redouane Kachach's project website
Also Alberto Lopez project has been included as a precursor of this project. See Alberto Lopez project website
- 2009.02.24
First images based on frontera schema using GTK. See more details
- 2009.02.10
Raúl Isado's grad project videos included here, as precursor of this project. See Isado's project website
- 2009.01.13
GUI tested over gazebo simulator. See more details
- 2009.01.12
Wander and Wiimote presentation at "Aulario III" hall. We've showed Master Robotics subject students Wiioperator schema and Wander behaviour over Pioneer.
- 2009.01.08
Creation of this point. At the present time, we've reached the wander behaviour over real robot. See more details
- 2008.12.16
GUI developed for the project that allows interactions between human and the robot.See more details
- 2008.12.03
Wander schema tested over real robot at "Departamental II" hall. See more details
Wiioperator schema developed by Eduardo Perdices for remote control of robot with a Wiimote controller. See more details
- 2008.11.25
First version of wander schema. See more details
- 2008.10.30
Implementation of hybrid navigation and fuzzy logic added in order to get smooth movements over real robot by Darío Rodríguez. See more details
- 2008.10.23
First implementations of the deliberative algorithm by Darío Rodríguez. See more details
Creation of this wiki page for the GuideRobot project.
- 2008.09.30
First implementations of the VFF algorithm developed by Darío Rodríguez. See more details
- 2008.09.01
Julio Vega presents his final grad project, the predecessor of GuideRobot project. See more details
- 2008.06.30
First implementation of Visual Sonar application by Julio Vega. See more details
GuideRobot interface
For the interaction between person and robot we have developed a new schema, this new schema is an interface that allowed to persons select the target from a lot only with clicking in a picture. Internally the schema has a target for each picture. When a picture is clicked the GUI schema gives the target to the navigation schema, the navigation schema can be localNavigation, globalNavigation or other.
The association between target and picture is defined in a configuration file with this structure:
Dario Rodriguez myphoto.jpg 4000. -5000. Dario Rodriguez myphoto.jpg 5000. 6000. Dario Rodriguez myphoto.jpg -2000. 3000. Dario Rodriguez myphoto.jpg -7000. 6000. Dario Rodriguez myphoto.jpg -1000. -7000. Dario Rodriguez myphoto.jpg -7000. -7000.
In this file you can set the information like name, surename, path of picture and target. The GUI schema with this configuration file looks like this running over player simulator.
![]() |
| |
|
|
|
|
Down here there is a video of the schema running with the simulator called gazebo.
In the video the robot uses GUI with VFF+Security window algorithm to navigate. The configuration file for the video is this:
Meeting Room images/meetings.jpg -3102. 2625. Office 1 /images/office1.jpg 3761. -1327. Office 2 /images/office2.jpg 6328. -3455. Bathroom WC /images/bathroom.jpg -7222. 1839.
Local Navigation
We're trying three algorithms to solve the problem of local navigation:
- VFF:
This model is to create a Virtual Force Field with forces that represent: the objets, the destiny and a force that is the resultant of both multiplied with two modulation's parameters.
In our implementation we defined the atraction force (this force represent the destiny) with constant module, and the repulsive force (wich represent the object) with a variable module grow when the robot approaching an object. We get the resultant force solving this equation:
Fresult = a*Fatrac+b*Frepuls
In the equation, a and b are the modulation's parameters and we give their values ad-hoc to make a realistic force field. The image is an example of a virtual force field:
We also have implement a security window to make this algorithm more secure consist in calculate if there is a free zone in front of the robot and if exists we can move the robot with maximum speed. To improve the movements, we use fuzzy logic to do it more fluid. This two improvements give us betters movements.
This video shows this algorithm in progress:
- Deliberative:
In this type of navigation the robot walk over a line. This line is defined by two points of the way and the robot must be in this line by all the way, if the robot is out of the line it will returns to the line before move.
The next video is the deliberative algorithm running:
- Hybrid:
In the hybrid method we use the implementation of VFF and with destiny a point of the deliberative's way. With this we defined a virtual force field arround all the way and the robot moves by the way avoiding the objects.
In the hybrid navigation as in VFF, we also use fuzzy logic to get fluids movements in the robot.
In the video you can see a simulated pioneer robot running in a racing circuit called Cheste with the hybrid navigation algorithm:
- VFF algorithm in a real robot
- Improving VFF algorithm
In our VFF implementation we use a security window which allows the robot go through narrow places and other danger situations. This security window also erases the zig-zag behavior that appears in VFF algorithm because when the robot detect a wall with this window the robot goes parallel to the wall. But sometimes when the robot is following the wall it exceeds the target and continues, as you can see in the next video about 1:25 and 2:10 minutes.
To improve this behavior we have added one condition to the algorithm and now when the robot is close to the target, the robot forgets the wall and using VFF goes to the target. You can see the different in the next video about 2:15 minutes.
Visual Sonar
- Floor 3D recognition using monocular vision from robot camera
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
- Pioneer's running between two lines, like a road
Using only visual information, the Pioneer robot can detect border lines over floor and it goes through them. Its behaviour is based on vff algorithm and we've added some ideas from Akihisa Ohya paper called "Vision-Based Navigation of Mobile robot with Obstacle Avoidance by Single Camera Vision and Ultrasonic Sensing"; the actual image is divided into three vertical segments (left, center and right) and then we calculate the total number of pixels in each of the three parts, determining the direction of safe passage. That way the robot movement is softer than using only vff algorithm.
- VFF over visual information
Here we're the first implementation of VFF algorithm based on the visual information. We can navigate perfectly using only the camera as sensor. On this video, the goal is always 2 meter in front of the robot; so it pretends to go straight ahead but obstacles block it...
- Border points detected with OpenCV
In order to increase the visual information, we've decided to find image contours, using OpenCV too.
![]() |
| |
|
|
|
|
- Border points detected with OpenCV
As we told before, now we can detect first border points using OpenCV (without any visual noise).
![]() |
| |
|
|
|
|
- Frontera schema using OpenCV
Because of several problems with our proper filter, we've decided to use OpenCV library with Canny Filter. Now the algorithm works fine with lighting changes.
![]() |
| |
|
|
|
|
- Frontera schema testing
We've been testing several real examples called "Cartabon test". And now we can conclude when objects are too far, our application give us wrong estimated distances.
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
- Frontera schema includes the virtual Pioneer
![]() |
| |
|
|
|
|
![]() |
| |
|
|
|
|
- Frontera schema under GTK
We've developed a new 'frontera' schema interface in order to see the robotics lab scene completely. Now, we've different cameras: 4 lab corner cameras, 1 onto the lab ceiling, and the user camera.
![]() |
| |
|
|
|
|
- Frontera schema under GTK
Here we can see the new frontera shema, using GTK. That way we've solved LibXCB problem because GTK has a best multithread control.
![]() |
| |
|
|
|
|
- Frontier hypothesis for floor 3D recognition
![]() |
| |
|
|
|
|
- Color filtering for frontier hypothesis, from lab ceiling cameras
- Floor 3D recognition using monocular vision from robot camera
Wandering
With this behavior we want to see the robot moving towards random targets, avoiding all objects that can be in the environment. The wander schema only gives random targets to the local navigation schema through a shared variable called "target". Those targets are calculated with a random C function and are between (0,0) that means the robot position and a max perimeter called "radio".
Also this schema has got a counter. If the target hasn't been reached in "maxtime" seconds, the schema calculates a new target. That way, with this schema the robot is always moving.
Next you have two examples of the wander schema running in gazebo simulator and running in a real robot.
The local navigation behavior is quite simple to understand. We use VFF algorithm, already explained. But we've incorporated a new concept called "security window" (you can see it on the next figure). With this device, we can solve some natural situations qualified as "narrow places" (e.g. doors, corridors, ...).
![]() |
| |
|
|
|
|
Now, I'm going to explain how it works. Under the followings conditions:
a) There are something over left side, or right side, or both. b) There are not anything over front of robot position.
...robot can run straight ahead quickly, but null angular velocity! This functionality is perfectly showed on the previous video, when cleaner-woman goes near to the robot, and it only can run with linear speed. Or when robot goes into WC, and it goes out there.
FollowPerson
This behavior is another application for local navigation, the robot try to follow a person based in his shirt color.
In this first video the robot can follow the person well because there isn't any obstacles to avoid.
In this second video the robot avoids another person, using localNavigation behavior
Global Navigation
- Instantaneous GPP calculation
Here, after several days, we've solved the application launch memory problem. Now we get world information by other way... Furthermore, we've uncoupled the gradient calculation and the schema iteration cycle, so now we can calculate it so quickly.
- GlobalNavigation schema draws planned route
Now, when we have just finished to calculate the optimized route between origin and destination, first we draw it on yellow color and then the robot follows it drawing its path on pink color.
![]() |
| |
|
|
|
|
- GlobalNavigation schema with Gazebo simulator
We've been trying to simulate our world with Gazebo. Solved some problems, e.g. initial_position parameter, the simulator works fine and our schema runs as before.
![]() |
| |
|
|
|
|
- First stable GlobalNavigation schema
Localization
Visual Localization
- Visual map of the lab ceiling for localization method
![]() |
| |
|
|
|
|
- Localization using MonteCarlo Method






















