Robot Arm Control

It’s easy for us to point at a certain coordinate in space. That’s mainly because we simply locate the point with our eyes, and continuously check if our finger is pointing at that very spot. It surely will be more difficult without using eyes, and this is the case for robot arm control with no image feedback.

Think of a two arm robot (Fig. 1). We usually want to reach a certain point on the x-y plane. The problem is only the angle of the joints can be controlled. How can we correlate the joint angles of a robot with its tip coordinate? Things get harder when it comes to 3D space, and even harder considering its rotation.

In this project, I created a program that can calculate the every joint angle of the 6-arm robot IRB140 for positioning it at a given (x, y, z) coordinate and rotation.

Figure 1. Dimensions of the IRB140 robot (unit: mm) [1].

The problem for reversing an operation from the specified coordinate and rotation to every rotation angle of an arm joint lies in the field of inverse manipulator kinematics. There may be multiple solutions that lead to the same result. Thus, I implemented the Pieper’s solution [2] for solving the joint angles for the IRB140 robot.

Here’s a video demonstration for precision control of the IRB140 by only giving the joint angles as the input. The robot follows a trail surrounding a paper box with the tip of the last arm always pointing at the center of the box.

[Source code for robot arm control program]

1. ABB, IRB140 product specification, 2019, https://library.e.abb.com/public/2893a5756d204e19aba0d37c2a2cadc6/3HAC041346%20PS%20IRB%20140-en.pdf
2. Craig, J.J., Introduction to Robotics: Mechanics & Control. 1986: Addison-Wesley Publishing Company.

Temperature and Humidity Sensor

This is a homework in class where we are assigned to utilize the temperature and humidity sensor DHT11 and an LCD display. Once activated, the LCD display will show either the temperature or the humidity being detected by the sensor. A button can be pressed to switch between temperature and humidity display.

Complex functionality can be achieved by including pre-coded libraries for controlling these components using Arduino, the development board I had used.

Though being a very simple project, such components serve as the simple building block for constructing a sophisticated hardware system. Therefore, this project plays an important role in the initial stage of hardware design for me.

Here’s a simple control process demonstration:

Bladeless Fan

The Dyson cooling fan is an eye-catching product. At first sight, some people may wonder how the seemingly bladeless fan really works because it simply looks like a structure with no air outlet. The fact is it can does have a small outlet at the inner part of its “ring”, and has the ability to take fluid dynamics into practice and enhance the air flow, making it also an air multiplier.

Figure 1. Dyson bladeless fan and simulated air flow.

In fluid dynamics class, I and a classmate of mine decided to construct a bladeless fan by our own and study the air multiplying phenomenon. We used 3D printing to fabricate the “ring” part of the fan, and a small centrifugal fan for connecting with the inlet of the ring part and inject a strong current inside.

Figure 2. Illustration and photograph of the bladeless fan.

Now we wanted to simply test whether this structure really leads to an air multiplying effect. We divided the outlet are into 9 sections, which can be represented using a 3×3 rectangular grid, and calculated the wind speed of every section at different input voltages for the centrifugal fan.

Fig. 3 shows the air velocity profile of the output wind, and Fig. 4 shows the magnification of air flow.

Figure 3. Air velocity (t_m [=] m/s) of 3×3 section grid at different input voltages.

Figure 4. Magnification of air flow at different input voltages of the centrifugal fan.

During this project, I learned more about the fundamentals of fluid mechanics, and memorized the relevant rules more deeply, which made me have a better understanding of this subject.

Logic Circuit Control for Number Display

Most people believe, including me, that programming is a powerful technique, and a lot of things in everyday life are realized by programming. However, being taken away this skill, what can still be achieved?

In this project, a logic circuit with complex functionality is built using only simple IC chips and circuitry. A 7-segment LED displays numeral from 0 to 9 with adjustable frequency using a potentiometer, and the number can be reset anytime to 0 by pressing a reset button. For programmers utilizing a simple development board such as Arduino, this seems like a piece of cake. However, it requires a certain degree of knowledge for digital circuit and IC chip control in order to accomplish it without coding.

Here, two simple IC chips are used: a 4024 counter and a 4511 BCD to 7-segment converter. An oscillator circuit with square wave output and potentiometer-controllable frequency is constructed, and the signal is fed into the 4024 counter, which outputs bitwise data to the 4511 converter, and eventually sends to the 7-segment display. A latch circuit and button is connected to the reset input of the 4024 counter for adding the reset function.

I was fascinated by the wide applicability of digital circuits, which can achieve low-cost and stable hardware features such as this project.

Here’s a video demonstration of this project (note that the Arduino on the left is just for power supply):