├── .github ├── reviewers.yml └── workflows │ ├── auto_request_review.yml │ ├── comment.yml │ ├── greetings.yml │ └── stale.yml ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── _config.yml ├── coding-practices └── README.md ├── computer-vision └── README.md ├── conferences └── README.md ├── controls-and-dynamics └── README.md ├── deep-learning └── README.md ├── embedded-systems └── README.md ├── graph-representation-learning └── README.md ├── iot └── README.md ├── ivlabs-black.png ├── mathematics └── README.md ├── motion-planning └── README.md ├── natural-language-processing └── README.md ├── physics ├── README.md └── books │ ├── A Primer of Special Relativity.pdf │ ├── Quantum Mehcanics by D. J. Griffiths.pdf │ ├── Relativistic Quantum Fields by James D. Bjorken, Sidney D. Drell.pdf │ └── Relativistic Quantum Mechanics by Dr. Walter Greiner.pdf ├── programming-languages └── README.md ├── reads-talks └── README.md ├── reinforcement-learning └── README.md ├── robot-operating-system └── README.md ├── software ├── github │ └── README.md └── linux │ └── README.md └── state-estimation-localization-slam └── README.md /.github/reviewers.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/marketplace/actions/auto-request-review 2 | reviewers: 3 | # The default reviewers 4 | defaults: 5 | - default-reviewers 6 | 7 | groups: 8 | default-reviewers: 9 | - team:repo-maintainer 10 | controls: 11 | - aditya-shirwatkar 12 | - Kush0301 13 | nlp: 14 | - rishika2110 15 | - GlazeDonuts 16 | - aayush-fadia 17 | - aneesh-shetye 18 | - Diksha942 19 | - Kshitij-Ambilduke 20 | ros: 21 | - Kush0301 22 | - prakrutk 23 | rl: 24 | - RajGhugare19 25 | - M-NEXT 26 | cv: 27 | - FlagArihant2000 28 | - take2rohit 29 | - pareespathak 30 | dl: 31 | # - GlazeDonuts 32 | # - rishika2110 33 | # - aayush-fadia 34 | # - take2rohit 35 | - Kshitij-Ambilduke 36 | - sibam23 37 | - vignesh-creator 38 | 39 | 40 | 41 | files: 42 | # Keys are glob expressions. 43 | # You can assign groups defined above as well as GitHub usernames. 44 | '**': 45 | - default-reviewers # group 46 | 'controls-and-dynamics/**': 47 | - controls # group 48 | 'computer-vision/**': 49 | - cv # group 50 | 'deep-learning/**': 51 | - dl # group 52 | 'natural-language-processing/**': 53 | - nlp # group 54 | 'robot-operating-system/**': 55 | - ros # group 56 | 'reinforcement-learning/**': 57 | - rl 58 | '.github/**': 59 | - ABD-01 # username 60 | 61 | options: 62 | ignore_draft: true 63 | ignored_keywords: 64 | - DO NOT REVIEW 65 | enable_group_assignment: false 66 | number_of_reviewers: 5 -------------------------------------------------------------------------------- /.github/workflows/auto_request_review.yml: -------------------------------------------------------------------------------- 1 | name: Auto Request Review 2 | 3 | on: 4 | pull_request: 5 | types: [opened, reopened] 6 | 7 | jobs: 8 | auto-request-review: 9 | name: Auto Request Review 10 | runs-on: ubuntu-latest 11 | permissions: 12 | pull-requests: write 13 | steps: 14 | - name: Request review based on files changes and/or groups the author belongs to 15 | uses: necojackarc/auto-request-review@v0.7.0 16 | with: 17 | token: ${{ secrets.GITHUB_TOKEN }} 18 | config: .github/reviewers.yml # Config file location override -------------------------------------------------------------------------------- /.github/workflows/comment.yml: -------------------------------------------------------------------------------- 1 | on: 2 | issues: 3 | types: [opened] 4 | pull_request_target: 5 | types: [opened] 6 | pull_request: 7 | types: [opened] 8 | 9 | jobs: 10 | welcome: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: EddieHubCommunity/gh-action-community/src/welcome@main 14 | with: 15 | github-token: ${{ secrets.GITHUB_TOKEN }} 16 | issue-message: "Hey! Thanks for creating this issue. Please wait while the people of IvLabs review your issue. Incase there is no response for one week then please add a comment in the same issue." 17 | pr-message: "Hey! Thanks for your contribution. Please wait while the people of IvLabs review your PR. Incase there is no response for one week then please add a comment in the same PR." 18 | footer: "Keep Learning! :hatching_chick:" 19 | -------------------------------------------------------------------------------- /.github/workflows/greetings.yml: -------------------------------------------------------------------------------- 1 | name: Greetings 2 | 3 | on: [pull_request, issues] 4 | 5 | jobs: 6 | greeting: 7 | runs-on: ubuntu-latest 8 | permissions: 9 | issues: write 10 | pull-requests: write 11 | steps: 12 | - uses: actions/first-interaction@v1 13 | with: 14 | repo-token: ${{ secrets.GITHUB_TOKEN }} 15 | issue-message: 'Hey! Thanks for creating this issue. Please wait while the people of IvLabs review your issue. Incase there is no response for one week then please add a comment in the same issue.' 16 | pr-message: 'Hey! Thanks for your contribution. Please wait while the people of IvLabs review your PR. Incase there is no response for one week then please add a comment in the same PR.' 17 | -------------------------------------------------------------------------------- /.github/workflows/stale.yml: -------------------------------------------------------------------------------- 1 | ### https://github.com/actions/stale 2 | name: Mark stale issues and pull requests 3 | 4 | on: 5 | schedule: 6 | - cron: '32 16 * * *' 7 | 8 | jobs: 9 | stale: 10 | 11 | runs-on: ubuntu-latest 12 | permissions: 13 | issues: write 14 | pull-requests: write 15 | 16 | steps: 17 | - uses: actions/stale@v3 18 | with: 19 | repo-token: ${{ secrets.GITHUB_TOKEN }} 20 | days-before-stale: 30 21 | days-before-close: 7 22 | stale-issue-label: 'inactive' 23 | stale-pr-label: 'inactive' 24 | stale-issue-message: 'This issue has not seen activity for a while. It will be closed in 7 days unless further activity is detected.' 25 | stale-pr-message: 'This PR has not seen activitiy for a while. It will be closed in 7 days unless further activity is detected.' 26 | close-issue-message: 'This issue has been closed because of inactivity.' 27 | close-pr-message: 'This PR has been closed because of inactivity.' 28 | # only-issue-labels: 'Critical' 29 | # exempt-pr-labels: 'Dont merge,WIP' -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Guidelines for contributing 2 | **All pull requests should be made for `devel` branch only.** 3 | 1. You are encouraged to add links to the following: 4 | - Online courses 5 | - Books 6 | - Tutorials/Code Implementations 7 | - Important Research Papers 8 | - Other useful things 9 | 2. All of these should be segregated by sub-topic. 10 | 3. Refer to existing sections before contributing a new one. 11 | 4. Follow the Fork-Commit-Pull Request cycle for contributing, more on this [here](http://github.com/ivlabs/resources/tree/master/software/github#open-source-contributions-with-git). All pull requests should be made for `devel` branch only. 12 | 5. If you create a new topic folder make sure to **link that folder in landing page `README.md`** 13 | 6. The **name of folder should be consistent with exact format of `word1-word2`**. Some NOT allowed forms are `word1 word2`, `word1word2`, `Word1-word2`, etc. This maintains consistency and proper ordering of folder. 14 | 7. The topic names in [List of Various Fields](#list-of-various-fields) should be in increasing alphabetical order. 15 | 16 | 17 | ## Code of Conduct 18 | 19 | ### Our Pledge 20 | 21 | In the interest of fostering an open and welcoming environment, we as 22 | contributors and maintainers pledge to making participation in our project and 23 | our community a harassment-free experience for everyone, regardless of age, body 24 | size, disability, ethnicity, gender identity and expression, level of experience, 25 | nationality, personal appearance, race, religion, or sexual identity and 26 | orientation. 27 | 28 | ### Our Standards 29 | 30 | Examples of behavior that contributes to creating a positive environment 31 | include: 32 | 33 | * Using welcoming and inclusive language 34 | * Being respectful of differing viewpoints and experiences 35 | * Gracefully accepting constructive criticism 36 | * Focusing on what is best for the community 37 | * Showing empathy towards other community members 38 | 39 | Examples of unacceptable behavior by participants include: 40 | 41 | * The use of sexualized language or imagery and unwelcome sexual attention or 42 | advances 43 | * Trolling, insulting/derogatory comments, and personal or political attacks 44 | * Public or private harassment 45 | * Publishing others' private information, such as a physical or electronic 46 | address, without explicit permission 47 | * Other conduct which could reasonably be considered inappropriate in a 48 | professional setting 49 | 50 | ### Our Responsibilities 51 | 52 | Project maintainers are responsible for clarifying the standards of acceptable 53 | behavior and are expected to take appropriate and fair corrective action in 54 | response to any instances of unacceptable behavior. 55 | 56 | Project maintainers have the right and responsibility to remove, edit, or 57 | reject comments, commits, code, wiki edits, issues, and other contributions 58 | that are not aligned to this Code of Conduct, or to ban temporarily or 59 | permanently any contributor for other behaviors that they deem inappropriate, 60 | threatening, offensive, or harmful. 61 | 62 | ## Maintainers 63 | - [Rohit Lal](http://take2rohit.github.io/) 64 | - [Raj Ghugare](https://www.linkedin.com/in/raj-ghugare-917137169) 65 | - [Aditya Shirwatkar](https://in.linkedin.com/in/aditya-shirwatkar-40a956188) 66 | - [Akshay Kulkarni](https://github.com/akshaykvnit) 67 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 IvLabs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | # Resources and Roadmaps for AI and Robotics 3 | ![http://ivlabs.in/](ivlabs-black.png) 4 | [![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-green.svg)](https://github.com/IvLabs/resources/graphs/contributors) [![GitHub license](https://img.shields.io/github/license/Naereen/StrapDown.js.svg)](https://github.com/IvLabs/resources/blob/master/LICENSE.md) [![GitHub stars](https://img.shields.io/github/stars/IvLabs/resources?style=social)](https://github.com/IvLabs/resources/stargazers) 5 | 6 | Initiative by [IvLabs](http://www.ivlabs.in/) to share field-wise learning resources. 7 | Here you will find all the courses and online materials which are being followed by IvLabs members. These resources have been carefully handpicked to provide the best knowledge. If you like the repo, please star. This motivates us to update the repo frequently. 8 | 9 | --- 10 | 11 | ## List of Various Fields 12 | Please click on following link to see the more info about the specific topic 13 | 14 | - [Computer Vision](computer-vision) 15 | - [Control Theory](controls-and-dynamics) 16 | - [Deep Learning](deep-learning) 17 | - [Embedded Systems](embedded-systems) 18 | - [Internet of Things-IoT](iot) 19 | - [Mathematics](mathematics) 20 | - [Motion Planning](motion-planning) 21 | - [Natural Language Processing](natural-language-processing) 22 | - [Physics](physics) 23 | - [Programming Languages](programming-languages) 24 | - [Reinforcement Learning](reinforcement-learning) 25 | - [State Estimation, Localization and SLAM](state-estimation-localization-slam) 26 | - [Robot Operating System](robot-operating-system) 27 | - [Graph Representation Learning](graph-representation-learning) 28 | 29 | ## Miscellaneous Topics 30 | To keep yourself updated with the field we highly recommend you listen to Podcasts, read subreddit (eg r/MachineLearning), follow Professors on Twitter, go through proceedings of top conferences. Alongside with doing courses you should also have a good grip with Linux OS and be proficient in programming. Click on following links to see the compilation done by IvLabs members. 31 | 32 | - [Conferences](conferences) 33 | - [Software Skill building](software) 34 | - [Linux](software/linux) 35 | - [Git and GitHub](software/github) 36 | - [Interesting Reads and Talks](reads-talks) 37 | 38 | NOTE: *Some of the topics are not yet completed. The repo will be updated soon.* 39 | 40 | ## More lists like this 41 | The following are lists made by their respective creator 42 | 43 | | Repository | Creator | Description | 44 | | - | - | - | 45 | | [Robotics-Courses](https://github.com/ajaygunalan/Robotics-Courses) | [Ajay Gunalan](https://github.com/ajaygunalan) | A list of tutorials and learning resources for Robotics. Covers topis like Linear Algebra, Signals and System, Hybrid Courses (ML + Control), Motion Planning, SLAM. | 46 | | [engineering-video-courses](https://github.com/Developer-Y/engineering-video-courses) | [Developer-Y](https://github.com/Developer-Y) | A collection of links to video lectures related to engineering courses. Covers disciplines such as Aerospace Engineering, Electrical Engineering, Mechanical Engineering and Civil Engineering. | 47 | | [cs-video-courses](https://github.com/Developer-Y/cs-video-courses) | [Developer-Y](https://github.com/Developer-Y) | A list of video courses on Computer Science Topics such as Data Structures and ALgorithms, Software Engineering, Artificial Intelligence, and Web Programming. | 48 | | [math-science-videolectures](https://github.com/Developer-Y/math-science-video-lectures) | [Developer-Y](https://github.com/Developer-Y) | A collection of Video Courses on topics related to Maths, Physics, and Chemistry. | 49 | | [courses](https://github.com/SkalskiP/courses) | [Piotr Skalski](https://github.com/SkalskiP) | Collection of AI courses along with their difiiculty ratings. Covers topics related to DL, NLP, RL and CV | 50 | 51 | ## Guidelines for contributing 52 | Please read [CONTRIBUTING.md](CONTRIBUTING.md) for contribution guidelines. Contributions will not be accepted if they dont follow these guidelines 53 | 54 | 59 | 60 | ## Maintainers 61 | - [Muhammed Abdullah Shaikh](https://github.com/ABD-01) 62 | - [Rohit Lal](http://take2rohit.github.io/) 63 | - [Raj Ghugare](https://www.linkedin.com/in/raj-ghugare-917137169) 64 | - [Aditya Shirwatkar](https://in.linkedin.com/in/aditya-shirwatkar-40a956188) 65 | - [Akshay Kulkarni](https://github.com/akshaykvnit) 66 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-slate 2 | -------------------------------------------------------------------------------- /coding-practices/README.md: -------------------------------------------------------------------------------- 1 | ## Table of content 2 | - [Roadmap to start Competetive Coding](#roadmap-to-start-competetive-coding) 3 | - [Common mistakes and misconceptions during competitive coding](#common-mistakes-and-misconceptions-during-competitive-coding) 4 | - [Top Programming Languages](#top-programming-languages) 5 | - [Tutorials](#tutorials) 6 | - [Video Tutorials](#video-tutorials) 7 | - [Online Practice Platforms](#online-practice-platforms) 8 | - [Books to Refer](#books-to-refer) 9 | 10 | ## Roadmap to start Competetive Coding 11 | There is no perfect time to start competitive coding, but if anyone wants to start it, here is a roadmap for you 12 | - Start with learning any programming language like C, C++, Java, Python are some popular programming languages use by all the coders around the globe. Try to start with C then move onto some other programming language if you wish (I prefer C++ after C). Refer to the [Books](#books-to-refer) and [Tutorials](#tutorials) section to start with any language you wish. 13 | - After learning any programming language, the next thing which comes to is practice. You have to practice to write code until you are able to code any problem given to you. There are many online platforms like [HackerEarth](https://www.hackerearth.com/), [Hackerrank](https://www.hackerrank.com/), [Leetcode](https://leetcode.com/), etc, which provide various questions on every programming language to practice (I prefer to start the language proficiency section at [Hackerrank](https://www.hackerrank.com/) Platform, where you can practice question on any language). 14 | - After doing a sufficient amount of practice you can move on to the next step, i.e., learning Data Structure and Algorithms. You have to practice them regularly i.e. at least 5 questions a day, which can be done on any platform mentioned in the [Online Platforms](#online-practice-platforms) section (I prefer the site [GeeksforGeeks](https://www.geeksforgeeks.org/) for learning and practice). 15 | - After that, you can move onto some real business, i.e, competitive programming. The competitive programming is not hard if you can write code using data structure and algorithms technique. There are several platforms where can compete online (Refer to [Online Platforms](#online-practice-platforms) section). 16 | 17 | #### Note 18 | - If you are learning C++, then it is advisable to learn STL i.e. Standard Template libraries in C++. It provides some inbuilt data struction libraries and functions which helps to write code fast and efficient. You can learn STL from any resource mentioned in various sections. 19 | 20 | ## Common mistakes and misconceptions during competitive coding 21 | - Never try to copy or steal code from anywhere, the main reason why anyone wants to start competitive programming is to master their coding skills which cannot be done while copying. It's okay to refer somewhere after the ongoing competition is over. 22 | - After starting with competitive programming, most of the coders stop learning and practicing new questions. This is wrong because your practice will never be sufficient, every question faced by will be different from previous ones. 23 | - At the early stage of programming most of us don't make notes thinking everything is available online and you can refer to them at any time. But this is not true, because every question you will face is gonna solve with different approaches and it is better to write those approaches in your notebook, it helps to analyze many methods to solve particular types of questions. 24 | 25 | ## Top Programming Languages 26 | - C/C++ 27 | - Java 28 | - Python 29 | - Javascript 30 | - PHP 31 | - C# 32 | - Go 33 | - R 34 | - Ruby 35 | 36 | ## Tutorials 37 | - [Algorithm Using Dynamic Programming and A](http://thume.ca/2017/06/17/tree-diffing/) : Designing a Tree Diff Algorithm Using Dynamic Programming and A* 38 | - [C++17](https://www.viva64.com/en/b/0533/) : A guide of C++17 39 | - [CMSI 281: Data Structures](http://cs.lmu.edu/~ray/classes/dsa/) : lightweight introduction to DS 40 | - [Collecting all the cheat sheets](http://overapi.com) : cheat sheets for lots of programming languages 41 | - [C Programming](http://users.cs.cf.ac.uk/Dave.Marshall/C/CE.html) 42 | - [Dynamic programming - PrismoSkills](http://prismoskills.appspot.com/lessons/Dynamic_Programming/Chapter_01_-_Introduction.jsp) : very good resource if want to learn how to solve DP problems. 43 | - [How to Program in C++](http://cs.fit.edu/~mmahoney/cse2050/how2cpp.html) : Good resource for revising C++ topics and STL 44 | - [Introduction to C Programming](http://www.le.ac.uk/users/rjm1/cotter/index.htm) 45 | - [Java tutorial](https://hackr.io/tutorials/learn-java): A programming community & a great place to find the best online programming courses and tutorials. 46 | - [Learn Python](https://www.learnpython.org): Free Interactive Python Tutorial 47 | - [Open Data Structures](http://opendatastructures.org): Excellent resource for learning about DS and algos, provides code in various languages C++, Java, and pseudocode. 48 | - [TopCoder Tutorials](https://www.topcoder.com/community/data-science/data-science-tutorials/) 49 | - [Tutorialspoint](https://www.tutorialspoint.com): Text and Video Tutorials for UPSC, IAS, PCS, Civil Services, Banking, Aptitude, Questions, Answers, Explanation, Interview, Entrance, Exams, Solutions 50 | 51 | ## Video Tutorials 52 | - [Aditya Verma](https://www.youtube.com/channel/UC5WO7o71wvxMxEtLRkPhiQQ): Algorithm tutorials playlists by an Indian YouTuber Aditya Verma. 53 | - [Bo Qian](https://www.youtube.com/channel/UCEOGtxYTB6vo6MQ-WQ9W_nQ) : Learn advanced c++ 54 | - [Code School](https://www.codeschool.com): A PluralSight Company and an Interactive learning destination for aspiring and experienced Developers 55 | - [Coding Blocks](https://www.youtube.com/user/codingblocks): Tutorials, how to's, tips and tricks 56 | - [CodingMadeEasy](https://www.youtube.com/user/CodingMadeEasy/videos) : C++ tutorials 57 | - [CS1: Higher Computing - Richard Buckland UNSW](https://www.youtube.com/playlist?list=PL6B940F08B9773B9F): a very good introductory CS course 58 | - [Design and Analysis of Algorithms](http://openclassroom.stanford.edu/MainFolder/CoursePage.php?course=IntroToAlgorithms) 59 | - [Geeksforgeeks](https://www.youtube.com/channel/UC0RhatS1pyxInC00YKjjBqQ/videos) : geeksforgeeks youtube 60 | - [freeCodeCamp](https://www.youtube.com/channel/UC8butISFwT-Wl7EV0hUK0BQ) : freecodecamp youtube channel 61 | - [FreeCourses](https://freecourses.github.io) : Free courses about programming 62 | - [HackerEarth](https://www.youtube.com/channel/UCYU6nvKyRYnE5kiG9JXkXpA) : Hacker earth youtube 63 | - [Java](https://www.youtube.com/user/java/videos) : talks related to java 64 | - [Khan Academy](https://www.khanacademy.org/computing/computer-science) : learn about computer science for free 65 | - [LearnCode.academy](https://www.youtube.com/channel/UCVTlvUkGslCV_h-nSAId8Sw) : 100% FREE Web Development tutorials, web site design tutorials, and more. Including, but not limited to: HTML, CSS, JavaScript, CSS Layouts, Responsive Design, React.js, Node.js, Angular.js, Docker, Dev 66 | - [MIT OpenCourseWare](https://www.youtube.com/user/MIT/) : MIT OpenCourseWare for learning in-depth algorithms, data structures, and computer engineering 67 | - [mycodeschool](https://www.youtube.com/user/mycodeschool/videos) : Data structures and algorithms tutorials 68 | - [Rachit Jain](https://www.youtube.com/channel/UC9fDC_eBh9e_bogw87DbGKQ/featured) : competitive programming 69 | - [sentdex](https://www.youtube.com/channel/UCfzlCWGWYyIQ0aLC5w48gBQ): Python Programming tutorials, going further than just the basics. Learn about machine learning, finance, data analysis, robotics, web development, game development, and more. 70 | - [The Coding Train](https://www.youtube.com/channel/UCvjgXvBlbQiydffZU7m1_aw): In this YouTube channel I publish "creative coding" video tutorials every week. Subjects covered range from the basics of programming languages like JavaScript (with p5.js) and Java (with Processing) to generative algorithms like physics simulation, computer vision, and data visualization. 71 | - [thenewboston](https://www.youtube.com/user/thenewboston/videos): good but with too much talk as compared to the actual content. 72 | - [The Net Ninja](https://www.youtube.com/channel/UCW5YeuERMmlnqo4oq8vwUpg): Web development tutorials 73 | - [Traversy Media](https://www.youtube.com/user/TechGuyWeb/videos) :Web development and programming 74 | - [Tushar Roy](https://www.youtube.com/user/tusharroy2525/videos): Algorithm and Data structure tutorial by an Indian Youtuber. 75 | - [Tutorials Point (India) Pvt. Ltd.](https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg): Tutorials Point originated from the idea that there exists a class of readers who respond better to online content and prefer to learn new skills at their own pace from the comforts of their drawing rooms. 76 | 77 | ## Online Practice Platforms 78 | - [Archived Problems - Project Euler](https://projecteuler.net/archives) : Problems Archives 79 | - [Art of Problem Solving](https://artofproblemsolving.com): Is math class too easy for you? You've come to the right place! 80 | - [CodeChef](https://www.codechef.com) : The only programming contests Web 2.0 platform 81 | - [Codefights](https://codefights.com) : Test your coding skills 82 | - [Codeforces](http://codeforces.com) : Programming Competition,Programming Contest,Online Computer Programming 83 | - [Codewars](https://www.codewars.com) : Rank up by completing code kata 84 | - [Codility](https://codility.com) : Verify and improve coding skills 85 | - [Codingame](https://www.codingame.com/start) : Learn coding through games and challenges! 86 | - [Facebook Hacker Cup](https://www.facebook.com/hackercup/): Facebook's Programming Contest, past problems solutions, and FAQ 87 | - [Google Code Jam Practice and](https://code.google.com/codejam/past-contests): past contest problems for practice 88 | - [HackerEarth - Programming challenges and Developer jobs](https://www.hackerearth.com) 89 | - [HackerRank](https://www.hackerrank.com): Practice coding. Compete. Find jobs. 90 | - [Leetcode](https://www.leetcode.com): It's a website where people–mostly software engineers–practice their coding skills. There are 800+ questions (and growing), each with multiple solutions. 91 | - [Topic Wise Problem For Competitive Programmer](https://a2oj.com/categories) : Topic wise Practise Problem 92 | - [Topcoder](https://www.topcoder.com) : Deliver Faster through Crowdsourcing 93 | - [URI Online Judge](https://www.urionlinejudge.com.br/judge/en/register): Practice coding, Compete, and be a better coder. 94 | - [UVa Online Judge](https://uva.onlinejudge.org): hundreds of problems supporting multiple languages. 95 | 96 | ## Books to Refer 97 | - [Become a Programmer, Motherfucker (list of books)](http://programming-motherfucker.com/become.html): This site contains the most popular exhaustive list of programming books from Zed A. Shaw. 98 | - [Goal Kicker](https://goalkicker.com): Programming Notes for Professionals books 99 | - [Free Programming Books](https://github.com/EbookFoundation/free-programming-books/blob/master/free-programming-books.md): More than 500 free ebooks on almost any language you can think of. 100 | -------------------------------------------------------------------------------- /computer-vision/README.md: -------------------------------------------------------------------------------- 1 | # Computer Vision 2 | 3 | Extracting information from Images, that help robots “see” and “perceive” as humans do, and understand it’s environment using input from it’s camera. The repository focusses on the traditional aspects of computer vision, particularly multiview geometry. 4 | 5 | 6 | ## Prerequisites 7 | 8 | ### Linear Algebra 9 | 10 | 1. [Linear Algebra by Gilbert Strang, MIT OCW](https://www.youtube.com/playlist?list=PLE7DDD91010BC51F8) - The course provides a formal introduction to linear algebra. Go through the course patiently because some concepts might seem daunting initially. 11 | 2. [The Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) - It provides the motivation and intuition for some of the concepts. 12 | 13 | ### Digital Image Processing 14 | 15 | Refer any one of the following courses, 16 | 17 | 1. [Image and Video Processing by Guillermo Sapiro, Duke University](https://www.youtube.com/watch?v=bxhJEe38bhY&list=PLZ9qNFMHZ-A79y1StvUUqgyL-O0fZh2rs) - This course is also available on [Coursera](https://www.coursera.org/learn/image-processing). It helps in building the foundation for some concepts that are used along with computer vision techniques, such as using histogram representation, the concept of filters and denoising, thresholding and contours, followed by some of its applications. 18 | 2. [Digital Image Processing by Prof. Prabir Kumar Biswas, IIT Kharagpur](https://nptel.ac.in/courses/117/105/117105135/) - A comprehensive course on image processing, that deals with all the major topics. Familiarity with linear algebra, probability theory and college calculus is expected. 19 | 3. [Introduction to Digital Image Processing by Rich Radke, Rensselaer Polytechnique Institute](https://www.youtube.com/playlist?list=PLuh62Q4Sv7BUf60vkjePfcOQc8sHxmnDX) - This is another comprehensive course, which also talks about some special topics on digital watermarking and digital image forensics. 20 | 4. The above set of courses refer to the text provided by [Digital image processing, Rafael C. Gonzalez](http://web.ipac.caltech.edu/staff/fmasci/home/astro_refs/Digital_Image_Processing_2ndEd.pdf). One can choose to follow just this book, as it is a standard textbook for Digital Image Processing. 21 | 22 | 23 | ### Implementation 24 | 25 | For the implementation of some of the concepts, [OpenCV](https://opencv.org/releases/) will help you. The documentation not only explains the concepts but also shows how it can be implemented using Python/C++. 26 | 27 | 28 | ## Basic Roadmap 29 | 30 | ### Introduction to Computer Vision 31 | 32 | 1. To learn basic concepts that are used in computer vision, [Introduction to Computer Vision by Aaron Bobbick, Georgia Tech](https://www.udacity.com/course/introduction-to-computer-vision--ud810) is a good place to start. 33 | 1. The course first gives a refresher on basic image processing techniques, before introducing camera geometry, such as the pinhole model, intrinsic and extrinsic camera parameters and analysing the point correspondences between two views of the same scene. 34 | 1. The course moves on to introduce the concept of features, scale invariance and then presents the state of the art method, Scale Invariant Feature Transform (SIFT). One can complete the whole course in order to get an idea of different computer vision and image processing techniques. 35 | 1. This will build the foundation for Computer Vision. It also gives sufficient information on Digital Image Processing and the concepts that will be required for the same. If someone watches all the lectures, they are ready to work on a good project in this field. It is recommended that the student is proficient in either MATLAB/Octave or Python. If you are opting for Python, make sure to check out [NumPy](https://numpy.org/) (helpful, but not necessary) and [OpenCV](https://docs.opencv.org/) (for Python. Read up to and including [Image Processing in OpenCV](https://docs.opencv.org/4.1.2/d6/d00/tutorial_py_root.html)), which are the associated libraries that will help you to implement many of the concepts. If one does the first 20% (we encourage anyone who takes this course to watch it till the end) of the course too, then he/she will be able to implement a virtual drawing pad, which requires some basic, but power image processing techniques. As one dives into the concept of features, the student will be able to implement more powerful algorithms that will help in projects such as stitching of two images for making panorama, camera calibration to estimate the focal length of the camera using just the camera feed, removal of distortion from the camera output using mathematical techniques, etc. 36 | 37 | 38 | 2. There is another course, [Computer Vision by Mubarak Shah, University of Central Florida](https://www.youtube.com/playlist?list=PLd3hlSJsX_Imk_BPmB_H3AQjFKZS9XgZm) for the basic concepts of computer vision. The course also has concise lectures on some very famous techniques used such as Lucas Kanade Tracker (KLT), Structure from Motion and Stereo. 39 | 40 | 3. For the feature detection and matching techniques, one can have a look at the [documentation](https://docs.opencv.org/3.4.2/db/d27/tutorial_py_table_of_contents_feature2d.html) provided by OpenCV. The documentation starts with an introduction to the concept of features, followed by discussing various techniques to obtain the feature points. 41 | 42 | 43 | ## Books 44 | 45 | 1. [Computer Vision: Algorithms and Applications, Richard Szeliski](http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf) - This is a standard textbook for Computer Vision. It is recommended to have a strong mathematical base to properly understand some of the sections. 46 | 2. [Multiple View Geometry in computer vision, Richard Hartley and Andrew Zisserman](http://cvrs.whu.edu.cn/downloads/ebooks/Multiple%20View%20Geometry%20in%20Computer%20Vision%20(Second%20Edition).pdf) - This book is specific to multi view geometry. One can refer to this book for more advanced topics. 47 | 3. [Computer Vision - A Modern Approach, David Forsyth and Jean Ponce](https://eclass.teicrete.gr/modules/document/file.php/TM152/Books/Computer%20Vision%20-%20A%20Modern%20Approach%20-%20D.%20Forsyth,%20J.%20Ponce.pdf) - Another book, that also talks about image processing and specific computer vision problems such as tracking, stereo problem, structure from motion, etc. 48 | 4. [Computer Vision for Visual Effects](https://cvfxbook.com/) - Apart from standard topics, it covers some special topics on image matting, motion capture and 3D data acquisition. Applications are centred around visual effects, used frequently in the movies and television industry. 49 | 50 | 51 | ## Other Lecture Series 52 | 53 | For more advanced concepts, one can refer to the following lecture courses selectively. 54 | 55 | 1. [Computer Vision for Visual Effects by Rich Radke, Rensselaer Polytechnique Institute](https://www.youtube.com/playlist?list=PLuh62Q4Sv7BUJlKlt84HFqSWfW36MDd5a) 56 | 2. [Photogrammetry Course by Cyrill Stachniss, University of Bonn](https://www.youtube.com/playlist?list=PLgnQpQtFTOGRsi5vzy9PiQpNWHjq-bKN1) 57 | 3. [Photogrammetric Computer Vision by Cyrill Stachniss, University of Bonn](https://www.youtube.com/playlist?list=PLgnQpQtFTOGTPQhKBOGgjTgX-mzpsOGOX) (A concise version for the course above) 58 | 3. [Multiple View Geometry by Daniel Cremers, Technical University Munich](https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4) 59 | 60 | 61 | ## Lecture Notes 62 | 63 | 1. [Computer Vision, Carnegie Mellon University](http://www.cs.cmu.edu/~16385/) 64 | 2. [Computer Vision Group, TUM Department of Informatics](https://vision.in.tum.de/teaching/ss2020?redirect=1) 65 | 3. [Computer Vision, University of Washington](https://courses.cs.washington.edu/courses/cse455/12wi/) 66 | 4. [Computer Vision, RWTH Aachen University](http://www.vision.rwth-aachen.de/course/11/) 67 | 68 | 69 | ## Publications 70 | 71 | It consists of a list of publications, survey papers and tutorials for some concepts that are usually covered in lectures and books. 72 | 73 | 1. [A Flexible New Technique for Camera Calibration](https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr98-71.pdf) 74 | 2. [An Efficient Solution to the Five - Point Relative Pose Problem](https://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.86.8769&rep=rep1&type=pdf) 75 | 3. [Determining the Epipolar Geometry and its Uncertainty: A Review](https://www.cs.auckland.ac.nz/courses/compsci773s1c/resources/IJCV-Review.pdf) 76 | 4. [Triangulation](https://users.cecs.anu.edu.au/~hartley/Papers/triangulation/triangulation.pdf) 77 | 5. [A Review of Solutions for Perspective - n - Point Problem in Camera Pose Estimation](https://www.researchgate.net/publication/328036802_A_Review_of_Solutions_for_Perspective-n-Point_Problem_in_Camera_Pose_Estimation) 78 | 6. [Euclidean Reconstruction from Constant Intrinsic Parameters](http://www1.maths.lth.se/matematiklth/vision/publdb/reports/pdf/heyden-astrom-i-96.pdf) 79 | 7. [Self - Calibration and Metric Reconstruction Inspite of Varying and Unknown Intrinsic Camera Parameters](https://www.researchgate.net/profile/Marc_Pollefeys/publication/225241106_Self-Calibration_and_Metric_Reconstruction_Inspite_of_Varying_and_Unknown_Intrinsic_Camera_Parameters/links/53f5cc320cf2fceacc6f6e3d.pdf) 80 | 8. [Bundle Adjustment - A Modern Synthesis](https://lear.inrialpes.fr/pubs/2000/TMHF00/Triggs-va99.pdf) 81 | 9. [A Survey on Structure from Motion](https://arxiv.org/pdf/1701.08493.pdf) 82 | 10. [Structure - from - Motion Revisited](https://openaccess.thecvf.com/content_cvpr_2016/papers/Schonberger_Structure-From-Motion_Revisited_CVPR_2016_paper.pdf) 83 | 11. [Multi - View Stereo: A Tutorial](https://carlos-hernandez.org/papers/fnt_mvs_2015.pdf) 84 | 12. [Image Matching from Handcrafted to Deep Features: A Survey](https://link.springer.com/article/10.1007/s11263-020-01359-2) 85 | 86 | -------------------------------------------------------------------------------- /conferences/README.md: -------------------------------------------------------------------------------- 1 | # Live Conference Deadline Tracker 2 | 1. [AI Conference Deadlines](https://aideadlin.es/?sub=ML,CV,NLP,RO,SP,DM) 3 | 4 | # Venues to Submit/Follow Research 5 | 6 | ## Robotics 7 | ### Conferences 8 | 1. [IEEE International Conference on Robotics and Automation (ICRA)](https://www.icra2020.org/): The biggest robotics conference 9 | 2. [International Conference on Intelligent Robots and Systems (IROS)](https://www.iros2020.org/): A close second 10 | 3. [Robotics: Science and Systems (RSS)](https://roboticsconference.org/): Good for more theoretical work 11 | 4. [International Symposium on Experimental Robotics (ISER)](https://link.springer.com/conference/iser): Good for more practical/experimental work 12 | 5. [International Symposium on Robotics Research (ISRR)](http://www.isrr2019.org/): Get direct entry into IJRR! 13 | 6. [Conference on Robot Learning (CoRL)](https://www.robot-learning.org/): This conference focusses on learning-based methods for robots 14 | 7. [International Conference on Autonomous Agents and Multiagent Systems (AAMAS)](https://aamas2020.conference.auckland.ac.nz/): Famous conference for multi-agent systems 15 | 16 | ### Journals 17 | 1. [Journal of Field Robotics (JFR)](https://www.journalfieldrobotics.org/JFR/Home.html): Highly reputed for more practical work 18 | 2. [The International Journal of Robotics Research (IJRR)](https://journals.sagepub.com/home/ijr): Highly reputed for theoretical robotics research 19 | 20 | ## Machine Learning 21 | ### Conferences 22 | 1. [Neural Information Processing Systems (NeurIPS)](https://neurips.cc/): Good for theoretical research in Machine Learning and Computational Neuroscience 23 | 2. [International Conference on Learning Representations (ICLR)](https://iclr.cc/): Good for theoretical research in Deep Learning and Representation Learning 24 | 3. [International Conference on Machine Learning (ICML)](https://icml.cc/): Good for theoretical research in Machine Learning, papers are published in JMLR 25 | 4. [Conference on Learning Theory (CoLT)](https://www.colt2020.org/): Pure theoretical machine learning conference 26 | 5. [Reinforcement Learning and Decision Making (RLDM)](http://rldm.org/): This is the only conference dedicated to pure RL 27 | 6. [Association for the Advancement of Artificial Intelligence (AAAI) Conference](https://www.aaai.org/Conferences/AAAI/aaai.php): Covers wide variety of topics in AI 28 | 7. [International Conference on Artificial Intelligence and Statistics (AISTATS)](https://www.aistats.org/): Theoretical conference for Statistics and Machine Learning 29 | 30 | ### Journals 31 | 1. [Journal of Machine Learning Research (JMLR)](http://www.jmlr.org/): Top journal for Machine Learning research 32 | 33 | For more conferences on Computer Vision and Pattern recognition: Go to this [Google Scholar](https://scholar.google.co.in/citations?view_op=top_venues&hl=en&vq=eng_artificialintelligence) page 34 | . 35 | ## Computer Vision 36 | ### Conferences 37 | 1. [IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)](http://cvpr2020.thecvf.com/): Highest-rated conference among all engineering disciplines 38 | 2. [European Conference on Computer Vision (ECCV) (even year)](https://eccv2020.eu/) / [IEEE/CVF International Conference on Computer Vision (ICCV) (odd year)](http://iccv2021.thecvf.com/home): Good for theoretical as well as application-based research in Computer Vision and Pattern Recognition 39 | 3. [British Machine Vision Conference (BMVC)](https://britishmachinevisionassociation.github.io/bmvc): Good for theoretical as well as application-based research in Computer Vision 40 | 4. [IEEE/CVF Winter Conference on Applications of Computer Vision (WACV)](http://wacv2021.thecvf.com/home): More focused towards applications in Computer Vision 41 | 5. [IEEE International Conference on Image Processing (ICIP)](https://2021.ieeeicip.org/) 42 | 43 | ### Journals 44 | 1. [IEEE Transactions on Pattern Analysis and Machine Intelligence (IEEE TPAMI)](https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=34) 45 | 2. [IEEE Transactions on Image Processing](https://ieeexplore.ieee.org/xpl/RecentIssue.jsp?punumber=83) 46 | 47 | For more conferences on Computer Vision and Pattern recognition: Go to this [Google Scholar](https://scholar.google.co.in/citations?view_op=top_venues&hl=en&vq=eng_computervisionpatternrecognition) page. 48 | -------------------------------------------------------------------------------- /controls-and-dynamics/README.md: -------------------------------------------------------------------------------- 1 | # Robot kinematics and dynamics 2 | 3 | #### Courses 4 | * [Introduction to Robotics by Oussama Khatib](https://see.stanford.edu/Course/CS223A): robotics foundations in kinematics, dynamics and control 5 | + The purpose of this course is to introduce you to basics of modeling, design, planning, and control of robot systems 6 | + In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control 7 | 8 | #### Books for reference 9 | * [A Mathematical Introduction to Robotic Manipulation - Richard M. Murray, CalTech](https://www.cds.caltech.edu/~murray/books/MLS/pdf/mls94-complete.pdf) 10 | * [Robot Dynamics Lecture Notes - Robotic Systems Lab, ETH Zurich](https://ethz.ch/content/dam/ethz/special-interest/mavt/robotics-n-intelligent-systems/rsl-dam/documents/RobotDynamics2017/RD_HS2017script.pdf) 11 | * [Nonlinear dynamics and Chaos by Steven Strogatz](https://g.co/kgs/6azKcp): This is a gem of a book. Not focused on robotic systems but the underlying concepts are universal 12 | 13 | # Control Theory 14 | ## Classical Control 15 | 16 | * [Classical Control Theory](https://www.youtube.com/watch?v=oBc_BHxw78s&list=PLUMWjy5jgHK1NC52DXXrriwihVrYZKqjk) by Brian Douglas. 17 | **_Why this lecture series? :_** 18 | This collection of videos is intended to supplement a first-year controls class, not replace it. Here the goal will be to take specific concepts in controls and expand on them to provide an intuitive understanding which will ultimately make one a better controls engineer. 19 | Let's take an example of a system that we want to control, say a simple pendulum (the most basic example), suppose we want the pendulum to go upright and stay there, well how do we achieve that? The most basic approach is using the knowledge from control systems to make it stay upright and be able to handle external disturbances for robustness. 20 | 21 | * [Control Bootcamp](https://www.youtube.com/playlist?list=PLMrJAkhIeNNR20Mz-VpzgfQs5zrYi085m) by Steve Brunton. 22 | **_Series info :_** This course provides a rapid overview of optimal control (controllability, observability, LQR, Kalman filter, etc.). It is not meant to be an exhaustive treatment, but instead provides a high-level overview of some of the main approaches, applied to simple examples in Matlab. 23 | 24 | **Note:** 25 | For beginners, It is recommended to first go through Brian Douglas (till video 27) course before starting Steve Brunton's course. 26 | 27 | * [Control of Mobile Robots](https://www.coursera.org/learn/mobile-robot/home/welcome) by Dr. Magnus Egerstedt. 28 | **_For whom ?:_** Whoever wants to explore the field of Control Theory, Motion, or path planning should surely have a look at this course to get a basic overview. This course will focus more on differential drive robots. 29 | **_What's good about this course ?:_** It is fairly different from the general long lectured continuous courses, it maintains a very good balance between theory and its implementation. The concepts are explained excellently using some elegant analogies. 30 | **_Course info:_** Course focuses on the problem of establishing control over a robot with the pursuit of making it move safely and optimally. The course covers the classic PID control and its applications in controlling a differential drive robot and then moves on to cover few concepts from the Classical Control Theory which helps span principles and fundamentals applicable for control of almost all types of dynamical systems. 31 | 32 | ## Advanced 33 | **Note: the focus of these courses is on math and algorithms. You will not study mechanical or electrical design of robots** 34 | 35 | * Underactuated Robotics by Russ Tedrake [[textbook](http://underactuated.csail.mit.edu/)] [[videos](https://www.youtube.com/channel/UChfUOAhz7ynELF-s_1LPpWg/playlists)]: Algorithms for Walking, Running, Swimming, Flying, and Manipulation 36 | + This course introduces nonlinear dynamics and control of underactuated mechanical systems, with an emphasis on computational methods 37 | + Topics include the nonlinear dynamics of robotic manipulators, applied optimal and robust control and motion planning 38 | + Discussions include examples from biology and applications to legged locomotion, compliant manipulation, underwater robots, and flying machines 39 | + Main topics covered Dynamic Programming, LQR, Lyapunov Analysis, Trajectory Optimization, Model Predictive Control, Motion Planning as Search, Pixels to Torques, Robust and Stochastic Control to State Estimation, Reinforcement Learning and few other 40 | * [Advanced Robotics by Peiter Abbeel](https://people.eecs.berkeley.edu/~pabbeel/cs287-fa19/): (optional, only for more conceptual understanding and depth) 41 | + Learn the math and algorithms underneath state-of-the-art robotic systems 42 | - The majority of these techniques are heavily based on optimization and probabilistic reasoning --- both areas with wide applicability in modern Artificial Intelligence. 43 | - An intended side-effect of the course is to generally strengthen your expertise in these areas 44 | + Be able to understand research papers in the field of robotics: 45 | - Main conferences: ICRA, IROS, RSS, CoRL, ISER, ISRR 46 | - Main journals: IJRR, T-RO, Autonomous Robots 47 | + Main topics covered: MDPs, Discretization of Continuous State Space MDPs, Function Approximation / Feature-based Representations, LQR, iterative LQR / Differential Dynamic Programming, Unconstrained Optimization, Constrained Optimization, Optimization-based Control: Collocation, Shooting, MPC, Contact-Invariant Optimization, Motion Planning: RRT, PRM, Trajopt, 3-d poses, Probability Review, Bayes Filters, Multivariate Gaussians, Kalman Filtering, EKF, UKF, Smoother, MAP, Maximum Likelihood, EM, KF parameter estimation, Particle Filters, POMDPs, Imitation Learning, Policy Gradients, Off-policy RL, Model-based RL, Physics simulators working, Sim2Real and few other 48 | 49 | ## Specific Control Methods 50 | 51 | ### PID control 52 | 53 | * [Understanding PID control](https://www.youtube.com/watch?v=wkfEZmsQqiA&list=PLn8PRpmsu08pQBgjxYFXSsODEF3Jqmm-y) from MATLAB. 54 | 55 | ### Sliding Mode Control 56 | 57 | * [Lecture](https://www.youtube.com/watch?v=v2CNRxG081w&list=PLJmxjP-2T4kthW4VjZn033DYF7Kp_ndt3) by Sarah Spurgeon. 58 | 59 | ### Adaptive Control 60 | 61 | * [Non-Linear & Adaptive Control](https://nptel.ac.in/courses/108/102/108102113/) (Nptel) lecture by Dr. Shubendu Bhasin. 62 | 63 | ### Pure Pursuit controller 64 | 65 | * [Pure pursuit explanation](https://www.ri.cmu.edu/pub_files/pub3/coulter_r_craig_1992_1/coulter_r_craig_1992_1.pdf) 66 | * [Coursera lecture](https://www.coursera.org/lecture/intro-self-driving-cars/lesson-2-geometric-lateral-control-pure-pursuit-44N7x) 67 | 68 | 69 | ## Books for Reference 70 | 71 | * [Robotics Modeling, Planning, and Controls](https://books.google.co.in/books/about/Robotics.html?id=VsTOQOnQjCAC&printsec=frontcover&source=kp_read_button&redir_esc=y#v=onepage&q&f=false) By Bruno Siciliano, Lorenzo Sciavicco, Luigi Villani, Giuseppe Oriolo. 72 | * [Modern Control Engineering](http://sharif.edu/~salarieh/Downloads/Modern%20Control%20Engineering%205th%20Edition.pdf) by Kastukio Ogota. 73 | * [Sliding Mode Control](https://books.google.co.in/books?hl=en&lr=&id=8U1ZDwAAQBAJ&oi=fnd&pg=PP1&dq=sarah+spurgeon+sliding+mode+control&ots=IwTbn51TCr&sig=1jw8ajRiCB2PQLp1iY7kHT6bAsk#v=onepage&q=sarah%20spurgeon%he20sliding%20mode%20control&f=false) by Christopher Edwards and Sarah Spurgeon. 74 | * [Non-Linear and adaptive control](https://books.google.co.in/books/about/Nonlinear_and_Adaptive_Control_Systems.html?id=fygdICP0g0kC&redir_esc=y) by Zhengato Din. (Good explanation of Backstepping). 75 | * [Robotics System](https://motion.cs.illinois.edu/RoboticSystems/) By Kris Hauser from University of Illinois 76 | 77 | 78 | ## Libraries, Tools and Frameworks 79 | 80 | * [ROS](https://www.ros.org/) 81 | * [Matlab & Simulink (For Windows)](https://in.mathworks.com/) 82 | * [CasADi](https://web.casadi.org/) 83 | * [Python Control Systems package](https://python-control.readthedocs.io/en/0.8.3/) 84 | * [C++ control toolbox](https://github.com/ethz-adrl/control-toolbox) 85 | * [Drake](https://drake.mit.edu/) 86 | * [OpenAI Gym](http://gym.openai.com/) (Some environments will need to be modified to implement control algorithms) 87 | 88 | 89 | ### Some Interesting Repositories to check out 90 | 91 | * [Python - Robotic Algorithms](https://github.com/AtsushiSakai/PythonRobotics) 92 | * [Robotics Planning, Dynamics and Control](https://github.com/YashBansod/Robotics-Planning-Dynamics-and-Control) 93 | * [MATLAB - Trajectory Optimization](https://github.com/MatthewPeterKelly/OptimTraj) 94 | * [TOWR](https://github.com/ethz-adrl/towr) (Trajectory Optimization Library for legged Robots) 95 | -------------------------------------------------------------------------------- /deep-learning/README.md: -------------------------------------------------------------------------------- 1 | # Deep Learning 2 | 3 | ## Roadmap to Deep Learning for Visual Recognition 4 | 5 | 1. Before jumping to learning-based techniques for vision, it is recommended to go through some of the fundamental concepts of Computer Vision. From our experience, we found [Introduction to Computer Vision](https://www.udacity.com/course/introduction-to-computer-vision--ud810) is a good starting point, and it covers some concepts like Image as function, filtering, convolution, etc. You can do this course upto *Lesson 4: Linearity and Convolution* before moving to DL. This builds a strong mathematical foundation about images and helps you to easily grasp DL later. You will understand about CNNs much easily after doing this course 6 | 2. Once you get a hang on computer vision concepts, it is advisable to go through some of the linear algebra concepts as well. Some of them include eigendecomposition, single value decomposition, matrix and vector norms (and other imp concepts. Refer [Deep Learning by Ian Goodfellow, Yoshua Bengio and Aaron Courville](https://www.deeplearningbook.org/) textbook for more references) 7 | 3. Python programming language will be used in most of the courses. If you dont know python then go through some tutorials like [this one by Corey Schafer](https://www.youtube.com/watch?v=YYXdXT2l-Gg&list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU). 8 | 4. Now, you are ready to start with the [Deep Learning Specialization by Andrew Ng](https://www.coursera.org/specializations/deep-learning). The foundation built through these courses are very essential. Make proper notes during the course. 9 | 5. Code your artificial neural networks and convolutional neural networks from scratch using numpy. These maybe covered within the course itself, so be sure to complete the course assignments with proper understanding. 10 | 6. You should now pickup a framework to work with. Most members of IvLabs prefer PyTorch. In case you have an inclination towards industry, TensorFlow is the way to go, whereas for research, you should go for PyTorch. 11 | 7. You can skip the *Sequence Modelling course of Deep Learning Specialization* and do it later if you are interested in Natural Language Processing (NLP) or signal processing. 12 | 8. Keep yourself updated with latest reasearch papers. Reddit and Twitter are highly recommended for this purpose. 13 | 9. Ask for support from seniors who have already worked on these fields. 14 | 15 | **NOTE for futher studies:** 16 | 17 | - If one's focus is to use deep learning for object detection, segmentation (feature level understanding) etc, then understanding only Image Processing is sufficient. [Digital image processing by Rafael C. Gonzalez](http://web.ipac.caltech.edu/staff/fmasci/home/astro_refs/Digital_Image_Processing_2ndEd.pdf) is a standard book to refer. 18 | - If one's focusing on deep learning for Computer Vision/Perception application then Image Processing and complete course on [Introduction to Computer Vision](https://www.udacity.com/course/introduction-to-computer-vision--ud810) is requisite. Perception includes concepts of 3D perspective, Stereo, Optical flow, object tracking, visual recognition, etc. which are all very important. In simple words, Image Processing is kinematics and Computer Vision is dynamics. Book on [Computer Vision: Algorithms and Applications by Richard Szeliski](http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf) is very good for reference and focuses more on mathematical approaches. 19 | - If one's focus goes further on Visual Recognition in the direction of Image-to-Image Translation or Image Synthesis, one can learn about Generative Adversarial Networks which use networks to learn Computer Vision in order to generate new images. The course on [Generative Adversarial Networks by Andrew Ng](https://www.coursera.org/specializations/generative-adversarial-networks-gans) requires basic knowledge and skills of Deep Learning with PyTorch. 20 | 21 | 22 | ## General Courses 23 | 24 | In these courses, you will learn the foundations of Deep Learning, understand how to build neural networks, and learn how to undertake Deep Learning projects systematically. 25 | 26 | ### Deep Learning 27 | 28 | 1. [Deep Learning Specialization by Andrew Ng](https://www.coursera.org/specializations/deep-learning) 29 | 2. [Deep Learning - IIT-Madras CS7015](https://www.cse.iitm.ac.in/~miteshk/CS7015.html) 30 | 3. [Deep Learning - Stanford CS230](https://cs230.stanford.edu/) 31 | 4. [Fast.ai](https://course.fast.ai/) 32 | 33 | ### Machine Learning 34 | 35 | 1. [Machine Learning by Andrew Ng](https://www.coursera.org/learn/machine-learning) 36 | 2. [Machine Learning - Stanford CS229](http://cs229.stanford.edu/) 37 | 3. [Fast.ai - Machine Learning](http://course18.fast.ai/ml) 38 | 39 | ### Vision 40 | 41 | 1. [Introduction to Computer Vision](https://www.udacity.com/course/introduction-to-computer-vision--ud810) 42 | 2. [CS231n: Convolutional Neural Networks for Visual Recognition](http://cs231n.stanford.edu/) 43 | 44 | ## Course Reviews 45 | 46 | ### [Deep Learning Specialization](https://www.coursera.org/specializations/deep-learning) 47 | 48 | The Deep Learning Specialization, presented by Andrew Ng, is a collection of five courses, each offering a good requiem of required concepts and implementations for almost all kinds of basic deep learning. The contents and goals of each of the courses are further explained below. 49 | 50 | 1. [Neural Networks and Deep Learning](https://www.coursera.org/learn/neural-networks-deep-learning?specialization=deep-learning) aims at explaining the basics of neural networks and deep learning, starting from very basic problems like linear and logistic regression. It helps one understand and actually implement neural networks and basic optimization algorithms from scratch, mainly in NumPy. Using an analogy, this course actually teaches you to bake from scratch including how to use an oven. 51 | 2. [Improving Deep Neural Networks](https://www.coursera.org/learn/deep-neural-network?specialization=deep-learning) focuses more on improving the performance of neural networks by employing efficient optimization and normalization algorithms. If the first course is a course that teaches you baking, then this one teaches you how and where to use which ingredient to get the best results. However, the last few assignments are based on TensorFlow. 52 | 3. [Structuring Machine Learning Projects](https://www.coursera.org/learn/machine-learning-projects?specialization=deep-learning) is a course that helps one develop an intuition as to which architectures and optimization algorithms would work best for a given machine learning problem. Further, it also covers the basics of transfer learning and multi-task learning. It is a course oriented more towards industrial and result oriented practices. So, this is a course that teaches you to industrialize your bakery. 53 | 4. [Convolutional Neural Networks](https://www.coursera.org/learn/convolutional-neural-networks?specialization=deep-learning) brings to the table, the most fundamental and powerful tools used in almost all kinds of deep learning problems that are coupled with image processing or even signal processing at times. The course covers all the basics and is almost a must for anyone planning to work with images and deep learning. The assignments are in NumPy and TensorFlow. So this course teaches you how to bake a cake because who doesn’t like cake. 54 | 5. [Sequence Models](https://www.coursera.org/learn/nlp-sequence-models) is a course that explains recurrent neural networks and other architectures and techniques used in applying deep learning on sequential data. It focuses more on Natural Language Processing and audio signal processing which is a completely different and rather nascent domain of deep learning. The assignments use NumPy. This is like learning to bake pizzas. 55 | 56 | A healthy approach, containing a good mix of results and fairly decent understanding would be to first complete the first two courses, then study the fourth one along with a bit of Image Processing and Computer vision followed by a small project using NumPy, from scratch, followed by an introductory project like [The Digit Classifier](http://www.ivlabs.in/mnist.html) using either PyTorch or TensorFlow. 57 | 58 | The fifth course can be a bit heavy if done before implementing a project or two using Image Processing and Deep Learning even though it deals with a very different paradigm. The third course, however, holds little potential with respect to research-oriented learning 59 | 60 | 61 | ## Books 62 | 63 | 1. [Deep Learning by Ian Goodfellow, Yoshua Bengio and Aaron Courville](https://www.deeplearningbook.org/) 64 | 2. [Digital image processing by Rafael C. Gonzalez](http://web.ipac.caltech.edu/staff/fmasci/home/astro_refs/Digital_Image_Processing_2ndEd.pdf) 65 | 3. [Computer Vision: Algorithms and Applications by Richard Szeliski](http://szeliski.org/Book/drafts/SzeliskiBook_20100903_draft.pdf) 66 | 67 | 68 | ## Blog Posts/Tutorials 69 | 70 | 1. [Lilian Weng](https://lilianweng.github.io/lil-log/) 71 | 72 | 73 | ## Framework Tutorials 74 | 75 | 1. TensorFlow 76 | - [TensorFlow in Practice Specialization](https://www.coursera.org/specializations/tensorflow-in-practice) 77 | - [Sentdex TensorFlow/Keras playlist](https://www.youtube.com/playlist?list=PLQVvvaa0QuDfhTox0AjmQ6tvTgMBZBEXN) 78 | 2. PyTorch 79 | - [PyTorch Official Tutorials](https://pytorch.org/tutorials/) 80 | - [PyTorch Documentation](https://pytorch.org/docs/stable/index.html) 81 | - [Deeplizard Pytorch Playlist](https://youtube.com/playlist?list=PLZbbT5o_s2xrfNyHZsM6ufI0iZENK9xgG) 82 | - [Sentdex PyTorch playlist](https://www.youtube.com/playlist?list=PLQVvvaa0QuDdeMyHEYc0gxFpYwHY2Qfdh) 83 | -------------------------------------------------------------------------------- /embedded-systems/README.md: -------------------------------------------------------------------------------- 1 | # Embedded Systems 2 | 3 | ## Firmware Development 4 | 5 | ### Beginner Level 6 | 7 | * [C Programming For Microcontrollers Featuring ATMEL's Butterfly and the Free WinAVR Complier](http://dsp-book.narod.ru/CPMicro.pdf) 8 | **_Why this book?:_** 9 | This book starts from the absolute basics. It presents C programming with an assumption that you are completely new to the programming scene, while simultenously ensuring a healthy level to technical recourse. It is a quick and easy read; with a lot of code and project examples. **_What to keep in mind?:_** 10 | Both the butterfly board and the WinAVR compilers are outdated and suitable substitutes might be found to follow the book properly. 11 | **_Estimated Time to complete:_** 12 | 20 hours 13 | 14 | * [Tiva Launchpad Workshop](https://processors.wiki.ti.com/index.php/Getting_Started_with_the_TIVA%e2%84%a2_C-Series_TM4C123G_LaunchPad?DCMP=tivac&HQS=TM4C123G-Launchpad-Workshop) 15 | **_Why this workshop?:_** 16 | This workshop will give you in-depth knowledge on how to use a microcontroller. It covers topics like ADC, PWM as well as topics like USB and DMA. The second chapter also serves as an introduction to the tools available to make programming a microcontroller easy. 17 | **_Estimated Time to complete:_** 18 | 20 hours 19 | 20 | #### Optional Hardware 21 | 22 | * [TI Tiva C Series ARM-M4 Development Kit](https://www.ti.com/tool/EK-TM4C123GXL) 23 | 24 | ### Intermediate Level 25 | 26 | * [AVR Hardware Design Considerations Application Note from Atmel](http://ww1.microchip.com/downloads/en/appnotes/atmel-2521-avr-hardware-design-considerations_applicationnote_avr042.pdf) 27 | **_Why this Document?:_** 28 | Every microcontroller needs a power supply, a crystal and a debugging/programming interface to get started. This application note describes how to design these for the simplest possible controller. It also covers some basics of PCB layout and electromagnetic noise. 29 | **_Estimated Time to complete:_** 30 | 30-60 mins 31 | 32 | * [TI RTOS Workshop](https://training.ti.com/getting-started-ti-rtos-workshop-agenda?context=1134422-1139820) 33 | **_Why this Workshop?:_** 34 | RTOS is one of the fundamental pieces of embedded software. This workshop gives a good understanding of RTOSes in general and TI RTOS in particular. 35 | **_Estimated Time to complete:_** 36 | 20 hours 37 | 38 | ## Hardware Design 39 | 40 | ### Tools 41 | 42 | * [Kicad](https://kicad-pcb.org/): KiCad is a free open-source **schematics entry** and **PCB Layout** tool. It is a professional grade tool developed, maintained and used by CERN. 43 | * [NGSPICE](http://ngspice.sourceforge.net/ngspice-eeschema.html): NGSPICE is a SPICE based **circuit simulator** mainly used in academic settings. 44 | 45 | ### Resources 46 | 47 | * [Kicad Tutorials](https://www.youtube.com/watch?v=vaCVh2SAZY4&list=PL3bNyZYHcRSUhUXUt51W6nKvxx2ORvUQB) 48 | **_Why this playlist?:_** 49 | This tutorial was produced by Digikey, one of the leading vendors of electronics components and an active supporter of Kicad. It has great production values and has easy to follow step by step screen captures. 50 | **_Estimated Time to complete:_** 51 | 3 hours 52 | 53 | ## Reference Design Archives 54 | 55 | * [Digikey Reference Design Library](https://www.digikey.in/reference-designs/en) 56 | * [Texas Instruments Reference Design Library](https://www.ti.com/reference-designs/index.html) 57 | * [NXP Designs](https://www.nxp.com/design/designs:REFDSGNHOME#/) 58 | 59 | ## Forums, Trade Magazines etc 60 | 61 | * [EEVBlog](https://www.youtube.com/user/EEVblog): Excellent video blog for Electronics Design. The host, Dave Jones, covers various electronics topics as well as tears down different devices and explains what's inside. 62 | * [Embedded.com](https://www.embedded.com/): The go to trade magazine for embedded systems. Covers everything from current economic trends to new design techniques. 63 | 64 | ## Tips 65 | 66 | * When learning about embedded systems, try to explore atleast 2-3 controllers. 67 | * Keep an eye on similarities between different controllers. 68 | * Search for and read application notes from microcontroller manufacturers and vendors. 69 | * Most manufacturers have a wealth of reference projects with schematics and documents on their websites. Take a look at those instead of hobby electronics sites. 70 | -------------------------------------------------------------------------------- /graph-representation-learning/README.md: -------------------------------------------------------------------------------- 1 | # Graph Representation Learning 2 | 3 | ## Courses 4 | 5 | 1. [CS224W: Machine Learning with Graphs](https://www.youtube.com/playlist?list=PLoROMvodv4rPLKxIpqhjhPgdQy7imNkDn) 6 | This course, starts with a basic overiview of graph thoery before diving deep into all the significant development in GraphML field. 7 | 8 | 2. [Week 13 – Lecture: Graph Convolutional Networks (GCNs)](https://youtu.be/Iiv9R6BjxHM) 9 | This is not a course but rather a lecture by Xavier Bresson taken from NYU Deep Learning course. It will give brief insight about different methods in GraphML. 10 | 11 | 3. [Graph Neural Networks](https://gnn.seas.upenn.edu/) 12 | 13 | ## Books 14 | 1. [Graph Representation Learning](https://www.cs.mcgill.ca/~wlh/grl_book/files/GRL_Book.pdf) 15 | 2. [Network Science](http://networksciencebook.com/) 16 | 17 | 18 | ## Blog Posts 19 | 1. [How to get started with Graph Machine Learning](https://gordicaleksa.medium.com/how-to-get-started-with-graph-machine-learning-afa53f6f963a) 20 | A perfect guide to get started in this field. 21 | 22 | 2. [A Gentle Introduction to Graph Neural Networks](https://distill.pub/2021/gnn-intro/) 23 | 3. [An Illustrated Guide to Graph Neural Networks](https://medium.com/dair-ai/an-illustrated-guide-to-graph-neural-networks-d5564a551783) 24 | 4. [Graph Neural Networks for Novice Math Fanatics](https://rish16.notion.site/Graph-Neural-Networks-for-Novice-Math-Fanatics-c51b922a595b4efd8647788475461d57) 25 | 26 | 27 | ## Research Papers 28 | These repositiories have collection of graph representation learning papers. 29 | 1. [Awesome-Graph-Neural-Networks](https://github.com/GRAND-Lab/Awesome-Graph-Neural-Networks) 30 | 2. [GNNPapers](https://github.com/thunlp/GNNPapers) 31 | -------------------------------------------------------------------------------- /iot/README.md: -------------------------------------------------------------------------------- 1 | # IoT 2 | 3 | IoT deals with all manner of conventional devices made smart and connected, so they can be made more convenient to use. Applications can range from increasing convenience, like connecting a light bulb to your phone, so you don’t have to move to switch it on and off, to safety applications to detect and warn users about harmful gases, and the like. 4 | 5 | 6 | ## Course 7 | 8 | [Android Programming Nanodegree](https://www.udacity.com/course/android-developer-nanodegree-by-google--nd801) 9 | 10 | This requires knowledge of embedded linux (on Raspberry Pi, and other SBCs), Python (The de-facto language for an RPi), microcontrollers, network Connectivity (Firebase, LAN systems), and App Development. The course mentioned is the Android Development Nanodegree, which will give you a fair base to start developing for android. Apart from this, use linux as your daily driver OS, do as much stuff as you can from a terminal (You will mostly SSH into an RPi, no GUI), and you should be fine.Since IoT projects involve wrangling with a whole host of APIs, SDKs and other stuff, there are no courses that encompass it fully, but an app is almost always part of the loop. 11 | 12 | **Example:** The next version of the Sahayak Robot, will be capable of remote control from a smartphone, with a live video feed, and video chatting with the patients. 13 | 14 | ## Books 15 | 16 | [IoT For Architects](https://www.amazon.in/Internet-Things-Architects-communication-infrastructure/dp/1788470591) 17 | 18 | This book encompasses the entire spectrum of IoT solutions, from sensors to the cloud. it starts by examining modern sensor systems and focus on their power and functionality. After that, diving deep into communication theory, paying close attention to near-range PAN, including the new Bluetooth 5.0 specification and mesh networks. Then, IP-based communication in LAN and WAN, including 802.11ah, 5G LTE cellular, SigFox, and LoRaWAN. Next, it covers edge routing and gateways and their role in fog computing, as well as the messaging protocols of MQTT and CoAP. 19 | 20 | -------------------------------------------------------------------------------- /ivlabs-black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvLabs/resources/bbed765df0fbfa2f0c9e8393c489d1ed3bc8cb0b/ivlabs-black.png -------------------------------------------------------------------------------- /mathematics/README.md: -------------------------------------------------------------------------------- 1 | # Mathematics 2 | 3 | ## Probablity 4 | 5 | ### Courses 6 | 7 | 1. [Prof. Krishna Jagannathan's NPTEL course](https://nptel.ac.in/courses/108106083/) 8 | 2. [Prof. John Tsitsiklis' MIT OCW Probablistic Systems Analysis and Applied Probability](https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-041-probabilistic-systems-analysis-and-applied-probability-fall-2010/index.htm) 9 | 3. [Convex Optimization by Stephen P. Boyd](https://see.stanford.edu/Course/EE364A) 10 | 11 | 12 | ### Books 13 | 14 | 1. [Grimmett and Stirzaker](http://home.ustc.edu.cn/~zt001062/PTmaterials/Grimmett&Stirzaker--Probability%20and%20Random%20Processes%20%20Third%20Ed(2001).pdf) 15 | 2. [John Tsitsiklis's selected study material from his book](https://ocw.mit.edu/resources/res-6-012-introduction-to-probability-spring-2018/part-i-the-fundamentals/MITRES_6_012S18_Textbook.pdf) 16 | 3. [Convex Optimization](https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf) 17 | 18 | ### Notes 19 | 1. [Probability theory, stochastic processes and mathematical statistics notes by Gordan Zitkovic](https://web.ma.utexas.edu/users/gordanz/lecture_notes_page.html) 20 | 21 | ## Measure Theory 22 | 1. [MATH 587/589](http://problab.ca/louigi/courses/2020/math589/probnotes.pdf) 23 | 24 | 25 | ## Linear Algebra 26 | 27 | ### Courses 28 | 1. [Gilbert Strang's Lecture Series](https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/) 29 | 2. [Fastai's Numerical Linear Algebra Course](https://github.com/fastai/numerical-linear-algebra/blob/master/README.md) 30 | 3. [3blue1brown's Visual Essence of Linear Algebra](https://www.youtube.com/playlist?list=PLZHQObOWTQDPD3MizzM2xVFitgF8hE_ab) 31 | 32 | ### Books 33 | 1. [Gilbert Strang's Introduction to Linear Algebra](https://math.mit.edu/~gs/linearalgebra/) 34 | 35 | 36 | ## Multi-variable Calculus 37 | 38 | ### Courses 39 | 1. [Khan Academy's Multi-variable Calculus](https://www.youtube.com/watch?v=TrcCbdWwCBc&list=PLSQl0a2vh4HC5feHa6Rc5c0wbRTx56nF7) 40 | 2. [Multi-variable Calculus by Prof. Denis Aurox](https://ocw.mit.edu/courses/mathematics/18-02-multivariable-calculus-fall-2007/) 41 | 42 | 43 | ## Robotics 44 | 45 | ### Courses 46 | 1. [Math Fundamentals for Robotics by Michael Erdmann](http://www.cs.cmu.edu/~me/811/) 47 | 2. [Modern Robotics by Northwestern University](http://hades.mech.northwestern.edu/index.php/Modern_Robotics) also available on [Youtube](https://www.youtube.com/watch?v=9usycd3tnCk&list=PLggLP4f-rq02vX0OQQ5vrCxbJrzamYDfx&index=2) 48 | 49 | ## Machine Learning 50 | 1. [Maths For Machine Learning](https://mml-book.github.io/book/mml-book.pdf) 51 | -------------------------------------------------------------------------------- /motion-planning/README.md: -------------------------------------------------------------------------------- 1 | # Motion Planning 2 | 3 | ## Courses 4 | 5 | ### Beginner level 6 | 7 | 1. [Autonomous Mobile Robots](https://www.edx.org/course/autonomous-mobile-robots) 8 | 2. [Robotics Motion Planning](https://www.coursera.org/learn/robotics-motion-planning) 9 | 3. [CS50S](https://www.edx.org/course/cs50s-introduction-to-artificial-intelligence-with-python) 10 | 11 | ### Intermediate 12 | 13 | 1. [Self Driving Cars](https://www.coursera.org/learn/motion-planning-self-driving-cars) 14 | 15 | 16 | ## Books 17 | 18 | 1. [Robot motion planning intro](http://ais.informatik.uni-freiburg.de/teaching/ss11/robotics/slides/18-robot-motion-planning.pdf) 19 | 2. [Principles of robot motion](http://biorobotics.ri.cmu.edu/book/) 20 | 3. [Planning Algorithms by S. M. Lavalle](http://planning.cs.uiuc.edu/booka4.pdf) 21 | 4. [Probabilistic robotics by S. Thrun](https://docs.ufpr.br/~danielsantos/ProbabilisticRobotics.pdf) 22 | 5. [Object oriented planning](https://www.diva-portal.org/smash/get/diva2:7803/FULLTEXT01.pdf) 23 | 6. [Autonomous mobile robots by R. Siegwart, Nourbakhsh](http://home.deib.polimi.it/gini/robot/docs/siegwart.pdf) 24 | 7. [Artificial Intelligence: A Modern Approach by Stuart Russell and Peter Norvig](http://aima.cs.berkeley.edu/) 25 | 26 | 27 | ## Path planning Thesis 28 | 29 | 1. [KTH Karl Kurzer](https://www.researchgate.net/profile/Karl_Kurzer/publication/337719881_Path_Planning_in_Unstructured_Environments_A_Real-time_Hybrid_A_Implementation_for_Fast_and_Deterministic_Path_Generation_for_the_KTH_Research_Concept_Vehicle/links/5de6b10292851c83645fc109/Path-Planning-in-Unstructured-Environments-A-Real-time-Hybrid-A-Implementation-for-Fast-and-Deterministic-Path-Generation-for-the-KTH-Research-Concept-Vehicle.pdf) 30 | 31 | 32 | ## Important libraries and webpages 33 | 34 | 1. [OMPL](https://ompl.kavrakilab.org/) 35 | 2. [RRT](http://msl.cs.uiuc.edu/rrt/) 36 | 3. [CMU motion planning course homepage](http://www.cs.cmu.edu/~./motionplanning/) 37 | 4. [ROS MoveIt](https://moveit.ros.org/documentation/planners/) 38 | 5. [BehaviorTree.CPP](https://www.behaviortree.dev/) 39 | 40 | 41 | ## Important publications and research groups 42 | 43 | 1. [Publications of Jean-Claude Latombe](http://ai.stanford.edu/~latombe/pub.htm) 44 | 2. [Autonomous Driving in Traffic: Boss and the Urban Challenge](https://www.aaai.org/ojs/index.php/aimagazine/article/view/2238) 45 | 3. [A behavioral planning framework for autonomous driving](https://ieeexplore.ieee.org/abstract/document/6856582) 46 | 4. [HKUST Aerial Robotics Group](https://uav.hkust.edu.hk/) 47 | 5. [Search-Based Planning Lab](http://www.sbpl.net/) 48 | -------------------------------------------------------------------------------- /natural-language-processing/README.md: -------------------------------------------------------------------------------- 1 | # Natural Language Processing 2 | 3 | ## Courses 4 | These courses will help you understand the basics of Natural Language Processing along with enabling you to read and implement papers. 5 | 1. [Sequence Models](https://www.coursera.org/learn/nlp-sequence-models) 6 | This course, like all the other courses by Andrew Ng (on Coursera) is a simple overview or montage of NLP. It will prolly give you some confidence but since the assignments have a lot of readymade code, which once you see, you cannot unsee. Also, if you try reading a paper on NLP, you will not be able to do so (if all your knowledge comes from this course). So all in all, it is a simple, basic and gentle scratch on the surface. 7 | 8 | 2. [CS224n: Natural Language Processing with Deep Learning](http://web.stanford.edu/class/cs224n/) 9 | This is one of the most rigorous courses on NLP and it starts from the very basics and scales up almost all the way to SOTA (since it is a relatively new course). It has a good amount of depth of concept and reasonable math. The best part is that they provide you with concepts and let you figure out how to implement them. This is very very helpful in the long run and once you are done with like 12-13 lectures of this course, you can actually read, understand and implement papers right from scratch in PyTorch. 10 | **Note:** This course may seem to be boring in the beginning but the concepts (which may seem too rudimentary) taught in the lectures really go a long way. 11 | 12 | 3. [Natural Language Processing by National Research University, Russia](https://www.coursera.org/learn/language-processing) 13 | This course aims to teach you Natural Language Processing from the ground up, starting from dated statistical methods, and covering everything upto the latest Deep Learning based techniques. The quizzes test mathematical and theoritical knowledge, and the programming assignments make you build stuff. These result in a good blend of theory and practice, which can help if you're the kind that gets bored of just studying and not doing. The final project is enticing and will require you to deploy a telegram chatbot on an AWS machine, which gives you real world experience of how these systems run in production. 14 | 15 | ## More Courses 16 | 1. [Natural Language Processing Specialization by Coursera](https://www.coursera.org/specializations/natural-language-processing?) 17 | 3. [Fast.ai - NLP](https://www.fast.ai/2019/07/08/fastai-nlp/) 18 | 4. [Hugging Face Course](https://huggingface.co/course/chapter1) 19 | 20 | ## Tutorials/Implementations 21 | 1. [IvLabs' Natural Language Processing Repository](https://github.com/IvLabs/Natural-Language-Processing) 22 | 2. [NLP From Scratch: Generating names with a character-level RNN](https://pytorch.org/tutorials/intermediate/char_rnn_generation_tutorial.html) 23 | 3. [ Sequence-to-Sequence Modeling with nn.Transformer and TorchText](https://pytorch.org/tutorials/beginner/transformer_tutorial.html) 24 | 4. [NLP From Scratch: Translation with a Sequence to Sequence Network and Attention](https://pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html) 25 | 5. [PyTorch Seq-2-Seq](https://github.com/bentrevett/pytorch-seq2seq) 26 | 27 | ## Blog Posts 28 | 1. [Introduction to Word Embedding and Word2Vec](https://towardsdatascience.com/introduction-to-word-embedding-and-word2vec-652d0c2060fa) 29 | 2. [Illustrated Word2Vec](http://jalammar.github.io/illustrated-word2vec/) 30 | 3. [Illustrated: Self-Attention](https://towardsdatascience.com/illustrated-self-attention-2d627e33b20a) 31 | 4. [The Illustrated Transformer](http://jalammar.github.io/illustrated-transformer/) 32 | 33 | ## Research Papers 34 | Notes for some of the below-mentioned papers can be found [here](https://github.com/IvLabs/ResearchPaperNotes/tree/master/natural_language_processing). 35 | 1. [Sequence to Sequence Learning with Neural Networks](https://arxiv.org/abs/1409.3215) 36 | 2. [Neural Machine Translation by Jointly Learning to Align and Translate](https://arxiv.org/abs/1409.0473) 37 | 3. [Convolutional Sequence to Sequence Learning](https://arxiv.org/abs/1705.03122) 38 | 4. [Attention Is All You Need](https://arxiv.org/abs/1706.03762) 39 | 5. [BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding](https://arxiv.org/abs/1810.04805) 40 | 6. [Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks](https://arxiv.org/abs/1908.10084) 41 | -------------------------------------------------------------------------------- /physics/README.md: -------------------------------------------------------------------------------- 1 | # Physics 2 | This discipline of science is quite different and even nascent with regards to IvLabs. However, we are open to contributions and collaborations. 3 | 4 | ## Special Relativity 5 | The below mentioned resources help one understand the special theory of relativity, from scratch and do not really require any pre-requisites. 6 | 7 | ### Course(s) 8 | #### [Advance Course on Special Theory of Relativity by Dr. H. C. Verma](https://www.youtube.com/playlist?list=PL8g67naApM8i21RucyrHYqyVwmurwA1UC) 9 | Unlike what the the name suggests, the course is a rather gentle and basic introduction to the theory of special relativity. The simplicity of the course is mainly due to the fact that, the special theory of relativity itself, is a simple yet elegant theory. 10 | 11 | ### Book(s) 12 | * [A Primer of Special Relativity by P. L. Sardesai](books/A%20Primer%20of%20Special%20Relativity.pdf) 13 | 14 | 15 | ## Quantum Mechanics 16 | 17 | This subject is the stepping stone to an entire flight of steps towards almost every modern science, right from Quantum Chromodynamics to Quantum Computing. However, the resources provided below, do not demand any pre-requisites as such. 18 | 19 | 20 | ### Course(s) 21 | #### [Quantum Physics I by Dr. Barton Zwiebach](https://ocw.mit.edu/courses/physics/8-04-quantum-physics-i-spring-2016/) 22 | This courses focuses on delivering a scientifically pure approach towards Quantum Mechanics which can later be manifested and utilized in understanding and working on Quantum Computing. This course covers everything from the very grass-root level of concepts and helps develop a pretty concrete understanding and intuition for almost all aspects of modern physics backed by Quantum Mechanics. It is presented by MIT OCW and the instructor in charge is Dr. Barton Zweibach. 23 | 24 | ### Book(s) 25 | * [Quantum Mechanic by D. J. Griffiths](books/Quantum%20Mehcanics%20by%20D.%20J.%20Griffiths.pdf) 26 | 27 | ## Relativistic Quantum Mechanics 28 | This is an advanced subject and is a rather mystic and unexplored(relatively) field of physics. Further, the resources too, can prove to be demotivating to a beginner without proper pre-requisites. 29 | 30 | ### Pre-requisites 31 | * [Tensor Calculus](https://www.youtube.com/playlist?list=PLSuQRd4LfSUTmb_7IK7kAzxJtU2tpmEd3) 32 | * [Special Relativity](#special-relativity) 33 | * [Quantum Mechanics](#quantum-mechanics) 34 | 35 | ### Course(s) 36 | [Relativistic Quantum Mechanics by Dr. Apoorva D Patel](https://www.youtube.com/playlist?list=PLbMVogVj5nJTDMhThY9xu2Tvg0u1RPuxO) 37 | This course is quite fast and requires a strikingly good hold over the above mentioned pre-requisites. The concepts too, are not given much physical emphasis at times and that cannot really be blamed on the course but rather, is an obvious consequence of the nature of the subject. The book by Dr. Greiner is a gentle and friendlier resource. 38 | 39 | ### Book(s) 40 | * [Relativistic Quantum Mechanics by Dr. Walter Greiner](books/Relativistic%20Quantum%20Mechanics%20by%20Dr.%20Walter%20Greiner.pdf) 41 | * [Relativistic Quantum Fields by James D. Bjorken, Sidney D. Drell](books/Relativistic%20Quantum%20Fields%20by%20James%20D.%20Bjorken,%20Sidney%20D.%20Drell.pdf)* 42 | 43 | 44 | \**The resource is a bit advanced or varies in perspective with regards to other resources* 45 | -------------------------------------------------------------------------------- /physics/books/A Primer of Special Relativity.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvLabs/resources/bbed765df0fbfa2f0c9e8393c489d1ed3bc8cb0b/physics/books/A Primer of Special Relativity.pdf -------------------------------------------------------------------------------- /physics/books/Quantum Mehcanics by D. J. Griffiths.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvLabs/resources/bbed765df0fbfa2f0c9e8393c489d1ed3bc8cb0b/physics/books/Quantum Mehcanics by D. J. Griffiths.pdf -------------------------------------------------------------------------------- /physics/books/Relativistic Quantum Fields by James D. Bjorken, Sidney D. Drell.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvLabs/resources/bbed765df0fbfa2f0c9e8393c489d1ed3bc8cb0b/physics/books/Relativistic Quantum Fields by James D. Bjorken, Sidney D. Drell.pdf -------------------------------------------------------------------------------- /physics/books/Relativistic Quantum Mechanics by Dr. Walter Greiner.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/IvLabs/resources/bbed765df0fbfa2f0c9e8393c489d1ed3bc8cb0b/physics/books/Relativistic Quantum Mechanics by Dr. Walter Greiner.pdf -------------------------------------------------------------------------------- /programming-languages/README.md: -------------------------------------------------------------------------------- 1 | # Programming Languages 2 | 3 | ##### Table of Contents 4 | 5 | [Python](#python) 6 | * [Tutorials](#tutorials) 7 | * [IDES](#ides) 8 | * [Tools](#tools) 9 | * [Notable Libraries](#notable-libraries) 10 | * [Inbuilt Libraries](#inbuilt-libraries) 11 | 12 | [C++](#c) 13 | * [Tutorials](#tutorials-1) 14 | * [Books and Reference Material](#books-and-reference-material) 15 | * [Tools](#tools) 16 | * [Channels](#channels) 17 | * [Tools](#tools-1) 18 | 19 | [Java](#java) 20 | * [Tutorials](#tutorials-2) 21 | * [Books and Reference Material](#books-and-reference-material-1) 22 | * [Channels](#channels-1) 23 | * [IDEs](#ides-1) 24 | 25 | 26 | ## Python 27 | A high level, interpreted, dead-simple, reads-like-english programming language used for a multitude of tasks, from Machine Learning/Data Analysis to deploying Full-Stack Websites. 28 | 29 | The [official website](https://www.python.org/) offers further resources, including talks, podcasts, conferences and the like. 30 | 31 | ### Tutorials 32 | 33 | * [Sentdex Python Tutorial Series](https://www.youtube.com/playlist?list=PLQVvvaa0QuDe8XSftW-RAxdo6OmaeL85M): A collection of short videos that deal with everything from installing python, through loops, control flow, functions, upto usage of the package manager pip. Beyond this, the tutorial deals with specific use cases which may be skipped. It is highly recommended that you code along with the videos. 34 | 35 | * [Python for everybody series on Coursera or py4e.com](https://py4e.com): This Specialization builds on the success of the Python for Everybody course and will introduce fundamental programming concepts including data structures, networked application program interfaces, and databases, using the Python programming language. In the Capstone Project, you’ll use the technologies learned throughout the Specialization to design and create your own applications for data retrieval, processing, and visualization. 36 | 37 | * [Corey Schafer Python Series](https://youtu.be/YYXdXT2l-Gg): One of the most elegant courses on python. Covers python from basic to intermediate. Covers topics like generators, threading on top of all the basic concepts. It is highly recommended that you code along with the videos. 38 | 39 | ### IDEs 40 | 41 | * [JetBrains' PyCharm](https://www.jetbrains.com/pycharm/): Fully featured Python IDE, offering powerful autocomplete, virtual environment support, comprehensive debugging, and notebook support. Users of other JetBrains IDEs will feel right at home. A student email-id will give you free access to the Professional Version that includes a specific mode for data science. 42 | * [Jupyter Notebooks/ JupyterLab](https://jupyter.org/): Code in true interactive fashion, as you execute blocks and see outputs of unfinished code, which will help you code further. Runs in a browser, and a pip install is all that is required to get it. 43 | * [vscode](https://code.visualstudio.com/): A lightweight, extensible IDE with support for autocomplete, error-checking,git, ssh support and ipynb notebooks. It has a very powerful debugger and a long list of useful extensions/plugins. This is the favourite IDE of most of the developers and data scientists. 44 | 45 | ### Tools 46 | 47 | * **Environment/Dependency management**: [Conda](https://docs.conda.io/) or [venv](https://docs.python.org/3/library/venv.html) are typically used to isolate multiple python environments, so you don't end up with conflicting dependencies for different projects. This is highly recommended. It may seem like an inconvenience at first, but will save you a lot of time later on. Conda is recommended for ML/DL related work, because this can handle CUDA and CUDNN within the Virtual Environment, and a system-wide install is not required. Conda environments take up much more space than their venv counterparts. 48 | 49 | ### Notable Libraries: 50 | * [NumPy](https://numpy.org/): Handles all sorts of Linear Algebra, and it's data-types are used in most other mathematical libraries. 51 | * [Matplotlib](https://matplotlib.org/): Plots and Visualizes all of your data. 52 | * [Pandas](https://pandas.pydata.org/): Can be used for handling data files such as .csv, .xlsx. Has deep integration with NumPy and Matplotlib. 53 | 54 | ### Inbuilt Libraries 55 | It is highly recommended to take the time and get familiar with the standard library (of sorts) of Python. The included tools like itertools, collections, and others. They provide implementations of all sorts of cumbersome things, like sorting, min/max, list comprehension and others, as functions. These will help you write code in true Python fashion, abstracting out everything but your main business logic. 56 | **Before writing cumbersome/boilerplate code, Google.** 57 | 58 | ## C++ 59 | 60 | ### Tutorials 61 | 62 | * [C++ Tutorials - Tutorialspoint ](https://www.tutorialspoint.com/cplusplus/index.htm) 63 | * **_Why this Tutorial?_** Live Online Coding !!! 64 | * **_What to keep in mind?_** This tutorial only helps you understand the syntax of C++. To effective, one must follow this tutorial up with sources. 65 | * [Modern C++](https://youtube.com/playlist?list=PLgnQpQtFTOGRM59sr3nSL8BmeMZR9GCIA) 66 | * **_Why this Tutorial?_** Excellent playlist for modern C++ (C++ 17 and afterwards) with a basic introduction to CMake build system. Provides lucid explanation of advanced topics like Smart/Shared pointers, Memory management. Earlier version of this course can be found [here](https://youtube.com/playlist?list=PLgnQpQtFTOGR50iIOtO36nK6aNPtVq98C). 67 | 68 | 69 | ### Books and Reference Material 70 | 71 | * [Effective Modern C++](https://www.oreilly.com/library/view/effective-modern-c/9781491908419/) 72 | * **_Why this book?_** The effective C++ series of books have been hailed as one of the best references for good C++ coding practices. It also provides a good introduction to several new language features. 73 | * [Tour of C++ Bjarne Stroustrup](https://isocpp.org/tour) 74 | * **_Why this book?_** This provides the user with a general overview of C++. It talks about the different features about the language and how they can be used to support different programming paradigms. 75 | * **_What to keep in mind?_** This book is not meant for beginners of C++. It is also not a complete reference for the language. 76 | 77 | ### Channels 78 | 79 | * [CppCon Talks](https://www.youtube.com/user/CppCon) 80 | * [C++ Weekly by Jason Turner](https://www.youtube.com/user/lefticus1) 81 | 82 | ### Tools 83 | 84 | * [Compiler Explorer](https://godbolt.org/): Online C++ compiler. It lets you compile small code snippets and look at the generated assembly code. It supports different compilers across various architectures ranging from x86 to Arduinos. 85 | * [JetBrains CLion](https://www.jetbrains.com/clion/): One of the best C++ IDEs. CLion works on CMake making it easy to use with roscpp. 86 | 87 | 88 | ## Java 89 | 90 | Java is a powerful programming language that has greatly impacted the development world and is used in all types of technologies. Java can be used to make apps for the web and mobile! 91 | 92 | Check out the [official website](https://www.java.com/en/) to find out more! 93 | 94 | ### Tutorials 95 | 96 | * [w3schools](https://www.w3schools.com/java/default.asp): w3schools is a really great resource to learn any part of web development. In this tutorial, you will learn the basics of Java, important programming concepts such as methods and classes, and real life projects you can make yourself! 97 | 98 | * [Java Code Academy Course](https://www.codecademy.com/learn/learn-java): Learn Java in this hands on course. In this course, you'll learn important Java concepts such as variables, arrays, strings, and more! By the end of the course, you will have made 6 projects to showcase your new skills! 99 | 100 | ### Books and Reference Material 101 | 102 | * [Java in Easy Steps](https://www.amazon.com/Java-easy-steps-Covers/dp/1840786213): Easy to follow book that explains the basics of Java with fun and interesting graphics. 103 | 104 | * [Head First Java](https://www.amazon.com/dp/0596009208/?tag=javamysqlanta-20): Classic book covering Java that is essental for any beginner programmer. 105 | 106 | ### Channels 107 | 108 | * [TheNewBoston Youtube Channel](https://www.youtube.com/channel/UCJbPGzawDH1njbqV-D5HqKw): This youtube channel is jam packed with tons of resources on learning Java. Are you a beginner? Start with the "Java (Beginner) Tutorial" playlist. When you feel you are ready, move onto to the "Java (Intermediate) Tutorial" playlist to learn some more advanced topics! 109 | 110 | * [Derek Banas](https://youtu.be/n-xAqcBCws4): Channel with crash course videos teaching you the basics of every programming language! 111 | 112 | ### IDEs 113 | 114 | * [Eclipse](https://www.eclipse.org/downloads/): One of the most well known IDEs for Java. 115 | * [JetBrains IntelliJ IDEA](https://www.jetbrains.com/idea/): A powerful IDE with an extensive library of features. You can get it for free for non-commercial projects as a student! 116 | -------------------------------------------------------------------------------- /reads-talks/README.md: -------------------------------------------------------------------------------- 1 | # Talks/Seminars 2 | 1. [CMU Robotics Institude Seminar Series: Great talk on robotics research every friday!](https://www.youtube.com/watch?v=9Urn2kygoiE&list=PLCFD85BC79FE703DF) 3 | 2. [AI Podcast by Lex Fridman](https://www.youtube.com/watch?v=3t06ajvBtl0&list=PLrAXtmErZgOdP_8GztsuKi9nrraNbKKp4) 4 | 3. [Robotics Today - A Series of Technical Talks](https://roboticstoday.github.io/) 5 | 6 | # Blogs/Reads 7 | 1. [Why Can't I Reproduce Their Results? Or What I Wish I Knew as a Graduate Student.](http://theorangeduck.com/page/reproduce-their-results) 8 | 2. [A guide on STEM PhD admissions](https://github.com/gwisk/gradguide) 9 | -------------------------------------------------------------------------------- /reinforcement-learning/README.md: -------------------------------------------------------------------------------- 1 | # Reinforcement Learning 2 | 3 | ## Courses 4 | 5 | In these courses, you will learn the foundations of Reinforcement Learning. 6 | 7 | ### General Courses on Reinforcement Learning 8 | 9 | 1. [Reinforcement Learning by David Silver - UCL](https://www.davidsilver.uk/teaching/) 10 | 2. [Reinforcement Learning - Stanford CS234](http://web.stanford.edu/class/cs234/index.html) 11 | 3. [Reinforcement Learning - IIT-M CS230](https://youtu.be/TIlDzLZPyhY) 12 | 4. [Excursions in Reinforcement Learning - Mila](http://pierrelucbacon.com/teaching/) 13 | 5. [Supplementary Materials from Reinforcement Learning Book](https://rl-book.com/supplementary_materials/) 14 | 15 | ### Deep Reinforcement Learning 16 | 17 | 1. [Deep RL Bootcamp](https://sites.google.com/view/deep-rl-bootcamp/lectures) 18 | 2. [Deep Reinforcement Learning - UC Berkeley CS 285](http://rail.eecs.berkeley.edu/deeprlcourse/) 19 | 3. [Spinning up Deep RL - OpenAI](https://spinningup.openai.com/en/latest/) 20 | 21 | ### Imitation Learning 22 | 1. [Imitation Learning for Robotics](http://www.cs.toronto.edu/~florian/courses/imitation_learning/) 23 | 24 | ### Specialised Courses 25 | 26 | 1. [Deep Multi-Task and Meta Learning](https://cs330.stanford.edu/) 27 | 2. [Trust Policy Optimisation series](http://www.depthfirstlearning.com/2018/TRPO) 28 | 29 | ## Books 30 | 31 | 1. [Reinforcement Learning: An Introduction, Sutton and Barto, 2nd Edition](http://incompleteideas.net/book/the-book-2nd.html) 32 | 2. [Markov Decision Processes: Discrete Stochastic Dynamic Programming by Martin Puterman](https://onlinelibrary.wiley.com/doi/book/10.1002/9780470316887) 33 | 3. [Reinforcement Learning and Optimal Control by Dimitri Bertsekas](https://web.mit.edu/dimitrib/www/RLbook.html) 34 | 4. [Grokking Deep Reinforcement Learining](https://www.manning.com/books/grokking-deep-reinforcement-learning) 35 | 5. [Reinforcement Learning: Industrial Applications of Intelligent Agents](https://rl-book.com) 36 | 37 | ## Clean Implementations 38 | 39 | 1. [RL-Adventure](https://github.com/higgsfield/RL-Adventure) and [RL-Adventure2](https://github.com/higgsfield/RL-Adventure) by [higgsfield](https://higgsfield.github.io/) 40 | 2. [RLlib: Scalable Reinforcement Learning](https://docs.ray.io/en/latest/rllib.html#rllib-scalable-reinforcement-learning) 41 | 42 | ## Blog Posts/Tutorials 43 | 44 | 1. [RL— Introduction to Deep Reinforcement Learning](https://medium.com/@jonathan_hui/rl-introduction-to-deep-reinforcement-learning-35c25e04c199) 45 | 2. [Deep Reinforcement Series by Jonathan Hui](https://medium.com/@jonathan_hui/rl-deep-reinforcement-learning-series-833319a95530) 46 | 3. [All the fantastic blogs by Lilian Weng](https://lilianweng.github.io/lil-log/) 47 | 4. [Debugging RL, Without the Agonizing Pain by Andy Jones](https://andyljones.com/posts/rl-debugging.html) 48 | 5. [Variety of Introductory Blog Posts on RL](https://rl-book.com/learn/) 49 | 50 | ## Research Papers 51 | 52 | ### State of the art algorithms 53 | 54 | 1. [Policy Gradient Methods for Reinforcement Learning with Function Approximation](https://papers.nips.cc/paper/1713-policy-gradient-methods-for-reinforcement-learning-with-function-approximation.pdf) 55 | 2. [Actor-Critic Algorithms](https://papers.nips.cc/paper/1786-actor-critic-algorithms.pdf) 56 | 3. [Playing Atari with Deep Reinforcement Learning](https://www.cs.toronto.edu/~vmnih/docs/dqn.pdf) 57 | 4. [Deep Deterministic Policy Gradient](https://arxiv.org/pdf/1509.02971) 58 | 5. [Asynchronous Methods for Deep Reinforcement Learning](https://arxiv.org/abs/1602.01783) 59 | 6. [Trust Region Policy Optimization](https://arxiv.org/pdf/1502.05477) 60 | 7. [Proximal Policy Optimization Algorithms](https://arxiv.org/pdf/1707.06347) 61 | -------------------------------------------------------------------------------- /robot-operating-system/README.md: -------------------------------------------------------------------------------- 1 | # Robot Operating System (ROS) 2 | Framework for developing software that can be deployed on an actual robot and/or for simulation purposes. A collection of libraries and tools that can be used to create a flexible framework particularly aimed at simplfying the testing of complex robot behavior. 3 | 4 | ## Prerequisites 5 | Basic knowledge about Command Line Tools, C++ and Python. 6 | 7 | ## Courses and Relevant References 8 | 9 | * [ROS for Beginners: Basics, Motion, and OpenCV ](https://www.udemy.com/course/ros-essentials/) 10 | This course is ideal for a beginner as the instructor covers almost all the basic concepts about ROS and its architecture in general. Grassroot concepts such as ROS Nodes, ROS Topics, ROS Messages, ROS Services, Publishers and Subscribers and other utlities are covered thoroughly in this course. Several trivial methods like connecting a new Hardware with ROS and accessing the data of actual sensors are also covered in depth. The latter part of the course deals with the basics of Perception and using OpenCV Library with ROS in particular. Regular Updates in the course content incorporates the new features that are introduced via newer versions. 11 | 12 | * [Programming for Robotics - ROS](https://rsl.ethz.ch/education-students/lectures/ros.html) This course is offered by the Robotic Systems Lab, ETH Zurich. It covers the architecture of ROS, creating ROS Packages, simulations with ROS using Gazebo, RViz, user inteface tools like Rqt Graph and the TF Transformation System. The instructors have also provided exercises to test one's progress. Guides about building a legged robot and integrating ROS with other simulators have also been provided. The 2021 playlist is available on [YouTube](https://www.youtube.com/playlist?list=PLnWNW5AkCcq03Ok6UjNoBv2AiuQ9IkP3p ) 13 | * [ROS Wiki](http://wiki.ros.org/) The official documentation page of ROS. Contains basic tutorials and installation guides along with tutorials for ROS Libarires like Navigation, Robot Modelling and Visualization. It also contains tutorials for libaries with ROS Interfaces like tf2 (Transform Library) and PCL (Point Cloud Library). 14 | 15 | 16 | -------------------------------------------------------------------------------- /software/github/README.md: -------------------------------------------------------------------------------- 1 | # Git and GitHub 2 | 3 | **Git** is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. 4 | 5 | **[GitHub](https://github.com/)** offers the distributed version control and source code management functionality of Git, plus its own features. Some alternatives of GitHub are gitlab, BitBucket, etc. 6 | 7 | ## Courses 8 | - [Introduction to Git and GitHub](https://www.coursera.org/learn/introduction-git-github#syllabus) 9 | This is a highly recommended course for anyone new to Git. It also covers a few advanced topics. 10 | 11 | This is an oversimplified way of contributing. 12 | For more advanced usage, we can use branches and commands like adding upstream url and doing `git fetch`. Please read about these concepts online. Some great explanations can be found [here](https://gist.github.com/Chaser324/ce0505fbed06b947d962) and [here](https://stackoverflow.com/questions/7244321/how-do-i-update-a-github-forked-repository). They're a must read for everyone. 13 | 14 | ## Open Source Contributions with Git 15 | 16 | ### Making a contribution 17 | 1. Fork the repo which you want to work on (eg. https://github.com/ivlabs/resources is original repo where you want to contribute) 18 | 2. Clone the forked repository from your own profile (**NOT** the original repository) 19 | `git clone https://github.com/your_userid/resources` 20 | 3. Do the changes and commit. 21 | `git add file1 file2` 22 | `git commit -m "Adding my contribution"` 23 | 4. Push changes to GitHub. This updates your forked repo. 24 | `git push origin master` 25 | 5. Create a pull request. 26 | 6. If the owner finds your changes correct, he will merge it with his original repo. 27 | 7. Congratulations! You just contributed to the original repo. 28 | 29 | **Resources:** [Link](https://codeburst.io/a-step-by-step-guide-to-making-your-first-github-contribution-5302260a2940) 30 | 31 | ### Creating a new contribution to the same repo 32 | 1. Delete the old fork (if the master is ahead of your fork). 33 | 2. Create a new fork and do all changes there. 34 | 3. Create a Pull Request and repeat above steps. 35 | 4. Thats it! 36 | -------------------------------------------------------------------------------- /software/linux/README.md: -------------------------------------------------------------------------------- 1 | # Software 2 | 3 | ## Linux Tutorials 4 | - If you are a beginner then you must go through [Linux Journey](https://linuxjourney.com/) website. It is an intutive website which covers all the basic commands. 5 | - [Linux productivity tips: "Missing Semester" from MIT](https://www.youtube.com/playlist?list=PLyzOVJj3bHQuloKGG59rS43e29ro7I57J) is good for people who like video lectures. After doing this course, you will have good working knowledge of Linux. 6 | - [Org Mode Intro: Execellent note taking tool in emacs](https://www.youtube.com/watch?v=S4f-GUxu3CY&t=121s) 7 | - [Tiling Window Managers: Tmux for all windows beyond the terminal!](https://www.youtube.com/watch?v=j1I63wGcvU4&list=PL5ze0DjYv5DbCv9vNEzFmP6sU7ZmkGzcf) 8 | 9 | 10 | ## Books 11 | - [How Linux Works – What Every Superuser Should Know](https://www.amazon.in/How-Linux-Works-Superuser-Should/dp/1593275676#:~:text=In%20this%20completely%20revised%20second,workings%20of%20the%20operating%20system.&text=How%20Linux%20boots%2C%20from%20boot,%2C%20Upstart%2C%20and%20System%20V) 12 | 13 | ## Tips 14 | - Linux is something which you cant learn through books alone. Keep using linux as much as possible and try to do everything on terminal alone. 15 | - We would recommend installing Ubuntu 18.04 LTS for best experience. 16 | -------------------------------------------------------------------------------- /state-estimation-localization-slam/README.md: -------------------------------------------------------------------------------- 1 | # State Estimation and Localization, SLAM 2 | 3 | Use noisy inputs from multiple sensors, to estimate, as accurately as possible, the current location of the robot within its environment, and also, in some cases, build a map of its surroundings as it explores the area. 4 | 5 | ## Prerequisites 6 | 7 | Basic Knowledge about Probability, Jacobians, Linear Algebra and Numpy in python. 8 | 9 | 10 | ## Course is fit for 11 | 12 | This field being a part of Probabilistic Robotics is fit for people who are interested in the planning, mobile robotics, software aspect of robotics and developing autonomous robots. Navigation is one of the most challenging competencies required of a mobile robot. Success in navigation requires success at the four building blocks of navigation: 13 | 14 | **Perception:** the robot must interpret its sensors to extract meaningful data. 15 | 16 | **Localization:** the robot must determine its position in the environment. 17 | 18 | **Cognition**- the robot must decide how to act to achieve its goals. 19 | 20 | **Motion Control:** the robot must modulate its motor outputs to achieve the desired trajectory. Localization is a recently developed field of robotics which finds its application in *self-driving cars, unmanned aerial vehicles, autonomous underwater vehicles, planetary rovers*, newer domestic robots and even inside the human body. Localization involves estimating the position of a robot with respect to the surroundings. Knowing the robot’s location as an essential precursor in making decisions about future actions. 21 | 22 | This concept is critical if you wish to develop any autonomous robot. However this field involves good knowledge of mathematics. This concept can be further extended to what is known as **Simultaneous Localization and Mapping (SLAM)** which involves building a map of the surroundings while localizing the robot in that particular surrounding. Localization algorithms are used in **navigation** and **mapping** and **odometry of virtual reality or augmented reality** 23 | 24 | 25 | ## Overview 26 | 27 | ***Note:** The following references are good just to get an overview of the concept along with visual understanding. They may not cover all the mathematical details about the concept.* 28 | 29 | * [How a Kalman filter works](https://www.bzarg.com/p/how-a-kalman-filter-works-in-pictures/) 30 | * [Student Dave's Tutorials](http://studentdavestutorials.weebly.com/) 31 | * [Overview of localization](http://www.cs.cmu.edu/~rasc/Download/AMRobots5.pdf) 32 | 33 | 34 | ## Courses 35 | 36 | * [Introduction to Mobile Robotics](http://ais.informatik.uni-freiburg.de/teaching/ss19/robotics/) by Dr. Wolfram Burgard. 37 | The course provided by Dr. Wolfram Burgard is good for understanding the underlying math behind the probabilistic algorithms used in state estimation and localization. The course can be taken as an introduction to the various concepts in the field of mobile robotics. 38 | 39 | * [SLAM-Course](https://www.youtube.com/watch?v=U6vr3iNrwRA&list=PLgnQpQtFTOGQrZ4O5QzbIHgl3b1JHimN_) by Cyrill Stachniss. 40 | 41 | * [State Estimation and Localization for Self-Driving Cars](https://www.coursera.org/learn/state-estimation-localization-self-driving-cars/home/welcome) 42 | In these courses you will learn about the basic concepts of different types of motion models of a mobile robot, some basic concepts regarding probability and Euclidean geometry. Further these courses cover various probabilistic state estimation algorithms such as Kalman Filters, Extended Kalman Filters and Unscented Kalman Filters which work on the Prediction-Correction Cycle. This course is specifically crafted for understanding the various methodologies used for localization, sensor fusion, sensor selection, etc. in self-driving cars. It may not cover all the concepts of localization used in robotics, but is targeted for an audience specifically interested in self-driving cars. 43 | 44 | * [Mobile Sensing and Robotics II](https://www.ipb.uni-bonn.de/msr2-2020/) by Cyrill Stachniss. 45 | This is an advanced course based on Simultaneous Localization and Mapping. It covers the concepts of graph based SLAM algorithms as well as 46 | Visual SLAM. In the second part of the course some fundamental concepts of Point Clouds are addressed. Other topics include System Calibration, Sensor Synchronization and SfM application. 47 | 48 | * [Nonlinear State Estimation for Robotics and Computer Vision](http://wavelab.uwaterloo.ca/indexe9a5.html?page_id=533) 49 | 50 | ## Books and research papers for Reference 51 | 52 | * [Optimal State Estimation: Kalman, H∞, and Nonlinear Approaches](https://onlinelibrary.wiley.com/doi/book/10.1002/0470045345) by Dan Simon. 53 | 54 | * [Circumventing dynamic modeling: evaluation of the error-state Kalman filter applied to mobile robot localization](https://ieeexplore.ieee.org/document/772597) 55 | 56 | * [The Unscented Kalman Filter for Nonlinear Estimation](https://www.seas.harvard.edu/courses/cs281/papers/unscented.pdf) 57 | 58 | * [Unscented Kalman Filter Tutorial](https://www.cse.sc.edu/~terejanu/files/tutorialUKF.pdf) 59 | 60 | * [Advanced Vehicle State Estimation: A Tutorial and Comparative Study](https://www.sciencedirect.com/science/article/pii/S2405896317323674) 61 | 62 | * [Quaternion kinematics for the error-state Kalman filter](https://arxiv.org/pdf/1711.02508.pdf) (Advanced Reading) 63 | 64 | * [Madgwick's paper on sensor fusion](https://x-io.co.uk/res/doc/madgwick_internal_report.pdf) 65 | --------------------------------------------------------------------------------