locked
Environment Vectors RRS feed

  • Question

  • I am currently working on part of a project that is concerned with robotic agents using absolute movement algorithms on the MSRS simulation engine.

    I am relaitvely new to this software so would appreicate a bit of advice.

    Basically, I am wondering whether or not it is possible to use the Vector 3D that MSRS uses for its simulation engine as a co-ordinate for another grid system that I have created?

    Basically, I suppose is it possible to instruct a robotic agent to move to a certain Vector within the environment.

    If it is a nudge to some tutorials or examples online would greatly be appreciated.

    Many Thanks,

    Kris
    Thursday, March 13, 2008 3:51 PM

Answers

  • None of the existing simulated robots have a "Go To Location" function. This is not common on robots for the simple reason that most robots have no idea there they are in the real world.

     

    If you are happy to work in simulation and realise that your work cannot (at least not easily) be transferred to a real robot, then you can cheat and get the location of the robot from the simulation entity.

     

    I wrote a modified version of the Simulated Differential Drive that puts returns the robot's pose information. In the robotics field this is sometimes referred to as an "oracle" that gives the robot its true position.

     

    What you will have to do is write some code in your own service that takes the robot's current pose (which is both the location and orientation) and compares it with the target destination. Then it can figure out how to drive the robot to get there. The simplest solution is to figure out the direction to the target point, turn to face that direction by using a RotateDegrees request, then drive the necessary distance using a DriveDistance request and finally (if necessary) issue another RotateDegrees request if you have to match a specified orientation as well.

     

    Note that you need to wait until the RotateDegrees and DriveDistance requests have completed before proceeding with the next step.

     

    Of course, if you encounter an obstacle along the way, then the path planning gets much more complicated. But I suspect that this is one of the issues that you will be examining anyway.

     

    Trevor

     

     

    Friday, March 14, 2008 1:02 AM

All replies

  • None of the existing simulated robots have a "Go To Location" function. This is not common on robots for the simple reason that most robots have no idea there they are in the real world.

     

    If you are happy to work in simulation and realise that your work cannot (at least not easily) be transferred to a real robot, then you can cheat and get the location of the robot from the simulation entity.

     

    I wrote a modified version of the Simulated Differential Drive that puts returns the robot's pose information. In the robotics field this is sometimes referred to as an "oracle" that gives the robot its true position.

     

    What you will have to do is write some code in your own service that takes the robot's current pose (which is both the location and orientation) and compares it with the target destination. Then it can figure out how to drive the robot to get there. The simplest solution is to figure out the direction to the target point, turn to face that direction by using a RotateDegrees request, then drive the necessary distance using a DriveDistance request and finally (if necessary) issue another RotateDegrees request if you have to match a specified orientation as well.

     

    Note that you need to wait until the RotateDegrees and DriveDistance requests have completed before proceeding with the next step.

     

    Of course, if you encounter an obstacle along the way, then the path planning gets much more complicated. But I suspect that this is one of the issues that you will be examining anyway.

     

    Trevor

     

     

    Friday, March 14, 2008 1:02 AM
  • Many Thanks Trevor,

    I don't think I will end up using the environment vector oracle as described as although I am only doing it as a simulation, I do want to show some sort of realism.

    I have other ideas that would allow the robot to work out its current locations its self based on an arbitrary point which i am in the process of researching.

    Do you have any suggestions to specifications or documentations that would aide the implementation of an oracle should I require it?

    Kris
    Sunday, March 16, 2008 3:59 PM
  • Hi Kris,

     

    I think it would be best if you could make it work without using an oracle. It's a lot harder, but then you have some chance that the algorithm can be transferred to a real robot.

     

    You can look at my ExplorerSim code which draws a map of what the robot sees using its Laser Range Finder. I don't have any documentation other than the comments in the code.

     

    When a robot already has a map, then what you are talking about is Localization. The process of figuring out how to get from where you are to a goal point is Path Planning. There are many different algorithms for these tasks using fundamentally different types of maps (topological versus metric) and quite different approaches to solving the problems. This is a whole field of research within robotics.

     

    Personally I have worked with Occupancy Grids for the maps and a Distance Transform to find paths. Unfortunately, my system is written in unmanaged C++ and I have not tried to convert it to use MSRS yet. However, you will find a lot of literature on the topics of Localization, Path Planning, Occupancy Grids and Distance Transforms. Of course, there are many, many other ways to tackle the problem.

     

    Trevor

     

    Monday, March 17, 2008 12:42 AM
  • Trevor,

    Thank you so much for your feedback, it has been very helpful indeed.

    I intend to research more into being able to create a grid based on the goal as an origin and using the agent to triangulate as it where where this goal is, from then it should be able to calculate where it is and then path plan to the goal with a knowledge of obstacle location.

    Although this is mainly a research project i have to assess the suitability of such methods and as you quite rightly say, using an oracle would not be suitable should it be transferred to the real world,  hence why I am looking into new methods.

    But thanks for your input, it has helped steer me in the right direction!

    Kris
    Monday, March 17, 2008 1:58 PM