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

一、本体说明

1. 机器人整体描述

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

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第1张图片

 2. 结构说明

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第2张图片

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第3张图片

结构各部分说明:

小黑仿生轮腿机器人(一)-本体说明及运动控制_第4张图片

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

3. 电子硬件

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第5张图片

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第6张图片

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

扩展板电路图如下:

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第7张图片

 小扩展板1

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第8张图片

 小扩展板2

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第9张图片

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第10张图片

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

轮腿机箱右侧常用接口:

小黑仿生轮腿机器人(一)-本体说明及运动控制_第11张图片

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第12张图片

 4. BOM

名称 数量 规格
大臂输出头 4 6061铝氧化黑
电机壳1 4 6061铝氧化黑
电机壳2

4

6061铝氧化黑
舵机输出轴

4

6061铝氧化黑
机械臂 8 6061铝氧化黑
机械臂挡片 24 6061铝氧化黑
轮轴 4 304不锈钢
皮带轮1 8 6061铝氧化黑

皮带轮4

4

6061铝氧化黑

皮带轮5

4

6061铝氧化黑

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

6061铝氧化黑

皮带轮支架柱 4

6061铝氧化黑

25齿轮

4
44齿轮 4

车架 1

6061铝氧化黑

后支架板 1

6061铝氧化黑

前支架板 1

6061铝氧化黑

主控侧板 1

6061铝氧化黑

主控底板 1

6061铝氧化黑

主控顶板 1

6061铝氧化黑

主控后板 1

6061铝氧化黑

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

亚克力黑色5mm

雷达小板外壳1 1 进口高硬度尼龙_3D打印
雷达小板外壳2 1 进口高硬度尼龙_3D打印
超声波外壳1 4

进口高硬度尼龙_3D打印

超声波外壳2 4

进口高硬度尼龙_3D打印

电池仓 1

进口高硬度尼龙_3D打印

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

PCB

轮腿连接板2 1

PCB

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

M2*4

扭簧

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

含数据线和转接板

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

直通HDMI航空头

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

M3*50(10粒)

六角铜螺柱20 10 M3*20(10粒)
压簧50 4 1.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 

#include

//#include

#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

#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是重新设计的,如下图所示:

小黑仿生轮腿机器人(一)-本体说明及运动控制_第13张图片

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

小黑仿生轮腿机器人(一)-本体说明及运动控制_第14张图片

小黑仿生轮腿机器人(一)-本体说明及运动控制_第15张图片

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 

#include

//#include

#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. 资料内容

轮腿避障-例程源代码

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

你可能感兴趣的:(机器人,人工智能)