Nanodegree key: nd209
Version: 5.0.0
Locale: en-us
Fuse computer vision, machine learning, mechanics, and hardware systems to build bots of the future!
Content
Part 01 (FreePreview) : Free Preview
-
Module 01:
Free Preview Lessons
-
Lesson 01: Gazebo Basics
Learn how to simulate your first robot in Gazebo and interact with its world using a Plugin.
-
Lesson 02: Introduction to ROS
Obtain an architectural overview of the Robot Operating System Framework and setup your own ROS environment in the Udacity Workspace.
- Concept 01: Welcome to ROS Essentials
- Concept 02: Build Robots with ROS
- Concept 03: Brief History of ROS
- Concept 04: Nodes and Topics
- Concept 05: Message Passing
- Concept 06: Services
- Concept 07: Compute Graph
- Concept 08: Turtlesim Overview
- Concept 09: ROS in the Udacity Workspace
- Concept 10: Source the ROS Environment
- Concept 11: Run Turtlesim
- Concept 12: Turtlesim Comms: List Nodes
- Concept 13: Turtlesim Comms: List Topics
- Concept 14: Turtlesim Comms: Get Topic Info
- Concept 15: Turtlesim Comms: Message Information
- Concept 16: Turtlesim Comms: Echo a Topic
- Concept 17: Recap
-
Part 02 : Introduction to Robotics
Learn the essential elements of robotics, meet your instructors, and get familiar with the tools that will help you succeed in this program.
-
Module 01:
Introduction to Robotics
-
Lesson 01: Welcome
In this first lesson, you'll meet your instructors, learn about the structure of this program, and see the services available to you as a student.
-
Lesson 02: What is a Robot?
Learn the essential element of robotics.
-
Lesson 03: Career Support Overview
As you learn the skills you’ll need in order to work in the robotics industry, you’ll see Career Lessons and Projects that will help you improve your online professional profiles.
-
Lesson 04: Knowledge, Community, and Careers
You are starting a challenging but rewarding journey! Take 5 minutes to read how to get help with projects and content.
-
Lesson 05: Get Help with Your Account
What to do if you have questions about your account or general questions about the program.
-
Lesson 06: Getting Started
Get started by exploring the Udacity Workspace, optionally installing a Virtual Machine, and learning prep materials to help you succeed in this program.
-
Part 03 : Gazebo World
Learn how to simulate your first robotic environment with Gazebo, the most common simulation engine used by Roboticists around the world.
-
Module 01:
Gazebo World
-
Lesson 01: Gazebo Basics
Learn how to simulate your first robot in Gazebo and interact with its world using a Plugin.
-
Lesson 02: Project: Build My World
In this project, you will design a Gazebo World environment by including multiple models and use it as a base for all your upcoming projects.
-
Part 04 : ROS Essentials
Discover how ROS provides a flexible and unified software environment for developing robots in a modular and reusable manner. Learn how to manage existing ROS packages within a project, and how to write ROS Nodes of your own in C++.
-
Module 01:
ROS Essentials
-
Lesson 01: Introduction to ROS
Obtain an architectural overview of the Robot Operating System Framework and setup your own ROS environment in the Udacity Workspace.
- Concept 01: Welcome to ROS Essentials
- Concept 02: Build Robots with ROS
- Concept 03: Brief History of ROS
- Concept 04: Nodes and Topics
- Concept 05: Message Passing
- Concept 06: Services
- Concept 07: Compute Graph
- Concept 08: Turtlesim Overview
- Concept 09: ROS in the Udacity Workspace
- Concept 10: Source the ROS Environment
- Concept 11: Run Turtlesim
- Concept 12: Turtlesim Comms: List Nodes
- Concept 13: Turtlesim Comms: List Topics
- Concept 14: Turtlesim Comms: Get Topic Info
- Concept 15: Turtlesim Comms: Message Information
- Concept 16: Turtlesim Comms: Echo a Topic
- Concept 17: Recap
-
Lesson 02: Packages & Catkin Workspaces
Learn about ROS workspace structure, essential command line utilities, and how to manage software packages within a project. Harnessing these will be key to building shippable software using ROS.
-
Lesson 03: Write ROS Nodes
ROS Nodes are a key abstraction that allows a robot system to be built modularly. In this lesson, you'll learn how to write them using C++.
- Concept 01: Overview
- Concept 02: ROS in the Udacity Workspace
- Concept 03: ROS Publishers
- Concept 04: Simple Mover
- Concept 05: Simple Mover: The Code
- Concept 06: Simple Mover: Build and Run
- Concept 07: ROS Services
- Concept 08: Arm Mover
- Concept 09: Arm Mover: The Code
- Concept 10: Arm Mover: Build, Launch and Interact
- Concept 11: ROS Clients and Subscribers
- Concept 12: Look Away
- Concept 13: Look Away: The Code
- Concept 14: Look Away: Build, Launch and Interact
- Concept 15: Pub-Sub Class
- Concept 16: Recap
-
Lesson 04: Project: Go Chase It!
Design and build a mobile robot, and house it in your world. Then, program your robot with C++ nodes in ROS to chase white colored balls!
- Concept 01: Introduction
- Concept 02: ROS in the Workspace
- Concept 03: Setting up my_robot
- Concept 04: Understanding URDF
- Concept 05: Robot Basic Setup
- Concept 06: Robot Enhancements
- Concept 07: Robot Sensors
- Concept 08: Gazebo Plugins
- Concept 09: RViz Basics
- Concept 10: RViz Integration
- Concept 11: House your Robot
- Concept 12: Setting up ball_chaser
- Concept 13: ROS Node: drive_bot
- Concept 14: Model a White Ball
- Concept 15: ROS Node: process_image
-
Lesson 05: Optimize Your GitHub Profile
Other professionals are collaborating on GitHub and growing their network. Submit your profile to ensure your profile is on par with leaders in your field.
- Concept 01: Prove Your Skills With GitHub
- Concept 02: Introduction
- Concept 03: GitHub profile important items
- Concept 04: Good GitHub repository
- Concept 05: Interview with Art - Part 1
- Concept 06: Identify fixes for example “bad” profile
- Concept 07: Quick Fixes #1
- Concept 08: Quick Fixes #2
- Concept 09: Writing READMEs with Walter
- Concept 10: Interview with Art - Part 2
- Concept 11: Commit messages best practices
- Concept 12: Reflect on your commit messages
- Concept 13: Participating in open source projects
- Concept 14: Interview with Art - Part 3
- Concept 15: Participating in open source projects 2
- Concept 16: Starring interesting repositories
- Concept 17: Next Steps
-
Part 05 : Localization
Learn how Gaussian filters can be used to estimate noisy sensor readings, and how to estimate a robot’s position relative to a known map of the environment with Monte Carlo Localization (MCL).
-
Module 01:
Localization
-
Lesson 01: Introduction to Localization
Introduction to the localization concept and the algorithms
-
Lesson 02: Kalman Filters
Learn the Kalman Filter and Extended Kalman Filter Gaussian estimation algorithms.
- Concept 01: Overview
- Concept 02: What's a Kalman Filter?
- Concept 03: History
- Concept 04: Applications
- Concept 05: Variations
- Concept 06: Robot Uncertainty
- Concept 07: Kalman Filter Advantage
- Concept 08: 1D Gaussian
- Concept 09: Designing 1D Kalman Filters
- Concept 10: Measurement Update
- Concept 11: State Prediction
- Concept 12: 1D Kalman Filter
- Concept 13: Multivariate Gaussian
- Concept 14: Intro to Multidimensional KF
- Concept 15: Design of Multidimensional KF
- Concept 16: Introduction to EKF
- Concept 17: EKF
- Concept 18: EKF Example
- Concept 19: Recap
-
Lesson 03: Lab: Kalman Filters
Learn how to apply an EKF ROS package to a robot to estimate its pose.
- Concept 01: Introduction
- Concept 02: Sensor Fusion
- Concept 03: Catkin Workspace
- Concept 04: Udacity Workspace
- Concept 05: TurtleBot Gazebo Package
- Concept 06: Robot Pose EKF Package
- Concept 07: Odometry to Trajectory Package
- Concept 08: TurtleBot Teleop Package
- Concept 09: Rviz Package
- Concept 10: Main Launch
- Concept 11: Rqt Multiplot
- Concept 12: Outro
-
Lesson 04: Monte Carlo Localization
Learn the Monte Carlo Localization algorithm which uses particle filters to estimate a robot's pose.
-
Lesson 05: Build MCL in C++
Learn how to code the Monte Carlo Localization algorithm in C++.
- Concept 01: Introduction
- Concept 02: Robot Class
- Concept 03: First Interaction
- Concept 04: Motion and Sensing
- Concept 05: Noise
- Concept 06: Particle Filter
- Concept 07: Importance Weight
- Concept 08: Resampling
- Concept 09: Resampling Wheel
- Concept 10: Error
- Concept 11: Graphing
- Concept 12: Udacity Workspace
- Concept 13: Images
- Concept 14: Outro
-
Lesson 06: Where Am I?
Use the Adaptive Monte Carlo Localization algorithm in ROS to localize your robot!
- Concept 01: Overview
- Concept 02: Simulation Setup
- Concept 03: Map Setup
- Concept 04: AMCL Package
- Concept 05: AMCL Launch File
- Concept 06: AMCL Launch File: Map Server Node
- Concept 07: AMCL Launch File: AMCL Node
- Concept 08: AMCL Launch File: Move Base Node
- Concept 09: Optional: Teleop Package
- Concept 10: Localization: Launching
- Concept 11: Localization: Parameters
- Concept 12: Localization: Testing
- Concept 13: Project Workspace
-
Part 06 : Mapping and SLAM
Learn how to create a Simultaneous Localization and Mapping (SLAM) implementation with ROS packages and C++. You’ll achieve this by combining mapping algorithms with what you learned in the localization lessons.
-
Module 01:
Mapping and SLAM
-
Lesson 01: Introduction to Mapping and SLAM
Introduction to the Mapping and SLAM concepts, as well as the algorithms.
-
Lesson 02: Occupancy Grid Mapping
Learn how to map an environment with the Occupancy Grid Mapping algorithm.
- Concept 01: Introduction
- Concept 02: Importance of Mapping
- Concept 03: Challenges and Difficulties
- Concept 04: Mapping with Known Poses
- Concept 05: Posterior Probability
- Concept 06: Grid Cells
- Concept 07: Computing the Posterior
- Concept 08: Filtering
- Concept 09: Binary Bayes Filter Algorithm
- Concept 10: Occupancy Grid Mapping Algorithm
- Concept 11: Inverse Sensor Model
- Concept 12: Generate the Map
- Concept 13: Udacity Workspace
- Concept 14: Multi Sensor Fusion
- Concept 15: Introduction to 3D Mapping
- Concept 16: 3D Data Representations
- Concept 17: Octomap
- Concept 18: Outro
-
Lesson 03: Grid-based FastSLAM
Learn how to simultaneously map an environment and localize a robot relative to the map with the Grid-based FastSLAM algorithm.
- Concept 01: Introduction
- Concept 02: Online SLAM
- Concept 03: Full SLAM
- Concept 04: Nature of SLAM
- Concept 05: Correspondence
- Concept 06: SLAM Challenges
- Concept 07: Particle Filter Approach to SLAM
- Concept 08: Introduction to FastSLAM
- Concept 09: FastSLAM Instances
- Concept 10: Adapting FastSLAM to Grid Maps
- Concept 11: Grid-based FastSLAM Techniques
- Concept 12: The Grid-based FastSLAM Algorithm
- Concept 13: gmapping ROS Package
- Concept 14: Udacity Workspace
- Concept 15: SLAM with ROS
- Concept 16: Outro
-
Lesson 04: GraphSLAM
Learn how to simultaneously map an environment and localize a robot relative to the map with the GraphSLAM algorithm.
- Concept 01: Introduction
- Concept 02: Graphs
- Concept 03: Constraints
- Concept 04: Front-End vs Back-End
- Concept 05: Maximum Likelihood Estimation
- Concept 06: MLE Example
- Concept 07: Numerical Solution to MLE
- Concept 08: Mid-Lesson Overview
- Concept 09: 1-D to n-D
- Concept 10: Information Matrix and Vector
- Concept 11: Inference
- Concept 12: Nonlinear Constraints
- Concept 13: Graph-SLAM at a Glance
- Concept 14: Intro to 3D SLAM With RTAB-Map
- Concept 15: 3D SLAM With RTAB-Map
- Concept 16: Visual Bag-of-Words
- Concept 17: RTAB-Map Memory Management
- Concept 18: RTAB-Map Optimization and Output
- Concept 19: Outro
-
Lesson 05: Map My World
Deploy RTAB-Map on your simulated robot to create 2D and 3D maps of your environment!
- Concept 01: Overview
- Concept 02: Simulation Setup
- Concept 03: RTAB-Map Package
- Concept 04: Sensor Upgrade
- Concept 05: RTAB-Map Launch File
- Concept 06: RTAB-Map Real Time Visualization
- Concept 07: ROS Teleop Package
- Concept 08: Mapping: Map My World
- Concept 09: Mapping: Database Viewer
- Concept 10: Optional: RTAB-Map Localization
- Concept 11: Project Workspace
-
Lesson 06: Take 30 Min to Improve your LinkedIn
Find your next job or connect with industry peers on LinkedIn. Ensure your profile attracts relevant leads that will grow your professional network.
- Concept 01: Get Opportunities with LinkedIn
- Concept 02: Use Your Story to Stand Out
- Concept 03: Why Use an Elevator Pitch
- Concept 04: Create Your Elevator Pitch
- Concept 05: Use Your Elevator Pitch on LinkedIn
- Concept 06: Create Your Profile With SEO In Mind
- Concept 07: Profile Essentials
- Concept 08: Work Experiences & Accomplishments
- Concept 09: Build and Strengthen Your Network
- Concept 10: Reaching Out on LinkedIn
- Concept 11: Boost Your Visibility
- Concept 12: Up Next
-
Part 07 : Path Planning and Navigation
Learn different Path Planning and Navigation algorithms. Then, combine SLAM and Navigation into a home service robot that can autonomously transport objects in your home!
-
Module 01:
Path Planning and Navigation
-
Lesson 01: Intro to Path Planning and Navigation
Learn what the lessons in Path Planning and Navigation will cover.
-
Lesson 02: Classic Path Planning
Learn a number of classic path planning approaches that can be applied to low-dimensional robotic systems.
- Concept 01: Introduction to Path Planning
- Concept 02: Examples of Path Planning
- Concept 03: Approaches to Path Planning
- Concept 04: Discrete Planning
- Concept 05: Continuous Representation
- Concept 06: Minkowski Sum
- Concept 07: Quiz: Minkowski Sum
- Concept 08: Minkowski Sum C++
- Concept 09: Translation and Rotation
- Concept 10: 3D Configuration Space
- Concept 11: Discretization
- Concept 12: Roadmap
- Concept 13: Visibility Graph
- Concept 14: Voronoi Diagram
- Concept 15: Cell Decomposition
- Concept 16: Approximate Cell Decomposition
- Concept 17: Potential Field
- Concept 18: Discretization Wrap-Up
- Concept 19: Graph Search
- Concept 20: Terminology
- Concept 21: Breadth-First Search
- Concept 22: Depth-First Search
- Concept 23: Uniform Cost Search
- Concept 24: A* Search
- Concept 25: Overall Concerns
- Concept 26: Graph-Search Wrap-Up
- Concept 27: Discrete Planning Wrap-Up
-
Lesson 03: Lab: Path Planning
Learn to code the BFS and A* algorithms in C++.
-
Lesson 04: Sample-Based and Probabilistic Path Planning
Learn about sample-based and probabilistic path planning and how they can improve on the classic approach.
- Concept 01: Introduction to Sample-Based & Probabilistic Path Planning
- Concept 02: Why Sample-Based Planning
- Concept 03: Weakening Requirements
- Concept 04: Sample-Based Planning
- Concept 05: Probabilistic Roadmap (PRM)
- Concept 06: Rapidly Exploring Random Tree Method (RRT)
- Concept 07: Path Smoothing
- Concept 08: Overall Concerns
- Concept 09: Sample-Based Planning Wrap-Up
- Concept 10: Introduction to Probabilistic Path Planning
- Concept 11: Markov Decision Process
- Concept 12: Policies
- Concept 13: State Utility
- Concept 14: Value Iteration Algorithm
- Concept 15: Probabilistic Path Planning Wrap-Up
-
Lesson 05: Home Service Robot
Program a home service robot that will autonomously map an environment and navigate to pickup and deliver objects!
- Concept 01: Overview
- Concept 02: Working Environment
- Concept 03: Shell Scripts
- Concept 04: Simulation Set Up
- Concept 05: SLAM Testing
- Concept 06: Localization and Navigation Testing
- Concept 07: Navigation Goal Node
- Concept 08: Virtual Objects
- Concept 09: Your Home Service Robot
- Concept 10: Project Workspace
- Concept 11: Project Workspace: Home Service Robot
-
Part 08 (Elective) : Optional KUKA Path Planning Project
-
Module 01:
Optional Kuka Path Planning Project
-
Lesson 01: Project Introduction
Plan a path through a maze for an industrial Kuka Manipulator Arm, then watch your code run on real hardware!
-
Lesson 02: Project Details
Helpful instruction to help you get started with the project
- Concept 01: Project Specification
- Concept 02: Getting Started
- Concept 03: Scoring Criteria
- Concept 04: Path Planning
- Concept 05: Project Workspace
- Concept 06: Submission Instructions
- Concept 07: Project Walkthrough
- Concept 08: Hints
- Concept 09: Maze #1 Leaderboard
- Concept 10: Maze #2 Leaderboard
- Concept 11: Contest Maze Leaderboard
-
Part 09 (Elective) : Autonomous Systems Interview
Start off with some tips on interviewing for an autonomous systems role, then watch how candidates approach their interview questions. Finish off by practicing some questions of your own!
-
Module 01:
Autonomous Systems Interview
-
Lesson 01: Autonomous Systems Interview Practice
Start off with some tips on interviewing for an autonomous systems role, then watch how candidates approach their interview questions. Finish off by practicing some questions of your own!
Project Description - Autonomous Systems Interview Practice Project
Project Rubric - Autonomous Systems Interview Practice Project
- Concept 01: Welcome to the Course!
- Concept 02: Job Titles
- Concept 03: Your Part
- Concept 04: One Piece of the Puzzle
- Concept 05: Job Descriptions
- Concept 06: Research the Company
- Concept 07: Let's Get Started
- Concept 08: Perception Engineer
- Concept 09: Perception Engineer Reflection
- Concept 10: Deep Learning Engineer
- Concept 11: Deep Learning Engineer Reflection
- Concept 12: Motion Planning Engineer
- Concept 13: Motion Planning Engineer Reflection
- Concept 14: Mapping/Localization Engineer
- Concept 15: Mapping/Localization Engineer Reflection
- Concept 16: Control Engineer
- Concept 17: Control Engineer Reflection
- Concept 18: My Own Project
- Concept 19: My Own Project Reflection
- Concept 20: Additional Resources to Consider
- Concept 21: Final Thoughts
- Concept 22: Project Instructions
- Concept 23: Perception/Sensor Questions
- Concept 24: Deep Learning Questions
- Concept 25: Motion Planning Questions
- Concept 26: Mapping/Localization Questions
- Concept 27: Control Questions
- Concept 28: General Questions
-