制作你的专属BB8机器人

2 篇文章 0 订阅
1 篇文章 0 订阅

摘要:自己动手做一个BB8机器人【星球大战–原力觉醒】,在此分享制作经历,供有兴趣爱好者浏览。


作者博客地址:http://www.yooongchun.cn/


首先,来认识一下我们要制作的对象:
这里写图片描述

基本构思:

  • 滚动的小球使用亚克力球来代替,其余部分使用3D打印
  • 头部与身体连接使用小磁体吸附
  • 控制使用手机蓝牙连接,机器人内部用Arduino Nano芯片控制
  • 驱动使用两个直流小电机

**构思好了怎么来做,就开始动手!**以下我主要通过3个方面来叙述:

  • 实物建模
  • 组装与上漆
  • 电子控制

PartⅠ:实物建模—使用UG进行建模
  1. 整体外观仿照BB8实物,大概确定其尺寸为直径90mm的球壳【这是因为楼主前期在某宝找了一番,发现合适大小的亚克力球直径只有这个规格】,然后完善里面的各个细节,最终的建模结果如下:
    这里写图片描述

说明:上图的浅褐色球体就是使用亚克力球,内部灰色的部分是主框架,蓝色代表Arduino芯片,红色代表锂电池,紫色代表蓝牙芯片,深褐色分别是边上的两个接触轮,中间里面的是舵机,比较难的部分在里面看不见的地方有两组减速的齿轮组,下面会讨论到。

  1. 动力部分 选用两个6V直流电压的电机作为驱动力,由于电机空载转速为19000rpm,转速过大,需进行电机减速,故设计减速比为20:1的二级齿轮减速组,实现了机器人理论最大1.5m/s的运动速度。为了减小减速系统的摩擦系数,给减速组引进了深沟球轴承(618/2-Z)进行齿轮的轴定位,进而使实际的传动比逼近理论值,降低了系统误差,提高控制的可行性。

这里写图片描述

3.对于头部控制,在机身引进了一个舵机,并在舵机上放置磁铁(8mm),与头部放置的磁铁相互对应而被吸引,紧贴在机身上方。通过Arduino及蓝牙控制舵机,带动头部的转动和前后移动。在结构方案确定之后,按照实际比例对结构以及结构的布局进行了模型建模,同时也按照实际比例对电机、齿轮以及电磁等等零件进行建模。在通过零件与结构之间的装配得到了球形机器人理论机构模型。下图中的中间槽内放置舵机以及提供电源的电磁,与中间槽相连的耳部放置相关的传感器和芯片,耳部底槽为减速系统。图一整个结构底部在通过与放置有两电机的图二相连接,得到实际结构。

这里写图片描述

4.最后为头部的建模,头部分成了两部分建模,一部分为50mm直径的空心半球,半球球面加一突起。底部为一定曲率的圆形底板,其内部建有深度2mm的圆形槽,用于放置磁铁,两槽上方也建有两个通槽并装配有小轮,用于减小头部与机身的摩擦,通过两部分的连接便得到了完整的头部模型。
这里写图片描述


这里写图片描述

PARTⅡ 组装与上漆
  1. 完成模型建模之后进行实物制作。首先,联系卖家进行3D打印,打印的材料根据我们所要求的强度和精度选定为未来8000树脂材料,零件精度为100微米,以下为零件实物:
    这里写图片描述

  2. 然后购买电子原件
    这里写图片描述
    这里写图片描述

  3. 开始组装机身部分:安装电机和齿轮组:首先挑选好两组3个齿轮,使其减速比约为20:1,然后在齿轮和铁轴上打定位孔,以便使二者不发生相对转动,然后在机身上安装轴承,使用502胶水固定,然后装入齿轮穿入轴,固定轴和齿轮。安装好齿轮组后,接着开始安装电机,使用电机固定片和m2螺丝螺母固定,安装后如下图:
    这里写图片描述
    这里写图片描述

  4. 然后安装上面的舵机结构,先把舵机装入,粘接好磁铁,使热熔胶固定舵机和连杆的接头。
    这里写图片描述

  5. 接下来开始焊接芯片,首先,把3.7v锂电池放到电池槽里。然后用热熔胶把声控芯片粘到侧面,再用热熔胶依次粘:蓝牙芯片、双路电机控制板、Arduino芯片,无线充电模块。粘好之后焊接导线,其中焊接的电路板根据以下控制逻辑
    这里写图片描述

  6. **最后,把外轮固定上去。**完成后的效果图:
    这里写图片描述
    这里写图片描述

试一试组装后的效果:

width="560" height="315" src="http://fanyuzone.oss-cn-beijing.aliyuncs.com/video/v1.mp4" allowfullscreen="">
  1. 组装头部 首先用铁轴把小轮固定,然后使用502把四个小磁铁粘上。再把上面的壳套上即可

这里写图片描述
这里写图片描述
这里写图片描述

  1. 添加固定圈:为了使小球外壳跟里面接触的部分不至于摩擦力太大,引入一个固定圈,圈的外围使用滚珠减小阻力
    这里写图片描述
    这里写图片描述

  2. 上漆效果如下
    这里写图片描述

width="560" height="315" src="http://fanyuzone.oss-cn-beijing.aliyuncs.com/video/v2.mp4" allowfullscreen="">
PARTⅢ 电子控制
  1. 使用蓝牙控制,控制逻辑如下:

这里写图片描述

  1. Arduino代码
#include<Servo.h>
int m1l = 2, m1r = 3 , m2l = 4, m2r = 5; //电机控制引脚
int ser = 9; //舵机控制引脚
int spe = 100; //定义速度
Servo myServo;//初始化舵机对象
void setup() {
  Serial.begin(9600);
  myServo.attach(ser);

  pinMode(m1l, OUTPUT);
  pinMode(m1r, OUTPUT);
  pinMode(m2l, OUTPUT);
  pinMode(m2r, OUTPUT);

}

void loop()
{
  while (Serial.available()) {
    char c = Serial.read();
    if (c == 'b') {
      digitalWrite(m1l, HIGH);
      digitalWrite(m1r, LOW);
      digitalWrite(m2l, LOW);
      digitalWrite(m2r, HIGH);
      delay(20);
    }

    if (c == 'f') {
      digitalWrite(m1l, LOW);
      digitalWrite(m1r, HIGH);
      digitalWrite(m2l, HIGH);
      digitalWrite(m2r, LOW);
      delay(20);
    }

    if (c == 'l') {
      digitalWrite(m1l, HIGH);
      digitalWrite(m1r, LOW);
      digitalWrite(m2l, HIGH);
      digitalWrite(m2r, LOW);
      delay(20);
    }

    if (c == 'r') {
      digitalWrite(m1l, LOW);
      digitalWrite(m1r, HIGH);
      digitalWrite(m2l, LOW);
      digitalWrite(m2r, HIGH);
      delay(20);
    }

    if (c == 's') {
      digitalWrite(m1l, LOW);
      digitalWrite(m1r, LOW);
      digitalWrite(m2l, LOW);
      digitalWrite(m2r, LOW);
      delay(20);
    }

    if (c == 'w') {
      for (int pos = 90; pos < 170; pos++) {
        myServo.write(pos);
        delay(10);
      }
      for (int pos = 170; pos > 89; pos--) {
        myServo.write(pos);
        delay(10);
      }
       for (int pos = 90; pos < 170; pos++) {
        myServo.write(pos);
        delay(10);
      }
      for (int pos = 170; pos > 89; pos--) {
        myServo.write(pos);
        delay(10);
      }
       for (int pos = 90; pos < 170; pos++) {
        myServo.write(pos);
        delay(10);
      }
      for (int pos = 170; pos > 89; pos--) {
        myServo.write(pos);
        delay(10);
      }
       for (int pos = 90; pos < 170; pos++) {
        myServo.write(pos);
        delay(10);
      }
      for (int pos = 170; pos > 89; pos--) {
        myServo.write(pos);
        delay(10);
      }
       for (int pos = 90; pos < 170; pos++) {
        myServo.write(pos);
        delay(10);
      }
      for (int pos = 170; pos > 89; pos--) {
        myServo.write(pos);
        delay(10);
      }
    }

    if (c == 'e') {
      for (int pos = 90; pos > 0; pos--) {
        myServo.write(pos);
        delay(10);
      }
      for (int pos = 1; pos < 90; pos++) {
        myServo.write(pos);
        delay(10);
      }

    }

  }

}
PART Ⅳ 完成效果
width="560" height="315" src="http://fanyuzone.oss-cn-beijing.aliyuncs.com/video/BB8.mp4" allowfullscreen="">
什么叫未播先火?看看《星球大战:原力觉醒》里的BB8机器人,你就明白了。但是迪士尼自己肯定都想不明白,BB8机器人怎么就火了呢。 想知道BB8机器人是怎么行走的吗?它的头如何360°无死角旋转?看完下面这张图你就秒懂了。 八卦消息是迪士尼公司的一项专利揭示的机器人秘密,“磁球平衡机器人驱动系统”,说的可不就是BB8嘛。BB8的主体包含了一个能够一直和球体保持相对位置的驱动系统。系统采用全向轮,使得BB8机器人可以向任何方向滚动。每个轮子都和一个电动机相连。BB8机器人使用传感器(陀螺仪、加速度计)确定自身的位置和运动状态。 想要一睹BB8萌态的,可以去电影院观看此部电影(非插入广告,人家那票房也看不上),绝对萌的前无古人,后无来者。 接下来,我们就来看看MobBob智能机器人。 开发者是澳大利亚人,他花了一辈子时间开发的机器人,最近使用3D打印技术,设计了这款非常独特的MobBob机器人,注意机器人主体所有部件均是3D打印,具体的打印文件可在附件中下载。 这个机器人的过人之处是她的主体和控制中心是一部普通的智能手机。 使用内置的智能手机控制其运动,不仅节省了购买很多昂贵的电子产品的成本,同时也让机器人天然拥有了许多原本需要花费大力气、大价钱开发的功能。想想吧,智能手机本身就有内置的摄像头、麦克风、指南针、触摸屏、陀螺仪、GPS、扬声器和WiFi连接等功能,以及最重要的,强大的计算处理能力。 为了设计MobBob的3D打印部件,发明者使用的是 Blender软件。具体的打印文件可在附件中下载。 除了3D打印的零部件,MobBob还包括以下几个部分: 4个金属齿轮的微型伺服电机 一个Bluno Nano微控制器 一个Eneloop电池充电机 电线和微小的电路实验板 一部智能手机 至于MobBob的工作原理,它的4个伺服电机是由一个Arduino兼容的微控制器驱动的。这个微控制器内置蓝牙功能,可以与智能手机直接连接。这个无线通信单元意味着机器人可以与任何Android或iOS设备协调工作。而且使用者也可以把智能手机直接取下来遥控MobBob。 具体工作视频: 想要操作这个MobBob机器人,智能手机需要安装app,点击此处下载APP。 附件中还包含了Arduino代码,2个版本的:MobBob-Control-Bluno和MobBob-Control-Bluetooth,不同之处可以查看附件里的txt文档。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zoz.cool

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值