Skip to content

Commit e808365

Browse files
authored
Mapping Module Addded (Robotisim#39)
Assignment Links added
1 parent ce73a94 commit e808365

File tree

190 files changed

+6930
-7279
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

190 files changed

+6930
-7279
lines changed

Curriculum.md

Lines changed: 2 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# V1.0 ( yet to be completed )
1+
# V1.0
22
- Module 1 Package **cpp_fundamentals**
33
- Add Templates Example
44
- Adding Linked List while in Module path planning
@@ -22,53 +22,9 @@
2222
- ros2_control : Different Controllers in multiple robot types
2323
- Module 7 Package **path_planning**
2424
- RRT , Potential Fields , PRM
25-
- Module 8 Package **navigation_and_behaviour_trees**
26-
- Shapes Movement of Mobile Robots
27-
- Coverage Algorithm
28-
- RRT-star , DWA
29-
- Behaviour Trees for motion planning + opencv based tasks as well
30-
- Docking System
3125
- Module 9 Package **mapping**
32-
- Perform Lidar to map
26+
- Perform SLAM
3327
- 2D and 3D
3428
- Write algorithm for other mapping systems
3529
- ROS2 2D Mapping
3630
- ROS2 3D Mapping
37-
- Module 10 Package **slam**
38-
- ros2 slam with Nav2
39-
- Disucssion in deep detail
40-
- perform hotel waiter type project
41-
- Integerate your path planning algorithms into nav2
42-
- 3D Slam ORB SLAM using Depth Cameras or any new Algo
43-
- Module 11 Package **drive_robotic_arm**
44-
- Basic thoery of configuration spaces
45-
- Jacobians , state, velocity spaces
46-
- Show on Rviz of these spaces
47-
- bring robotic arm and its controllers and move it from custom_robots package
48-
- perform IK and FK using controllers manually on basic arm -> complex arm library
49-
- Use ikpy and OMPL to perform tasks
50-
- Module 12 Package **multi_robotic_arms**
51-
- Bring Moveit2 and perform special tasks with move group nodes
52-
- Gazebo and Moveit Motion
53-
- Baxter Multi Arm System
54-
- Module 13 Package **drive_drone**
55-
- Depth Camera Processing
56-
- 3D Lidar ground segmentations
57-
- Module 14 Package **visual_processing**
58-
- Visual inertial odometery
59-
- 3D motion and tracking
60-
- Try to implement robotic arm perception by processing point clouds and moveit2
61-
- Module 15 Package **swarms**
62-
- Mobie Robots and drones swamrs -> basic driving
63-
- Flocking
64-
- Motion Planning with swarms
65-
- Module 16 Package **software_interfaces**
66-
- Carla
67-
- Webots
68-
- RTOS
69-
- MicroROS
70-
- Web
71-
- Module 17 Package **development_standard**
72-
- Tests : unit, integeration , mocking
73-
- REPs
74-
- Docker , kubernetes , CI & CD

Lectures/Module_1.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# Module # 1 : Basics of C++ from Robotics Prespective
2+
- Package Created : *cpp_fundamentals*
3+
- Emphasis :
4+
- People are good and writing code , but they are not organized
5+
- Working with people who donot follow programming standards is so hard - you will experience if you work at a startup
6+
- Senior always enforce standards and it is essential otherwise how would multiple people work upon it ?
7+
- If you just get c++ learning out of this course , it is still one the best thing
8+
9+
## V1.0
10+
- `a_welcome_course_how_you_will_learn`
11+
- lectures , assignments , quizes , weekly meetings
12+
- `b_windows_mac_setup`
13+
- Install vm and run ubuntu 22.04
14+
- `c_install_vscode`,plugins
15+
- form now do all things on linux
16+
- `d_cpp_exe`
17+
- CPP compilation and Execution
18+
- *overlay* : process of CPP execution
19+
- amazing , now look at this ros2 C++ node basic code
20+
- Makes no sense right , but at the end of this module you will be very clear what are these things
21+
- `e_functions`
22+
- *overlay* : As projects grow in complexity, we modularize our code for readability, reusability, and maintainability. Functions are the building blocks that help us organize logic into callable units.
23+
- Functions
24+
- `f_namespaces`
25+
- *overlay* : Avoiding name conflicts and organizing code in large projects with namespaces. Namespaces provide a way to group logically related objects and functions under a named scope.
26+
- NameSpaces
27+
- `g_classes`
28+
- *overlay* : Transitioning from procedural to object-oriented programming by encapsulating data and functionality within classes , benefits of using header files for class declarations to enhance modularity and code organization , Why it is needed when we have functions and namespaces
29+
- file with main.cpp
30+
- single cpp
31+
- using header files
32+
- Classes , headers
33+
- `h_templates`
34+
- *overlay* : Learn how to write flexible and reusable functions and classes that can operate on different data types while maintaining type safety.
35+
- Templates
36+
- `i_libraries`
37+
- *overlay* : Leveraging the power of existing libraries to extend functionality without reinventing the wheel
38+
- integerate popular -> show them process of line following
39+
- create custom libraries
40+
- `j_multi_libs_cmakelist`
41+
- *overlay* : Managing complex projects with multiple libraries using CMake. Strategies for organizing, linking, and managing dependencies
42+
- Multiple libraries
43+
- `k_pointers`
44+
- *overlay* : from raw pointers to smart pointers. Explore how pointers are used to manage memory and resources, and how smart pointers can automate memory management to prevent leaks.
45+
- Pointers , simple and shared
46+
- `l_jargons`
47+
- *overlay* :
48+
- Jargons recap
49+
- include directives
50+
- Variables
51+
- Member
52+
- Constants
53+
- Functions
54+
- Namespaces
55+
- Classes
56+
- SharedPtr: A typedef for a shared pointe
57+
- create_publisher<> : templates
58+
- `n_style_docs`
59+
- *overlay* :
60+
- Formating and linting
61+
----
62+
## Formating and linting
63+
- clang-format -i f_formate.cpp
64+
- clang-tidy f_formate.cpp --fix
65+
---
66+
## Installation
67+
- sudo apt-get install clang-tidy
68+
- sudo apt-get install clang-format

Lectures/Module_2.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
2+
# Module # 2 : ROS2 Communication and Turtlesim ( V1.0 )
3+
- Package Created : *drive_mobile_robot*
4+
- ros fundamentals + basic Mathematics programming
5+
- Finding what messages to write
6+
- ROS2 nodes communication , launch files .
7+
- Mathematics Fundamentals for robot Motion
8+
- Bring Mathematics from module_5 to this simulation
9+
- Questions
10+
- How to find out which topic to publish on and why?
11+
- We have generic convenstions.
12+
- Type of message udnerstanding ?
13+
---
14+
## Lectures
15+
16+
- `a_module_intro`
17+
- `b_ros2_installation_workspace_source`
18+
- Install ros2 humble , workspace robotics_ws , package creation , source
19+
- `c_package_creation_sourcing`
20+
- Development Environment setup
21+
- [screen] : How sourcing works
22+
- `d_basic_node_communication`
23+
- CMD line publishing
24+
- ROS2 topic + rqt_graph
25+
- Nodes Communication with One Another
26+
- CPP custom Nodes for publishing
27+
- Hosla , start from totally basic nodes and make smaller changes
28+
- *overlay*
29+
- [screen] : write down how nodes communicate upon nodes and topics
30+
- [face] :
31+
- What topics to publish and where to use which one -> important question
32+
- Why ROS have wrappers on simple C++ data types ?
33+
- `e_turtlesim_node_drive_node`
34+
- First write node to drive
35+
- Then show teleop node -> its code on github as well
36+
- *overlay* :
37+
- [screen] : Process of nodes working before writing code
38+
- [face] :
39+
- Here you saw that already written code does amazing job and interestingly very usefull code is already written
40+
- But we need to learn how it is written in detail and then utilizing open source code will start to make sense
41+
- `f_launch_files`
42+
- Launch single tbsim + drive Node -> then add teleop node as well
43+
- Launch Multi tbsim + drive Node -> reach the error point of topic name issues
44+
- *overlay* :
45+
- [screen] : Launch file working written
46+
- `g_multi_robot_drive`
47+
- Arguments , remappings
48+
- *overlay* :
49+
- Hear all endings , overlay for all of these
50+
- Ga -> single sim multi Robot
51+
- Gb -> problem is publish topic is not changing
52+
- [screen] : Multi Robots when ever we need we need to seperate so communication is not streamlined like namespaces.
53+
- `h_github_communities_issue _templates`
54+
- *overlay* :
55+
- [screen]
56+
- [face]
57+
- `i_turtlebot3_setup`
58+
- Drive
59+
- Gazebo visualize
60+
- Help them not freak out
61+
- *overlay* :
62+
- [screen] : explain turtlebot3 folders i little bit , sourcing , models
63+
- [face] : Lets bring in a robot package which will not make sense but from topics prespective there is alot to understand , Hosla keh we will understand in detail how it is running
64+
<!-- - `k_multi_tb3sim`
65+
- Bring in multi tb3sims in a gazebo world using launch files
66+
- Break down each file launching
67+
- Drive them straight
68+
- show how we can drive them in sqaures -->
69+
70+
---
71+
## Formating and linting
72+
- clang-format -i f_formate.cpp
73+
- clang-tidy f_formate.cpp --fix
74+
---

Lectures/Module_3.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
# Module # 3 : Transforms and URDF( V1.0 )
3+
- Package Created : *custom_robots*
4+
- Transforms
5+
- URDF basic Shapes
6+
- Mobile Robot
7+
- Robotic Arm
8+
- URDF 3D Models
9+
- Explaining Physical Properties with Gazebo and effects
10+
11+
---
12+
## Lectures
13+
14+
- `a_module_intro`
15+
- `b_static_transforms`
16+
- Transforms relations explain
17+
- rotations
18+
- translations
19+
- Publish a dynamic transform
20+
- build and enviornment for robotic scene representation with transforms
21+
- `c_urdf`
22+
- Create transforms using urdf file , makes life easier
23+
- `d_robot_structure_tf2`
24+
- Robot Body design without Shapes
25+
- *overlay*
26+
- [screen] : Explain the connection between different joints
27+
- `e_visual_body_shapes`
28+
- Add visual and collision tags to visualize robot
29+
- `f_links_and_joints`
30+
- State publishing of static and dynamic things
31+
- *overlay* :
32+
- [screen] : Explain link and a joint -> then jsp and rsp
33+
<!-- - `_robotic_arm_urdf`
34+
- Create URDF of robotic arm without Shapes
35+
- *overlay* :
36+
- [screen] : Lets take a look into Robotic Arm Example -->
37+
- `g_gazebo_robot_drive`
38+
- Write Node to drive Robot through Joint States
39+
- Add ros2_control Plugin
40+
- Add inertial parameters
41+
- Discuss parameters
42+
- drive robot
43+
- *overlay* :
44+
- [screen] : Gazebo is what 3D enviornmnt looks like
45+
- [face] :
46+
- Real robots have motor actuation here we have joint values on which we publish and robot joints move.
47+
48+
---
49+
## Formating and linting
50+
- clang-format -i f_formate.cpp
51+
- clang-tidy f_formate.cpp --fix
52+
---

Lectures/Module_4.md

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
2+
# Module # 4 : Sensor Data Processing ( V1.0 )
3+
- Package Created : *robot_sensing*
4+
- Real World Sensor Data processing
5+
- Gazebo Simulation Sensor Data Processing
6+
- ROS2 Bags
7+
---
8+
## Lectures
9+
10+
- `a_module_intro`
11+
- `b_tb3_simulation_sensors_exploration`
12+
- Echo multiple sensors
13+
- Understand lidar data
14+
- subscribe lidar data , Log Things
15+
- *overlay*
16+
- [screen] : What Is 2D lidar data
17+
- `c_lidar_data_processing`
18+
- Echo multiple sensors
19+
- Understand lidar data
20+
- subscribe lidar data , Log Things
21+
- *overlay*
22+
- [screen] : What we recieve - how to make it control with minimum
23+
- `d_maze_building_robot_positioning`
24+
- Build Maze
25+
- Keep Robot spawn location
26+
- *overlay*
27+
- [screen] : Gazebo working system and spawning of robot and maze model
28+
- [face] :
29+
- Gazebo is intersting software to work with
30+
- `e_maze_solving`
31+
- Explain different points at which robot will take action, stop at those points
32+
- *overlay*
33+
- [screen] : B part -> problems we have -> how we will solve it
34+
Cases at which we process lidar data
35+
- [face] : We will not make our robot take actions based on sensor data
36+
- `f_camera_data`
37+
- Visualization . data understanding , logging , different image sizes
38+
- *overlay* :
39+
- [screen] : image sizes , bandwidth effect on size change
40+
- [face] : Lidar Data is interesting but lets move to more complex data a 3D image which is used for Vision puposes.
41+
- `g_line_gazebo`
42+
- Blender model designing
43+
- Gazebo Importing and launching with Robot
44+
- *overlay* :
45+
- [screen] : High level explanation , how things are happening
46+
- `h_line_segmentation`
47+
- *overlay* :
48+
- [screen] : How canny edge detector works
49+
- `i_boundary_extraction`
50+
- *overlay* :
51+
- [screen] : How algo works
52+
- `j_mid_point_extraction`
53+
- *overlay* :
54+
- [screen] : How canny algo works
55+
- `k_basic_error_control_algorithm`
56+
- We will make it smooth in next module
57+
- *overlay* :
58+
- [screen] : How algo works
59+
- [face] : Lets make our robot move , using contol algorithm a propoertional - in upcoming module we will have detail control algroithm understanding
60+
- `l_rosbags`
61+
- Recording sensor data
62+
63+
- `m_sensors_into_custom_robots`
64+
- lidar,camera
65+
- `n_depth_camera`
66+
- We will make it smooth in next module
67+
- *overlay* :
68+
- [screen] : How algo works
69+
- [face] : Lets make our robot move , using contol algorithm a propoertional - in upcoming module we will have detail control algroithm understanding
70+
---
71+
## Formating and linting
72+
- clang-format -i f_formate.cpp
73+
- clang-tidy f_formate.cpp --fix
74+
---

0 commit comments

Comments
 (0)