本帖最后由 机器谱 于 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) - /*------------------------------------------------------------------------------------
- 版权说明: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. 资料下载
资料内容:轮腿驱动及控制-例程源代码
资料下载地址: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: - /*------------------------------------------------------------------------------------
- 版权说明: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. 资料下载
资料内容:轮腿避障-例程源代码
资料下载地址:https://www.robotway.com/h-col-196.html
想了解更多机器人开源项目资料请关注 机器谱网站 https://www.robotway.com
|