Teleoperating using hand gestures

The idea of this project is converting IMU orientation into the linear and angular velocity of the robot. Here is the overall structure of this project.

Figure 2: Basic structure of the gesture teleop project

For the IMU device, we are using an IMU called MPU-9250 (https://www.invensense.com/products/motion-tracking/9-axis/mpu-9250/). The IMU will interface with an Arduino board using the I2C protocol. The orientation values from the IMU are computed by the Arduino and send to PC through the rosserial protocol. The orientation values are received on the PC side as ROS topics and converted into twist messages using a ROS node.

Here is the project block diagram with the MPU 9250 and Arduino board:

Figure 3: Functional block diagram of the robot teleop project

We are using a hand glove in which an Arduino board is fixed in the palm area and an MPU-9250 is fixed on the finger area, as shown in the following image:

Figure 4: Hand glove with Arduino and MPU-9250

There are four kinds of arm gestures used in this project:

  • Vertical elbow rotation:
    •  Clockwise
    •  Anticlockwise
  • Up pitch movement of hand
  • Down pitch movement of hand

Vertical elbow rotation is mapped to the rotation of the robot in the z direction, and up and down pitch movement of the hand is mapped into forward and reverse movement of the robot. Here's a depiction of how the movements of our arm and motion of the robot are mapped:

Figure 5: Hand gestures and corresponding motion mapping

The mapping goes like this: the robot will stop the movement when the IMU in the hand is horizontal to the ground. We can call this the home position. In the home position, the robot will not move. When the elbow starts rotating about the vertical axis, the robot's velocity will be such that it will rotate along the z axis. The robot's rotation will depend on how many degrees the elbow is rotated. The robot will keep on rotating until the IMU reaches the home position. For moving the robot forward and backward, we can pitch the hand as shown in the preceding figure. If the hand pitching is upward, the resultant robot velocity can move the robot backward, and vice versa.

Here is the coordinate-system representation of the IMU and movement happening along each axis and the motion assigned to each hand movement:

Figure 6: Hand gestures and its motion mapping

The following table will give you a quick idea about the mapping of hand gestures and robot motion:

Hand movement Robot motion
Elbow rotation clockwise (IMU yaw) Robot rotates clockwise
Elbow rotation anticlockwise (IMU yaw) Robot rotates anticlockwise
Hand pitch upward (IMU pitch) Robot moves backward
Hand pitch downward (IMU pitch) Robot moves forward

Note that we are using two components of rotation from the IMU, which are yaw and pitch. The yaw rotation of the IMU is facing upward, and pitch rotation is facing toward you. When we rotate the elbow, the yaw value of the IMU changes, and when we pitch the hand, the pitch value of the IMU changes. These changes will converted to the linear and angular velocity of the robot.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.119.133.228