废话不多,先上视频

Makeblock“蜘蛛”XY绘图机器人


嘿嘿,看完了之后,想必很多筒子都想亲自动手做一个吧。无论是放在家里提升逼格,还是写情书向女神求婚,“蜘蛛机器人”都不会令你失望的。

下面这个视频会告诉你蜘蛛机器人到底是如何实现的。

Makeblock蜘蛛机器人绘图全程+原理解析


所以,如视频所示。蜘蛛机器人的基本原理并不复杂。牛顿同志告诉我们,一切物体在没有受到外力作用的时候,总保持匀速直线运动或静止状态。由于蜘蛛机器人始终受重力影响,因此,如果我们想要在垂直方向对其定位,则需要另外一个拉力来平衡重力。如下图所示,

接着,为了能让我们的蜘蛛水平运动,我们需要将F分解为F1和F2,如下图所示

当步进电机运动时,会在瞬时造成F1、F2和G三个力之间的不平衡,从而使蜘蛛机器人向某一个方向移动。

原理讲完,我们来看看具体怎么实现

1. 所需材料
  • 步进电机*2
  • 小舵机*1
  • Makeblock机械零件若干, 具体情况请参见视频
  • Me Baseboard
  • 能运行Python的主机(PC或者Raspberry Pi)

2. 机械安装
  • 首先,你需要将两个步进电机分别固定在黑板的左上角和右上角。这里需要的材料除了步进电机(步进电机,顾名思义,以一定的标准单位“步”运行的电机,用来做精确控制)外,包括步进电机支架,各种梁用来将步进电机夹在黑板上(也可以使用吸盘)。这个并不复杂,各位可自行DIY。
  • 第二步,制作小蜘蛛。为了保证机器人稳定地趴在黑板上,我们需要它与黑板至少有3点接触,笔尖为一点,另外两点可以用两个轮子做支撑。之后,安装舵机,并制作一个小连杆,控制笔杆的升降动作。具体可已参照视频当中的结构。
  • 第三步,使用钢丝将蜘蛛机器人和步进电机上的转盘连接起来。

3. 控制部分

1). Python下串口库安装pyserial
2). 工作原理
  • PC或树莓派用于动作规划,Python直接解析svg图片并转换为直线段(曲线细分为短线段),再将线条通过三角函数转换为左右钢丝的目标长度,再将该长度发给Arduino板。
  • Arduino板用于动作执行,当收到Python脚本发来的指令,将对比当前左右弦的长度和目标弦长度,等分地运动步进电机,最终达到指令所给出的弦长,如果这时候白板笔放下则会在黑板上留下一条线段。
3). 参数设置
  • 坐标系统:我们以左上角步进电机的弦挂点为(0,0)点,向右为x增加方向,向下为y增加方向。
  • 坐标映射:我们将svg的xy坐标投影为两根弦的长度,我们步进电机的挂轮半径为29mm,步进电机一周为200脉冲,16细分下就是3200脉冲。比例关系为3200/(2*pi*29mm),这个就是python代码中mmtostep这个参数的来源
  • 其他参数:
    Px=0 #左弦挂点坐标
    Py=0
    Qx=880 #右弦挂点坐标 (880为两个挂点的间距)
    Qy=0
    posX=440 #初始平台的坐标 (白板上面那个红点)
    posY=354

4). 软件
  • Arduino代码中STEPDELAY这个参数决定了步进电机运动的延时,越小运动越快,但是会导致画笔平台抖动
  • svg是典型的xml格式文件,python中直接用minidom这个库进行解析,dom = minidom.parse('tim.svg')表示解析哪个svg文件 。

4. 工作步骤
1). 先将Arduino代码下载到Baseboard。
2). 确认Baseboard和PC或树莓派之间的串口连接线是否已经插好。
3). 启动Python脚本,python plotbot.py,如果一切正常,机器人就应该开始工作。

5. Debug
如果发现机器人画出来的图形左右颠倒或者90旋转,则是步进电机的方向不对,在arduino代码中改变stepperMoveA和stepperMoveB这两个函数对应步进电机旋转方向即可。

基本上就是这些。欢迎大家提出问题。最后,说一千道一万,不如自己亲手试一试:-)各位尝试完了别忘了在下面晒一晒自己的成果哇!


收藏
1 条回帖
jimmy注册会员2014-9-4 15:25:35
写的好详细!期待在墙上画一幅很大很大的画来
需要登陆后才可进行回复 登录

返回顶部
现在加入我们,注册一个账号 账号登陆 QQ账号登陆 微博账号登陆