# Tag Info

7

No, but you do need to calculate the P/I/D terms correctly. You have: I = I + previous_I; followed by: previous_I = I; With I = 0; previous_I = 0; declared at the start. So your I term will always be zero here. What it should be is: error = reference - feedback; P_error = error; I_error = I + (error*timeStep); D_error = (error - previous_error)/...

5

Actually, the caster wheel has ideally no effect on the kinematics of the vehicle. In reality there will be some resistance from the caster wheel that does impact the vehicle motion, but we can still ignore it for the sake of designing a control law. Based on the extended discussion in the comments, your sensor can be used to measure the lateral error of ...

5

This may be overkill, but some of the past work I was involved in was trying to detect a vertical line (a pipe) in the camera's field of vision, and navigate relative to it. The process was as follows: Pick a threshold value, and split the image into black and white Perform Canny edge detection on the image Use a Hough transform to find the strongest lines ...

4

I recommend arranging your sensors like the following: Thickness of Line <--------> /\ | | / \ | * * | || | | || moving * | | * || direction | | || | * * | ...

3

It can't pass the 20 block if the robot enters it from a 15 or 20 block (so basically it gets stuck if it's coming from an angle and hits a 90 degree turn). Somehow coming from an angled line makes it more likely that your robot moves orthogonal to the 90°-ish turn, so that it gets stuck in the back-and-forth loop. Maybe if it moved very slowly backwards it ...

3

The paper “Optimizing Train Speed Profiles to Improve Regeneration Efficiency of Transit Operations” (in JRC2014-3795.pdf) by Haichuan Tang et al addresses some of the issues mentioned in the question and sets out a dynamic programming method for solving related problems. The paper's goals are different than yours, but its method and some of its references ...

3

Assuming constant accelerations, "stopping" (slowing) distance can be calculated with: $$x = x_0 + v_0 t + \frac{1}{2} a t^2 \\$$ where $x_0$ is your initial position, $v_0$ is your initial speed, $a$ is your acceleration, and $t$ is time. Assuming you are trying to get from one constant speed to another constant speed, you can calculate the time ...

3

I know this is not exactly what you wanted, but you should look into the Pure Pursuit algorithm for line following.

3

Read and understand this. Refer to other sections of that site, if needed.

2

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 ...

2

With computer-based vision, the solution often depends greatly on the environment in which the camera is operating. You may have situations where bright light and shadows result in a very difficult sensing scenario. Or you may have aspects of your targets which affect the light characteristics (diffusing, polarizing, etc.). So the solution may not be easy ...

2

I did a project based on RPi2 + Pi-Camera + ROS jade + OpenCV to make a line following rover. Two methods are used, one is to find contour of the track, the other is to use Hough-transform for edge detection. Under well-controlled environment (even light sources, less noises, etc.) the performance is good, and I use RANSAC to find preferred edges under noisy ...

2

The image you post is one way that should work. In the image, $\tau$ is the joint torques, and $x_d(t)$, $\dot{x}_d(t)$, and $\ddot{x}_d(t)$ are the Cartesian shape trajectory. You mention "whole control system (with the PID controller)". Perhaps you were talking about a motor or joint torque controller? The control loop image you post assumes that joint ...

2

I would highly recommend using the encoders over estimating travel distance by rpm + time. Estimating motor velocity is notoriously tricky. Especially at slow speeds. A direct measurement is always better.

2

I m not familiar with those robots, but I will guess it's more used for odometry, in order to know the speed and the traveled distance. The design are packed so it is hard to see for sure, but it seems to me that there are only 2 wires per motor, so not enough for position/velocity feedback. So the best to get instantaneous speed would be a free wheel for ...

2

The first robot is RS-100 and it won this year's all-Japan fine following competition. The fifth wheel is an encoder. The robots are allowed to remember the track - this is specific to this competition as the turns are marked by white markers outside of the line. Look at the winning run of the robot and you will see that it speeds up and down in fast runs (i....

2

Your question is a little bit fuzzy. You achieve different results with these two turning scenarios. If you keep one wheel stopped the the radius of the curve (turn) you make equals the robot width and your turning point is the stopped wheel, while when you move both the wheels with opposite but same velocity (rpm) then you achieve a maneuver with 0 radius, ...

2

The robot you're trying to model is known as a Two Wheeled Differential Robot. It's easy to find specific kinematic models for it. You can start here or here.

2

I beleive you’re looking for Power Density How you utilize said power of course is up to your design. You generally want the most wattage in the smallest package, and you should get something as to what you’re looking for..but for such a small robot, the speed boost may not be as helpful as being able to accurately and quickly accelerate around/past corners. ...

1

My understanding of the pure pursuit algorithm is that the look ahead distance is a fixed parameter. In this original paper [1], there is a short discussion on choosing the look ahead distance. I believe you should tune this to the typical speeds of your robot and the types of paths you will be following (i.e. very curvy or straight). [1] Implementation ...

1

A good way to work once you have your map : turn your map in a weighted graph, were where the vertices are only at crosses and the weight is the length beetween the points represented by the vertices. Then running an A* or a djikstra will be simple.

1

Sorry I have no experience of line following robots, I use ultrasonic sensors, so this answer may be a bit naïve and there allsorts of reasons why you can't do this. Your bot travels forwards and realises it has lost the line. Assuming that the distance travelled is not "very far", less than 1/2 the length of the bot, you should be able to do a complete ...

1

A good starting point is to solve the problem first in simulation. If the algorithm not work on a 2D map on screen it will never work on a real arduino. For inspiration github is a good ressource. There are many implementions available [1] [2]. After analyzing the sourcecode of somebody else it is time for writing the code from bottom up. In most programming ...

1

For this task, using only PID would be adequate. However, It also depends on the response of your motors to control signals. You can also use fuzzy logic to tune the PID parameters, which are actually time consuming.

1

It's a question of balance as always. You need to select motors that require voltage and current that your robot's power source can provide, physical size so that it fits on your robot and also torque and RPM to give your robot enough oomph. Also note that gearbox and wheel size affect the final top speed an acceleration. What I did was to go through ...

1

I have a similar idea like @Bending Unit 22, which is not to follow the line but its edge instead. So you detect the line only with one sensor (let's say only with the left one (blue dot)). If the you both sensor indicates line then your robot should turn right until the right sensor (green dot) indicates white surface. This is the event circled with green ...

1

I don't think you'll be able to use PID control successfully because you don't have a continuous feedback signal. Your feedback is binary on each of three sensors. From your description, you need to monitor or eliminate the gap between the sensors. Monitor meaning add more sensors in the gap, and eliminate meaning move the existing sensors close enough ...

1

It looks like there are 3 main components to the demonstration in this video. 1. Creating the map Navigation requires a map of the robot's environment -- it looks like this was done manually. It doesn't matter whether you create the digital map based on the real-world map, or a real-world map based on a contrived digital map. But the maps must match. ...

1

See this similar question and my answer to it. The question I linked asks for how to handle an unknown starting position, but it seems similar in that you and the other OP are both asking "how do I go from Dijkstra's algorithm to implementation?" Essentially, Dijkstra's algorithm only requires to you give a digraph with a set of distances or "costs" ...

1

There are a lot of possible ways to solve your problem. First, let's get you off the wrong track: this isn't a simple, line following problem. For it to be a line following robot, you need to lay track lines under your lawn for every place that you want to mow. Imagine a grid like a potato masher instead of the one your drew. The problem seems to be: ...

Only top voted, non community-wiki answers of a minimum length are eligible