<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
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 


#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

    文章

    167

    瀏覽量

    9917
收藏 人收藏

    評論

    相關推薦

    制作一只3D打印的遙控機器

    這周介紹的這個機器可以執行基本動作,比如行走、轉彎、站立、趴下和打招呼…… 在項目中,作者使用了之前設計的基于Arduino Nano的多伺服電機控制板。該板可以控制多達9個伺服電機,以及通過
    發表于 03-14 14:52

    美國軍方最新型號大機器人——“阿爾法(或者LS3)”,

    `日前,美國軍方展示了最新型號大機器人——“阿爾法(或者LS3)”,這是一種四自治機器人。
    發表于 01-16 14:31

    什么是龍人四足機器人?

    龍人四足機器人是一種仿生機器人,由Openduino控制板控制,有四條,每條兩個自由度,由兩個舵機驅動,能實現兩種步態行走。配有三個超聲波,實現大角度智能避障。標準演示程序有5個可
    發表于 03-24 16:17

    通過肩部動作操控機器

    在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

    機器人所用的線纜動作

    根據機器人的動作選擇電纜首先請掌握電纜的動作。配線時盡量加大彎曲半徑,減少扭轉和摩擦是減少斷線故障的要點,然后根據該動作下的期望壽命,選擇最合適的配線材料和配線方法。根據電纜
    發表于 06-09 10:44

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

    得不切割 PCB自己用卷軸鋸(或類似工具),但這不會花費你超過幾個小時。智能機器展示PS:在發布這個項目的時候,我沒有一個好的可靠的代碼可以在這個機器人上使用,所以我不會分享它,但我
    發表于 07-05 06:16

    小米機器二代來了,比上一代更瘦、更快、更強!NVIDIA主控+志MR813+志R329協處理器

    能看、能聽、能感知,CyberDog2確實如雷軍所調侃的那樣,它比從前“更了”。 在剛剛結束的秋季新品發布會上,小米發布了最新的仿生四足機器人CyberDog2,雖然沒有在發布會現場進行實物展示
    發表于 09-06 09:39

    基于DELTA機器人的動力學逆解算法設計及應用

    并聯機器人由多個封閉的機構環組成。這些機構環通常是由連接基座和運動平臺的兩或多個機構鏈構成,其中一個關節被驅動,其它關節也跟著一起運動。本文介紹一種3自由度的并聯機器人--DELTA機器
    發表于 01-04 15:10 ?43次下載

    大族機器人-Delta

    大族機器人-Delta
    發表于 12-25 22:21 ?0次下載

    關于Delta(德爾塔)百變積木機器人的介紹和應用

    Delta德爾塔積木機器人是一種以“自己動手做機器人”為核心思想的積木機器人套件,專為提升青少年的動手能力、發現并解決問題能力而設計。Delta
    的頭像 發表于 09-21 09:18 ?4791次閱讀

    超低價的DELTA機器人始終沒有引爆DELTA市場

    DELTA機器人概述 一直覺得DELTA是一個懷才不遇的構型,明明各種性能吊打SCARA,卻因為價格原因在銷量被SCARA甩幾條街。每隔兩年總會聽到“DELTA
    的頭像 發表于 06-06 10:44 ?1753次閱讀

    有趣的小型delta機器

    電子發燒友網站提供《有趣的小型delta機器人.zip》資料免費下載
    發表于 11-29 14:56 ?0次下載
    有趣的小型<b class='flag-5'>delta</b><b class='flag-5'>機器</b>人

    Arduino控制的Delta機器

    電子發燒友網站提供《Arduino控制的Delta機器人.zip》資料免費下載
    發表于 07-05 11:01 ?4次下載
    Arduino控制的<b class='flag-5'>Delta</b><b class='flag-5'>機器</b>人
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>