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(); slither();
} else { } else {
//move_protesis_with_sensor_data(); //move_protesis_with_sensor_data();
update_mood(); //update_mood();
move_protesis_organic(); move_protesis_organic();
} }
while (micros() - current_timestamp_us < 4000); //Wait until the loop_timer reaches 4000us (250Hz) before starting the next loop 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 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 //testing on servo
/*
matrix_weights[0][W_COS]=30 *map_mode; matrix_weights[0][W_COS]=30 *map_mode;
matrix_weights[0][W_NOISE]=90.0 *map_mode; matrix_weights[0][W_NOISE]=90.0 *map_mode;
matrix_weights[1][W_SIN]=30 *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[2][W_ROLL]=1.0* (1-map_mode);
matrix_weights[3][W_PITCH]=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[4][W_ROLL]=1.0* (1-map_mode);
*/
/* /*
matrix_weights[0][W_NOISE]=90.0*map_mode; matrix_weights[0][W_NOISE]=90.0*map_mode;
@ -262,8 +265,10 @@ void map_servos_by_weights_with_initial_position_and_move(const int roll, const
float vcos=cos((millis()+millis_add)/1000.0); float vcos=cos((millis()+millis_add)/1000.0);
for (uint8_t i=0;i<=SERVO_COUNT;i++) { 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 //unsigned long blastart=micros();
float pnoiseslow=PerlinNoise2((millis()+millis_add)/10000.0,i*10,0.20,3); //x,y,persistance,octaves 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; int angle=0;
angle= 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] +pnoiseslow*matrix_weights[i][W_NOISESLOW]
+vsin*matrix_weights[i][W_SIN] +vsin*matrix_weights[i][W_SIN]
+vcos*matrix_weights[i][W_COS]; +vcos*matrix_weights[i][W_COS];
dxlSetGoalPosition(servos[i].id, servos[i].initial_position + (servos[i].joint_orientation * angle_to_dxl_servo_position(angle))); dxlSetGoalPosition(servos[i].id, servos[i].initial_position + (servos[i].joint_orientation * angle_to_dxl_servo_position(angle)));
} }
delay(1); //delay(1);
} }