Epuck2嵌入式开发教程-1.避障功能

避障功能

代码行数:main.c  第493行

代码

prox_values_temp[0] = get_calibrated_prox(0);
				prox_values_temp[1] = get_calibrated_prox(1);
				prox_values_temp[2] = get_calibrated_prox(2);
				prox_values_temp[5] = get_calibrated_prox(5);
				prox_values_temp[6] = get_calibrated_prox(6);
				prox_values_temp[7] = get_calibrated_prox(7);

				leftSpeed = MOTOR_SPEED_LIMIT/2 - prox_values_temp[0]*8 - prox_values_temp[1]*4 - prox_values_temp[2]*2;
				rightSpeed = MOTOR_SPEED_LIMIT/2 - prox_values_temp[7]*8 - prox_values_temp[6]*4 - prox_values_temp[5]*2;
				right_motor_set_speed(rightSpeed);
				left_motor_set_speed(leftSpeed);

避障功能.png

简单讲解

获取周围8个(当前只获取前方和侧方6个)红外传感器数据,机器人根据这些数据进行躲避障碍物行走。

避障传感器的位置不同,所带来避障的影响权重不同。

以基础速度为准,减去红外测量数据,

左方电机减去的右侧红外数据

右方电机减去的左侧红外数据

障碍物检测数据越大,机器人该方向电机越快(快速躲开,防止撞上)。

最后赋值给左右电机rightSpeedleftSpeed

测试

机器人档位选择到B档位,重启机器人,机器人开始移动后,用手遮住机器人前方的几个红外传感器进行测试。