当前位置: 首页 > article >正文

小黑仿生轮腿机器人(一)-本体说明及运动控制

一、本体说明

1. 机器人整体描述

      小黑仿生轮腿机器人是一款全向仿生轮腿,具备麦克纳姆轮底盘的运动特性的同时,还具备了部分四足仿生机器人的运动特性。通过4个麦克纳姆轮和腿部动作的配合,可以在运动中改变机身的姿态,适应不同的作业环境。

       小黑仿生轮腿机器人的肩部安装了8个超声波传感器,还安装了激光雷达、双目摄像头和屏幕,可以用于更复杂的智能控制。

 2. 结构说明

     轮腿本体结构为模块化结构设计,包含悬挂模块、腿模块、轮模块等。其中悬挂模块可以让机器人的轮子有更好的着地性,防止悬空。

肩膀位置的悬架上下板之间,安装了8个超声波传感器。

结构各部分说明:

零件包含机加工钣金零件、五金零件、3D打印零件,以及弹簧、同步皮带等。BOM及加工文件可在本文末尾下载。

3. 电子硬件

      这款轮腿机器人主要的电子硬件包含一个控制机箱(机箱内含Arduino mega2560控制板、专用扩展板、电池等,机箱外部提供各种开关按钮和USB等接口)、树莓派4B、激光雷达、双目摄像头、显示屏、键盘、鼠标及相关的连接线。

 我们把装有摄像头的那一端规定为轮腿的前端,下面是关于舵机的接线说明。

4个大标准舵机(模拟舵机)用于腿的摆动,4个总线舵机通过同步皮带带动麦克纳姆轮。

扩展板电路图如下:

大扩展板,直接堆叠在mega2560上

 小扩展板1

堆叠在大扩展板上,含2个总线舵机接口、2个舵机接口、4个超声波传感器接口。

 小扩展板2

含2个总线舵机接口、2个舵机接口、4个超声波传感器接口

 小扩展板3(含6个传感器接口、2个串口、2个总线舵机接口、1个IIC接口、1个舵机接口)

 扩展板PCB文件可以在文末下载。

轮腿机箱右侧常用接口:

 其中各个接口的含义如下图所示:

 4. BOM

名称数量规格
大臂输出头46061铝氧化黑
电机壳146061铝氧化黑
电机壳2

4

6061铝氧化黑
舵机输出轴

4

6061铝氧化黑
机械臂86061铝氧化黑
机械臂挡片246061铝氧化黑
轮轴4304不锈钢
皮带轮186061铝氧化黑

皮带轮4

4

6061铝氧化黑

皮带轮5

4

6061铝氧化黑

皮带轮挡片286061铝氧化黑
皮带轮挡片支架8

6061铝氧化黑

皮带轮支架柱4

6061铝氧化黑

25齿轮

4
44齿轮4

车架1

6061铝氧化黑

后支架板1

6061铝氧化黑

前支架板1

6061铝氧化黑

主控侧板1

6061铝氧化黑

主控底板1

6061铝氧化黑

主控顶板1

6061铝氧化黑

主控后板1

6061铝氧化黑

主控前板16061铝氧化黑
乐视双目支架1

亚克力黑色5mm

雷达小板外壳11进口高硬度尼龙_3D打印
雷达小板外壳21进口高硬度尼龙_3D打印
超声波外壳14

进口高硬度尼龙_3D打印

超声波外壳24

进口高硬度尼龙_3D打印

电池仓1

进口高硬度尼龙_3D打印

轮腿扩展版1PCB
轮腿连接板11

PCB

轮腿连接板21

PCB

轮腿连接板31PCB
麦克纳姆轮4型号14144
皮带28橡胶5M,310-5M
六角铜柱154M3*15双通
总线舵机4串行总线舵机,送调试板
大扭力数字高压舵机4
轴承6701zz366701-zz(12*18*4)
轴承MR85zz8MR85zz(5*8*2.5)
舵机输出头8
M204黑色沉头螺丝1

M2*4

扭簧

8
M210黑色沉头螺丝1M2*10
树莓派4B1内存4G
32G内存卡1
树莓派显示屏1带支架
超声波模组4含PCB加工
Arduino Mega2560主控板1
2560主控板数据线1
11.1V动力电池1
杉川激光雷达1

含数据线和转接板

乐视深度摄像头1含底座
弯头Type-c线(双弯头)10.25m

直通HDMI航空头

1HDMI新款直通
D型ZUSB-3.0直通母座1D型ZUSB-3.0直通母座
环形12V自锁开关112V(自锁式)、22mm、环形+电源灯绿色带插座
电源适配器1DC5.5mm接口,12V10A
5V6A稳压模块15V6A
micro-HDMI线1D2-A1    0.15m
双公头USB1
DC电源插座插孔1
双头JTAG排线30P1
双头JTAG排线16P2
动力电池电源线1
蓝牙键鼠套装1
USBhub3.01
探索者4芯输入排线8
M3黑色沉头螺丝6mm100
M3黑色沉头螺丝8mm100
M3黑色沉头螺丝10mm100
六角铜螺柱5010

M3*50(10粒)

六角铜螺柱2010M3*20(10粒)
压簧5041.0*8*50

 5. 资料内容

① 轮腿驱动及控制-样机3D文件

② 轮腿-生产加工文件

资料内容详见:小黑仿生轮腿机器人(本体说明)

二、运动控制

1. 运动功能描述

      小黑仿生轮腿机器人是一款全向仿生轮腿,具备麦克纳姆轮底盘的运动特性的同时,还具备了部分四足仿生机器人的运动特性。通过4个麦克纳姆轮和腿部动作的配合,可以在运动中改变机身的姿态,适应不同的作业环境。

2. 运动功能的实现

      本示例将提供轮腿的基本运动,包括前进、后退、左平移、右平移、左转、右转及轮腿变形运动的参考程序。

编程环境:Arduino 1.8.19

2.1 轮腿基本运动

实现思路:轮腿可以前进、后退、左平移、右平移、左转、右转。

 例程(Base_Experiment\wheelLegDrive\wheelLegDrive.ino)

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

  版权说明: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-02-28 https://www.robotway.com/

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

/*

*   功能:轮腿驱动

*  

*   车身位置及传感器\电机接线:

*

*   Y

*   |

*   |                                     

*   |

*   |                                        【车身左侧】

*   |                             t:22                      t:47  

*   |                             e:24                      e:45

*   | 舵机[servoPin:26]   t:25   A - - - - - - - - - - - - - - - - - -Y: t:44   舵机[servoPin:43]

*   |                    e:23   |                                    |   e:46

*   |【车尾】                   |                                    |           【车头】

*   |                    t:31   |                                    | t:40

*   | 舵机[servoPin:27]   e:29   Z - - - - - - - - - - - - - - - - - -X: e:38   舵机[servoPin:42]

*   |                             t:28                      t:39  

*   |                             e:30                      e:41

*   |                                        【车身右侧】

*   |

*   0----------------------------------------------------------------------------------------------------------X

* //

*/

//#include <SoftwareSerial.h>

#include<Servo.h>

//#include<ServoTimer2.h>

#define StepTest 20

#define BaudRate 115200

#define StepTestMultiple 1

#define BriefDelayTimes 10

#define ActionDelayTimes 1500

#define CarActionDelayTime 600

#define mySerial Serial1

#define set_pwm_now 2500

#define set_pwm_nows 1500


bool Ultrasonic_flags[8]={};

long GetUltrasonicDatas[8]={};

double ActualSteps = StepTest*StepTestMultiple;

enum{FORWARD=1,BACK,LEFTROAD,RIGHTROAD,AUTO_MOVE};


float wheel_Speed[4]={0,0,0,0};

float current_vx = 0,current_vy = 0,current_va = 0;

//SoftwareSerial mySerial(51, 9);


void setup() {

  delay(1000);

  mySerial.begin(115200);

  Serial.begin(BaudRate);//set Baud rate

  init_Servo();delay(300);

  init_Ultrasonic();

  XYSetVel(0.0,0.0, 0.0);delay(300);

  moveTest();                                                         

}



void loop() {

   //moveTest();

   //Get_ultrasonic_sensor_data();

}


void control_single_motor(int speed_single,int pwm)

{

  char cmd_return[200];  

  sprintf(cmd_return, "{#%03dP%04dT%04d!}",0,pwm,1);

  mySerial.print(cmd_return);  

}




void moveTest(){

  XYSetVel(0.05, 0.0, 0.0);delay(2000); //forward           前进

  XYSetVel(0.0,0.0, 0.0);delay(2000);//停止

  XYSetVel(-0.05,0.0,0.0);delay(2000);   //back              后退

  XYSetVel(0.0,0.0, 0.0);delay(2000);

  XYSetVel(0.0,0.0,-0.20);delay(2000);   //left              左转

  XYSetVel(0.0,0.0, 0.0);delay(2000);

  XYSetVel(0.0 ,0.0,0.20 );delay(2000);   //right            右转

  XYSetVel(0.0,0.0, 0.0);delay(2000);

  XYSetVel( 0.0, -0.05, 0.0);delay(2000);//Left translation 左平移

  XYSetVel( 0.0, 0.05, 0.0);delay(2000);//right translation 右平移

  XYSetVel(0.0,0.0, 0.0);delay(2000);

}

2.2 轮腿变形运动

实现思路:通过控制轮腿的舵机,来实现轮腿变形的效果。

例程(Base_Experiment\Wheel_leg_deformation\Wheel_leg_deformation.ino)

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

  版权说明: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-02-28 https://www.robotway.com/

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

/*

*   功能:轮腿变形

*

*

*   车身位置及传感器\电机接线:

*

*   Y

*   |

*   |                                     

*   |

*   |                                        【车身左侧】

*   |                             t:22                      t:47  

*   |                             e:24                      e:45

*   | 舵机[servoPin:26]   t:25   A - - - - - - - - - - - - - - - - - -Y: t:44   舵机[servoPin:43]

*   |                    e:23   |                                    |   e:46

*   |【车尾】                  |                                    |           【车头】

*   |                    t:31   |                                    | t:40

*   | 舵机[servoPin:27]   e:29   Z - - - - - - - - - - - - - - - - - -X: e:38   舵机[servoPin:42]

*   |                             t:28                      t:39  

*   |                             e:30                      e:41

*   |                                        【车身右侧】

*   |

*   0----------------------------------------------------------------------------------------------------------X

* //

*/

#include<Servo.h>

#define StepTest 20

#define BaudRate 115200

#define StepTestMultiple 1

#define BriefDelayTimes 10

#define ActionDelayTimes 1500

#define CarActionDelayTime 600

#define mySerial Serial1

#define set_pwm_now 2500

#define set_pwm_nows 1500


bool Ultrasonic_flags[8]={};

long GetUltrasonicDatas[8]={};

double ActualSteps = StepTest*StepTestMultiple;

enum{FORWARD=1,BACK,LEFTROAD,RIGHTROAD,AUTO_MOVE};


float wheel_Speed[4]={0,0,0,0};

float current_vx = 0,current_vy = 0,current_va = 0;



void setup() {

  delay(3000);

  mySerial.begin(115200);

  Serial.begin(BaudRate);//set Baud rate

  init_Servo();delay(2300);

  init_Ultrasonic();

  XYSetVel(0.0,0.0, 0.0);delay(2300);

  Dog_Dance();  

}



void loop() {


}

 3. 资料内容

轮腿驱动及控制-例程源代码

资料内容详见:小黑仿生轮腿机器人(运动控制)

三、超声避障

1. 功能描述

在轮腿上装8个 超声测距传感器 ,本文示例将实现轮腿避障的效果。

 

2. 电路连接

       轮腿的每个边角上装有2个超声测距传感器,共8个,超声测距传感器的PCB是重新设计的,如下图所示:

超声测距传感器的安装位置如下图所示: 

3. 功能实现

编程环境:Arduino 1.8.19

参考例程(Base_Experiment\Control_IicServo_and_Servo),实现轮腿避障效果。下面是主程序Control_IicServo_and_Servo.ino:

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

  版权说明: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-02-28 https://www.robotway.com/

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

/*

*   轮腿避障

*

*   车身 位置及传感器\电机接线:

*

*   Y

*   |

*   |                                     

*   |

*   |                                        【车身左侧】

*   |                             t:22                      t:47  

*   |                             e:24                      e:45

*   | 舵机[servoPin:26]   t:25   A - - - - - - - - - - - - - - - - - -Y: t:44   舵机[servoPin:43]

*   |                    e:23   |                                    |   e:46

*   |【车尾】                   |                                    |           【车头】

*   |                    t:31   |                                    | t:40

*   | 舵机[servoPin:27]   e:29   Z - - - - - - - - - - - - - - - - - -X: e:38   舵机[servoPin:42]

*   |                             t:28                      t:39  

*   |                             e:30                      e:41

*   |                                        【车身右侧】

*   |

*   0-----------------------------------------------------------------------------------------


* //

*/

//#include <SoftwareSerial.h>

#include<Servo.h>

//#include<ServoTimer2.h>

#define StepTest 20

#define BaudRate 115200

#define StepTestMultiple 1

#define BriefDelayTimes 10

#define ActionDelayTimes 1500

#define CarActionDelayTime 600

#define mySerial Serial1

#define set_pwm_now 2500

#define set_pwm_nows 1500


bool Ultrasonic_flags[8]={};

long GetUltrasonicDatas[8]={};

double ActualSteps = StepTest*StepTestMultiple;

enum{FORWARD=1,BACK,LEFTROAD,RIGHTROAD,AUTO_MOVE};


float wheel_Speed[4]={0,0,0,0};

float current_vx = 0,current_vy = 0,current_va = 0;

//SoftwareSerial mySerial(51, 9);


void setup() {

  delay(500);

  mySerial.begin(115200);

  Serial.begin(BaudRate);//set Baud rate

  init_Servo();delay(300);

  init_Ultrasonic();

  XYSetVel(0.0,0.0, 0.0);delay(300);

  moveTest();  

  Dog_Dance();

}



void loop() {

 

   Get_ultrasonic_sensor_data();

}


void control_single_motor(int speed_single,int pwm)

{

  char cmd_return[200];  

  sprintf(cmd_return, "{#%03dP%04dT%04d!}",0,pwm,1);

  mySerial.print(cmd_return);  

}



void moveTest(){

  XYSetVel(0.05, 0.0, 0.0);delay(2000); //forward           前进

  XYSetVel(0.0,0.0, 0.0);delay(2000);//停止

}

4. 资料内容

轮腿避障-例程源代码

资料内容详见:小黑仿生轮腿机器人(超声避障)


http://www.kler.cn/a/5212.html

相关文章:

  • 工业 4G 路由器赋能远程医疗,守护生命线
  • Nginx入门笔记
  • linux centos挂载未分配的磁盘空间
  • 微信小程序实现长按录音,点击播放等功能,CSS实现语音录制动画效果
  • 51单片机——定时器中断(重点)
  • kubernetes第五天
  • 第08章_聚合函数
  • 【20230401】【每日一题】前K个高频元素
  • Springboot 多线程分批切割处理 大数据量List集合 ,实用示例
  • 【五】线程安全VS线程不安全
  • Postgersql神器之pgbadger安装配置
  • Vue项目中引入高德地图步骤详解
  • TensorFlow 1.x学习(系列二 :2):张量的动态形状与静态形状,基本的张量api
  • 好奇心害死猫?我怎么知道谁看到了我的 Facebook 亮点?
  • Java每日一练(20230401)
  • day17-正则表达式作业
  • 大学英语视听说教程(陈向京版本)
  • 行业分析| anyRTC智慧视频监控的应用
  • 基于springboot实现就业信息管理系统演示【附项目源码】分享
  • 东风日产到访CASAIM,双方联合开展运用高精度3D打印技术制造汽车产线相关的工装夹具、检具及治具的技术应用研究
  • 55英寸液晶拼接屏的长度和宽度尺寸是多少?
  • 编译安装redis实验文档
  • 2023美赛春季赛F题思路数据代码论文分享
  • 限流、熔断、服务降级
  • 了解这7个Node.js库,让你的开发效率提升不止一点点
  • STM32学习(七)