Edp Report - Haptic Device For Telepresence (servos And Software Approach)

  • Uploaded by: Vipul Potluri
  • 0
  • 0
  • July 2020
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Edp Report - Haptic Device For Telepresence (servos And Software Approach) as PDF for free.

More details

  • Words: 2,902
  • Pages: 12
Selection Criteria The basic requirement for the project is to use some kind of a motor in order to rotate both the arms. Two types of motors are considered in order to perform this job. • Stepper Motor • Servo Motor A stepper motor works with permanent magnets, which are attached to the output shaft. Around the body of the motor is a series of coils that create a magnetic field that interacts with the permanent magnets. When these coils are turned on and off the magnetic field causes the rotor to move. As the coils are turned on and off in sequence the motor will rotate forward or reverse. A servo is basically controlled by sending them a pulse of variable widths, which move the output shaft accordingly. Differences Various differences can be pointed out between both the motors, but the solid reason for bending towards a servo is due to its position feedback control. Usually a stepper motor easily serves the purpose of a servo in these kind of robotic arms, as high rotations per min (rpm) is not required. The stepper motor would probably be better than a servo for a general robotic arm, where high speed is not a priority due to its high holding torque nature and a comparatively cheaper cost. Therefore, even though a stepper motor would be a better choice for a non-industrial robotic arm, where high acceleration is not a priority, the servo motor is considered for our project as it operates similar to a stepper motor at low speeds but also provides positional feedback. Option Chosen: Servo (due to its position feedback ability)

Servo A servo consists of several internal main parts: • The motor • Gearbox • Position Sensor • Error Amplifier • Motor Driver • Circuit to decode the requested position

Servo Motor Block Diagram Outside the casing, all we see is, three wires coming out. • Red – Power (+5V) • Black - Ground • White/Yellow (depending on the servo) – Coded Signal

How Servo works

Servo Wires

The servo consists of an output shaft. This shaft can be positioned to specific angular positions by sending the servo a coded signal. As long as the coded signal exists on the input line, the servo will maintain the angular position of the shaft. As the coded signal changes, the angular position of the shaft changes.

This coded signal is a pulse of varying length approximately every 20 msec. The length of the pulse is usually 1 or 2 milliseconds. Where does the coded signal come from? The signal controlling a servo can be supplied by the microcontroller in two ways: • Pulse Width Modulation (PWM) • Timers Usually, PWM generators are most commonly used due to less complexity in software algorithms. But in our case, it won’t be so useful due to the usage of multiple servos. This increases the complexity in the hardware, as we would have to share one PWM generator between several servos, which would require switching components outside the microcontroller. The PWM generator is designed to generate an accurate pulse between 0% and 100% duty cycle, but we need something in the order of 5% to 10% duty cycle (1ms/20ms to 2ms/20ms). If a typical PWM generator is 8 or 10 bits, then we can use only a small fraction of the bits to generate the pulse width we need and so we loose a lot of accuracy. Therefore, using simple timers and software interrupts would be the apt method for our case. How does the shaft move? The control wire is used to communicate the angle. The angle is determined by the duration of a pulse that is applied to the control wire. This is called Pulse Coded Modulation. The servo expects to see a pulse every 20 milliseconds (.02 seconds). The length of the pulse will determine how far the motor turns. A 1.5-millisecond pulse, for example, will make the motor turn to the 90-degree position (often called the neutral position). If the pulse is shorter than 1.5 ms, then the motor will turn the shaft to closer to 0 degrees. If the pulse is longer than 1.5ms, the shaft turns closer to 180 degrees.

Pulse variation for servo control How is pulse width converted to voltage? The control pulse is fed to a pulse width to voltage converter. This circuit charges a capacitor at a constant rate while the pulse is high. When the pulse goes low, the charge on the capacitor is fed to the output via a suitable buffer amplifier. This essentially produces a voltage related to the length of the applied pulse. The circuit is tuned to produce a useful voltage over a 1ms to 2ms period. The output voltage is buffered and so does not decay significantly between control pulses. How do we know the current position of the servo? A sensor, usually a potentiometer, reads the current rotational position of the output shaft, which produces a voltage that is related to the absolute angle of the output shaft. The position sensor then feeds its current value into the Error Amplifier, which compares the current position with the commanded position from the pulse width to voltage converter. In order to record the current position of the servo, all we need to do is to connect a wire to the potentiometer to read the voltage values at all positions. These readings can be sent to the ‘tracking’ arm to move accordingly.

Torque Calculation The approximate torque required at each joint has to be calculated initially to choose the best servo required. The servos available in the market are usually denoted in the units ‘oz-in’ or ‘Kg-cm’. If we consider a basic light servo with 3.2 Kg-cm; it means that if there was

a horizontally oriented weightless robot arm 1cm long and a 3.2 Kg weight applied on the end, the servo could keep the arm straight. If it was a load of 3.1Kg, the servo could accelerate the arm with 0.1 Kgcm. of torque. If it was a 3.3 Kg weight, it would move downwards with a torque of 0.1 Kg-cm, despite the servo's best efforts. If gravity is not a factor (ie, not lifting against gravity), it would accelerate the mass at a rate of Torque / (mass x distance^2) rotations/second. Gravity pulls down against any rotational arm with a torque of mass x length of arm. So, take the torque provided by the motor, subtract the torque created by gravity, and if the number is still greater than zero the arm will move in the direction the motor is turning. So in our case, we will need different servos at each joint of the arm, i.e., two similar servos for both the arms at each joint. The gripper would need the lightest servo, only depending on the weight of the object lifted by the arm. But when it comes to the second joint from the gripper, it should be powerful enough to carry everything above it including the object, gripper and the weight of the material above it. So in order to achieve this, that joint would require a stronger servo compared to the one used at the gripper. It goes for the rest of the joints below. The base servo would have to be the strongest in the entire arm, while the gripper has the lightest. Approximate Parameters · Gripper Servo 1 (Gripping) Total weight: 200g - Object to be lifted – 200g (maximum) · Gripper Servo 2 (Rotating the wrist) Total weight: 300g - Gripping servo 1 – 50g - Object to be lifted – 200g - Gripper – 50g · Joint Servo Total weight: 450g - Gripper servo 1 – 50g - Gripper servo 2 – 50g - Object to be lifted –200g - Gripper – 50g - Material – 100g (includes body and servo brackets) · Base Servo 1 (Moving Up and Down) Total weight: 550g - Gripper servo 1 – 50g - Gripper servo 2 – 50g - Gripper – 50g - Object to be lifted – 200g - Joint servo – 50g - Material – 150g (includes body and servo brackets)

· Base Servo 2 (Moving Sideways) Total weight: 650g - Gripper servo 1 – 50g - Gripper servo 2 – 50g - Gripper – 50g - Object to be lifted – 200g - Joint servo – 50g - Base servo 1 - 100g - Material – 150g (includes body and servo brackets) Length of link 1: 5 inches Length of link 2: 8 inches Acceleration required: Gripper Servo 2: 50 deg/sec^2 Joint Servo: 50 deg/sec^2 Base Servo 1: 50 deg/sec^2

Rough Sketch of the Arm where, W1: W2: W3: W4: W5: W6:

Weight Weight Weight Weight Weight Weight

of of of of of of

the the the the the the

Base servo 1 = 0.98 N joint = 0.98 N Joint servo = 0.49 N joint = 0.98 N Gripper servos (Rotating & Gripping) = 0.98 N object lifted + Gripper = (2 + 0. 49) N

L1: Length of the joint 1 = 6 inches = 15.24 cm L2: Length of the joint 2 = 8 inches = 20.32 cm M0: M1: M2: M3:

Base servo 2 (Sideways movement) Base servo 1 (Upwards movement) Joint servo Gripper servos (Rotating & Gripping)

Static Torque Joint 0: M0 = 0 N.m (as it is not affected by gravity) Joint 1: M1 (Tracking arm) = L1/2 * W2 + L1 * W3 + (L1 + L2/2) * W4 + (L1 + L2) * (W5+W6) = (15.24/2)(0.98) + (15.24)(0.49) + (15.24 + 20.32/2)(0.98) + (15.24 + 20.32)(0.98 + 2.45) = 1.6180 N.m = 16.5 Kg-cm = 229 oz-in Joint 1: M1 (User-controlled arm) = L1/2 * W2 + L1 * W3 + (L1 + L2/2) * W4 + (L1 + L2) * (W5+W6) = (15.24/2)(0.98) + (15.24)(0.49) + (15.24 + 20.32/2)(0.98) + (15.24 + 20.32)(0.98 + 0.49) = 1.02 N.m = 10.44 Kg-cm = 145 oz-in The torque for the 'user-controlled' arm at Joint 1 is lesser than the 'tracking arm' as it is not lifting the object. But in order to simplify the calculations, similar servos are used in both the arms at Joint 1. Joint 2: M2 = L2/2 * W4 + L2 * (W5+W6) = (20.32/2)(0.98) + (20.32)(0.98 + 2.45) = 0.7965 N.m = 8.12 Kg.cm = 112.78 oz-in

Joint 3: M3 = 0 N.m (distance is 0) Dynamic Torque It is too complicated to calculate the dynamic torque, as the arm does not denote a specific shape. So an approximation was done in order to calculate the total torque required.

Proposed Servos Gripper: Hitec HS-322HD Standard Heavy Duty Servo (http://www.robotshop.ca/hitec-hs-322hd-servo.html) - $11.30 • Speed: 0.15 sec @ 60° • Torque: 3.7 kg/cm – 51.38 oz/in • Size: 40x20x36.5 mm • Weight: 43 g - 1.51 oz • Karbonite Gear Wrist: Hitec HS-322HD Standard Heavy Duty Servo Link  (http://www.robotshop.ca/hitec-hs-322hd-servo.html) - $11.30 • Speed: 0.15 sec @ 60° • Torque: 3.7 kg/cm – 51.38 oz/in • Size: 40x20x36.5 mm • Weight: 43 g - 1.51 oz • Karbonite Gear Elbow: Hitec HS-755HB Giant Scale Servo Link  (http://www.robotshop.ca/hitec-hs755hb-servo.html) - $31.34 • Speed (sec/60o): 0.23 • Torque (Kg-cm/Oz-in): 13.2/183 • Size (mm): 59 x 29 x 50 • Weight (g/oz): 110 /3.88 Base: Hitec HS-805HB Giant Scale Servo Link  (http://www.robotshop.ca/hitec-hs805BB-servo-motor.html) $44.77 • Speed (sec/60o): 0.14 • Torque (Kg-cm/Oz-in): 24.7/343 • Size (mm): 66x30x58 • Weight (g/oz): 152/5.26

Base (rotating): Hitec HS-805HB Giant Scale Servo Link  (http://www.robotshop.ca/hitec-hs805BB-servo-motor.html) $44.77 • Speed (sec/60o): 0.14 • Torque (Kg-cm/Oz-in): 24.7/343 • Size (mm): 66x30x58 • Weight (g/oz): 152/5.26 Total servo cost for each arm (approx.) = $150

Software Design The software design plays the most important role in this project. Optimization has to be done to the maximum level in order to cut short the delay between each servo communicating with the microcontroller. The complexity level for controlling one servo or a sensor at a time might not be that high, but when it comes to controlling upto various number of servos and sensors, the compleity level definitely rises.

Tracking arm Servo control Initially, a continuous signal of 1ms/20 ms duty cycle (‘1ms’ might vary depending on the servo) must be provided by the microcontroller to all the servos in order to function, which is provided by the pulse width modulators on the microcontroller. The 1ms pulse width would make the servo stay constant at a particular angle carrying the maximum load depending on its torque. The next step is to test the servos by giving certain signals. This would be done by connecting the servos of the ‘tracking’ arm to the digital ports of the microcontroller and sending the desired signals. The microcontroller then sends pulse widths varied between 1 ms to 2 ms to the digital ports depending on the desired angle, which are then

converted to voltage by the pulse width to voltage converters on the servos. Ideally, the arm has to operate according to the signals sent by the computer via the microcontroller. Haptics The testing principle for force sensors will be similar to the servo control for the user controlled arm, due to the fact that the force sensors on the tracking arm will be the input to the microcontroller unlike the servos. The signal wires from the force sensors will be connected to the analog ports of the microcontroller to receive the varied voltage values depending on the force exerted on them. These voltage values then go through the ADC to get the corresponding pulse widths, which can be sent to either the gripper or the elbow servos of the user controlled arm. These varied pulse widths should then be displayed on the LCD that is connected to the microconctroller for testing purposes. Ideally, the pulse widths displayed should be varying even for the slightest of the force.

User controlled arm Servo control After the servos have been modified (to move freely using hand controls and give positional feedback), the servo signal wires are connected to the analog ports of the microcontroller. The microcontroller then receives various voltages depending on the servo movement, which are later converted to pulse widths using analog to digital conversion. The pulse widths after the ADC are to be displayed on the LCD that is connected to the microcontroller for testing purposes. Ideally, the LCD has to be displaying a change in pulse width even for the slightest of the movements by the arm. Haptics This is the most crucial part in the project, where the servos of the user controlled arm at the gripper and elbow joints should be programmed

to act as both input and output devices. As mentioned in the previous section, all the servos are programmed to move freely sending the position feedback, acting as an input device. But now the gripper and elbow servos, should be able to act as an output device as well to receive the force feedback. As of now, we are considering multiple approaches for this part, as we do not know for certain which will work the best with the highest accuracy. The first logic we will try implementing for the gripper is to use the servo angle of the tracking arm’s gripper to act as an input/output device without using a force sensor. This will restrict the movements of the user’s gripper depending on the tracking gripper’s position. The analog voltage received from the tracking gripper is converted to pulse widths through ADC, which is then passed to the user’s gripper. This logic cannot be applied at the elbow joint, as it would work only if the arm is lifting an object heavier than its maximum torque, and it starts jittering. So this logic would not be implemented at the elbow joint as we desire to feel any kind of weight even when its within the torque range for the servo. The second logic would be the implementation of a force sensor on the tracking gripper and the elbow to detect the exact force acting, which is later converted to voltage. This voltage is then converted to pulse widths through ADC, to be passed to the user’s gripper. These pulse widths are then sent though the signal wires which were initially connected to the servo prior to the modification. This would be a mixed signal with varied pulse widths to make the user feel pressure towards the opposite direction of movement. According to our current knowledge, we are assuming that the former method would work well for the gripper and latter for the elbow joint. This would probably change once the testing procedure starts.

Overall System After successfully implementing the individual testing procedures, both the methods should now be programmed to function at the same time. The changing pulse widths which are received from the user controlled arm should be sent to the tracking arm, which are converted to voltage values by the servo in order to move accordingly. The analog feedback from the tracking gripper and the elbow should be sent to the microcontroller, which is then converted to pulse widths through ADC and outputted to the user’s arm to feel the haptics.

Ideally, the tracking arm should receive a varied pulse width for even the slightest movement in the user’s arm. Similarly, the user’s gripper should respond for even the slightest force on the tracking gripper and same goes to the elbow.

Related Documents


More Documents from "Oscar Zurita"