11
$\begingroup$

I would like to build a robot which follows a virtual path (Not a visible path like a 'black line on a white surface', etc).

I'm just enthusiastic by seeing some sci-fi videos which show robots carry goods and materials in a crowded place. And they really don't follow a physical line. They sense obstacles, depth, etc.

I would like to build one such robot which follows a specific (virtual) path from point A to B.

I have tried a couple of things:

  1. Using a magnetic "Hall effect" sensor on the robot and wire carrying current (beneath the table). The problem here was that the vicinity of the hall effect sensor is so small (< 2cms) that it is very difficult to judge whether robot is on the line or off the line. Even using series of magnets couldn't solve this issue, as my table is 1 inch thick. So this idea flopped :P

  2. Using an ultraviolet paint (on a line) and using UV leds on the robot as sensors. This will give more Zig-Zag motion for the robot. And due to potential threats of using UV light source, even this idea flopped :P

I finally thought of having a camera on top and using image processing algorithms to see whether robot is on the line or diverging.

Is there any better solution than this? Really looking for some creative and simple solutions. :)

$\endgroup$
7
  • $\begingroup$ Are you familiar with sonar sensors and SLAM and related subjects? Often robots don't follow a predefined path and they "sense" the obstacles by sensors such as sonar, build a map and then use path planning algorithms to find their way. $\endgroup$
    – Shahbaz
    Mar 7, 2013 at 16:12
  • $\begingroup$ Thanks for the reply :) Yes, i am familiar with ultrasonic and sonar sensors... actually i want a robot my robot to move from point A to point B on a specific path, and that too on a table (3 feet above the ground level)... And building a map in this environment is really a complicated thing... So any suggestions ?? $\endgroup$
    – Nitin
    Mar 7, 2013 at 16:43
  • 4
    $\begingroup$ I was in the middle of answering this question, but I noticed that you are asking 2 contradictory things. By "invisible line", do you mean "a line that is not visible to the naked eye e.g. a line defined by magnetic or UV signals", or do you mean "a line that exists virtually -- within the robot -- based on where it wants to go and the obstacles it senses on the way there"? To say it another way, do you draw the line for the robot to follow, or does the robot draw it? $\endgroup$
    – Ian
    Mar 7, 2013 at 17:03
  • $\begingroup$ Hi lan, I want a autonomous robot which should navigate on its own from one point to another. To do that it needs a reference line or path. A line follower robot is the simplest solution but i am looking for advanced and robust solution. And that could be anything like a line that is not visible to the naked eye or a virtual line created by the robot. The robot doesn't draw the line, it just follows. to say it another way, the line (virtual) is defined by me. At the least "Image processing" could be a solution if anything else doesn't work. But i am looking for some simple solutions :) $\endgroup$
    – Nitin
    Mar 8, 2013 at 3:59
  • $\begingroup$ @nitin, perhaps you should avoid using terms such as "navigate on its own", because that automatically means that path is undefined and is left to the robot to find it. What you want seems to be a robot that follows the line and lacks the ability to finds its own way if not given directions. $\endgroup$
    – Shahbaz
    Mar 8, 2013 at 10:05

5 Answers 5

3
$\begingroup$

There are many possible ways to approach this problem, and they all depend on the material available and the expertise of the robot builder.

In short, the criteria is that:

  1. The robot must get from point A to B following a pre-defined path.
  2. The path taken must not follow a line visible to the human eye.

Depending on the length of the path, using encoders could be sufficient. However, it should be noted that due to physical inaccuracy, drift makes odometry (what we call using encoders to measure distance) impractical for long distances. However, this is easy for short distances, and should be at least considered.

If the distance is too far for only odometry, one should consider using some sensor to measure turns (for instance, a gyroscope or compass). Turns tend to introduce the most error in odometry (measuring along a straight line doesn't have too much error), so using a sensor for turns can sometimes make odometry a viable solution.

If odometry or odometry + sensed turning doesn't work, then we get to be creative. If you want the robot to follow a path composed of mostly straight segments, you could place IR LEDs at given "waypoints" on the table, and have the robot sense those LEDs and drive towards each waypoint in series.

However, that still leaves some visual marking on the table (although it could be disguised to some extent), and it would be great to be able to do without that. Another approach would be to use laser pointers shining parallel to the surface of the table, but a few inches above the table. The robot could use a photoresistor to detect when it crosses a laser, and this could let it know when to turn.

All-in-all, I think that the odometry augmented with an angle sensor is probably the best bet for your robot, at least with the way you have described it. I may be able to think of more options, but that's all I see right now.

Just curious--why do you want the line to be invisible? Knowing why could open up some more possibilities.

$\endgroup$
3
  • $\begingroup$ Thanks a lot @anorton :) :) "Odometry" + "sensors like gyroscope or compass" :- Bulls-eye ;) I am sure, this will definitely workout. And compared to image processing techniques, this seems pretty easy. Yup, i have got the solution, Thanks :) Will update you with the progess of the project and other challenges faced. $\endgroup$
    – Nitin
    Mar 9, 2013 at 10:04
  • $\begingroup$ By the way, the whole point of making line invisible was - "A black line on the surface and a robot following the line" its now just a basic robotics teaching level stuff. And i found that in industrial level, it is not appreciated. People need a highly sophisticated and intelligent robot to do their work. So i was working on this project to build a robot with higher stability and robustness. A robot which is not easily hack-able. To say it another way, a common person should not know the technology behind the robot :) $\endgroup$
    – Nitin
    Mar 9, 2013 at 10:05
  • $\begingroup$ A robot navigating from 'point a to point b' is often called a 'go to goal' behavior. For short distances, odometry using wheel encoders can work, but over time there will be 'drift' caused by an accumulation of errors. If you want to experiment, this project uses a very inexpensive robot chassis paired with an Esp32Cam microcontroller. It uses wheel encoders and implements the go to goal behavior. It has a camera; it would be possible to estimate the robot's position using known visual landmarks, so odometry drift can be mitigated. $\endgroup$
    – Ezward
    Jan 18, 2021 at 7:24
2
$\begingroup$

Anki uses optical sensors in their toy cars to implement line followers. The optical sensors are sensitive in the IR range. The fact that the lines cannot be seen is easily explained: The lines are coated with black color which is transparent in the IR range. Paliogen black L 86 or Paliogen black S 84 by BASF are such colors. If you place barcodes along the lines you can even get absolute positioning informations from the optical sensors.

$\endgroup$
0
$\begingroup$

I have a short answer for your question. This is for a ROS enabled robot only. There are many ways to do this, but this is how I have done it. I used ROS and Kuka Youbot. It could be any robot using ROS. It is very helpful to know ROS if you plan to be in robotics.

Use ROS Then use GMapping to map your environment. Example room or hallway and save the map. Then using RVIZ, give the goal position in the map.

$\endgroup$
0
$\begingroup$

Well you don't need any line for that matter. The one thing you would probably need are global coordinates. if you can place your robot in a field defined by global coordinates and apply simple rules of Newtonian physics, the robot can go from one point to the other. Based on it's present location, it will find out the present steering angle, desired steering angle and the goal coordinates (also known as "pose"). Once you provide the robot with a speed, it will start moving towards the goal coordinates. In every iteration, it will recalculate its pose and make adjustments when necessary.

$\endgroup$
0
$\begingroup$

I've made a small robot that follows a virtual path drawn on a smartphone under an NSF funded research grant.

The way you would make a robot follow a virtual path is to use the Pure Pursuit path following algorithm along with dead reckoning.

I developed the following C++ Arduino libraries for virtual robot path following:

  • Dead reckoning library - Dead reckoning for differential drive robots using encoders. The key limitation with this library is that only encoders are used to determine position.
  • PreMo (Precise mover library) - Contains the implementation for pure pursuit for path following. Designed for easy implementation for students and hobbyists.

These libraries can be modified to work on other platforms than the Arduino.

About pure pursuit algorithm

Dead reckoning library

Precise movement library

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.