Hrvatsko društvo za robotiku - Uvod u robotiku - vježbe

Praćenje kompasa

Cilj

Robot treba ići ravno i kad nema zida za praćenje.

Displej

void RobotMaze::imuFollow() {
	mrm_8x8a->bitmapCustomStoredDisplay(LedSign::MAZE_IMU_FOLLOW);
	float errorCW = imuLastValid - mrm_imu->heading();
	int16_t slowerMotor = TOP_SPEED - errorCW * IMU_FOLLOW_STRENGTH;
	motorGroup->go(errorCW > 0 ? slowerMotor : TOP_SPEED, 
		errorCW < 0 ? TOP_SPEED : slowerMotor);
}
Na 8x8 displeju ispišemo znak za praćenje kompasa.

Znak smo prije toga spremili kao bitmapu.

Greška

void RobotMaze::imuFollow() {
	mrm_8x8a->bitmapCustomStoredDisplay(LedSign::MAZE_IMU_FOLLOW);
	float errorCW = imuLastValid - mrm_imu->heading();
	int16_t slowerMotor = TOP_SPEED - errorCW * IMU_FOLLOW_STRENGTH;
	motorGroup->go(errorCW > 0 ? slowerMotor : TOP_SPEED, 
		errorCW < 0 ? TOP_SPEED : slowerMotor);
}
Grešku dobijemo kao razliku željenog smjera i trenutnog.

Brzina druge strane

void RobotMaze::imuFollow() {
	mrm_8x8a->bitmapCustomStoredDisplay(LedSign::MAZE_IMU_FOLLOW);
	float errorCW = imuLastValid - mrm_imu->heading();
	int16_t slowerMotor = TOP_SPEED - errorCW * IMU_FOLLOW_STRENGTH;
	motorGroup->go(errorCW > 0 ? slowerMotor : TOP_SPEED, 
		errorCW < 0 ? TOP_SPEED : slowerMotor);
}
Izračunamo brzinu sporijeg motora tako da od maksimalno moguće brzine oduzmemo grešku, pomnoženu s faktorom.

Motori

void RobotMaze::imuFollow() {
	mrm_8x8a->bitmapCustomStoredDisplay(LedSign::MAZE_IMU_FOLLOW);
	float errorCW = imuLastValid - mrm_imu->heading();
	int16_t slowerMotor = TOP_SPEED - errorCW * IMU_FOLLOW_STRENGTH;
	motorGroup->go(errorCW > 0 ? slowerMotor : TOP_SPEED, 
		errorCW < 0 ? TOP_SPEED : slowerMotor);
}
Na kraju pokrećemo motore

Zadatak: parametar

Mijenjate "IMU_FOLLOW_STRENGTH" dok ne dobijete savršeno gibanje robota.

Primjedbe



Projekt "Uvod u robotiku" sufinanciran je iz Europskog socijalnog fonda, poziv "Jačanje kapaciteta organizacija civilnoga društva za popularizaciju STEM-a". Relevantne stranice: Sadržaj vježbe za virtualne radionice isključiva je odgovornost Hrvatskog društva za robotiku.