Simulating Metameric Organisms
Course: Simulation of Biology Instructor: Greg Turk
In Biology, metamerism refers to the phenomenon of an organism having a series of similar segments linearly joined together to form a part of the body or the whole body. The vertebral column, and the bodies of arthropods (centipedes and scorpions) and annalids (earthworms and leeches) are the most popular manifestations of metamerism in nature. Such an organism is able to move in a straight line just by a simple periodic motion of limbs (gait) on a single body segment acting in some type of harmony with the limbs on all the other segments. Arthropods such as centipedes and millipedes use metachronal waves as their locomotive gaits, which involve sequential motion of limbs, as opposed to a synchronous one. In this project, I have demonstrated all of these phenomena through rst constructing a reasonably simple mechanical model of a repeating segment with oscillating pair of limbs, and then joining a number of such segments to form a larger organism.
Note: In my code for simulating multi-segment organisms, there is a bug which is not allowing me to implement the constraints properly. So you'll see that cockroach and millipede simulations do not look very natural. I will fix it as soon as possible.
Conway's Game of Life
Course: Simulation of Biology Instructor: Greg Turk
Flock of Birds (Boids Algorithm)
Course: Simulation of Biology Instructor: Dr Greg Turk
Alan Turing's Reaction-Diffusion Model
Course: Simulation of Biology Instructor: Greg Turk
Diffusion Limited Aggregation (DLA)
Dielectric Breakdown Model (DBM)
Course: Simulation of Biology Instructor: Greg Turk
Three-link Snake Robot Simulation
Instructor: A. Muhammad. Course: Geometric Mechanics and Control.
I reviewed the geometric motion-planning analysis of a 3-link snake robot [Shammas et. al. (2007)], through which I learned to utilize nonholonomic constraints for deriving a mapping between fiber-space and base-space variables of an underactuated principally kinematic system, and to design closed curves (gaits) in the base-space that can cause desired trajectories in the fiber-space.
Multi-link Fish Simulaton
Group with: Z. Usman. Instructor: A. Muhammad. Course: Topics in Robotics and Control.
I modeled a multi-link fish-like swimming robot [Yu et. al. (2007)] and coded to simulate an oscillating multi-link fish-body. For simulation, I made a recursive function that could draw an n-link robotic-arm in Matlab through SE(3) transformations, given the desired joint types (R or P), axes of rotation (in case of R), and base-space configuration. To make the base-variables of the fish-body follow a given trajectory specific to anguiliform undulation (a swimming mode), I derived and numerically solved the system’s Euler-Lagrange equation and finally in the simulation, I successfully demonstrated the multi-link structure of the fish following a given trajectory.
Modulation of a Chaotic Signal with Analog and Digital Signals
Course: Dynamical Systems Instructor: Dr Adnan Khan.
I modeled the Lorenz's Equations in Simulink to generate the three chaotic signals.
In the first part, I modulated (masked) one of these signals with an audio signal, and then demodulated to recover the original audio signal; the Cuomo's method [Cuomo and Oppenheim (1993)].
In the second part, through another Cuomo's method, I modulated the chaotic signal with a digital signal, passed the modulated signal through a noisy low-pass system modeled as the transmission medium, amplified the signal, demodulated the signal and rectified it for proper averaging, low-pass-filtered to remove spikes, converted to a digital signal using sample and hold technique, and finally recovered the original digital signal through a decision making algorithm.
GSM-directed GPS-tracking Autonomous Vehicle
Group with: H. Ilyas, S.R. Qureshi, F. Feroze. Supervisor: K. Sarfraz.
In my summer internship in 2010, the project assigned to us was to make an autonomous GPS tracking robot, requiring the destination coordinates to be sent to it as an sms through a GSM module. I interfaced most of the hardware (including PCB design) and developed the tracking algorithm.
Obstacle-avoiding Robot
Group with: H. Ilyas, S. Rehman Qureshi. Instructor: N. Zaffar. Course: Devices and Electronics.
I implemented an obstacle avoidance mechanism on a differentially driven toy-car using 3 ultrasonic transducers placed at front, right and left of the car. The driving signal for the transducers was generated using NE555. To amplify the signals received at the three ultrasonic receivers, BJT small signal amplifiers were biased to give optimum gains, and the outputs of these amplifiers were digitized using a filtering, rectifying and comparator circuits. The digitized signals were then fed to a self-designed combinational/logic circuit, which in turn drove the motors of the toy-car through a custom motor-driving transistors' circuit. I designed the PCB containing all the circuits in this system on Express PCB.
FPGA-based Pseudo-chaotic Signal Generator
Group with: M.A. Raahim. Instructor: S. Masud. Course: Digital Systems Design.
On an FPGA circuit, a clock synchronized digital system, I implemented four Chaotic Piecewise Linear Affine Maps (PWAM) with long periods: Bernoulli Shift map, Tent map, Twisted Tent map, and Ship map; realized by Linear Feedback Shift Registers (LFSR) and commonly used as pseudo noise sequence generators. These are used as chaos generators for a digital FM-DCSK chaos radio [Azzinari et al. (2001)].
8-bit Processor
Group with: A. Zia, M.A. Raahim, S.R. Qureshi. Instructor: J. Ikram. Course: Computer Organization.
As a group of 4 students, we made an 8-bit processor which was able to execute the assembly insturctions add, sub, or, and, sll, slr, lw, sw, addi, beq, bne, ori, andi and li.
An Automated Aquarium (Machian Sukoon Vich)
Group with: H. Ilyas, S. Rathore, F. Feroze. Instructor: J. Ikram. Course: Digital Logic Circuits.
We aimed to make an aquarium control system using digital logic for controlling the parameters favorable for a fish habitat. We successfully implemented
- Water level control
- Automatic fish feed
- Extreme temperature warning, with the favorable temperature range set by user.
A Custom FaceBooklite
Instructor: N. Arshad. Course: Introduction to Programming.
Programmed a basic social-networking interface, using pointers and object-oriented programming.
3D Random Tree Generator
Instructor: S.A. Khan. Course: Computational Problem Solving.
I made a program that draws a 3D-tree of the species ‘black tupelo’, with a probabilistic variation in the parameters that specify tree's physical features such as radii and lengths of trunks and branches, number of branches per parent, number of leaves per branch, length and width of leaves. Unusual features include the expansion of radius at the base of trunk (usually apparent for larger radius), function m.files ‘leaf’ and ‘branch’ that can be used to draw branches and leaves at specified locations, axis and angles. In the demo, the values of given parameters in the program are specific to this tree species, but for drawing other species, you have to change the parameters but the code does not allow drawing tree with more than one trunk-splits.
The program is designed such that, first of all the trunk is generated. Then branches start to form one by one in such a way that the child-branches detect the position of their only parent as soon as the parent is generated, and then the child branches are generated too, one by one, according to the angles and orientations specified. It is necessary to keep in mind that leafs are also treated as branches.
The program is designed such that, first of all the trunk is generated. Then branches start to form one by one in such a way that the child-branches detect the position of their only parent as soon as the parent is generated, and then the child branches are generated too, one by one, according to the angles and orientations specified. It is necessary to keep in mind that leafs are also treated as branches.
Increasing Image Resolution
In my freshman year, I wrote an algorithm and coded in Matlab to increase the resolution of an image by roughly 7.5 times per dimension, through 'Linear Interpolation'. I had never learnt this technique before - I discovered it myself.