Mid Term – Carrier Assistant
Carrier Assistant – Lucas Lin – Eric
CONTEXT AND SIGNIFICANCE
Sean Hu and I discussed ideas for a new project, and he was enthusiastic about creating a mechanical arm. We wanted to make our project significant and unique, so we carefully considered the feasibility of creating a prototype for our midterm project idea. After reviewing an incomplete list of topics, we decided to develop a portable mechanical arm that can hold objects, acting as a third arm for the user and freeing up their other limbs for other tasks. We found that similar existing technologies, such as industrial robotic arms, prosthetic arms, medical robotic arms, and space robotic arms, were not designed to be portable and readily available for use anywhere. We believe that our design fills this gap in the market by being simple and convenient, yet innovative and unique.
CONCEPTION AND DESIGN
Sean initially suggested having the mechanical arm come from the shoulder, but I pointed out that it would be impractical for users as it restricts arm movements. Thus, we decided to make the mechanical arm come out from the waist. However, we only had cardboard, which made me worry about its feasibility. Luckily, Sean had a military waist belt and two 30 cm metal rods that we could use for the project. We then sketched and discussed how to make the most of these materials. We ultimately decided to use the metal rods as the skeleton of each arm. As for the rest of the planning, such as how to attach the arm to the waist or how to build each arm part, we decided to figure it out during construction.
Day 1: Sketch Planning
FABRICATION AND PRODUCTION
To make the most of our time and skills, we divided production jobs among ourselves and committed to updating each other regularly. Sean Hu focused on code and circuitry, while I designed with cardboard and documented our progress. Our biggest challenge was with the stepper motors we borrowed from the Equipment Room, which turned out to be unsuitable for our needs. After acquiring better ones from the instructor, we still faced issues with the weight and rotation of the arm. We ultimately removed the metal rods and used two stepper motors and one server motor to support and move the arms. Although we initially attempted to build a third arm, it proved problematic and was ultimately abandoned. During the user testing, the second arm broke and the USB cable stopped working, but we still received positive feedback and excitement. On the final day, we made adjustments and decorations to the prototype based on user feedback.
Day 2: Building One Arm
***
Day 3: Building Circuit & Testing
***
Day 4: 3-Arm Fail Attempt
***
Draft: User Testing
***
Final: Presentation
***
// based on: Blocking example
#include <AccelStepper.h>
#include <Servo.h>
int cnt=0;
int DIR_PIN = 2;
int STEP_PIN = 3;
int EN_PIN = 4;
int DIR_PIN2 = 5;
int STEP_PIN2 = 6;
int EN_PIN2 = 7;
Servo servo1;
Servo servo2;
AccelStepper stepper(AccelStepper::DRIVER, STEP_PIN, DIR_PIN);
AccelStepper stepper2(AccelStepper::DRIVER, STEP_PIN2, DIR_PIN2);
void setup() {
Serial.begin(9600);
servo1.attach(9);
servo2.attach(10);
pinMode(13,INPUT);
pinMode(12,INPUT);
// Enable the stepper driver
pinMode(EN_PIN, OUTPUT);
digitalWrite(EN_PIN, LOW);
pinMode(EN_PIN2, OUTPUT);
digitalWrite(EN_PIN2, LOW);
// Set initial speed & acceleration
stepper.setMaxSpeed(1000);
stepper.setAcceleration(500);
stepper2.setMaxSpeed(1000);
stepper2.setAcceleration(500);
servo1.write(-10);
servo2.write(0);
}
void loop() {
int input_slide=analogRead(A0);
int input1=digitalRead(13);
int input2=digitalRead(12);
if (input1==0&&input2==0){
stepper.stop();
stepper2.stop();
}
if (input1==1&&input2==0&&cnt<=0) {
cnt++;
}
if (input1==0&&input2==1&&cnt>=-90){
cnt--;
}
Serial.println(cnt);
stepper.moveTo(cnt);
stepper2.moveTo(-cnt);
stepper.setSpeed(50);
stepper2.setSpeed(50);
stepper.runSpeedToPosition();
stepper2.runSpeedToPosition();
int servo_angle2=map(input_slide,0,1023,0,180);
servo2.write(servo_angle2);
}
CONCLUSIONS
Our mechanical arm design met our goals of providing a third arm for users to hold things upfront, but it also had some limitations, such as weight capacity, an unbalanced waist strap, unclear controls, and other small usability issues. However, this project provided a great learning experience for me and was aligned with my understanding of interaction. Users command the arm, and it responds by rotating like a human arm. During the performance, my classmate even used a second arm to wave goodbye. Given more time, I would focus on redesigning it with a torque mechanism using strings. Despite its incompleteness, the project was successful and my audience found it cool and fun to interact with. I learned a lot about planning and constructing, such as in the future I should do more research on similar designs and understand material limitations. Overall, I enjoyed designing the project and gained valuable knowledge from the experience.