0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Delta型腿机器狗全动作展示

jf_72402704 来源: jf_72402704 作者: jf_72402704 2023-06-18 10:46 次阅读

1. 功能说明

本文示例将实现R322样机Delta型腿机器狗维持身体平衡、原地圆形摆动、原地踏步、蹲起、站立、前进、后退、转向、横向移动、斜向移动等功能。

wKgaomSOcBuAckjJAABazMx6Tus641.jpg

2. 电子硬件

本实验中采用了以下硬件:

主控板 Basra主控板(兼容Arduino Uno)‍
扩展板 Bigfish2.1扩展板‍
SH-SR舵机扩展板
传感器 红外传感器
六轴陀螺仪
电池 7.4v锂电池、11.1V动力电池
其它 电压显示器

电路连接说明:为了便于识别控制Delta型腿机器狗,我们先对机器狗的腿位置编号(如下图所示):

wKgZomSOcBuAfz_hAABKHgx4ts8347.png

① 硬件连接:

wKgaomSOcByAZJtYAABT3sfgpgI512.pngwKgZomSOcByATXGQAABawma7JKE824.pngwKgaomSOcB2AAWxuAABbJkTud-Y542.png

② 电压显示器与大电池连接:

wKgZomSOcB2ALHEWAACf2gJkguE119.png

③ 舵机接线位置:上面3个舵机分别连接在Bigfish扩展板的D4、D3、D8端口

wKgaomSOcB6AHAqYAACcziZtrxI202.png

Delta型腿机器狗每条腿有4个舵机,4条腿上总共有16个舵机,将这16个舵机分别连接在SH-SR舵机扩展板的舵机接口上。

wKgZomSOcB6ADSidAABbkhgECgY169.png

1号腿 :s1连接口9 s2连接口8 s3连接口5 s4连接口6

2号腿 :s1连接口18 s2连接口19 s3连接口20 s4连接口21

3号腿 :s1连接口0 s2连接口2 s3连接口1 s4连接口3

4号腿 :s1连接口27 s2连接口25 s3连接口26 s4连接口24

3. 功能实现

编程环境:Arduino 1.8.19

下面提供一个Delta型腿机器狗全动作展示(维持身体平衡、原地圆形摆动、原地踏步、蹲起、站立、前进、后退、转向、横向移动、斜向移动)的参考例程(parallel_dog_display.ino),程序源代码及样机3D文件资料详见 https://www.robotway.com/h-col-242.html,具体实验效果可参考网站演示视频

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

  版权说明:Copyright 2023 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 机器谱 2023-06-07 https://www.robotway.com/

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

/*****

  Copyright 2017 Robot TIme

  全动作展示例程

*****/


#include "Tlc5940.h"

#include "tlc_servos.h"

#include <  math.h  >


#include "types.h"

#include "config.h"


// 相关函数声明

/***** 红外相关函数 *****/

void IRInit(); //红外初始化

void enableIR(); //红外使能

void disableIR(); //关闭红外

void updateIR(); //红外避障更新动作

/***** 平衡相关函数 *****/

void switchAdjustStat(uint stat); //切换平衡调节模式 不调节/原地调节/行进间调节

void readGyroSerial(); //读取陀螺仪串口消息

void adjustAct(); //平衡调节动作

/****** 腿部动作相关函数 *****/

void setTurnLeftFlag(bool flag); //修改左转状态标志位

void setTurnRightFlag(bool flag); //修改右转状态标志位

void leg1(); //更新1号腿(左前)位置

void leg2(); //更新2号腿(左后)位置

void leg3(); //更新3号腿(右前)位置

void leg4(); //更新4号腿(右后)位置

bool calc(Point3d p, bool leg1, bool leg2, bool leg3, bool leg4); //逆解计算函数

/***** 整机动作相关函数 *****/

void dogReset(Point3d initPos, uint waitTime); //复位动作

void dogInit(); //初始化动作

void upDown(float x, float y, float z1, float z2, uint times); //蹲起动作

void drawCircle(float ox, float oy, float z, float r, uint times); //原地圆形摆动动作

void stepping(float x, float y, float z1, float z2, uint times); // 原地踏步动作

void liftShoulder(uint height, uint times); //原地摆臂动作


//动作周期计数器

int cycleCount;

//复位计数器

void resetCycleCount()

{

  cycleCount = -1;

}

void updateCycleCount()

{

  cycleCount++;

}


//当前运动状态

dogMode currentMode;

//切换运动状态

void setMode(dogMode mode)

{

  if (mode == currentMode) return;

  if (mode == DOG_MODE_TURN_LEFT)

  {

    setTurnLeftFlag(true);

    setTurnRightFlag(false);

  } else if (mode == DOG_MODE_TURN_RIGHT)

  {

    setTurnLeftFlag(false);

    setTurnRightFlag(true);

  } else {

    setTurnLeftFlag(false);

    setTurnRightFlag(false);

  }


  if (mode == DOG_MODE_BACK) //后退时关闭红外传感器

  {

    disableIR();

  } else if (mode == DOG_MODE_STOP) //静止后开始原地姿态调节

  {

    switchAdjustStat(ADJUST_STAT_LEG);

    dogReset({0, 0, Leg_Init_Z_Pos}, 200);

  }

  currentMode = mode;

}


void updateMode()

{

  if (cycleCount == MOTION_TIMES + 1) setMode(DOG_MODE_BACK);

  if (cycleCount == 3 * MOTION_TIMES) setMode(DOG_MODE_LEFT);

  if (cycleCount == 4 * MOTION_TIMES) setMode(DOG_MODE_RIGHT);

  if (cycleCount == 5 * MOTION_TIMES) setMode(DOG_MODE_RIGHT_FRONT);

  if (cycleCount == 6 * MOTION_TIMES) setMode(DOG_MODE_RIGHT_BACK);

  if (cycleCount == 7 * MOTION_TIMES) setMode(DOG_MODE_LEFT_BACK);

  if (cycleCount == 8 * MOTION_TIMES) setMode(DOG_MODE_LEFT_FRONT);

  if (cycleCount == 9 * MOTION_TIMES) setMode(DOG_MODE_TURN_LEFT);

  if (cycleCount == 10 * MOTION_TIMES) setMode(DOG_MODE_TURN_RIGHT);

  if (cycleCount == 11 * MOTION_TIMES) setMode(DOG_MODE_STOP);

}


void setup()

{

  //陀螺仪连接串口,波特率115200

  Serial.begin(115200);


  //舵机驱动板初始化

  Tlc.init(0);

  tlc_initServos();   // Note: this will drop the PWM freqency down to 50Hz.


  //红外传感器初始化

  IRInit();


  //大狗身体初始化

  dogInit();


  //原地摆臂动作一次

  liftShoulder(40, 1);

  delay(500);

  //原地做圆形摆动3周

  drawCircle(0, 0, -120, 60, 3);

  delay(500);

  //原地蹲起3次

  upDown(0, 0, -160, -90, 3);

  delay(500);

  //原地踏步6次

  stepping(0, 0, -150, -100, 6);

  delay(500);



  resetCycleCount();

  enableIR();

  switchAdjustStat(ADJUST_STAT_TRACK);

  setMode(DOG_MODE_FRONT);

}


void loop()

{

  //姿态调节

  adjustAct();


  if (currentMode == DOG_MODE_STOP) return; //静止模式不进行后续动作


  updateMode(); //切换运动模式

  //计算4条腿运动位置

  leg1();

  leg4();

  leg2();

  leg3();

  //更新所有舵机位置

  Tlc.update();

  //检测红外传感器信息

  updateIR();


}


//串口与陀螺仪通信

void serialEvent() {

  readGyroSerial();

}


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器狗
    +关注

    关注

    3

    文章

    171

    浏览量

    10149
收藏 人收藏

    评论

    相关推荐

    美国军方最新型号大机器人——“阿尔法(或者LS3)”,

    `日前,美国军方展示了最新型号大机器人——“阿尔法(或者LS3)”,这是一种四自治机器人。
    发表于 01-16 14:31

    通过肩部动作操控机器

    在6月6日举行的2018年以色列教育科技峰会上,特拉维夫大学学生展示人机接口研发进展。学生通过肩部动作操控桌上的机器人举手、行走和转向。相关仪器通过学生身上传感器,不仅能将肢体动作信号
    发表于 11-09 16:01

    ANYmal机器人具有和脚,可跨越障碍物

    ANYmal机器人的实验版本具有和脚,苏黎世联邦理工学院步行,有机器人可能擅长于越过障碍物,但车轮在光滑地面上行驶仍然更有效率。这就是苏黎世联邦理工学院的工程师向其现有的ANYm
    发表于 08-30 08:02

    波士顿机器电机控制相关资料推荐

    开始接触到像波士顿机器这样的项目一只12个电机4条每个腿上3个1个是控制胯转动1个控制大腿也就是整条动的1个是控制小腿打弯的主控用l
    发表于 09-03 06:25

    一只完全由PCB制造的智能机器

    得不切割 PCB自己用卷轴锯(或类似工具),但这不会花费你超过几个小时。智能机器展示PS:在发布这个项目的时候,我没有一个好的可靠的代码可以在这个机器人上使用,所以我不会分享它,但我
    发表于 07-05 06:16

    小米机器二代来了,比上一代更瘦、更快、更强!NVIDIA主控+志MR813+志R329协处理器

    能看、能听、能感知,CyberDog2确实如雷军所调侃的那样,它比从前“更了”。 在刚刚结束的秋季新品发布会上,小米发布了最新的仿生四足机器人CyberDog2,虽然没有在发布会现场进行实物展示
    发表于 09-06 09:39

    大族机器人-Delta

    大族机器人-Delta
    发表于 12-25 22:21 0次下载

    Spot机器正在新西兰的草原上展示放牧技巧

    在没有人类监督的情况下管理羊群,就是Spot机器最新的技能之一。
    的头像 发表于 06-03 17:06 1842次阅读

    波士顿动力对机器进行了更新换代——能够感应人体动作进行模仿

    机器的设计与发明,就是一项大胆的创新,近期波士顿动力又搞了一个神秘的测试,这款新型机器进行了更新换代,不仅保留着初代机器
    的头像 发表于 07-27 11:48 2760次阅读

    +轮式动力!瑞士四足机器展示最佳混合步态、运动更灵活

    +轮式动力!瑞士四足机器人ANYmal展示最佳混合步态,运动更灵活,机器人,四足机器人,步态,轮子,车轮
    发表于 02-20 13:44 2481次阅读
    <b class='flag-5'>腿</b>+轮式动力!瑞士四足<b class='flag-5'>机器</b>人<b class='flag-5'>展示</b>最佳混合步态、运动更灵活

    波士顿动力机器学会了“三一组”跳大绳

    跳完集体舞、引得马斯克赞叹不已后,波士顿动力的机器Spot,又有了新才艺。 安装了机械臂的Spot Arm,甚至学会了“三一组”跳大绳: 起跳动作,对于
    的头像 发表于 02-02 14:06 1573次阅读

    波士顿动力Spot机器获新技能:玩跳绳游戏

    据外媒CNET报道,波士顿动力公司的Spot机器已经拥有跳舞、探索矿井及帮助医疗工作者等多项技能。而Spot机器正在不断学习新的技巧,现在它们有了一个机械臂和一个新的编程界面,有了
    的头像 发表于 02-03 17:27 1714次阅读

    Arduino控制的Delta机器

    电子发烧友网站提供《Arduino控制的Delta机器人.zip》资料免费下载
    发表于 07-05 11:01 7次下载
    Arduino控制的<b class='flag-5'>Delta</b><b class='flag-5'>机器</b>人

    瑞士苏黎世联邦理工学院新型四足机器人单完成开关门、移动任务

    据本周五出版的Popular Science杂志报道,近日瑞士苏黎世联邦理工学院机器人系统实验室的科研团队展示了新研究进展:他们训练了自家的机器,让其用单
    的头像 发表于 02-25 11:55 705次阅读

    为什么四足机器人设计常借鉴的外形特征?

    刘表示,机器机器人的一部分,被称为“四足动物”,意思很明显是“四条”。四足机器人之所以多数被设计为
    发表于 04-10 14:30 480次阅读