Browse Source

OptFlow: update example sketch to work with shrunken library

mission-4.1.18
Randy Mackay 11 years ago
parent
commit
3823eed865
  1. 266
      libraries/AP_OpticalFlow/examples/AP_OpticalFlow_test/AP_OpticalFlow_test.pde

266
libraries/AP_OpticalFlow/examples/AP_OpticalFlow_test/AP_OpticalFlow_test.pde

@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
const AP_HAL::HAL& hal = AP_HAL_BOARD_DRIVER;
AP_OpticalFlow_ADNS3080 flowSensor;
AP_OpticalFlow_ADNS3080 optflow;
void setup()
{
@ -23,13 +23,11 @@ void setup() @@ -23,13 +23,11 @@ void setup()
hal.scheduler->delay(1000);
// flowSensor initialization
if( flowSensor.init() == false ) {
optflow.init();
if (!optflow.healthy()) {
hal.console->print("Failed to initialise ADNS3080 ");
}
flowSensor.set_orientation(AP_OPTICALFLOW_ADNS3080_PINS_FORWARD);
flowSensor.set_field_of_view(AP_OPTICALFLOW_ADNS3080_08_FOV);
hal.scheduler->delay(1000);
}
@ -41,14 +39,9 @@ void display_menu() @@ -41,14 +39,9 @@ void display_menu()
hal.console->println();
hal.console->println("please choose from the following options:");
hal.console->println(" c - display all config");
hal.console->println(" f - set frame rate");
hal.console->println(" i - display image");
hal.console->println(" I - display image continuously");
hal.console->println(" m - display motion");
hal.console->println(" r - set resolution");
hal.console->println(" s - set shutter speed");
hal.console->println(" z - clear all motion");
hal.console->println(" a - frame rate auto/manual");
hal.console->println();
}
@ -57,113 +50,26 @@ void display_menu() @@ -57,113 +50,26 @@ void display_menu()
//
void display_config()
{
hal.console->print("Config: ");
hal.console->print(flowSensor.read_register(ADNS3080_CONFIGURATION_BITS),BASE_BIN);
hal.scheduler->delay_microseconds(50);
hal.console->print(",");
hal.console->print(flowSensor.read_register(ADNS3080_EXTENDED_CONFIG),BASE_BIN);
hal.scheduler->delay_microseconds(50);
hal.console->println();
// product id
hal.console->print("\tproduct id: ");
hal.console->print(flowSensor.read_register(ADNS3080_PRODUCT_ID),BASE_HEX);
hal.console->printf_P(PSTR("Product id: %#x\n"),optflow.read_register(ADNS3080_PRODUCT_ID));
hal.scheduler->delay_microseconds(50);
hal.console->print(" (hex)");
hal.console->println();
// frame rate
hal.console->print("\tframe rate: ");
hal.console->print(flowSensor.get_frame_rate());
if( flowSensor.get_frame_rate_auto() == true ) {
hal.console->print(" (auto)");
}else{
hal.console->print(" (manual)");
}
hal.console->println();
// resolution
hal.console->print("\tresolution: ");
hal.console->print(flowSensor.get_resolution());
hal.console->println();
// shutter speed
hal.console->print("\tshutter speed: ");
hal.console->print(flowSensor.get_shutter_speed());
if( flowSensor.get_shutter_speed_auto() ) {
hal.console->print(" (auto)");
}else{
hal.console->print(" (manual)");
}
hal.console->println();
}
//
// set frame rate
//
void set_frame_rate()
{
int value;
// frame rate
hal.console->print("frame rate: ");
hal.console->print(flowSensor.get_frame_rate());
if( flowSensor.get_frame_rate_auto() == true ) {
hal.console->print(" (auto)");
}else{
hal.console->print(" (manual)");
}
hal.console->println();
hal.console->println("Choose new frame rate:");
hal.console->println("\ta) auto");
hal.console->println("\t2) 2000 f/s");
hal.console->println("\t3) 3000 f/s");
hal.console->println("\t4) 4000 f/s");
hal.console->println("\t5) 5000 f/s");
hal.console->println("\t6) 6400 f/s");
hal.console->println("\tx) exit (leave unchanged)");
// get user input
//hal.console->flush();
while( !hal.console->available() ) {
hal.scheduler->delay(20);
}
value = hal.console->read();
if( value == 'a' || value == 'A')
flowSensor.set_frame_rate_auto(true);
if( value == '2' )
flowSensor.set_frame_rate(2000);
if( value == '3' )
flowSensor.set_frame_rate(3000);
if( value == '4' )
flowSensor.set_frame_rate(4000);
if( value == '5' )
flowSensor.set_frame_rate(5000);
if( value == '6' )
flowSensor.set_frame_rate(6469);
// display new frame rate
hal.console->print("frame rate: ");
hal.console->print(flowSensor.get_frame_rate());
if( flowSensor.get_frame_rate_auto() == true ) {
hal.console->print(" (auto)");
}else{
hal.console->print(" (manual)");
}
hal.console->println();
uint8_t reg = optflow.read_register(ADNS3080_CONFIGURATION_BITS);
hal.console->printf_P(PSTR("Config registers: %#x"),optflow.read_register(ADNS3080_CONFIGURATION_BITS));
hal.scheduler->delay_microseconds(50);
hal.console->printf_P(PSTR(",%#x\n"),optflow.read_register(ADNS3080_EXTENDED_CONFIG));
hal.scheduler->delay_microseconds(50);
}
// display_image - captures and displays image from flowSensor flowSensor
void display_image()
{
hal.console->println("image data --------------");
flowSensor.print_pixel_data();
optflow.print_pixel_data();
hal.console->println("-------------------------");
}
// display_image - captures and displays image from flowSensor flowSensor
// display_image - captures and displays image from flowSensor
void display_image_continuously()
{
int i;
@ -179,111 +85,6 @@ void display_image_continuously() @@ -179,111 +85,6 @@ void display_image_continuously()
i++;
}
}
//hal.console->flush();
}
//
// set resolutiojn
//
void set_resolution()
{
int value;
int resolution = flowSensor.get_resolution();
hal.console->print("resolution: ");
hal.console->println(resolution);
hal.console->println("Choose new value:");
hal.console->println(" 1) 1600");
hal.console->println(" 4) 400");
hal.console->println(" x) exit");
hal.console->println();
// get user input
//hal.console->flush();
while( !hal.console->available() ) {
hal.scheduler->delay(20);
}
value = hal.console->read();
// update resolution
if( value == '1' ) {
flowSensor.set_resolution(ADNS3080_RESOLUTION_1600);
}
if( value == '4' ) {
flowSensor.set_resolution(ADNS3080_RESOLUTION_400);
}
hal.console->print("new resolution: ");
hal.console->println(flowSensor.get_resolution());
}
//
// set shutter speed
//
void set_shutter_speed()
{
int value;
// shutter speed
hal.console->print("shutter speed: ");
hal.console->print(flowSensor.get_shutter_speed());
if( flowSensor.get_shutter_speed_auto() == true ) {
hal.console->print(" (auto)");
}else{
hal.console->print(" (manual)");
}
hal.console->println();
hal.console->println("Choose new shutter speed:");
hal.console->println("\ta) auto");
hal.console->println("\t1) 1000 clock cycles");
hal.console->println("\t2) 2000 clock cycles");
hal.console->println("\t3) 3000 clock cycles");
hal.console->println("\t4) 4000 clock cycles");
hal.console->println("\t5) 5000 clock cycles");
hal.console->println("\t6) 6000 clock cycles");
hal.console->println("\t7) 7000 clock cycles");
hal.console->println("\t8) 8000 clock cycles");
hal.console->println("\t9) 9000 clock cycles");
hal.console->println("\tx) exit (leave unchanged)");
// get user input
//hal.console->flush();
while( !hal.console->available() ) {
hal.scheduler->delay(20);
}
value = hal.console->read();
if( value == 'a' || value == 'A')
flowSensor.set_shutter_speed_auto(true);
if( value == '1' )
flowSensor.set_shutter_speed(1000);
if( value == '2' )
flowSensor.set_shutter_speed(2000);
if( value == '3' )
flowSensor.set_shutter_speed(3000);
if( value == '4' )
flowSensor.set_shutter_speed(4000);
if( value == '5' )
flowSensor.set_shutter_speed(5000);
if( value == '6' )
flowSensor.set_shutter_speed(6000);
if( value == '7' )
flowSensor.set_shutter_speed(7000);
if( value == '8' )
flowSensor.set_shutter_speed(8000);
if( value == '9' )
flowSensor.set_shutter_speed(9000);
// display new shutter speed
hal.console->print("shutter speed: ");
hal.console->print(flowSensor.get_shutter_speed());
if( flowSensor.get_shutter_speed_auto() == true ) {
hal.console->print(" (auto)");
}else{
hal.console->print(" (manual)");
}
hal.console->println();
}
//
@ -292,40 +93,21 @@ void set_shutter_speed() @@ -292,40 +93,21 @@ void set_shutter_speed()
void display_motion()
{
bool first_time = true;
//hal.console->flush();
// display instructions on how to exit
hal.console->println("press x to return to menu..");
hal.scheduler->delay(1000);
while( !hal.console->available() ) {
//flowSensor.update();
flowSensor.update_position(0,0,0,1,100);
// check for errors
if( flowSensor.overflow() )
hal.console->println("overflow!!");
while (!hal.console->available()) {
optflow.update_position(0,0,0,1,100);
// x,y,squal
hal.console->print("x/dx: ");
hal.console->print(flowSensor.x,BASE_DEC);
hal.console->print("/");
hal.console->print(flowSensor.dx,BASE_DEC);
hal.console->print("\ty/dy: ");
hal.console->print(flowSensor.y,BASE_DEC);
hal.console->print("/");
hal.console->print(flowSensor.dy,BASE_DEC);
hal.console->print("\tsqual:");
hal.console->print(flowSensor.surface_quality,BASE_DEC);
hal.console->println();
hal.console->printf_P(PSTR("x_cm/dx:%d/%d\ty_cm/dy:%d/%d\tsqual:%d\n"),(int)optflow.x_cm,(int)optflow.dx,(int)optflow.y_cm,(int)optflow.dy,(int)optflow.surface_quality);
first_time = false;
// short delay
hal.scheduler->delay(100);
}
// flush the serial
//hal.console->flush();
}
void loop()
@ -350,11 +132,6 @@ void loop() @@ -350,11 +132,6 @@ void loop()
display_config();
break;
case 'f':
// set frame rate
set_frame_rate();
break;
case 'i':
// display image
display_image();
@ -370,21 +147,6 @@ void loop() @@ -370,21 +147,6 @@ void loop()
display_motion();
break;
case 'r':
// set resolution
set_resolution();
break;
case 's':
// set shutter speed
set_shutter_speed();
break;
case 'z':
// clear and reset everything
flowSensor.clear_motion();
break;
default:
hal.console->println("unrecognised command");
hal.console->println();

Loading…
Cancel
Save