极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2098|回复: 0

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

[复制链接]
发表于 2023-3-29 09:40:21 | 显示全部楼层 |阅读模式
本帖最后由 机器谱 于 2023-3-29 09:40 编辑

一、本体说明
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

名称
数量
规格
大臂输出头
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文件
​②轮腿-生产加工文件
资料下载地址:
https://www.robotway.com/h-col-196.html

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

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




例程(Base_Experiment\wheelLegDrive\wheelLegDrive.ino)
  1. /*------------------------------------------------------------------------------------

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-02-28 https://www.robotway.com/

  6.   ------------------------------*/

  7. /*

  8. *   功能:轮腿驱动

  9. *  

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

  11. *

  12. *   Y

  13. *   |

  14. *   |                                    

  15. *   |

  16. *   |                                        【车身左侧】

  17. *   |                             t:22                      t:47  

  18. *   |                             e:24                      e:45

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

  20. *   |                    e:23   |                                    |   e:46

  21. *   |【车尾】                   |                                    |           【车头】

  22. *   |                    t:31   |                                    | t:40

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

  24. *   |                             t:28                      t:39  

  25. *   |                             e:30                      e:41

  26. *   |                                        【车身右侧】

  27. *   |

  28. *   0----------------------------------------------------------------------------------------------------------X

  29. * //////////////////

  30. */

  31. //#include <SoftwareSerial.h>

  32. #include<Servo.h>

  33. //#include<ServoTimer2.h>

  34. #define StepTest 20

  35. #define BaudRate 115200

  36. #define StepTestMultiple 1

  37. #define BriefDelayTimes 10

  38. #define ActionDelayTimes 1500

  39. #define CarActionDelayTime 600

  40. #define mySerial Serial1

  41. #define set_pwm_now 2500

  42. #define set_pwm_nows 1500


  43. bool Ultrasonic_flags[8]={};

  44. long GetUltrasonicDatas[8]={};

  45. double ActualSteps = StepTest*StepTestMultiple;

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


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

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

  49. //SoftwareSerial mySerial(51, 9);


  50. void setup() {

  51.   delay(1000);

  52.   mySerial.begin(115200);

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

  54.   init_Servo();delay(300);

  55.   init_Ultrasonic();

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

  57.   moveTest();                                                         

  58. }



  59. void loop() {

  60.    //moveTest();

  61.    //Get_ultrasonic_sensor_data();

  62. }


  63. void control_single_motor(int speed_single,int pwm)

  64. {

  65.   char cmd_return[200];  

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

  67.   mySerial.print(cmd_return);  

  68. }




  69. void moveTest(){

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

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

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

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

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

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

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

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

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

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

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

  81. }
复制代码

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


例程(Base_Experiment\Wheel_leg_deformation\Wheel_leg_deformation.ino)
  1. /*------------------------------------------------------------------------------------

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-02-28 https://www.robotway.com/

  6.   ------------------------------*/

  7. /*

  8. *   功能:轮腿变形

  9. *

  10. *

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

  12. *

  13. *   Y

  14. *   |

  15. *   |                                    

  16. *   |

  17. *   |                                        【车身左侧】

  18. *   |                             t:22                      t:47  

  19. *   |                             e:24                      e:45

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

  21. *   |                    e:23   |                                    |   e:46

  22. *   |【车尾】                  |                                    |           【车头】

  23. *   |                    t:31   |                                    | t:40

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

  25. *   |                             t:28                      t:39  

  26. *   |                             e:30                      e:41

  27. *   |                                        【车身右侧】

  28. *   |

  29. *   0----------------------------------------------------------------------------------------------------------X

  30. * //////////////////

  31. */

  32. #include<Servo.h>

  33. #define StepTest 20

  34. #define BaudRate 115200

  35. #define StepTestMultiple 1

  36. #define BriefDelayTimes 10

  37. #define ActionDelayTimes 1500

  38. #define CarActionDelayTime 600

  39. #define mySerial Serial1

  40. #define set_pwm_now 2500

  41. #define set_pwm_nows 1500


  42. bool Ultrasonic_flags[8]={};

  43. long GetUltrasonicDatas[8]={};

  44. double ActualSteps = StepTest*StepTestMultiple;

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


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

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



  48. void setup() {

  49.   delay(3000);

  50.   mySerial.begin(115200);

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

  52.   init_Servo();delay(2300);

  53.   init_Ultrasonic();

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

  55.   Dog_Dance();  

  56. }



  57. void loop() {


  58. }
复制代码

3. 资料下载
资料内容:轮腿驱动及控制-例程源代码
​资料下载地址:https://www.robotway.com/h-col-196.html



三、超声避障
1. 功能描述

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


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


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

3. 功能实现
编程环境:Arduino 1.8.19
参考例程(Base_Experiment\Control_IicServo_and_Servo),实现轮腿避障效果。下面是主程序Control_IicServo_and_Servo.ino:
  1. /*------------------------------------------------------------------------------------

  2.   版权说明:Copyright 2023 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.

  3.            Distributed under MIT license.See file LICENSE for detail or copy at

  4.            https://opensource.org/licenses/MIT

  5.            by 机器谱 2023-02-28 https://www.robotway.com/

  6.   ------------------------------*/

  7. /*

  8. *   轮腿避障

  9. *

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

  11. *

  12. *   Y

  13. *   |

  14. *   |                                    

  15. *   |

  16. *   |                                        【车身左侧】

  17. *   |                             t:22                      t:47  

  18. *   |                             e:24                      e:45

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

  20. *   |                    e:23   |                                    |   e:46

  21. *   |【车尾】                   |                                    |           【车头】

  22. *   |                    t:31   |                                    | t:40

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

  24. *   |                             t:28                      t:39  

  25. *   |                             e:30                      e:41

  26. *   |                                        【车身右侧】

  27. *   |

  28. *   0-----------------------------------------------------------------------------------------


  29. * //////////////////

  30. */

  31. //#include <SoftwareSerial.h>

  32. #include<Servo.h>

  33. //#include<ServoTimer2.h>

  34. #define StepTest 20

  35. #define BaudRate 115200

  36. #define StepTestMultiple 1

  37. #define BriefDelayTimes 10

  38. #define ActionDelayTimes 1500

  39. #define CarActionDelayTime 600

  40. #define mySerial Serial1

  41. #define set_pwm_now 2500

  42. #define set_pwm_nows 1500


  43. bool Ultrasonic_flags[8]={};

  44. long GetUltrasonicDatas[8]={};

  45. double ActualSteps = StepTest*StepTestMultiple;

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


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

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

  49. //SoftwareSerial mySerial(51, 9);


  50. void setup() {

  51.   delay(500);

  52.   mySerial.begin(115200);

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

  54.   init_Servo();delay(300);

  55.   init_Ultrasonic();

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

  57.   moveTest();  

  58.   Dog_Dance();

  59. }



  60. void loop() {



  61.    Get_ultrasonic_sensor_data();

  62. }


  63. void control_single_motor(int speed_single,int pwm)

  64. {

  65.   char cmd_return[200];  

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

  67.   mySerial.print(cmd_return);  

  68. }



  69. void moveTest(){

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

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

  72. }
复制代码

4. 资料下载

资料内容:轮腿避障-例程源代码
资料下载地址:https://www.robotway.com/h-col-196.html

想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-28 23:19 , Processed in 0.041640 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表