Friday, December 5, 2014

Analytical Jacobian VS. Geometrical Jacobian

The analytical jacobian is directly differential from forward kinematic, and geometric jacobian is considered the geometric relation. The important point is that angular velocity does not have an integral like associated term like "angular position".

differential quantities in the operational space.

Friday, November 21, 2014

How to Use Solidworks Model in Matlab

Imagine that you have designed a part in Solidworks and you want to transfer the cloudpoints of its surface to Matlab (lets say their XYZ coordinates). In order to do that you have to first make a new static study in Solidworks Simulation Toolbox. Then start meshing the model with any intensity you need. Then right click on mesh and click on "List Selected":

Thursday, July 31, 2014

Controlling Dynamixel MX-64T using Arduino

MX-28T, MX-64T, MX-106T
Connection to UART
To control the Dynamixel actuators, the main controller needs to convert its UART signals to the half duplex type. The recommended circuit diagrams for this are shown below.

Tuesday, June 10, 2014

Triple Boot on MacBookPro Retina

If you want to have Windows and Ubuntu alongside your Mac OS on your MacBookPro you should be aware of the followings:
The only Linux distribution which has a built-in support for Mac hardware is Ubuntu. For example after installing Fedora in addition to resolution problem your wireless network card won't work initially.
According to my experience you should first install Windows and then Linux. In order to install Windows it is better to use the Apple Boot Camp which automatically downloads and attache software and drivers to the Windows image and makes a bootable Windows USB for you.
By using Disk Utility a exFAT partition for Windows and keep the remaining as free space for Linux.
If you want just Windows alongside Mac you can restart your mac then press "option" key and then install Windows. However this doesn't work fork triple scenario then you need to install another program called "rEFInd".

Wednesday, April 30, 2014

GCC: Linux gnu/XXX.h: No such file or directory

It can happen a lot when you receive a compiler error alerting for instance: "gnu/stubs-32.h: No such file"
The best you can do is just:
$ yum whatprovides *stubs-32.h
# yum install $RESULT

Monday, April 28, 2014

An EKF for Real-Time Estimation and Control of a RLFJ Manipulator

An Extended Kalman Filter for Real-Time Estimation and Control of a Rigid-Link Flexible-Joint Manipulator
The project of Random Signals, Adaptive, and Kalman Filtering course, under supervision of Dr. Parsa.
Abstract—High performance tracking of an industrial robot depends on accurate expression of manipulator dynamics. When a robot has flexible joints efficient model parametrization will be difficult to achieve. In this course project report an extended Kalman filter (EKF) observer to estimate manipulator states is presented. In a computer simulation the estimation performance is demonstrated. Experimental setup for KUKA/DLR Light-Weight robot in Human Robot Interaction at the University of Western Ontario is also carried out without any success.
Documents and MATLAB and Maple files can be downloaded here.

Wednesday, April 23, 2014

Skew symmetry property

The three types of derivatives: vectors-by-matrices, matrices-by-vectors, and matrices-by-matrices. These are not as widely considered and a notation is not widely agreed upon. However the second type (matrices-by-vectors) is widely used in Robotics.
If we consider the following state form for a robot:
 M(\theta )\ddot \theta  + C(\theta ,\dot \theta )\dot \theta  + g(\theta ) = \tau    

The matrix N(\theta ,\dot \theta ) = \dot M(\theta ) - 2C(\theta ,\dot \theta ) is skew-symmetric.
Here the matrix-by-vector derivative is:                                                              

{\dot m_{kj}} = \sum\limits_i^n {\frac{{\partial {m_{kj}}}}{{\partial {\theta _i}}}} {\dot \theta _i}                   

Note that this is not true if the robot dynamics is expressed in any other forms (for exampleM(\theta )\ddot \theta  + R(\theta ,\dot \theta ) + g(\theta ) = \tau ).

Tuesday, April 8, 2014


If you need a spacer for connecting FESTO adaptive gripper DHDG to the end-effector of KUKA/DLR Lightweight Robot here is the link to download the SolidWorks design CAD file.

Sunday, March 23, 2014

DH Parameters

  There are a few rules to consider in choosing the coordinate system:

  1. the z-axis is in the direction of the joint axis
  2. the x-axis is parallel to the common normal: x_n = z_n \times z_{n - 1}
    If there is no unique common normal (parallel z axes), then d (below) is a free parameter.
  3. the y-axis follows from the x- and z-axis by choosing it to be a right-handed coordinate system.
Once the coordinate frames are determined, inter-link transformations are uniquely described by the following four parameters:
  • \theta\,: angle about previous z, from old x to new x
  • d\,: offset along previous z to the common normal
  • r\,: length of the common normal (aka a, but if using this notation, do not confuse with \alpha). Assuming a revolute joint, this is the radius about previous z.
  • \alpha\,: angle about common normal, from old z axis to new z axis


"Standard" DH Parameters

Following the DH standard you must provide 4 numbers that define the orientation of the ith link with respect to the i-1th link. "Standard" DH convention assumes that the ith coordinate frame is at the i+1 joint. (joint 1 axes 0, joint 2 axes 1 ...)
  1. (Link parameter)(alpha)The first number represents the angle (in radians) between zi-1 and zi about xi.
  2. (Link parameter)(a)The second number represents the length (in meters) along xi of the common perpendicular between zi-1 and zi.
  3. (Joint parameter)(theta)The third number represents the angle (in radians) between xi-1 and xi about zi-1.
  4. (Joint parameter)(d)The fourth number represents the distance (in meters) along axis zi-1 between the origin of the i-1th coordinate frame and the point where the common perpendicular intersects axis zi

"Modified" DH Parameters (also called Craig's convention)

Following the modified DH standard, you must provide 4 numbers that define the orientation of the ith link with respect to the i-1th link. Unlike the "standard" DH convention, the "modified" DH convention assumes that the ith coordinate frame is at the i joint. (joint 1 axes 1,joint 2 axes 2 ...)
  1. (Link parameter)(alpha)The first number represents the angle (in radians) between zi-1 and zi about xi-1.
  2. (Link parameter)(a)The second number represents the length (in meters) along xi-1 of the common perpendicular between zi-1 and zi.
  3. (Joint parameter)(theta)The third number represents the angle (in radians) between xi-1 and xi about zi.
  4. (Joint parameter)(d)The fourth number represents the distance (in meters) between xi-1 and xi about zi.

    Many people in robotics are actually unaware that there are two different conventions in use. An advantage of Craig’s convention is the proximal placement of the origin for a link. Also the rotation  θi is about  zi and the joint number is the same as the coordinate number, which seem more natural. Torque exerted about joint i is also at the same place as at link i’s coordinate system, to which inertial parameters such as center of mass are likely to be referenced. A disadvantage is that the transform mixes i−1 and i parameters. Both Craig’s convention and the standard DH convention are equally valid. The choice of one over the other is merely a matter of taste or habit.

Wednesday, March 5, 2014

EqualX is a great alternative to MathType

EqualX gives you the power and beauty for writing equations TeX/LaTeX in a simple to use editor.
Type TeX or LaTeX Type your equation in the best typesetting language for equations, TeX. You can paste in your existing equations and mix TeX code with click-and-click.

LaTeXDraw and Inkscape are best tools for drawing figures for scientific papers.

Sunday, February 23, 2014


 If you want to access to a your personal computer from anywhere via "Windows Remote Desktop Connection" you have to: firstly, configure your modem. Secondly, you must know your IP. Here I assume that you know how to configure your modem (if don't please see here) then you should use a program like MailIP to send your computer's IP automatically to your email even if you have dynamic valid IP. In this way you save money from not buying static IP because when ever your IP get changed "MailIP" will send the new IP to your email. Also you don't need to subscribe to slow services like LogMeIn or TeamViewer and you can easily use the default windows remote control program.

The source code and binary file can be downloaded here.


comuto is developed by me and it is a simple and easy-to-use application that comes in handy for users who want to execute operations automatically.
It also enables you to perform operations such as shutting down or restarting the system when the network or CPU usage is under a specified rate.
With the help of comuto you have the possibility to monitor the CPU usage and change the operation type.

The compiled version can be download here.
Source code is available here.
comuto screenshot 1 - With the help of comuto you have the possibility to execute application automatically

Saturday, February 22, 2014

Artificial Neural Network-based Hybrid Force/Position Control of an Assembly Task

The project of neural network course, under supervision of Dr. Abdollahi.
Abstract - An effective hybrid force/position approach based on artificial neural networks for MIMO systems is implemented.

Download document.

An Optimal Control Approach to Robust Control of Robot Manipulators

The project of robust control course, under supervision of Dr. H.A Talebi.
Abstract- We present an optimal control approach to robust control of robot manipulators.To guarantee the performance of the manipulator under uncertainties, we first translate the robust
control problem into an optimal control problem, where the uncertainties are reflected in the
performance index. We then use the optimal control approach to solve the robust control problem.

Download document.

Implementing a Solution to the Accuracy/Robustness Dilemma in Accuracy/ Robustness Dilemma in Impedance Control

The seminar project, under supervision of Dr. Nikravesh.
Abstract - As a solution to this dilemma, an accurate and robust impedance control technique that was developed based on internal model control structure and time-delay estimation is derived: the former injects desired impedance and corrects modelling error, the latter estimates and compensates the nonlinear dynamics of robot manipulators.

Download document.


Adaptive control of a kinematically and dynamically uncertain PA-10 Mitsubishi

The project of advanced robotic course, under supervision of Dr. H. A. Talebi.
Abstract - We derive an adaptive Jacobian controller for trajectory tracking of cooperative redundant robot with uncertain kinematics and dynamics.

Download document.


Monday, January 13, 2014

Mini Automation Project

In this project, you can config two relays to start/stop high power devices on a specific time using PIC18f4550 and PCF8583.
Here is the Proteus Simulation and CCS Project.
All setting are configurable. It has simple 3 level menu by which you can edit start time and stop time of each relay and also you can change the current time. Since PCF8583 is used and every settings is saved on PIC18f4550 memory, even when electricity run off this device can operate normally afterward.
Here is Proteus Schematic:

Here is the actual Device: