fix slow loop by disabling perlin noise

This commit is contained in:
Philipp Kramer 2023-01-12 10:15:01 +01:00
parent 89ebccd59f
commit 7da708ecea
2 changed files with 16 additions and 6 deletions

View file

@ -84,13 +84,13 @@ void loop() {
slither();
} else {
//move_protesis_with_sensor_data();
update_mood();
//update_mood();
move_protesis_organic();
}
while (micros() - current_timestamp_us < 4000); //Wait until the loop_timer reaches 4000us (250Hz) before starting the next loop
//print_loop_time_micros();
print_loop_time_micros();
current_timestamp_us = micros(); //Reset the loop timer
}

View file

@ -33,9 +33,11 @@ void matrix_weights_update(){
matrix_weights[0][W_COS]=40.0;
//testing on servo
/*
matrix_weights[0][W_COS]=30 *map_mode;
matrix_weights[0][W_NOISE]=90.0 *map_mode;
matrix_weights[1][W_SIN]=30 *map_mode;
@ -53,6 +55,7 @@ void matrix_weights_update(){
matrix_weights[2][W_ROLL]=1.0* (1-map_mode);
matrix_weights[3][W_PITCH]=1.0* (1-map_mode);
matrix_weights[4][W_ROLL]=1.0* (1-map_mode);
*/
/*
matrix_weights[0][W_NOISE]=90.0*map_mode;
@ -260,10 +263,12 @@ void map_servos_by_weights_with_initial_position_and_move(const int roll, const
//Serial.println(millis_add);
float vsin=sin((millis()+millis_add)/1000.0);
float vcos=cos((millis()+millis_add)/1000.0);
for (uint8_t i=0;i<=SERVO_COUNT;i++) {
float pnoise=PerlinNoise2((millis()+millis_add)/500.0,i*10,0.25,3); //x,y,persistance,octaves
float pnoiseslow=PerlinNoise2((millis()+millis_add)/10000.0,i*10,0.20,3); //x,y,persistance,octaves
//unsigned long blastart=micros();
float pnoise=0;//PerlinNoise2((millis()+millis_add)/500.0,i*10,0.25,3); //x,y,persistance,octaves
float pnoiseslow=0;//PerlinNoise2((millis()+millis_add)/10000.0,i*10,0.20,3); //x,y,persistance,octaves
//Serial.print("perlin micros="); Serial.println(micros()-blastart);
int angle=0;
angle=
@ -273,9 +278,14 @@ void map_servos_by_weights_with_initial_position_and_move(const int roll, const
+pnoiseslow*matrix_weights[i][W_NOISESLOW]
+vsin*matrix_weights[i][W_SIN]
+vcos*matrix_weights[i][W_COS];
dxlSetGoalPosition(servos[i].id, servos[i].initial_position + (servos[i].joint_orientation * angle_to_dxl_servo_position(angle)));
}
delay(1);
//delay(1);
}