Vojtěch Pröschl
Vojtěch Pröschl
  • 6
  • 69 927
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?
มุมมอง: 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 ...

ความคิดเห็น

  • @sushantsingh1820
    @sushantsingh1820 23 วันที่ผ่านมา

    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 😦

  • @JosefNovak-ge9sn
    @JosefNovak-ge9sn 2 หลายเดือนก่อน

    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.

  • @Ezio-Auditore94
    @Ezio-Auditore94 2 หลายเดือนก่อน

    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.

  • @sledzik1235
    @sledzik1235 2 หลายเดือนก่อน

    Just calculate traveling salesman problem for every dust particle

  • @kovacsattila8993
    @kovacsattila8993 2 หลายเดือนก่อน

    There are huege problem with this video. This is'nt AI.... Just a robot with it's program.

    • @hedgehogsch.7270
      @hedgehogsch.7270 2 หลายเดือนก่อน

      ML just a bunch of programs too, soooo...

    • @kovacsattila8993
      @kovacsattila8993 2 หลายเดือนก่อน

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

  • @vastabyss6496
    @vastabyss6496 2 หลายเดือนก่อน

    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.

    • @vojtechproschl
      @vojtechproschl 2 หลายเดือนก่อน

      Thank you! You’re absolutely right.

  • @bulharek
    @bulharek 2 หลายเดือนก่อน

    Great work and explanation of the polygonal models...thanks a lot Vojto 🙂!

    • @vojtechproschl
      @vojtechproschl 2 หลายเดือนก่อน

      Glad you liked it!

  • @stellsy3496
    @stellsy3496 2 หลายเดือนก่อน

    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

  • @marekvalasek7251
    @marekvalasek7251 2 หลายเดือนก่อน

    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.

    • @vojtechproschl
      @vojtechproschl 2 หลายเดือนก่อน

      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!

  • @derstreber2
    @derstreber2 2 หลายเดือนก่อน

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

  • @stijnkuipers4251
    @stijnkuipers4251 2 หลายเดือนก่อน

    This looks like it could also make a great algorithm for 3d print layers

  • @googleyoutubechannel8554
    @googleyoutubechannel8554 3 หลายเดือนก่อน

    Now do stairs. "Agent program"... but you repeat yourself...

  • @polarsingularity
    @polarsingularity 3 หลายเดือนก่อน

    D = sqrt(2r²), as the Square can be broken up into 4 equal right triangles with short side of length r

    • @Singh_Sahdev
      @Singh_Sahdev 3 หลายเดือนก่อน

      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?

    • @raspberryjam
      @raspberryjam 2 หลายเดือนก่อน

      @@Singh_Sahdev r√2 is algebraically equivalent to sqrt(2r²) for prositive r

    • @Singh_Sahdev
      @Singh_Sahdev 2 หลายเดือนก่อน

      @@raspberryjam yes, but why should anyone write it like that, its simply r√2

    • @raspberryjam
      @raspberryjam 2 หลายเดือนก่อน

      @@Singh_Sahdev You asked if you were wrong and I was saying no

    • @Singh_Sahdev
      @Singh_Sahdev 2 หลายเดือนก่อน

      @@raspberryjam thanks

  • @gauravkhaire56
    @gauravkhaire56 3 หลายเดือนก่อน

    Exactly what I needed, Thanx

  • @ServedDinner
    @ServedDinner 3 หลายเดือนก่อน

    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

  • @harshavardhan9399
    @harshavardhan9399 3 หลายเดือนก่อน

    great video but the title is misleading. you can try something like "how do design an autonomous robot from scratch'" or something like that.

    • @KindOfWitch
      @KindOfWitch 2 หลายเดือนก่อน

      no, very not misleading, its just not generative ai

  • @zyang056
    @zyang056 3 หลายเดือนก่อน

    Thanks for making this video but nothing covered here was AI or ML.

    • @vojtechproschl
      @vojtechproschl 3 หลายเดือนก่อน

      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!

    • @frogg03_
      @frogg03_ 3 หลายเดือนก่อน

      ​@@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

    • @derstreber2
      @derstreber2 2 หลายเดือนก่อน

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

    • @vastabyss6496
      @vastabyss6496 2 หลายเดือนก่อน

      ​@@frogg03_what do you define as "AI"?

  • @owonobrandon8747
    @owonobrandon8747 3 หลายเดือนก่อน

    Clear and good video!

  • @ashisdahal6145
    @ashisdahal6145 3 หลายเดือนก่อน

    Great visualizations but it's too abstract. Would have loved a more in-depth implementation, preferably with code.

    • @samhayzen
      @samhayzen 2 หลายเดือนก่อน

      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.

  • @matejpalm3108
    @matejpalm3108 3 หลายเดือนก่อน

    This guy Maths!

  • @qualia765
    @qualia765 3 หลายเดือนก่อน

    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

    • @vojtechproschl
      @vojtechproschl 3 หลายเดือนก่อน

      Interesting ideas! It seems like a fun direction to explore further, though the branching factor would be quite large. 😄 Thank you very much!

  • @muhammad-dq6jg
    @muhammad-dq6jg 3 หลายเดือนก่อน

    Brother the only thing this channel needs is quick uploads. You literally have the same quality as the best channel.

    • @vojtechproschl
      @vojtechproschl 3 หลายเดือนก่อน

      Thank you! I will try my best to increase the upload frequency in the near future 😁

  • @Pedro-jj7gp
    @Pedro-jj7gp 3 หลายเดือนก่อน

    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

    • @vojtechproschl
      @vojtechproschl 3 หลายเดือนก่อน

      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.

    • @Pedro-jj7gp
      @Pedro-jj7gp 3 หลายเดือนก่อน

      @@vojtechproschl That sounds awesome, I'll keep an eye out! The graphs ones, coin flip and 3D terrain ones are pretty neat!

    • @vojtechproschl
      @vojtechproschl 3 หลายเดือนก่อน

      ​@@Pedro-jj7gp I appreciate the ideas, video about 2D graphs seems like an excellent way to start the channel 😁

  • @Electroshockist
    @Electroshockist 6 หลายเดือนก่อน

    Interesting way to use fourier transforms. very cool.

  • @JamesSmith-ix5jd
    @JamesSmith-ix5jd 6 หลายเดือนก่อน

    10:30 confusing wording, correct wording should be - a vector perpendicular to the face of a polygon.

    • @vojtechproschl
      @vojtechproschl 6 หลายเดือนก่อน

      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.

    • @JamesSmith-ix5jd
      @JamesSmith-ix5jd 6 หลายเดือนก่อน

      @@vojtechproschl How can you define a vector for a point? It can have an infinite amount of vectors, which one exactly are you choosing?

    • @vojtechproschl
      @vojtechproschl 6 หลายเดือนก่อน

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

  • @JamesSmith-ix5jd
    @JamesSmith-ix5jd 6 หลายเดือนก่อน

    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.

  • @MrKohlenstoff
    @MrKohlenstoff 7 หลายเดือนก่อน

    Really cool, very well done!

  • @shantanu83
    @shantanu83 9 หลายเดือนก่อน

    Amazing video, simple and cool!

  • @narqiez4669
    @narqiez4669 10 หลายเดือนก่อน

    This is so well-explained and demonstrated that it feels illegal to watch for free. Thank you Vojtech :)

    • @vojtechproschl
      @vojtechproschl 10 หลายเดือนก่อน

      Thank you! 😁

  • @while_coyote
    @while_coyote 11 หลายเดือนก่อน

    lovely. I'd love to see more.

  • @kartikeyaShetti
    @kartikeyaShetti ปีที่แล้ว

    Happiness is watching a youtube channel growing from the beginning! All the best❤

  • @waffleboytom
    @waffleboytom ปีที่แล้ว

    Great work as always !

  • @Delta0001-y
    @Delta0001-y ปีที่แล้ว

    What is the purpose of using the semantic: “the probability of A being visible” instead of “The opacity/alpha value of A”? Just curious.

    • @vojtechproschl
      @vojtechproschl ปีที่แล้ว

      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.

    • @Delta0001-y
      @Delta0001-y ปีที่แล้ว

      @@vojtechproschl makes sense, thanks for the context.

    • @vojtechproschl
      @vojtechproschl ปีที่แล้ว

      ​@@Delta0001-y You're welcome!

  • @Delta0001-y
    @Delta0001-y ปีที่แล้ว

    Great video!

  • @Delta0001-y
    @Delta0001-y ปีที่แล้ว

    This is gonna blow up, thank you so much for creating this!

    • @vojtechproschl
      @vojtechproschl ปีที่แล้ว

      I am glad that you've found it helpful! Thank you!

  • @treedruids5776
    @treedruids5776 ปีที่แล้ว

    This is amazing! I'm shocked your channel isn't bigger, so underrated

  • @sagrgywejhxcvx
    @sagrgywejhxcvx ปีที่แล้ว

    bulbublbulb

  • @endrawes0
    @endrawes0 ปีที่แล้ว

    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.

  • @Kargoneth
    @Kargoneth ปีที่แล้ว

    A nice overview. Informative.

  • @teklife
    @teklife ปีที่แล้ว

    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.

  • @tfairfield42
    @tfairfield42 ปีที่แล้ว

    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.

  • @MartynDerg
    @MartynDerg ปีที่แล้ว

    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

  • @johannes417
    @johannes417 ปีที่แล้ว

    Great

  • @Ghc902
    @Ghc902 ปีที่แล้ว

    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.

  • @4984christian
    @4984christian ปีที่แล้ว

    Nice. Please do more! I love experimenting with conplex patterns!

  • @cmilkau
    @cmilkau ปีที่แล้ว

    The art of procedural generation is to make something totally random look totally not random.

  • @zoltantorok1189
    @zoltantorok1189 ปีที่แล้ว

    More. We crave more, mother. Why have you forsaken us, mother? Mother?

  • @grobknoblin5402
    @grobknoblin5402 ปีที่แล้ว

    This is amazing! I hope you continue to series! ❤❤❤❤❤

  • @PeterLechner
    @PeterLechner ปีที่แล้ว

    Finally I get what those fbm parameters mean🤌 great video! Would love to learn more!

  • @raresmircea
    @raresmircea ปีที่แล้ว

    High quality production, great job