18

As far as I know, this problem hasn't been "solved." Formally, this is an online coverage problem. Coverage, because we must cover each point on the floor, and online because we do not have offline access to the map. If you are interested in the most recent results, I suggest you lookup "robotic online coverage algorithms," perhaps in google scholar (there ...


11

Boustrophedon cell decomposition is simply sub-dividing an environment into areas which can be efficiently covered by a boustrophedon path. A trapezoidal decomposition will do, and can be accomplished using a line-sweep algorithm. See [Choset 2000], This web site , or (I recommend!) the excellent book "Computational Geometry" by Mark de Berg, et. al, for a ...


9

Roomba starts in a spiral until it hits something, then does a perimeter sweep. Then it just bounces around. Roomba being the de facto standard in household robotic vaccum cleaners, I guess you could call it the "accepted solution". But from personal experience (I own two), there is definitely room for improvement. From How Stuff Works: From an interview ...


7

They are exactly the same. Information matricies (aka precision matricies) are the inverse of covariance matricies. Follow this. The covariance update $$P_{+} = (I-KH)P$$ can be expanded by the definition of $K$ to be $$ P_{+} = P - KHP $$ $$ P_{+} = P - PH^T (HPH^T+R)^{-1} HP $$ Now apply the matrix inversion lemma, and we have: $$ P_{+} = P - PH^T (HPH^...


7

Actually we don't. This is the source of myriad visual illusions. Through a life time of experience we learn context which tells us when one thing can be on another vs. in it. But even then a sculpture can be built to trick us. For example it can look like a plate, cup, and spoon organized in a certain way but in fact be non of the above. A good example of ...


7

Neato uses an organized approach. Using SLAM and bumpers, it maps the 'current' room, perimeter first, then applies some algorithm for cleaning as efficiently as possible. I've never owned a Roomba, but given what I have read about it's algorithm, I would never switch from a neato. The Laser Range Finder in the neato is often cannabilized for robotics, as ...


6

The first thing you need to establish is the goal of the robot -- not quite clear from your question. There are two main tasks that your robot has to accomplish: discovering the shape of the clean-able area, and then cleaning it. But is the amount of dirt constant? Is dirt added constantly? Is it your goal to minimize the average time that dirt remains ...


5

Perhaps the best way to get started on this kind of problem is to take relevant coursework(either online or in real life) or to read an introductory book on this topic. A good introductory book on motion planning and SLAM is Principles of Robotic Motion. A good course on SLAM/Mobile Robots: Control of Mobile Robots


5

Ball detection using vision is not extremely difficult, especially if the ball is easy to recognize. There are a lot of tutorials and blogs which give a detailed explanation on how to implement an algorithm to solve this problem: Raspberry Pi Ball tracking Using OpenCV on the Beagleboard to track an Aibo pink ball OpenCV Tutorial C++ - Color Detection & ...


5

You're trying to do numeric integration, which takes the form: $$ \mbox{integrated value } +=\mbox{derivative} * \mbox{elapsed time} $$ What you have instead of elapsed time is some value called speed. Try setting up your numeric integration code on an interrupt, where the interrupt timing is what you would use in place of elapsed time. I'm not sure what ...


4

*Note, $a|b$ is the concatenation of paths $a$ and $b$. Then $c(\cdot)$ defined as the minimum clearance implies $c(a|b)=min(c(a),c(b))$ You refer to (in reference 1): Theorem 11: (Additivity of the Cost Function.) For all $\sigma_1$,$\sigma_2$ $\in X_{free}$ , the cost function c satisfies the following: $c(\sigma_1|\sigma_2) = c(\sigma_1) + c(\...


4

You need to do a bit of Calculus. First a note about your input parameters: Actually acceleration depends on Force and mass. You don't specify what units your max. thrust is in so let's assume your max. thrust is your acceleration. We can do the same thing with your max. torque then and assume that it is also your acceleration (angular) and forget about ...


4

This is called "data association" in tracking literature. When you measure the position of an object, you need to know which object it was you measured. If you can estimate this probability, then you are free to choose the most likely association. This is a heavily researched topic, but boils down to Bayesian analysis. Here's a simple way: Assume we have ...


4

My understanding of your problem is that you would like to discover and navigate a 2D maze of irregular obstacles with a non-holonomic robot using a single forward-looking ultrasonic range sensor and wheel odometry. This is a hard problem. "Best" solution Although a "best" or "optimal" solution to this problem possibly could be implemented on an 8-bit ...


4

Your problem is not the P[I]D controller, but extracting control parameters from your system. A PID controller by itself is something like this (assuming a periodic control task): /* 1. get current position */ cur_position = get_current_position(); /* 2. calculate error */ err = goal_position - cur_position; /* 3. calculate the output */ proportional = Kp ...


4

This might not be the right answer for your problem, but it may give you some idea how you might solve this problem: At the company, I'm working for, we have lot of issues concerning jerk and acceleration of rotary arms. Our approach is we use motion specified by a position-velocity diagram (User-Input). According to this profiles we calculate an ...


4

I think that vector field histogram method should be a good solution here. It's a method of local motion planning (avoiding local obstacles while navigating to a global target). It involves mapping measurements into cartesian occupancy grid, and making a polar obstacle density histogram from that grid. Later the direction with lowest obstacle density and ...


4

Ideal solution can be defined in many ways. The simplest way to choose one is to compare which of the 8 solutions is closest to your current pose in joint space. This is usually a good idea if you are moving along a line (or similar defined trajectores). In practics some robot manufactruers have solved this using the status and turn variables. These ...


3

A good place to start is with the work by Dr. Jur van den Berg and his colleagues. Check out the publications velocity obstacles and reciprocal collision avoidance. You could start with the latest paper, Reciprocal Collision Avoidance for Robots with Linear Dynamics using LQR-Obstacles, they have released on the subject and use the citations to find more ...


3

You might want to have a look at my maze solving robot solution (http://www.benaxelrod.com/robots/maze/index.html). I used a Lego RCX which is more powerful than an 8bit microcontroller, but is still pretty resource constrained. I abstracted away most of the hardware problems to focus on the algorithm. It uses a flood-fill or A* type algorithm.


3

In the end, I found that the best way to do this was to employ a very simple concept: Flood Fill. I used a stack-based iterative approach instead of the recursive option, and modified it for physical space by using an A* search to find a path from the current location to the next location in the stack (using only those grid squares that have already been ...


3

The solution is actually not quite linear. There are at least two cases: 1) The fastest solution does not require maximum turning at all times. 2) The fastest solution does require maximum turning at all times. For an example of 1), consider the goal is straight ahead of the drone. For an example of 2), consider the goal is very close, but straight behind ...


3

The problem is much easier, when you want solve this for specific object categories like cup-plate-spoon instead of any generic pair of objects. Also in my opinion there degeneracies as mentioned by DaemonMaker is not going to happen in this case since we have depth image instead of just a 2D image. When you know the objects in scene and you have a depth ...


3

Stabilization of a helicopter and a quadrotor are similar tasks - have a reference signal, compare that to feedback, then act on the difference. A quad rotor has four motors, and the helicopter arguably does as well: main rotor, tail rotor, swash plate fore/aft servo, swash plate port/stbd servo. I would bet you can find a helicopter community that could ...


3

A brief overview of some of these variants: A* A variant Dijkstra's algorithm that maintains a heuristic distance to the goal to first explore parts of the graph that are more likely closer to the goal (same result as Dijkstra's algorithm, but faster). Theta* An "any-angle" variant of A*. In other words, movements between nodes are not restricted to the ...


3

The OMPL library has some good quality implementations of several sampling-based motion planners, as listed here : http://ompl.kavrakilab.org/planners.html In particular, you can find several variants of RRT under the BSD license.


3

$s_{last}$ does change. Looking at the pseudo code, $s_{last}$ is updated upon each iteration of the while loop in main(), in line 31, $s_{last}=s_{start}$, if the condition on line 29 is met: if any edge costs changed Likewise, in figure 4 $s_{last}$ is updated on line 39:


3

I would recommend using an RRT or FMT sampling based path planner. The basic idea is to sample your state space and build a tree which connects your starting state to the goal state. Each time you connect two samples, you check for a collision: if there is no collision then you add the connection to your tree search, otherwise you move on. It is your ...


2

I'm not sure if you still need it, but for those who happened to google for this thread, I have made one simple version of the algorithm. Basically, it tries to build the map of the area while it cleans, and it uses the map to find the nearest unvisted node (part of the room). When it can't find any, that means the room is cleaned (or the uncleaned parts ...


2

I dont use NXC, so I am hesitant to propose this as an answer, but I will comment that the sensors ARE linear - not binary. They measure dark, grey, and light - On, middle, off of line. You simply devise a scheme to get a unique #, and use that as the SetPoint to PID - works great. See Mindsensors light array for sample NXC code for their array. Adopt it to ...


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