机器谱 发表于 2023-3-29 09:40:21

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

本帖最后由 机器谱 于 2023-3-29 09:40 编辑

一、本体说明
1. 机器人整体描述
       小黑仿生轮腿机器人是一款全向仿生轮腿,具备麦克纳姆轮底盘的运动特性的同时,还具备了部分四足仿生机器人的运动特性。通过4个麦克纳姆轮和腿部动作的配合,可以在运动中改变机身的姿态,适应不同的作业环境。
小黑仿生轮腿机器人的肩部安装了8个超声波传感器,还安装了激光雷达、双目摄像头和屏幕,可以用于更复杂的智能控制。

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgu_iVoAYouKCitQMwtgQ4xgM!400x400.png.webp
2. 结构说明
      轮腿本体结构为模块化结构设计,包含悬挂模块、腿模块、轮模块等。其中悬挂模块可以让机器人的轮子有更好的着地性,防止悬空。
https://28846868.s21i.faiusr.com/2/ABUIABACGAAgsfWVoAYozPLB5gQwuBQ4tA8!450x450.jpg.webp

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

https://28846868.s21i.faiusr.com/2/ABUIABACGAAglfaVoAYo6s71igQwlRU4xRA!400x400.jpg.webp
结构各部分说明:

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgifeVoAYo0_6Q4AMw-Ag46gM!900x900.png.webp
零件包含机加工钣金零件、五金零件、3D打印零件,以及弹簧、同步皮带等。BOM及加工文件可在本文末尾下载。

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

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgjPiVoAYoipaawQQwtgM47wI.png.webp
我们把装有摄像头的那一端规定为轮腿的前端,下面是关于舵机的接线说明。

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgyfiVoAYopILboAMwqQY4nQM.png.webp
4个大标准舵机(模拟舵机)用于腿的摆动,4个总线舵机通过同步皮带带动麦克纳姆轮。

扩展板电路图如下:
大扩展板,直接堆叠在mega2560上

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgs-mVoAYoqJim-gMwywU4hgM.png.webp
小扩展板1
堆叠在大扩展板上,含2个总线舵机接口、2个舵机接口、4个超声波传感器接口。

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg5fmVoAYoyufDGzDeBDi8Aw.png.webp
小扩展板2
含2个总线舵机接口、2个舵机接口、4个超声波传感器接口

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg--uVoAYon_qqngMwrwQ4pwM.png.webp
小扩展板3(含6个传感器接口、2个串口、2个总线舵机接口、1个IIC接口、1个舵机接口)

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg3YOWoAYokJq1tAcw_AU4hgM!700x700.png.webp
扩展板PCB文件可以在文末下载。

轮腿机箱右侧常用接口:

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgpoSWoAYo6ta7uQMwhwk41wM!700x700.png.webp
其中各个接口的含义如下图所示:

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAg-oSWoAYoiPyg1gcw0wU4nAM!700x700.png.webp
4. BOM


名称
数量
规格

大臂输出头46061铝氧化黑
电机壳146061铝氧化黑
电机壳246061铝氧化黑
舵机输出轴46061铝氧化黑
机械臂86061铝氧化黑
机械臂挡片246061铝氧化黑
轮轴4304不锈钢
皮带轮186061铝氧化黑
皮带轮446061铝氧化黑
皮带轮546061铝氧化黑
皮带轮挡片286061铝氧化黑
皮带轮挡片支架86061铝氧化黑
皮带轮支架柱46061铝氧化黑
25齿轮4铜
44齿轮4铜
车架16061铝氧化黑
后支架板16061铝氧化黑
前支架板16061铝氧化黑
主控侧板16061铝氧化黑
主控底板16061铝氧化黑
主控顶板16061铝氧化黑
主控后板16061铝氧化黑
主控前板16061铝氧化黑
乐视双目支架1亚克力黑色5mm
雷达小板外壳11进口高硬度尼龙_3D打印
雷达小板外壳21进口高硬度尼龙_3D打印
超声波外壳14进口高硬度尼龙_3D打印
超声波外壳24进口高硬度尼龙_3D打印
电池仓1进口高硬度尼龙_3D打印
轮腿扩展版1PCB
轮腿连接板11PCB
轮腿连接板21PCB
轮腿连接板31PCB
麦克纳姆轮4型号14144
皮带28橡胶5M,310-5M
六角铜柱154M3*15双通
总线舵机4串行总线舵机,送调试板
大扭力数字高压舵机4

轴承6701zz366701-zz(12*18*4)
轴承MR85zz8MR85zz(5*8*2.5)
舵机输出头8


M204黑色沉头螺丝1M2*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

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

5. 资料下载
资料内容:
​①轮腿驱动及控制-样机3D文件
​②轮腿-生产加工文件
​资料下载地址:https://www.robotway.com/h-col-196.html

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

2. 运动功能的实现
       本示例将提供轮腿的基本运动,包括前进、后退、左平移、右平移、左转、右转及轮腿变形运动的参考程序。
编程环境:Arduino 1.8.19
2.1 轮腿基本运动
实现思路:轮腿可以前进、后退、左平移、右平移、左转、右转。

https://28846868.s21i.faiusr.com/3/ABUIABADGAAgiqiWoAYo3OSElAcwsAQ4uwI.gif.webp
https://28846868.s21i.faiusr.com/3/ABUIABADGAAgn6iWoAYoz_358QIwsAQ4uwI.gif.webp
https://28846868.s21i.faiusr.com/3/ABUIABADGAAgt6iWoAYokMW0YzCwBDi7Ag.gif.webp
例程(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

*   | 舵机   t:25   A - - - - - - - - - - - - - - - - - -Y: t:44   舵机

*   |                  e:23   |                                    |   e:46

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

*   |                  t:31   |                                    | t:40

*   | 舵机   e:29   Z - - - - - - - - - - - - - - - - - -X: e:38   舵机

*   |                           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={};

long GetUltrasonicDatas={};

double ActualSteps = StepTest*StepTestMultiple;

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


float wheel_Speed={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;

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 轮腿变形运动
实现思路:通过控制轮腿的舵机,来实现轮腿变形的效果。

https://28846868.s21i.faiusr.com/3/ABUIABADGAAgi6yWoAYovJCbuwMwsAQ4uwI.gif.webp
例程(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

*   | 舵机   t:25   A - - - - - - - - - - - - - - - - - -Y: t:44   舵机

*   |                  e:23   |                                    |   e:46

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

*   |                  t:31   |                                    | t:40

*   | 舵机   e:29   Z - - - - - - - - - - - - - - - - - -X: e:38   舵机

*   |                           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={};

long GetUltrasonicDatas={};

double ActualSteps = StepTest*StepTestMultiple;

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


float wheel_Speed={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. 资料下载
资料内容:轮腿驱动及控制-例程源代码
​资料下载地址:https://www.robotway.com/h-col-196.html


三、超声避障
1. 功能描述
   在轮腿上装8个 超声测距传感器 ,本文示例将实现轮腿避障的效果。

https://28846868.s21i.faiusr.com/3/ABUIABADGAAgsb6-oAYo5oDVmQYwsAQ4uwI.gif.webp
2. 电路连接
   轮腿的每个边角上装有2个超声测距传感器,共8个,超声测距传感器的PCB是重新设计的,如下图所示:

https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgrcC-oAYopt2vaTCjBTjfAg!600x600.png.webp
超声测距传感器的安装位置如下图所示:
https://28846868.s21i.faiusr.com/4/ABUIABAEGAAgnMK-oAYoyLf2vAIw8wk4yQc!450x450.png.webphttps://28846868.s21i.faiusr.com/4/ABUIABAEGAAgwsK-oAYo84KH1AYwqgU43QI.png.webp
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

*   | 舵机   t:25   A - - - - - - - - - - - - - - - - - -Y: t:44   舵机

*   |                  e:23   |                                    |   e:46

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

*   |                  t:31   |                                    | t:40

*   | 舵机   e:29   Z - - - - - - - - - - - - - - - - - -X: e:38   舵机

*   |                           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={};

long GetUltrasonicDatas={};

double ActualSteps = StepTest*StepTestMultiple;

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


float wheel_Speed={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;

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. 资料下载
资料内容:轮腿避障-例程源代码
​资料下载地址:https://www.robotway.com/h-col-196.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com
页: [1]
查看完整版本: 小黑仿生轮腿机器人(一)-本体说明及运动控制