Visual Servoing -part I( Real-Time Pan & Tilt Tracking System )

Visual Servoing (VS) is a control technique in which a vision sensor provides feedback information to control a robot movement. In this project we utilize VS as an approach for some robotic platforms.

In the first part, As a common example of VS we implemented a fast Pan & Tilt tracking system. The aim of such a system is to keep it’s look on a certain moving object. In this manner, first a camera detects the object then using two servo motors, camera is rotated about pan and tilt axes so as to bring the object position -described in image frame- to the center of the image.

The mentioned system uses two Dynamixel servo motors and a high frame rate camera to perform sufficiently fast (120 fps) in order not to miss fast movements of the object even when the object is falling down.In addition, Machine Vision and Image Processing algorithms are implemented under QT framework by making use of fast C++ library for real-time purpose called CMVison.


Visual Servoing –part II( Planar Arm Trajectory Planning )

In the second part of VS project to implement a two-link planar arm and to make it interact with other objects such as ball, obstacles and goal, we need to estimate object position in real world coordinates. It is done using curve (surface) fitting techniques to map from pixel frame to real world Cartesian coordinate.

For the purpose of making the arm move from current to desired position with fixed velocity or acceleration we need to solve Trajectory Planning problem. For this purpose we consider three approaches. Position Control is the first one in which we define several via points and solve Inverse Kinematic equations.The second approach is Velocity Control that utilizes Inverse Jacobian to maintain end effector velocity in proper way. In the third approach that is a combination of previous ones, the linear velocity is fed to Inverse Jacobian so as to compensate position error and avoid loss of efficiency near the singularity points.


GBDSO ( Game Boy Digital Sampling Oscilloscope )

GBDSO Cartridge

Game Boy color

Few years ago, when I was reading Elektor magazine, an interesting article attracted my attention.That was Game Boy Digital Sampling Oscilloscope and Since I was seeking a low-cost proper hand-held oscilloscope those days, I decided to construct my own. Another thing which persuaded me to do this project is that a great wave of nostalgia comes over me whenever I work with my Game Boy console. The Game Boy is a 8-bit hand-held video game console developed by Nintendo and released on October 21, 1998 in Japan.The main processor is Zilog Z80 which has enough speed of 8 MHz for this purpose. The Oscilloscope is ready to use after placing the board into the GB console instead of the standard cartridge. You can find more resources and projects about Game Boy in

Key Features:

  • Dual trace display
  • Sampling Rate: DC to 1Msps
  • Time Base: 100Sec to 5uS/Div
  • Inputs: AC/DC 1Meg Ohm
  • Input gain: 50mV to 10V/Div with 10:1 probes
  • Line or chart recorder trace modes
  • Real time FFT mode with dB scale
  • Variable persistence XY mode
  • PC link for screen or data transfer
  • 5hrs operation from NiMH batteries
  • Averaging and Auto trigger functions
  • Reference trace storage

Physics Simulation of RailRoad Vehicle ( Locomotive ) using Blender 2.5x

The main purpose of this project is dynamic simulation of an industrial locomotive with related parameters such as friction between rail and wheels, suspension system and also analysis of traction problem. Blender is a free open-source 3D computer graphic software which is used for creating interactive 3D application, simulation or video game. It utilizes Bullet physics engine as a tool for preparing dynamic parameters such as Mass, Form Factor, Anisotropic friction, Rot & Translational Damping and Collision Detection. Blender employs python interface to interact with physics engine using KX_GameObject Module .

Python program has three main parts which uses KX_VehicleWrapper module to provide useful functions for simulation: Vehicle Setup, Suspension ,Drive and Control. At the end, Blender Logic editor is used to make any types of control over every objects and modules in game engine.

The real model ES 64 F4 is an electric three-phase locomotive with 6400 kW power and a top speed of 140 km/h.

Two-wheeled balancing robot with Lego Mindstorm NXT and Matlab

­­­­­­The purpose of this project as a part of my industrial control course is to control a small-scale robot to preserve its stability over two wheels using Matlab Simulink. The control program  is a conventional PID type which utilizes Hitechnic gyroscopic sensor to measure tilt angle and produce proper control signal which is transmitted to the left and right motors .The mechanical structure of the robot is built with Lego Mindstorm NXT 2 bricks.The control program is uploaded into  Lego programmable brick based on ARM technology and it also requires NXT-OSEK type firmware in order to deal with Simulink language.

It’s well mentioning to say NXTway-GS has been great inspiration to my project.