小型云台机械手的制作

news/2025/2/19 13:43:55/

1. 运动功能说明

       小型云台机械手,下方的云台可以提供左右旋转和上下摆动的动作,与舵机夹爪配合可以完成简单的抓取和搬运。

2.结构说明

       该样机由一个 R207小型舵机云台 上串联了一个 舵机夹爪模组 构成。

3. 运动功能实现

3.1 电子硬件

在这个示例中,采用了以下硬件,请大家参考:

Basra主控板(兼容Arduino Uno)、Bigfish2.1扩展板、7.4V锂电池

将夹爪、腕关节、底座关节的舵机分别接在扩展板的D4、D7以及D11舵机接口上。

3.2 编写程序

编写并烧录以下程序(servo_sync.ino),该程序将实现演示视频中的动作。

编程环境:Arduino 1.8.19

/*------------------------------------------------------------------------------------

  版权说明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

           Distributed under MIT license.See file LICENSE for detail or copy at

           https://opensource.org/licenses/MIT

           by 机器谱 2022-12-21 https://www.robotway.com/

  ----------------------------------

  实验功能:

          实现小型云台机械手云台基本运动,夹爪抓、放基本动作.

  -----------------------------------------------

  实验接线:

              .----.   

              |   |    控制夹爪的舵机接:D4

             .-------.

             |     |   控制云台上下的舵机接:D7

           .-------------.

           |         | 控制云台左右转动的舵机接:D11

           |         |

        -------------------------

------------------------------------------------------------------------------------*/

#include <Servo.h>

int SERVO_SPEED=20;                                          //定义舵机转动快慢的时间

int ACTION_DELAY=200;                                      //定义所有舵机每个状态时间间隔

Servo myServo[6];

int f = 50;                                                     //定义舵机每个状态间转动的次数,以此来确定每个舵机每次转动的角度

int servo_port[6] = {4,7,11,3,8,12};                            //定义舵机引脚

int servo_num = sizeof(servo_port) / sizeof(servo_port[0]);     //定义舵机数量

float value_init[6] = {125, 130, 160, 30, 60, 120};                //定义舵机初始角度

void setup() {

  Serial.begin(9600);

  pinMode(5, OUTPUT);

  pinMode(6, OUTPUT);

  pinMode(9, OUTPUT);

  pinMode(10, OUTPUT);

  for(int i=0;i<servo_num;i++){

    ServoGo(i,value_init[i]);

  }

}

void loop() {

  //实现了机械手爪的多角度运动

  servo_move(90, 130, 15, 70, 10, 150);

  servo_move(90, 90, 90, 36, 110, 75);

  servo_move(90, 130, 140, 132, 44, 16);

  servo_move(90, 90, 90, 36, 110, 75);

  while(1){

    f = 20;

    SERVO_SPEED = 20;

    servo_move(120, 90, 90, 70, 10, 150);

    servo_move(90, 90, 90, 70, 10, 150);

  };

  /*

  digitalWrite(5, HIGH);

  digitalWrite(6, LOW);

  digitalWrite(9, HIGH);

  digitalWrite(10, LOW);

  delay(1000);

  digitalWrite(5, LOW);

  digitalWrite(6, LOW);

  digitalWrite(9, LOW);

  digitalWrite(10, LOW);

  delay(1000);

  servo_move(125, 70, 70, 30, 60, 120);

  delay(500);

  servo_move(98, 70, 70, 30, 60, 120);

  delay(500);

  servo_move(98, 160, 160, 30, 60, 120);

  delay(500);

  digitalWrite(5, LOW);

  digitalWrite(6, HIGH);

  digitalWrite(9, LOW);

  digitalWrite(10, HIGH);

  delay(1000);

  digitalWrite(5, LOW);

  digitalWrite(6, LOW);

  digitalWrite(9, LOW);

  digitalWrite(10, LOW);

  delay(1000);

  servo_move(125, 160, 160, 30, 60, 120);

  delay(500);

  while(true);

  */

}

void ServoStart(int which)

{

  if(!myServo[which].attached())myServo[which].attach(servo_port[which]);

  pinMode(servo_port[which], OUTPUT);

}

void ServoStop(int which)

{

  myServo[which].detach();

  digitalWrite(servo_port[which],LOW);

}

void ServoGo(int which , int where)

{

  if(where!=200)

  {

    if(where==201) ServoStop(which);

    else

    {

      ServoStart(which);

      myServo[which].write(where);

    }

  }

}

void servo_move(float value0, float value1, float value2, float value3, float value4, float value5)

{

  float value_arguments[] = {value0, value1, value2, value3, value4, value5};

  float value_delta[servo_num];

  for(int i=0;i<servo_num;i++)

  {

    value_delta[i] = (value_arguments[i] - value_init[i]) / f;

    /**************************串口查看输出*****************************/

//    Serial.print(value_init[i]);

//    Serial.print(" ");

//    Serial.print(value_arguments[i]);

//    Serial.print(" ");

//    Serial.println(value_delta[i]);

    /**************************串口查看输出*****************************/

  }

  for(int i=0;i<f;i++)

  {

    for(int k=0;k<servo_num;k++)

    {

      value_init[k] = value_delta[k] == 0 ? value_arguments[k] : value_init[k] + value_delta[k];

      /**************************串口查看输出*****************************/

//      Serial.print(value_init[k]);

//      Serial.print(" ");

    }

//    Serial.println();

      /**************************串口查看输出*****************************/

   

    for(int j=0;j<servo_num;j++)

    {

      ServoGo(j,value_init[j]);

    }

    delay(SERVO_SPEED);

  }

  delay(ACTION_DELAY);

  /**************************串口查看输出*****************************/

//   for(int i=0;i<6;i++)

//   {

//    Serial.println(value_init[i]);

//   }

  /**************************串口查看输出*****************************/

}

4.扩展样机

使用不同的云台和夹爪模组,可以构建出不同性能的小型云台机械手。

5. 资料下载

① 样机3D文件

② 例程源代码


http://www.ppmy.cn/news/156793.html

相关文章

html控制萤石云摄像头转动,怎么控制云台转动 ?

您好&#xff0c;目前萤石摄像机中只有C6系列(除C6P)、XP1、CP1、C8系列支持控制云台转动。您可以通过如下三种方式来控制设备云台转动&#xff1a; ◆ 方法一(萤石云视频APP)&#xff1a; 1、登录萤石云视频手机APP&#xff0c;在“萤石”页签&#xff0c;点击摄像机的视频封面…

产品展厅360全景拍摄制作方案

人们都喜欢更直接的东西&#xff0c;文字不如图片&#xff0c;图片不如视频&#xff0c;不仅是生活中&#xff0c;工作中同样如此。随着技术的发展&#xff0c;VR/AR/MR成为各种展览的新入口&#xff0c;打开了人们观展的新方式。采用Web3D展示技术&#xff0c;企业通过就可以向…

【八方位云台控制器】

css绘制八方位云台控制器 实现效果图html代码cssclipz-index javaScript 实现效果图 html代码 <!DOCTYPE html> <html><head><title></title><meta charset"utf-8"><meta name"viewport" content"initial-sc…

超详细vr全景拍摄教程,看完别说你还不会全景拍摄

一、VR VR 全景拍摄设备推荐型号 1、佳能入门级全画幅 6D 单反机身 2、鱼眼镜头&#xff08;8-15mm&#xff09; 3、思锐三脚架 R-2204 4、思锐云台 PB-10 二、 VR 全景拍摄器材及组装 ◆ 首先将三脚架固定好。 ◆ 然后将云台安装上。 ◆ 最后将相机安装至横轴 90 度固定。…

云台的控制

因为项目需要&#xff0c;所以购置了一部云台和解码器。这是初次通过解码器控制云台的转动&#xff0c;从电子市场买回云台和解码器后就赶紧装好了。拿出云台和解码器的说明书看了起来&#xff0c;它们的说明书写的都很简单&#xff0c;特别是云台。解码器的说明书说的还是比较…

DIY高清云台(吊舱)方案

这些天评论好些学友都问我关于组装一套高清的云台方案&#xff0c;趁这几天有空&#xff0c;思考了一下方案&#xff0c;仅供大家参考。 近两年随着短视频红火。各种各样的题材是百家争鸣&#xff0c;你题材不新&#xff0c;就没人看&#xff0c;没人看就没流量。所以越来越多…

从零开始做手机云台/稳定器

最近完成手机云台/稳定器的产品化&#xff0c;特意记录整个手机云台的开发过程 (内容持续细化中...) 一. 电机驱动篇 硬件描述: 直流无刷电机&#xff0c;7对极&#xff0c;控制板mcu为stm32f0。 驱动方式: FOC 控制&#xff0c;驱动板采样两路电流&#xff0c;并配置有编码…

监控用云台及解码器

监控用云台 云台就是两个交流电机组成的安装平台&#xff0c;可水平和垂直的运动。但要注意区别于照相器材中的云台概念。照相器材的云台一般来说只是一个三脚架&#xff0c;只能通过手来调节方位&#xff1b;而监控系统所说云台是通过控制系统在远程可控制其转动及移动方向的…