文章目录
- 一、项目框架
- 二、设计内容与功能需求
- 1. 导航与路径规划
- 2. 视觉感知
- 3. 运动控制
- 4. 精准遥控
- 5. 环境探测
- 6. 云端监控与数据分析
- 7. 人机协同
- 8. 充电桩
- 9. 紧急响应与救援
- 三、硬件设计
- 1. 四足机器人
- 2. 机械臂
- 3. 机器主控板
- 4. 遥控器板
- 5. 舵机驱动板
- 四、软件设计
- 1. 环境
- 2. 遥控器
- 3. 机器人
一、项目框架
在四足机器人的动平台上搭一个机械臂,引入视觉模块、各传感器用于实时探测识别和环境感知,并上传至云端用于数据分析,通过遥控器/手机 根据设计的步态算法实现远程遥控和人机交互,再有充电桩和紧急救援等智能化功能。
二、设计内容与功能需求
本设计的核心目标是在四足机器人与机械臂系统中实现一套高度智能化、多功能化的技术框架,使其能够在复杂环境中高效运行、灵活操控,并且具备自主感知和学习的能力。以下是设计的主要内容,包括导航与路径规划、视觉感知、运动控制、遥控技术、环境探测、云端监控等多个方面。
1. 导航与路径规划
首先,设计基于SLAM技术的导航系统,该系统能够在未知环境中实时构建地图,并通过路径规划算法确定机器人的最优移动路径。这一部分的关键在于将激光雷达、红外传感器等多种传感器信息融合,实现对环境的全方位感知。
2. 视觉感知
基于YOLOv3-tiny算法下对机器人进行视觉训练,实现实时视觉感知。该算法在图像处理中表现卓越,能够高效快速地检测和识别环境中的多个对象,包括人体、物体和障碍物。通过对图像的深度分析,机器人能够快速作出智能决策,提高在复杂环境中的运动精准度和适应性。这一先进的视觉感知系统不仅为机器人提供了高级的实时图像处理能力,还增强了其在多领域应用中的智能性和高效性。
3. 运动控制
机器人的运动控制系统采用基于视觉里程计(Visual Odometry, VMC)的先进技术,通过实时分析图像数据和相机位姿,实现对机器人位置和姿态的准确估计。结合YOLOv3-tiny算法的实时视觉感知,VMC技术为机器人提供了更为精准和灵活的运动控制。这一整合系统不仅使机器人能够在复杂环境中更加稳健地导航,而且为其在执行任务时提供了更高水平的智能决策和运动适应性。通过视觉感知和VMC技术的协同作用,机器人能够更自如地应对各种挑战,拓展了其在多领域运动控制中的应用潜力。
4. 精准遥控
通过设计智能遥控系统,用户可以实时监测机器人的状态,并实现远程操控机器人与机械臂的运动。该系统采用高效的通信协议,确保遥控信号的及时响应,使用户能够精准地控制机器人的动作。
5. 环境探测
机器人配备多种传感器,包括激光雷达、红外线传感器等,以实现对环境温度、障碍物等信息的感知。通过这些传感器,机器人可以实时适应环境变化,调整运动策略,提高系统的自主性和稳定性。
6. 云端监控与数据分析
通过WiFi模块,机器人实现无线图传和云端监控。在云端对上传数据进行分析,为系统的优化和决策提供强有力的支持。实现高效远程监控和智能数据分析,为系统运行和决策提供了全面的实时信息。
7. 人机协同
机械臂设计具备多功能操作,包括抓取、搬运、定位等。通过智能交互系统,用户可以与机器人协同完成各种任务,实现机械臂的灵活操作,提高系统的实用性。
8. 充电桩
设计了自主充电装置,使机器人能够自动寻找充电站并进行充电。这一系统的引入延长了机器人的工作时间,提高了系统的自主性和可用性。
9. 紧急响应与救援
机器人设计具备紧急响应功能,可以在灾难性情境中执行搜索、救援和监测任务。搭载传感器和摄像头,机器人能够迅速定位被困人员或探测灾害区域,提供重要信息给救援人员。
三、硬件设计
1. 四足机器人
这里我选用的MG995舵机作为支撑,因为动平台上方还要搭载机械臂和传感器,力矩需求大,像普通的sg90远不能满足需求,其次组装材料通过自主3D建模打印完成,根据舵机型号设计顶板、底板、小腿、大腿。
我的设计如下:
2. 机械臂
这里我直接从某宝上购买的现成零件组装,有能力的小伙伴自行设计。
3. 机器主控板
我是通过嘉立创平台进行设计打板,选用STM32,考虑到资源需求,我用的是F407VET6,如下图:
在左上侧为电源输入引脚,通过两路稳压芯片分别转为5V和3.3V供电;左下侧为SWD接口,供烧录调试使用;中间的上下四排为拓展引脚,引出暂时没有使用到的IO口,供后续开发使用;最中间的是STM32F407VET6芯片,周边摆放的是晶振和滤波电容;最右边引出的是PWM通道,驱动舵机;然后其他则是引出的按键、Boot电路、Uart、蓝牙、OLED接口。
4. 遥控器板
也是根据资源需求,我选用的是STM32F103RBT6,如下图所示:
同样,在左上方是电源输入引脚,通过两路稳压芯片分别转为5V和3.3V供电;中间上方两排引脚是蓝牙和OLED接口;最中间是STM32F103RBT6芯片;再往右边看是串口和SWD接口,用于通信和代码烧入调试;两侧分别摆放了一个功能按键,中间是复位按键;左下和右下则是两个双轴摇杆。
5. 舵机驱动板
舵机驱动板有两个,分别引用的是AMS1117芯片和LM2596S芯片,其中AMS1117最大输出1A电流,用于驱动机械臂的四个sg90舵机(工作电流为100mA);LM2596S最大输出电流为3A,用两个分别驱动四足机器人的8个MG995舵机(工作电流为300-500mA)
AMS1117:
LM2596S:
四、软件设计
1. 环境
- RT-Thread Studio
- STMCubeMX
- SketchUp Pro 2022
- Cura
- 嘉立创EDA(专业版)
- 串口助手
2. 遥控器
通过四个电位器采集摇杆改变的ADC的四个通道值,按键选择控制模式,利用OTA协议将数据打包利用蓝牙发送到机器人主控板上
这里示例部分代码:
int8_t pack(ProtocolBufferT *handler,uint8_t type, void* src, uint16_t size, uint8_t** dest,uint16_t* dest_size )
{
assert(size+7 < handler->max_size);
assert(type>0 && type < 128);
handler->data[0] = PROTO_HEAD0;
handler->data[1] = PROTO_HEAD1;
handler->data[2] = size & 0xff;
handler->data[3] = size >> 8;
handler->data[4] = type;
memcpy(handler->data+5, src, size );
handler->pack_len = size;
uint16_t sum = calc_sum(handler);
handler->data[size+5] = sum & 0xff;
handler->data[size+6] = sum >> 8;
handler->data_ptr = size+7 ;
if (dest) (*dest) = handler->data;
if (dest_size) (*dest_size) = handler->data_ptr;
return 0;
}
3. 机器人
首先是初始化LED、Key、Timer、Uart、PWM,在遥控模式下利用DMA接收串口发过来的数据包并解包,分别赋给各舵机状态进行控制;在视觉模式下,检测到前面有目标物块时,四足机器人停止运动,则控制机械臂去抓取释放;运动模式下,四足机器人会表现出不同的状态,即拉伸动作、俯卧撑、舞步等。
void Blue_rx(void)
{
struct rx_msg msg;
rt_err_t result;
rt_uint32_t rx_length;
while (1)
{
rt_memset(&msg, 0, sizeof(msg));
result = rt_mq_recv(&rx_mq, &msg, sizeof(msg), RT_WAITING_FOREVER); /* 从消息队列中读取消息*/
if (result == RT_EOK)
{
rx_length = rt_device_read(msg.dev, 0, Blue_rx_buffer, msg.size); /* 从串口读取数据*/
if(rx_length==9 && Blue_rx_buffer[0]==0xAA && Blue_rx_buffer[1]==0x55 && Blue_rx_buffer[8]==0x2B)
{
Blue_rx_buffer[rx_length] = '\0';
rx_flag=1;
data[0]=Blue_rx_buffer[2];
data[1]=Blue_rx_buffer[3];
data[2]=Blue_rx_buffer[4];
data[3]=Blue_rx_buffer[5];
key_sw1_status=Blue_rx_buffer[6];
key_sw2_status=Blue_rx_buffer[7];
}
}
}
}