Haptic MPC (in progress)
Tire in the picture (Smart Tire) includes some piezo electric sensors inside which can sense the vibrations applied to the tire while driving, later we use this information to classify the type of the surface that vehicle is driving on and we design an MPC controller which can take benefit of this information to adapt its behavior. We will show effectiveness of using smart materials in improving stability of the vehicle.
Online System Identification and Calibration of Dynamic Models for Autonomous Ground Vehicles
This paper is concerned with system identification and the calibration of parameters of dynamic models used in different robotic platforms. A constant time algorithm has been developed in order to automatically calibrate the parameters of a high-fidelity dynamical model for a robotic platform. The presented method is capable of choosing informative motion segments in order to calibrate model parameters in constant time while also calculating a confidence level on each estimated parameter. Simulations and experiments with a 1/8th scale four wheel drive vehicle are performed to calibrate two of the parameters of test vehicle which demonstrate the accuracy and efficiency of the approach.
Path-Following Through Control Lyapunov Functions
This is an approach to path following using so-called control funnel functions. Synthesizing controllers to "robustly'' follow a reference trajectory is a fundamental problem for autonomous vehicles. Robustness, in this context, requires our controllers to handle a specified amount of deviation from the desired trajectory. Our approach considers a timing law that describes how fast to move along a given reference trajectory and a control feedback law for reducing deviations from the reference. We synthesize both feedback laws using "control funnel functions'' that jointly encode the control law as well as its correctness argument over a mathematical model of the vehicle dynamics. We adapt a previously described demonstration-based learning algorithm to synthesize a control funnel function as well as the associated feedback law. We implement this law on top of a 1/8th scale autonomous vehicle called the Parkour car. We compare the performance of our path following approach against a trajectory tracking approach by specifying trajectories of varying lengths and curvatures. Our experiments demonstrate the improved robustness obtained from the use of control funnel functions.
Sampling Based Shooting Controller using A Physics Engine Model
A model of the Ninja Car is created using our spirit library and at any point input signals of the vehicle are sampled. A cost function is later constructed between each sample and the reference circular trajectory. Next, the control with lowest cost is applied to the car. Using this method we can achieve update rate of 30Hz on the control signal. Vehicle uses only Motion Capture system for position and velocity feedbacks and a trajectory horizon of 2 seconds is used for each sampled control.
Autonomous Driving Car Project
In this project I have been single handedly converting a lexus ISF (video is from another lexux) to a computer controlled machine. This has been part of my research in George Washington University and Internship at Zoox, Co. Electronics for the vehicle has been mostly custom build to power the sensors on the vehicle as well as turn the system on and off as required to save power in secondary battery of the vehicle. This project included hacking into vehicle's CAN bus messages to be able to read encoder messages in the wheels as well as other sensors and also sending commands to the power steering motor. This project was funded by TOYOTA at George Washington University.
On Board Visual Inertial Localization for Ninja Car
In order to be able to control the vehicle our compass sparse visual inertial SLAM library has been integrated to the car. Vehicle's trajectory in the video is generated by this pipeline.
Porting our SLAM Pipeline to NVIDIA TK1 board
Some effort on adapting our visual SLAM pipeline to run on an ARM processor (TK1). Despite the effort this turned to be very inefficient since I couldn't achieve speeds faster than Three update per second. This experiment helped me decide to use an Intel processor on Ninja car instead.
FPGA based image pre-processing for a SLAM Algorithm (On going)
As a par to my effort to design a SLAM pipeline on FPGA I have worked on this side project for short time and so far I have been able to take the images out of a raw rolling shutter camera, apply some filter and pass the output to VGA port on my Cyclone V board.
A good chunk of my PhD research has been spend on modeling of the vehicles. This c++ software library which uses bullet physics library underneath is capable of creating models for different robotic vehicles (a chassis and N wheels). All contact force calculations are handled with bullet physics engine where as spirit handles calculation of model Jacobian in a state, construction of a cost function and other high level methods like calibration of actual vehicle parameters and calculation of controls for a tracking problem.
1/8th Scale Self Driving Car (Ninja Car)
Ninja Car is a great platform for testing self driving car control algorithms in lab environment. This vehicle includes following sensors:
1024 PPR optical encoder in each wheel angular sensors in each swing arm angular sensors in each steering wheel 9DOF IMU wireless keyboard, mouse, hdmi, gamepad Interface 2Mpixel, synchronized, Global shutter stereo pair camera A intel Core-i7 computer A Custom made ECU which drives the main engine and two steering servos, handles power conditioning to all motors and sensors in the system as well as a Core-i7 CPU, handles signal conditioning between sensors and Core-i7 computer, small size (about 3"by3")
the vehicle is capable of driving in extremely fast speeds (video show 30% speed) and also steering both front and back wheels with separate servo motors.
The video on the left shows the difference of turn radius when the car uses only front wheels to turn vs all wheels. The video on right shows that vehicle is capable of having different heading angle than its velocity vector even in slow speed drive condition.
Hydraulic Actuated Vehicle Capable of Jumping Over Obstacles
This vehicle in addition to all electronics of Ninja Car is also equipped to hydraulic actuators which gives the car the power of applying force to its swing arms. Controlled swing arm forces are gonna be used in jumping over small obstacles and also controlled landing of the vehicle. Customized titanium acturators are designed by MOOG company for this research.
Design and fabrication of 4-wheeled pipe inspection robot for East Azerbaijan State Waste Water company (2012)
This pipe inspection robot has been designed to drive inside water and waste water pipes and inspect the wall of the pipe for any cracks and problems. This robot was the first water resistant pipe inspection robot made in Iran and was being used by Tabriz Waste Water Company. We designed this robotin a team of three where I have been responsible for all electronics and communication protocol design of the robot
Design of Parallel Cable Robot
This parallel cable manipulator was designed for my masters thesis project. Cable robots are widely used in stadiums to record shots taken from floating camera at end-effector of a cable driven parallel cable robot. This system was capable of trajectory tracking and control of the end-effector given the source and destination positions of the end-effector. Customized FPGA based processor was designed to tackle real-time control problem.
Design of Soccer Playing Robot Team
I have been honored to work with a team of 4-7 team members to design a soccer playing robot team for robocup contest.
The system consists of following steps,
- a camera mounted on top of the field detects each robot based on their color coded tags
- a strategy algorithm decides where each robot needs to go
- a planning algorithm plans trajectories of all robots
- plans get transmitted to each robot through a low frequency wireless communication channel
- local controllers on each robot calaculate the current that needs to be applied to each wheel.
The goal is to score the most goals in the game. Each robot has bunch of sensors on board and can move extremely fast with their omni-directional wheels.
Remote Ship Airwake Sensing Using a Model Helicopter
In the beginning of my phd program I have worked on some small projects of which this one was more interesting. In this project we designed an ecu which measures air pressure and also inertial movements of a model helicopter in order to estimate the Airwake effect around a moving ship.
Encoder Resolution Multiplier for Optical Encoders
This project was designed to increase resolution of current of the shelf optical encoders. The white box with electronics in it reads the analog output of the optical encoder and by extrapolating the measurements it can give a very good estimate of the angular change in the shaft.
Design of an Inchworm Robot
This project show a gate control of an inchworm robot. This has been developed as an effort for my masters robotic class which resulted in an IEEE conference publication.
Design of a vision based pistachio nut shell detection algorithm
Another project while I have been working on my masters degree. This algorithm uses a custom made feature descriptor in order to classify pistachio core from its shell. This algorithm can achieve success rate of 98% and was used in design of pistachio core separation machine.
- Design of a vocal carpet pattern player system (2011)
- Design of an air compressor controller (2010)
- Design of an automatic sliding door controller (2010)
- Design of a 700 watt DC motor driver and controller for use in treadmills (2010)
- Design of an industrial vibrator for Machine Industrial Manufacturer CO (2010)
- Design of a high voltage wire defect tester (2009)
- Design of an Electronic Control Unit for salt spreader of snow removal trucks at Imatak-Sanat company (2009)
- Design of an alarm system for illegal height of automobiles at the entrance of Miyane tunnel of eastern Azerbaijan province (2006)