一、作品背景、发明目的
移动机器人作为机器人学发展中的一个重要分支,是一个集环境感知、动态决策与规划、行为控制与执行等多种功能于一体的综合系统。机器人在现代工业中应用得特别广泛,而其与外界接触的部分是机械臂,它可以代替人手,与外界环境中有毒以及有害的物质直接接触以减少对人的危害,它具有能不断重复工作和劳动、不知疲劳、不怕危险等特点。人来社会发展已离不开机器人技术,而机器人技术的进步又推动科技的进步。因此,设计机械手、机械臂有特别重要的意义。
组合式机械臂是由若干一维机械臂以不同夹角组合而成,可实现机械臂的直线伸缩,或在 X-Y 平面移动,或在 X-Y-Z 空间定位等功能,以满足不同场合下的需要。针对目前机械 臂的笨拙缺点,基于工业 abb 码垛机械手原型,设计了这一款桌面级可移动机械臂,来完成特定搬运工作。在遇到特殊搬运任务时,一般的机械臂往往运动笨拙、操作复杂,而“MiniHand”机械臂小车具有体积小、灵活精妙的特性,可通过蓝牙控制前进、后退、转弯到指定位置,再进行机械臂的操作。对于需要进行重复动作的任务,“MiniHand”能完美胜任。使用者可 通过 pc 的上位机软件记录机械臂的位置,并且可以控制运行速度和循环次数。
二、作品简介
该作品以 arduino 为控制器,以可蓝牙遥控小车为承载,车上搭配以工业机械手为原 型设计的桌面级机械臂,体积小巧结构精妙。作品配合蓝牙、pc 上位机软件、android 端 App 控制,既可以通过 Android 端控制小车前进后退转弯、机械臂的伸展收缩,又可以通 过 pc 的上位机软件使用鼠标拖动滑块控制每个关节的位置,并且可以记录当前的位置,而 且还可以将记录的位置安装顺序播放.,控制运行速度和循环次数。
三、作品展示
四、软件清单
android 端 app,pc 端上位机软件
五、适用范围
适用于小型搬运任务,个人娱乐,工业机械手的模拟以及机械臂教学使用。
六、推广前景
(一)可代替人的繁重劳动以实现生产的机械化和自动化,能在有害环境下操作以保护人
身安全,因而广泛应用于机械制造、冶金、电子、轻工和原子能等部门。
(二)实现服务机器人上机械手的灵活运动与控制,对于老年人以及残障人士在心理上和
身体上都非常有益处,为解决我国社会问题,创建和谐社会做出贡献。
(三)迷你机械手可以广泛运用于各种教学上和个人娱乐。
七、arduino实现代码
#include <Servo.h>
#define IN1 4
#define IN2 10
#define IN3 12
#define IN4 11
Servo servo_afthand;
Servo servo_prehand;
Servo servo_head;
Servo servo_claw;
char x;
//电机初始化
void IniMotor()
{
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(IN3,OUTPUT);
pinMode(IN4,OUTPUT);
//pinMode(ENA,OUTPUT);
//pinMode(ENB,OUTPUT);
}
//舵机初始化
void iniServo()
{
servo_claw.attach(3);
servo_afthand.attach(5);
servo_head.attach(9);
servo_prehand.attach(6);
servo_afthand.write(90);
servo_prehand.write(90);
servo_head.write(85);
servo_claw.write(10);
}
//直走
void goLine()
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
}
//右转
void turnRight()
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
delay(100);
}
//左转
void turnLeft()
{
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
delay(100);
}
//制动
void stopp()
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
//analogWrite(ENA,rightSpeed);
//analogWrite(ENB,leftSpeed);
}
//放下臂
void handup()
{
int i = servo_afthand.read();
for(i;i<=145;i++)
{
servo_afthand.write(i);
delay(25);
}
int j = servo_prehand.read();
for(j;j>=70;j--)
{
servo_prehand.write(j);
delay(25);
}
}
//收起臂
void handback()
{
int j = servo_prehand.read();
for(int j=70;j<=90;j++)
{
servo_prehand.write(j);
delay(25);
}
int i = servo_afthand.read();
for(int i=145;i>=90;i--)
{
servo_afthand.write(i);
delay(25);
}
}
//打开爪
void clawopen()
{
int k = servo_claw.read();
for(k;k<=130;k++)
{
servo_claw.write(k);
delay(30);
}
}
//关闭爪
void clawoff(){
int k = servo_claw.read();
for(k;k>=10;k--)
{
servo_claw.write(k);
delay(30);
}
}
//机械臂转向左90°
void switchleft()
{
int p = servo_head.read();
int q = p+90;
if(q>180)
{
for(p;p<=180;p++)
{
servo_head.write(p);
delay(20);
}
}
if(q<=180)
{
for(p;p<=q;p++)
{
servo_head.write(p);
delay(20);
}
}
}
//机械臂转向右90°
void switchright()
{
int p = servo_head.read();
int q = p-90;
if(q<0)
{
for(p;p>=0;p--)
{
servo_head.write(p);
delay(20);
}
}
if(q>=0)
{
for(p;p>=q;p--)
{
servo_head.write(p);
delay(20);
}
}
}
void setup() {
IniMotor();
iniServo();
Serial.begin(9600);
}
void loop() {
if(Serial.available())
{
x = Serial.read();
switch(x)
{
//motor_control
case'a':goLine();Serial.println("go staight!");break;
case 'b':stopp();Serial.println("stop!");break;
case 'c':turnLeft();Serial.println("turn left!");break;
case 'd':turnRight();Serial.println("turn right!");break;
//servo_control
case 'e' :handup();Serial.println("hand up!");break;
case 'f' :handback();Serial.println("hand back!");break;
case 'g':clawopen();Serial.println("claw open!");break;
case 'h':clawoff();Serial.println("claw off!");break;
case 'i':switchleft();Serial.println("servo switch left!");break;
case 'j': switchright();Serial.println("servo switch right");break;
}
}
}
八、相关信息
队长及编写:陈含艺
团队成员:陈含艺、罗磊、骆妍
编写时间:2016-10-7
1915



被折叠的 条评论
为什么被折叠?



