Developing tag detection feature, not complete, not tested.

Esse commit está contido em:
Mani Monajjemi
2012-05-18 17:17:00 -07:00
commit 57d191c79a
4 arquivos alterados com 51 adições e 10 exclusões
+20 -8
Ver Arquivo
@@ -14,14 +14,14 @@ ARDroneDriver::ARDroneDriver()
reset_sub = node_handle.subscribe("/ardrone/reset", 1, &resetCallback);
land_sub = node_handle.subscribe("/ardrone/land", 1, &landCallback);
image_pub = image_transport.advertiseCamera("/ardrone/image_raw", 1);
hori_pub = image_transport.advertiseCamera("/ardrone/front/image_raw", 1);
hori_pub = image_transport.advertiseCamera("/ardrone/front/image_raw", 1);
vert_pub = image_transport.advertiseCamera("/ardrone/bottom/image_raw", 1);
navdata_pub = node_handle.advertise<ardrone_brown::Navdata>("/ardrone/navdata", 1);
//toggleCam_sub = node_handle.subscribe("/ardrone/togglecam", 10, &toggleCamCallback);
#ifdef _USING_SDK_1_7_
//int cam_state = DEFAULT_CAM_STATE; // 0 for forward and 1 for vertical, change to enum later
//int set_navdata_demo_value = DEFAULT_NAVDATA_DEMO;
//int set_navdata_demo_value = DEFAULT_NAVDATA_DEMO;
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (video_channel, &cam_state, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (navdata_demo, &set_navdata_demo_value, NULL);
#else
@@ -29,9 +29,17 @@ ARDroneDriver::ARDroneDriver()
ardrone_at_set_toy_configuration("video:video_channel","0");
#endif
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (detect_type, &detect_dtype, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (detections_select_h, &detect_hori_type, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (detections_select_v_hsync, &detect_vert_type, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (enemy_colors, &detect_enemy_color, NULL );
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (groundstripe_colors, &detect_groundstripes_color, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (enemy_without_shell, &detect_outdoor_hull, NULL);
toggleCam_service = node_handle.advertiseService("/ardrone/togglecam", toggleCamCallback);
toggleNavdataDemo_service = node_handle.advertiseService("/ardrone/togglenavdatademo", toggleNavdataDemoCallback);
setCamChannel_service = node_handle.advertiseService("/ardrone/setcamchannel",setCamChannelCallback );
toggleNavdataDemo_service = node_handle.advertiseService("/ardrone/togglenavdatademo", toggleNavdataDemoCallback);
setCamChannel_service = node_handle.advertiseService("/ardrone/setcamchannel",setCamChannelCallback );
}
ARDroneDriver::~ARDroneDriver()
@@ -67,14 +75,18 @@ void ARDroneDriver::run()
//Ensure that the horizontal camera is running
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (video_channel, &cam_state, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT (navdata_demo, &set_navdata_demo_value, NULL);
//ARDRONE_TOOL_CONFIGURATION_ADDEVENT (video_codec, &mCodec, NULL);
//ARDRONE_TOOL_CONFIGURATION_ADDEVENT (bitrate_ctrl_mode, &vbcMode, NULL);
//ARDRONE_TOOL_CONFIGURATION_ADDEVENT (video_codec, &mCodec, NULL);
//ARDRONE_TOOL_CONFIGURATION_ADDEVENT (bitrate_ctrl_mode, &vbcMode, NULL);
#else
//Ensure that the horizontal camera is running
ardrone_at_set_toy_configuration("video:video_channel","0");
#endif
ARDRONE_TOOL_CONFIGURATION_ADDEVENT(detect_type, &detect_dtype, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT(detections_select_h, &detect_hori_type, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT(detections_select_v_hsync, &detect_vert_type, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT(enemy_colors, &detect_enemy_color, NULL );
ARDRONE_TOOL_CONFIGURATION_ADDEVENT(groundstripe_colors, &detect_groundstripes_color, NULL);
ARDRONE_TOOL_CONFIGURATION_ADDEVENT(enemy_without_shell, &detect_outdoor_hull, NULL);
}
}
if (current_frame_id != last_frame_id)
+17 -1
Ver Arquivo
@@ -4,6 +4,7 @@
navdata_demo_t navdata;
navdata_phys_measures_t navdata_phys;
navdata_vision_detect_t navdata_detect;
navdata_time_t arnavtime;
@@ -22,9 +23,24 @@ extern "C" {
C_RESULT navdata_custom_process( const navdata_unpacked_t* const pnd )
{
navdata_phys = pnd->navdata_phys_measures;
navdata_detect = pnd->navdata_vision_detect;
navdata_phys = pnd->navdata_phys_measures;
navdata = pnd->navdata_demo;
arnavtime = pnd->navdata_time;
fprintf(stderr, "*** Tag: %d, Size : %d, Detected: %d\n", navdata_detect.tag, navdata_detect.size, navdata_detect.nb_detected);
for (int i = 0; i < navdata_detect.nb_detected; i++)
{
printf("#%d T:%d x:%3d y:%3d w:%3d h:%3d D:%3d \n",
navdata_detect.type[i],
navdata_detect.xc[i],
navdata_detect.yc[i],
navdata_detect.width[i],
navdata_detect.height[i],
navdata_detect.dist[i]
);
}
return C_OK;
}
+7 -1
Ver Arquivo
@@ -8,7 +8,13 @@ bool needs_reset = false;
geometry_msgs::Twist cmd_vel;
int cam_state = DEFAULT_CAM_STATE; // 0 for forward and 1 for vertical, change to enum later
int set_navdata_demo_value = DEFAULT_NAVDATA_DEMO;
int set_navdata_demo_value = DEFAULT_NAVDATA_DEMO;
int32_t detect_enemy_color = ARDRONE_DETECTION_COLOR_ORANGE_YELLOW;
int32_t detect_groundstripes_color = ARDRONE_DETECTION_COLOR_ORANGE_YELLOW;
int32_t detect_dtype = CAD_TYPE_MULTIPLE_DETECTION_MODE;
int32_t detect_hori_type = TAG_TYPE_MASK(TAG_TYPE_STRIPE);
int32_t detect_vert_type = TAG_TYPE_MASK(TAG_TYPE_ROUNDEL);
int32_t detect_outdoor_hull = 0;
bool toggleNavdataDemoCallback(std_srvs::Empty::Request& request, std_srvs::Empty::Response& response)
{
+7
Ver Arquivo
@@ -28,5 +28,12 @@ bool toggleNavdataDemoCallback(std_srvs::Empty::Request& request, std_srvs::Empt
extern int cam_state;
extern int set_navdata_demo_value;
extern int32_t detect_enemy_color;
extern int32_t detect_groundstripes_color;
extern int32_t detect_outdoor_hull; //0: Indoor Hull
extern int32_t detect_dtype;
extern int32_t detect_hori_type;
extern int32_t detect_vert_type;
#endif