- 6
- 69 927
Vojtěch Pröschl
Czechia
เข้าร่วมเมื่อ 28 ต.ค. 2018
Math is my favorite toy :)
How to design AI from scratch?
In this video, we explore the fascinating world of artificial intelligence by diving into the creation of an AI-powered robotic vacuum cleaner. We'll break down key concepts like agents, sensors, and actuators, showing how to design a cleaning robot that navigates a room, avoiding obstacles and cleaning efficiently. You'll learn about agent-based AI approaches, performance measures, and the algorithms behind pathfinding.
Huge thanks to @marekvalasek7251, for his exceptional teaching skills and invaluable collaboration on this video. His ability to simplify complex concepts made the explanations clear and the video approachable for everyone. If you speak Czech, be sure to check out his version of the video once it becomes public!
If you want to learn more about AI, I recommend checking out the book "Artificial Intelligence: A Modern Approach", which served as a reference while we were writing the script for this video.
0:00 Intro
0:51 Roadmap
1:40 Agent based approach
3:09 Agent program
4:37 Reflexive agent
5:34 What do we want from the robot?
7:05 Measuring cleaning time
8:14 Performance measure
8:34 Designing performance measure
9:47 Using performance measure
10:28 Optimizing performance measure
11:31 Mathematical models
12:12 Describing the room
12:51 Describing position of the robot
13:18 Describing orientation
15:32 Describing movement
16:04 Describing rotation
16:32 Describing sensors
17:18 Moving in a room
17:57 Discretization
18:32 What do we want from the vertices?
19:12 Circle packing
20:17 Creating vertex grid
20:53 Removing vertices outside bounding rectangle
21:30 Deciding whether point lies inside a polygon
23:17 Removing remaining vertices
23:49 Removing points near the walls
24:47 Which vertices to connect?
25:35 Neighboring vertices
26:50 Edge collisions
28:05 Segment to segment distance
28:52 Removing edge collisions
29:19 What is a graph?
30:52 Path in a graph
31:19 Path length
32:20 Shortest path
32:37 Finding shortest path
33:56 Moving along the path
34:26 Move instruction
35:14 Rotate instruction
36:36 Converting path to instructions
38:04 Finding cleaning path
39:48 The result
40:13 Evaluating the result
40:41 What can we improve?
Huge thanks to @marekvalasek7251, for his exceptional teaching skills and invaluable collaboration on this video. His ability to simplify complex concepts made the explanations clear and the video approachable for everyone. If you speak Czech, be sure to check out his version of the video once it becomes public!
If you want to learn more about AI, I recommend checking out the book "Artificial Intelligence: A Modern Approach", which served as a reference while we were writing the script for this video.
0:00 Intro
0:51 Roadmap
1:40 Agent based approach
3:09 Agent program
4:37 Reflexive agent
5:34 What do we want from the robot?
7:05 Measuring cleaning time
8:14 Performance measure
8:34 Designing performance measure
9:47 Using performance measure
10:28 Optimizing performance measure
11:31 Mathematical models
12:12 Describing the room
12:51 Describing position of the robot
13:18 Describing orientation
15:32 Describing movement
16:04 Describing rotation
16:32 Describing sensors
17:18 Moving in a room
17:57 Discretization
18:32 What do we want from the vertices?
19:12 Circle packing
20:17 Creating vertex grid
20:53 Removing vertices outside bounding rectangle
21:30 Deciding whether point lies inside a polygon
23:17 Removing remaining vertices
23:49 Removing points near the walls
24:47 Which vertices to connect?
25:35 Neighboring vertices
26:50 Edge collisions
28:05 Segment to segment distance
28:52 Removing edge collisions
29:19 What is a graph?
30:52 Path in a graph
31:19 Path length
32:20 Shortest path
32:37 Finding shortest path
33:56 Moving along the path
34:26 Move instruction
35:14 Rotate instruction
36:36 Converting path to instructions
38:04 Finding cleaning path
39:48 The result
40:13 Evaluating the result
40:41 What can we improve?
มุมมอง: 4 009
วีดีโอ
How do polygonal models work? | Computer Graphics Essentials
มุมมอง 1.9Kปีที่แล้ว
In this video, I explain one of the most important concepts in computer graphics - polygonal models. Resources for further exploration: Fundamentals of Computer Graphics by Marschner et al. - Great book on computer graphics in general th-cam.com/video/HePDHsp8spU/w-d-xo.html - Great lecture related to polygonal meshes Timestamps: 0:00 Intro 0:48 Chapter 1: Polygons 1:50 Self-intersecting polygo...
The Art of Procedural Noise #SoME3
มุมมอง 47Kปีที่แล้ว
Deep dive into the topic of procedural noise from a unique perspective. We explore its origins, properties, applications, and more! Resources for further exploration: - [1], [2] - Great starting point if you want to explore ideas of the frequency domain. Both monographs are focused on computer vision. However, those foundations apply to a wide range of fields. Besides notes, there are recorded ...
Image Compositing From First Principles
มุมมอง 1.4Kปีที่แล้ว
Ever wondered about the math that drives the magic of digital image compositing? Well, you're in the right place! This video is all about the equations and theories that gave birth to the alpha channel and compositing operators - fundamental tools in computer graphics. We'll break down the mathematical concepts and the inventive thought process behind these tools, showing you the math in a whol...
Essential Math for Texturing | Procedural Texturing, Episode 2
มุมมอง 8Kปีที่แล้ว
Errata: - In the section on mathematical objects, U've switched integers and rational numbers - In the section on tuples T2 should be 3/5 instead of 4/5 - In the section on trigonometry, the identity should be sin(x)=cos(x-pi/2) Amazon links are affiliates. By using them, you support this channel. Learning Resources: - High School Math: www.khanacademy.org/ - High School Math: amzn.to/4261fRv -...
This is how texturing really works | Procedural Texturing, Episode 1
มุมมอง 8Kปีที่แล้ว
Amazon links are affiliates. By using them, you support this channel. Sources: - Texturing and Modeling, Third Edition: A Procedural Approach: amzn.to/3BD001a - Fundamentals of Computer Graphics: amzn.to/456UL7o - Physically Based Rendering: From Theory to Implementation: amzn.to/3Mh84ty - Physically Based Shading at Disney Timestamps 00:00 Introduction 01:47 Replicating Reality 03:10 Material ...
Back to this after an year! , This probably won't help me with music theory, but def help me overcome my crippling fear of sinusoidal waves 😦
chlape, jsi čech, a ta angličtina Tvoje je brilantní, špička. Dávám to mým slutdentů, co učím anglinu, jako příklad anlginy, které rozumí naprosto každej na planetě, když umí ty slova.
Děkuji! 😁
Incredible content, this channel is gold. "Long" technical videos are amazing, the latest trend of short content it's good just for surface explanation or intro to some concepts. I'm a software engineering student and I'm extremely thankful for you publishing your work.
Thank you!
Just calculate traveling salesman problem for every dust particle
There are huege problem with this video. This is'nt AI.... Just a robot with it's program.
ML just a bunch of programs too, soooo...
@@hedgehogsch.7270 you can read a program and understand how does it work, and what part of it does what it does and how. But that's not true for a neural network so no, it's not the same. It's like calling you a bunch of lifless substance mixed together.
Excellent video. People often forget that ML is only a small sub-field within AI. Search algorithms like Minimax and MCTS, A* pathfinding, and even expert systems are all AI. Some are more intelligent and generally applicable than others though.
Thank you! You’re absolutely right.
Great work and explanation of the polygonal models...thanks a lot Vojto 🙂!
Glad you liked it!
what you could do to make the area more efficient is to calculate the area of the work space, use an average amount of points per given area of whatever grid you choose to find the amount of spots that fit in the area, then run a particle simulation where the particles repel each other when they intersect and can only get within its radius of the walls, with no retaining of velocity till they all stop moving, and then you would be left with a pretty even grid that hugs the walls. and then ofc choose the closest neighbors within a given radius
Vojto, thank you for inviting me to colaborate on this video. It has been a true honor for me and I had blast shooting it with you.
I’ve loved working with you! Your videos have been instrumental in helping me learn high school math before heading off to university, and I’m so grateful for everything I’ve gained from them!
(some) Things about the real world that complicate the problem. 1. Sensor limitations. Lidar sensors for example are limited in how far they can see because accuracy degrades with distance. (And there is also a tiny blind spot up close.) 2. Lidar sensor data of obstacles results in a point cloud. If your algorithm uses, clean geometric shapes, they would need to be calculated from the point cloud. 3. Lidar sensor data is in a coordinate system relative to the robot, not global. The robot is not at an angle to the room, things in the room are at an angle to the robot. 4. Not all obstacles are stationary. 5. The robot does not move perfectly straight. Any drift will change how things in the room are angled to the robot. Some form of active correction would need to be used. (The missile knows where it is, because it knows where it isn't.) So yeah, before we can fit a grid to the world and plan out a path, we need to figure out what the world looks like, as everything is vibrating and shaking around us with things popping in and out of existence, doing our best to not get lost. And if we are lucky, maybe we can clean over 90% of the floor.
This looks like it could also make a great algorithm for 3d print layers
Now do stairs. "Agent program"... but you repeat yourself...
D = sqrt(2r²), as the Square can be broken up into 4 equal right triangles with short side of length r
The diagonal of square is d√2 and here 2r(2 radii of diagonal circles) is also equal to same, hence d=r√2, am I wrong somewhere?
@@Singh_Sahdev r√2 is algebraically equivalent to sqrt(2r²) for prositive r
@@raspberryjam yes, but why should anyone write it like that, its simply r√2
@@Singh_Sahdev You asked if you were wrong and I was saying no
@@raspberryjam thanks
Exactly what I needed, Thanx
Glad it helped!
I Really like ur videos but could u make a video about how x/y is equal to 0.x repeating except for when x=y and if y is equal to 10^n-1? Id really like to see a Video about that but ima also gonna try myself now
great video but the title is misleading. you can try something like "how do design an autonomous robot from scratch'" or something like that.
no, very not misleading, its just not generative ai
Thanks for making this video but nothing covered here was AI or ML.
Hi, This video actually contains a lot of AI concepts. We originally wanted to include a section to address this misconception but decided against it, which I now realize was a mistake. AI, at its core, is about defining goals using performance measures and optimizing algorithms to maximize or minimize the given performance measure (as we've described). There are many ways to optimize such functions, one of which is using some form of machine learning, such as neural networks, to "generate" an agent program from data. Another approach is to "design" the agent program yourself by studying the problem. This can be done through methods like search, constraint satisfaction programming, logical inference, probabilistic reasoning, and so on. A common misconception is that using "classical" approaches that don't rely on ML isn't AI, which simply isn't true. One of the reasons we created this video was to show that AI ≠ ML, and there is much more to AI than just machine learning. Hope this helps, and thank you for leaving a comment!
@@vojtechproschlyou don't need to call everything AI to gain traction. You clearly optimized the program iteratively yourself, not by any automated means. That is not AI, that is simply developing an algorithm and there's nothing artificial about it. You could have done so much better if you weren't just chasing buzzwords around
@@frogg03_ If you mean the Academic definition of "AI", then no this vacuum is not "Intelligent". I think they are using it more like how people refer to AI in video games. There is a lot of overlap with controlling a simulated entity in a video game and controlling a physical piece of hardware interacting in the world. Even if there is zero machine learning going on it is still pretty neat. I see where you are coming from though, it feels like things are moving toward "If something cool involves computers, it's AI" But I think you would agree that this video is NOT as bad as Logitech changing the color of a mouse button to blue and calling it "AI".
@@frogg03_what do you define as "AI"?
Clear and good video!
Thank you!
Great visualizations but it's too abstract. Would have loved a more in-depth implementation, preferably with code.
The thing is any code would be extremely specific to whatever application you're talking about; you really gotta figure it out yourself based on the problem.
This guy Maths!
I think that probably the most efficient solution would be to instead of "move-turn-move-turn" instead be a series of smooth arcs - so the robot never needs to waste time standing still. My first instinct is also a greedy approach - figure out from any given position which arc could be taken then evaluate which fills the most space - then choose the best and repeat. That will probably be really bad but then you could maybe make it think a couple steps ahead like a chess algorithm. So for every path - and every child path which would be the best. However that would have the issue that naive chess algorithms have which is exploding exponentially more choices evaluated. However unlike chess algorithms it would be much harder to prune obviously terrible choices (such as alpha-beta pruning for chess AI) Regardless - you could apply the techniques that the best of the best chess AIs use: Machine learning. Basicly each choice of arc a ANN will generate a score of how good it thinks that choice will be. Then it picks the best choice and repeats. Idk I could go one with ideas but I just wanna say I love this video: I kinda already know all the topics in this video but I know that me 5 years ago would have loved it so much. Thanks for making it :3
Interesting ideas! It seems like a fun direction to explore further, though the branching factor would be quite large. 😄 Thank you very much!
Brother the only thing this channel needs is quick uploads. You literally have the same quality as the best channel.
Thank you! I will try my best to increase the upload frequency in the near future 😁
Amazing video! Would love to learn how you make some of these animations in houdini! I don't think I've seen anyone using it like that before
Thank you! Which animations, in particular, are you interested in? I will most likely create a secondary channel where I plan to post Houdini tutorials in October, so I might actually cover that.
@@vojtechproschl That sounds awesome, I'll keep an eye out! The graphs ones, coin flip and 3D terrain ones are pretty neat!
@@Pedro-jj7gp I appreciate the ideas, video about 2D graphs seems like an excellent way to start the channel 😁
Interesting way to use fourier transforms. very cool.
Thank you!
10:30 confusing wording, correct wording should be - a vector perpendicular to the face of a polygon.
I agree that it might be confusing to someone who focuses more on the applied portion of computer graphics. My wording reflects a definition from the perspective of differential geometry.
@@vojtechproschl How can you define a vector for a point? It can have an infinite amount of vectors, which one exactly are you choosing?
@@JamesSmith-ix5jd Intersection point implicitly states that it is point on a surface. For normal to the point on the surface in general case besides simple face you can check out this website mathworld.wolfram.com/NormalVector.html#:~:text=The%20normal%20vector%2C%20often%20simply,surface%20at%20a%20given%20point.
triangles are always used by GPU to render the object to the screen, but in 3d modeling triangles are not good, you can't loop easily, select a poly ring, do proper edge flow etc. so in modeling people are using quads and simply avoiding edge cases where quads might break, which is not that often tbh, quads are only breaking when a 3d modeler is a beginner and he/she can't produce quad only mesh.
Really cool, very well done!
Thank you!
Amazing video, simple and cool!
Thank you!
This is so well-explained and demonstrated that it feels illegal to watch for free. Thank you Vojtech :)
Thank you! 😁
lovely. I'd love to see more.
Thank you!
Happiness is watching a youtube channel growing from the beginning! All the best❤
Thank you!
Great work as always !
Thank you!
What is the purpose of using the semantic: “the probability of A being visible” instead of “The opacity/alpha value of A”? Just curious.
The main rationale behind that is that authors of the alpha compositing paper treated opacity as the probability that some particle intercepts your view of the pixel, so I've stuck to that. Besides, I think that using probability instead of opacity makes it a bit clearer where these formulas come from.
@@vojtechproschl makes sense, thanks for the context.
@@Delta0001-y You're welcome!
Great video!
Thank you!
This is gonna blow up, thank you so much for creating this!
I am glad that you've found it helpful! Thank you!
This is amazing! I'm shocked your channel isn't bigger, so underrated
Thank you!
bulbublbulb
Vertices edges and faces are not the most simple representation. The edges are redundant. Faces can be represents as triplets of vertices. No need for edges.
A nice overview. Informative.
Thank you!
the best mapgen i've ever seen is this one called 'Terrainbrot' and created by a minetest server owner and developer called Hume2. you can experience it and see a map of the world at 'spawn' on the server 'Tunneler's Abyss' using the free and open source Minetest client and going to the "join game" tab. it has tall realistic mountains, oceans and continents, archipelagos, deep oceans, and is just the most natural and realistic mapgen i've ever seen. by comparison, most other mapgens create bizarre artifacts like mountains cut in half, land tapering outwards as the elevation increases, and all sorts of goofy ugly bits all around like floating bits of land.
Amazing video into this topic. I remember looking into minecrafts procedural generation and perlin noise used to generate the terrains and caves. Wonderful systems at play together.
This was an absolutely brilliant explanation! this whole time I have been wandering blind, changing values without actually understanding what I'm changing. Now I feel like I better understand the concepts behind generating noise, and finally understand what I'm actually doing when tweaking the parameters of fractal noise
Thank you!
Great
After viewing this video, I have some constructive feedback to offer. While the animation and video production quality were impressive, I found that the pacing and structure of the content could use refinement to effectively convey the intended knowledge. It strongly feels like at the beginning you want to talk about true random noise, but at the end you ended up talking about hash function generated noise which is pseudo random and deterministic. You also step by step almost feel like you are talking about generating true random noise procedurally then suddenly introduce another source of randomness required to generate the noise. This is basically luring people in with chocolate and ended up feed them 💩 . The segmentation into 17 sections felt a bit fragmented and the progression from one topic to another could be smoother. For instance, the introduction began with a discussion on true randomness 2:52 and procedural noise generation 3:23 , transitioning into real-world sampling methods like coin flipping, and then delving into molecular motion as another source of noise. Following this, the narrative shifted to sin wave-based noise generation, incorporating an unidentified random source for phase shifts, before introducing Fourier transformation. The revelation that hash functions were being used as the phase shift generator, without a subsequent explanation, left a bit of a gap in understanding. The video's level of technical detail seemed to be caught between a high-level conceptual overview and a low-level technical deep dive. For instance, if the goal was to provide a low-level technical explanation, including actual code and in-depth analysis would have been beneficial. Conversely, if the aim was a high-level overview, the inclusion of complex concepts like Fourier transformation may have been excessive. It might be more effective to focus on core topics like the possibility of true random noise, the generation of pseudo-random noise through computational techniques, and the role of hash functions in ensuring uniform distribution in random generators. A more bottom-up approach, starting from deterministic functions and progressing to more complex noise generation techniques, might provide a clearer, more satisfying learning trajectory. Moreover, the video's objective was a bit unclear-whether it aimed to educate on procedural true random noise generation or realistic terrain noise generation. The content at the beginning and end seemed to address different goals. If the focus is on terrain noise, it would be beneficial to hypothesize on the unique frequency profile of terrain noise and explain the necessity of certain filter combinations to accurately replicate such profiles.
Nice. Please do more! I love experimenting with conplex patterns!
The art of procedural generation is to make something totally random look totally not random.
More. We crave more, mother. Why have you forsaken us, mother? Mother?
This is amazing! I hope you continue to series! ❤❤❤❤❤
Finally I get what those fbm parameters mean🤌 great video! Would love to learn more!
High quality production, great job