作者:朱家谊、吾丽江、管孝天
单位:天津工业大学
指导老师:李鹏
1. 概念说明
智能喷涂机器人是一种具有自主感知、决策和执行能力的机器人,专门用于自动化喷涂任务,它可以应用于各种领域,如汽车制造、建筑装饰、航空航天等。智能喷涂机器人具备以下特点和功能:
① 自主感知:智能喷涂机器人配备了多种传感器,如视觉传感器、激光雷达等,可以实时感知周围环境和工件表面的形状、颜色等信息。
② 路径规划:基于感知到的环境信息,智能喷涂机器人可以进行路径规划,确定最佳的运动轨迹,以确保喷涂过程中不与障碍物相撞。
③ 喷涂精度:智能喷涂机器人通过精确的位置控制和喷涂参数调整,可以实现高精度的喷涂,保证涂层的质量和均匀性。
④ 自适应调整:智能喷涂机器人可以根据涂层的类型和工件的形状,自动调整喷涂参数,以达到最佳的涂覆效果。
⑤ 远程监控和控制:智能喷涂机器人可以与中控系统连接,通过网络实现远程监控和控制,方便运维人员进行实时调试和管理。
⑥ 安全性保障:智能喷涂机器人采用多种安全措施,如紧急停止按钮、防碰撞传感器等,确保在紧急情况下能够及时停止运动,保护工作人员和设备的安全。
2. 概念设计
① 智能喷涂机器人三维视图(外观效果图的轮子和样机不同,请注意):
② 智能喷涂机器人功能结构说明:
③ 智能喷涂机器人桶拿放过程示意图:
3. 概念原型实现
智能喷涂机器人的原理样机为下图所示的机械臂小车,这款小车所用的底盘为四福来轮全向底盘(十字)。
为智能喷涂机器人的原理样机设计一个3d打印外壳。
加上外壳后的智能喷涂机器人设计图,如下所示:
4. 电子硬件
在这个示例中,我们采用了以下硬件,请大家参考:
主控板 | Arduino mega2560主控板 |
扩展板 | SH-F4ST扩展板 |
通信 | 蓝牙串口模块 |
电池 | 7.4V锂电池 |
其他 | 摄像头 |
5. 功能实现
编程环境:Arduino 1.8.19
下面提供一个蓝牙遥控智能喷涂机器人运动并做出刷漆动作的参考例程(motor_servo_mega.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-06-30 https://www.robotway.com/
------------------------------*/
#include<Servo.h> //调用舵机库函数
#define servo_num 8 //定义舵机数量
#define servo_delay 10 //设置舵机速度
#define motor_pin_count 8 //定义电机引脚数
#define MOTOR_SPEEDS 100 //定义电机速度
#define Motor_ACCELERATION 0.2 //设置电机加速度大小
#define SERIAL_CONNECT Serial2 //蓝牙串口
Servo myservo[8]; //声明舵机对象
float f = 30.0; //设置舵机速度(参数2)
int servo_pin[servo_num]={27,28,23,24,2,3,4,5}; //定义舵机引脚
float value_init[servo_num]={90,90,75,90,60,90,90,160}; //设置各个舵机初始化角度
const int motor_pin[motor_pin_count] = {6,7,8,9,10,11,12,13}; //定义各个电机引脚
enum{FORWARD=1,BACK,LEFT_TRANSLATION,RIGHT_TRANSLATION,TURN_LEFT,TURN_RIGHT,STOP};//定义小车各个状态
void setup() {
// put your setup code here, to run once:
delay(1000);
Serial.begin(9600);
Serial2.begin(9600);
motor_pin_init(); // motor pin init
Servo_reset(); //servo pin init
}
void loop() {
if( SERIAL_CONNECT.available() ){
char inchar = SERIAL_CONNECT.read();
if( inchar == '1' ){ Motor_Go( FORWARD ); } //前进
else if( inchar == '2' ) { Motor_Go( BACK ); } //后退
else if( inchar == '3' ) { Motor_Go( TURN_LEFT ); } //左转
else if( inchar == '4' ) { Motor_Go( TURN_RIGHT ); } //右转
else if( inchar == '5' ) { Motor_Go( STOP ); } //停止
else if( inchar == '6' ) { Motor_Go( LEFT_TRANSLATION ); } //左平移
else if( inchar == '7' ) { Motor_Go( RIGHT_TRANSLATION ); } //右平移
else if( inchar == 'a' ) { servo_move(90,90,75,90,90,90,90,90); } //底盘向左
else if( inchar == 'b' ) { servo_move(90,90,75,90,90,90,90,160); } //底盘向右
else if( inchar == 'c' ) { single_servo_move(2,123);delay(1000);
for(int i=0;i<3;i++){ single_servo_move(1,75);delay(100); single_servo_move(1,90);delay(100); } } //刷漆动作
else if( inchar == 'd' ) { single_servo_move(0,30); } //转头向左
else if( inchar == 'e' ) { single_servo_move(0,150);} //转头向右
else if( inchar == 'f' ) { single_servo_move(0,90); } //转头复位
else if( inchar == 'g' ) { single_servo_move(4,55); } //手臂上抬
else if( inchar == 'h' ) { single_servo_move(4,75); } //手臂下降
else if( inchar == 'i' ) { single_servo_move(4,60);single_servo_move(2,75);delay(1000); } //手臂复位
else {delay(2);}
}
}
运行效果如下:
程序源代码及模型3D文件资料详见智能喷涂机器人