This project was completed at the final project for my programming for Mechanical Engineering course. The goal of this project was to use an Arduino Uno board to read sensors and control actuators in order to complete a task.
The task that my project completed, was to create the driver for a 4 degree of freedom robotic arm. This driver reads from 2 potentiometer and 2 joysticks. It also controls 5 servo motors and an LED ring.
One of the buttons on the joystick is used to communicate to switch the serial communication mode. The other button is used to switch the inverse kinematics mode.
Firstly, when the serial communication is on and the inverse kinematics is on, the Arduino will parse the array of joint velocities in order to move each joint accordingly. The inverse kinematics calculations would be done by the serial talker.
Secondly, when the serial communication is off and the inverse kinematics is off, the Arduino will map the joystick axes to its assigned joint velocity.
When the serial communication is on and the inverse kinematics kinematics is off, the joysticks will control the velocities of the joint, similarly to the previous state. The Arduino will now become the talker and sent the state of the potentiometers though serial communication. This will allow for the connected user to know the partial state of the robotic arm.
Finally, when there is no serial communication and inverse kinematics the velocities will be controlled by the joysticks. This is due to the limitations of the Arduino Uno.
The LED ring will display a different color depending on the communication and inverse kinematics status. This feature gives feed back to the user.
Driver for a 4 Degree of Freedom Robotic Arm
What I Learned
This project had a focus on the implementation of code onto an Arduino and basic electrical wiring. I learned how to use an Arduino Uno board along with the boards limits. The main limitations that I had encountered were the limited amount of digital and analog pins along with how much current the board can send to each individual parts.
Only 2 out of the 4 joints had their absolute position recorded by potentiometer. If more analog pins were available the driver could support more potentiometer for the other two joints.
The board by alone is not enough to distribute the needed current for each electrical components. An external module was used in this project to power all of the components.
I learned how to do some Arduino C++ coding to control servos, LEDs and potentiometers. I also implemented a module to power the whole system which I have not done before.
What is Next
This project was a lot of fun and I my main focus was to complete it as a final project for my engineering programming course. It gave me some good insight on making a robotic arm as a personal project. I am now motivated to create a more complex robotic arm. The electrical board can be improved and made more specific for controlling a robotic arm. I would also love to create the mechanical arm for this project since it completes the electrical and software components of a 4 degree of freedom arm. The idea of having a 4 degree of freedom arm is really cool, however this limits the states that the robotic arm can reach. Designing a 7 degree of freedom arm would be end goal. Finally, this project is an introduction to basic robotics software development, I would like to continue this journey by implementing a new robot with ROS2.