Carnegie Mellon University
Computer Systems (18-612)
Parallel Computing (15-618)
This course was an introduction to think about how programs are executed in parallel. It talked about modern multicore and GPU architecture followed by various parallel programming models. Finally to optimize the implementation, we had to understand cache coherence and memory consistency models. Various frameworks like Intel SIMD, Cilk Plus, CUDA, OpenMP and MPI were explored and their advantages and drawbacks were discussed.
Our project targeted to use multiple frameworks and models for parallelizing path for robots in 2D and compare their performances on multiple maps and different hardware configurations. Details of the project can be found at: Parallel RRT path planning for robots.
Embedded System Software Engineering (18-642)
This course provides in-depth coverage of the topics that are essential to the success of embedded software projects based on case studies of industry project teams that have suffered or failed. I learnt about a variety of topics including: lightweight but high quality embedded software processes, technical best practices for embedded software, effective testing and validation, causes of software system failures, software for safety-critical systems, and embedded-specific aspects of software security. The course was a mixture of programming assignments, tool use experiences, and research questions to get hands-on experience at dealing with the types of problems that are encountered in industry embedded projects. This course focuses on software quality, safety, and security skills that are required to make embedded systems that can handle the messiness of the real world and is all about getting ready to build industry-strength embedded projects.
We implemented these tools on simple maze solving project. Details of the project can be found at: Maze Solver in ROS
Real-Time Embedded Systems (18-648)
I learnt the possible application of real time embedded systems in various domains. They range from household appliances, transportation and motion control systems, medical systems and devices, robotics, multimedia and mobile communications, videogames, energy generation distribution and management, to aerospace and defense systems.
The course focused on the core concepts and principles underlying these systems, including resource management, scheduling, dependability and safety. Implications to multi-core platforms, SoCs, networks and communication buses along with mathematical models and analysis techniques were discussed. There was also a hands-on experience with implementing real-time embedded systems on raspberry pi. We developed our own scheduling algorithms in the linux kernel for various applications to get detailed understanding of hardware-software interfaces, concurrency and communications. Finally, there were application-level concepts such as signal processing, image processing, computer vision, sensor fusion and feedback control to give an overview of the breadth and depth of the subject.
We implemented energy aware dynamic frequency scaling scheduling algorithm for multiple core in linux kernel. Details of the project can be foumd at: Energy Aware Multicore Scheduler
Computer Architecture and Systems (18-742)
Wireless Sensor Networks (18-748)
The course started with various sensor characteristics, classifications and limitations. Then it dove into the network stack going into detail of physical, MAC and network layers. Various MAC protocols and network routing protocols were compared, and the tradeoffs were studied. Clock synchronization being an essential part of distributed systems was studied. Some of the security implications were explored and few ways to mitigate it.
We had to demonstrate the learnings with a course project. Our team implemented swarm robotics as an application of warehouse management. IMU and RFID sensors were used on each robot controlled by ARM microcontroller fitted with ESP-32 Bluetooth radio. The system was laid out as a star topology but we proposed an idea to implement a complete ad-hoc network without a central hub. Details of the project can be found at: Robot Networks
Non Linear Control (18-776)
This course provided an introduction to the analysis and design of nonlinear systems and nonlinear control systems, stability analysis using Lyapunov, input-output and asymptotic methods, and design of stabilizing controllers using a variety of methods selected from linearization, vibrational control, sliding modes, feedback linearization and geometric control.
Finally, there was a project to bring this theory into practice. The goal was to compare the performance of linear control to that of nonlinear methods. We designed a baseline LQR controller for a quadcopter to allow it to hover and move to specified (x,y,z) co-ordinates. Then we designed a non-linear observer for a better state estimation that was then fed to the original LQR controller. Control algorithm development and tuning was done in MATLAB and the simulations were done in PX4 flight controller. Details of the project can be found at: Quadrotor Observer
Principles and Engineering Applications of AI (18-662)
Robot Autonomy (16-662)
This course was an excellent introduction to the world of robotic manipulators. It started with mathematics behind forward kinematics and inverse kinematics algorithms. The robotic language of URDF was also covered for robotic arms. We were able to perform hands on implementations of these algorithm on 7 DOF Franka Panda Arm after perfecting them in ROS simulations. Various gripping mechanisms and sensors were discussed used in research and industry setting. The course went on to discuss about sophisticated supervised and unsupervised learning algorithms for optimized robot manipulations and gripping.
We implemented a project titled Setting and Resetting environment. The goal was to enable the arm to pick objects from a box on a tray and vice versa using multiple image sensors. This would allow the robot to collect useful sensor data from grasping which can later be used for machine learning algorithms. We wanted to automate this tedious process with minimal human intervention. We had a novel approach of identifying probability of successful grasp and push the object around to a favorable position before attempting the grasp. The algorithm was showcased in Coppelia Sim environment and details of the project can be found at: Robot Grasping
Vishwakarma Institute of Technology
Semester I
Chemistry
Engineering Graphics
Modern Physics
Linear Algebra
Semester II
Computer Programming
Differential & Integral Calculus
Electrical Engineering Fundamentals
Engineering Mechanics
Management Technology
Semester III
Electrical Circuits and Measurements
Electronic Devices and Circuits
Network Theory
Sensors for Mechanical Measurement
Signals and Systems
Application of Electronic Instruments
Semester IV
Control Systems
Data Structures
Digital Electronics
Linear Integrated Circuits
Process Parameter Measurements
LabView Programming
Semester V
Control System Components
Digital Signal Processing
Instrumentations & System Design
Microcontroller Based Systems
Unit Operations
Calibration and Standards
Semester VI
Analytical Instrumentation
Biomedical Instrumentation
Industrial Automation
Modern Control Theory
Process Loop Components
Advanced Factory Automation
Semester VII
Digital Control
Industrial Electronics
Instrumentation Project Engineering
Process Instrumentation and Control
Honors - Reliability and Testing
Introduction to Reliability of Devices
Reliability for Electrical Interferences
Reliability Against Environmental Impact