int main( int argc, char *argv[] ) { /* Connect to IPC Server */ carmen_ipc_initialize(argc, argv); /* Check the param server version */ carmen_param_check_version(argv[0]); /* Register shutdown cleaner handler */ signal(SIGINT, shutdown_module); carmen_gps_xyz_define_message(); carmen_xsens_xyz_define_message(); carmen_velodyne_gps_xyz_define_message(); /* Subscribe to sensor messages */ carmen_gps_subscribe_nmea_message(NULL, (carmen_handler_t) ipc_gps_gpgga_handler, CARMEN_SUBSCRIBE_ALL); carmen_xsens_mtig_subscribe_message(NULL, (carmen_handler_t) xsens_mtig_handler, CARMEN_SUBSCRIBE_ALL); carmen_velodyne_subscribe_gps_message(NULL, (carmen_handler_t) velodyne_gps_handler, CARMEN_SUBSCRIBE_ALL); /* Loop forever waiting for messages */ carmen_ipc_dispatch(); return(0); }
int main(int argc, char **argv) { char filename[1024]; char key; int num_scanned; /* initialize connection to IPC network */ carmen_ipc_initialize(argc, argv); carmen_param_check_version(argv[0]); /* open logfile, check if file overwrites something */ if(argc < 2) carmen_die("usage: %s <logfile>\n", argv[0]); sprintf(filename, "%s", argv[1]); outfile = carmen_fopen(filename, "r"); if (outfile != NULL) { fprintf(stderr, "Overwrite %s? ", filename); num_scanned = scanf("%c", &key); if (toupper(key) != 'Y') exit(-1); carmen_fclose(outfile); } outfile = carmen_fopen(filename, "w"); if(outfile == NULL) carmen_die("Error: Could not open file %s for writing.\n", filename); carmen_logwrite_write_header(outfile); get_logger_params(argc, argv); if ( !(log_odometry && log_laser && log_robot_laser ) ) carmen_warn("\nWARNING: You are neither logging laser nor odometry messages!\n"); if (log_params) get_all_params(); register_ipc_messages(); if (log_odometry) carmen_base_subscribe_odometry_message(NULL, (carmen_handler_t) base_odometry_handler, CARMEN_SUBSCRIBE_ALL); if (log_sonars) carmen_base_subscribe_sonar_message(NULL, (carmen_handler_t) base_sonar_handler, CARMEN_SUBSCRIBE_ALL); if (log_bumpers) carmen_base_subscribe_bumper_message(NULL, (carmen_handler_t) base_bumper_handler, CARMEN_SUBSCRIBE_ALL); if (log_arm) carmen_arm_subscribe_state_message(NULL, (carmen_handler_t) arm_state_handler, CARMEN_SUBSCRIBE_ALL); if (log_pantilt) { carmen_pantilt_subscribe_scanmark_message (NULL, (carmen_handler_t) pantilt_scanmark_handler, CARMEN_SUBSCRIBE_ALL); carmen_pantilt_subscribe_laserpos_message (NULL, (carmen_handler_t) pantilt_laserpos_handler, CARMEN_SUBSCRIBE_ALL); } if (log_robot_laser) { carmen_robot_subscribe_frontlaser_message(NULL, (carmen_handler_t) robot_frontlaser_handler, CARMEN_SUBSCRIBE_ALL); carmen_robot_subscribe_rearlaser_message(NULL, (carmen_handler_t) robot_rearlaser_handler, CARMEN_SUBSCRIBE_ALL); } if (log_laser) { carmen_laser_subscribe_laser1_message(NULL, (carmen_handler_t) laser_laser1_handler, CARMEN_SUBSCRIBE_ALL); carmen_laser_subscribe_laser2_message(NULL, (carmen_handler_t) laser_laser2_handler, CARMEN_SUBSCRIBE_ALL); carmen_laser_subscribe_laser3_message(NULL, (carmen_handler_t) laser_laser3_handler, CARMEN_SUBSCRIBE_ALL); carmen_laser_subscribe_laser4_message(NULL, (carmen_handler_t) laser_laser4_handler, CARMEN_SUBSCRIBE_ALL); carmen_laser_subscribe_laser5_message(NULL, (carmen_handler_t) laser_laser5_handler, CARMEN_SUBSCRIBE_ALL); } if (log_localize) { carmen_localize_subscribe_globalpos_message(NULL, (carmen_handler_t) localize_handler, CARMEN_SUBSCRIBE_ALL); } if (log_simulator) { carmen_simulator_subscribe_truepos_message(NULL, (carmen_handler_t) carmen_simulator_truepos_handler, CARMEN_SUBSCRIBE_ALL); } if (log_imu) { carmen_imu_subscribe_imu_message(NULL, (carmen_handler_t) imu_handler, CARMEN_SUBSCRIBE_ALL); } if (log_gps) { carmen_gps_subscribe_nmea_message( NULL, (carmen_handler_t) ipc_gps_gpgga_handler, CARMEN_SUBSCRIBE_ALL ); carmen_gps_subscribe_nmea_rmc_message( NULL, (carmen_handler_t) ipc_gps_gprmc_handler, CARMEN_SUBSCRIBE_ALL ); } if (log_motioncmds) { carmen_robot_subscribe_vector_move_message( NULL, (carmen_handler_t) robot_vector_move_handler, CARMEN_SUBSCRIBE_ALL ); carmen_robot_subscribe_follow_trajectory_message( NULL, (carmen_handler_t) robot_follow_trajectory_handler, CARMEN_SUBSCRIBE_ALL ); carmen_robot_subscribe_velocity_message( NULL, (carmen_handler_t) robot_velocity_handler, CARMEN_SUBSCRIBE_ALL ); carmen_base_subscribe_velocity_message( NULL, (carmen_handler_t) base_velocity_handler, CARMEN_SUBSCRIBE_ALL ); } carmen_logger_subscribe_comment_message( NULL, (carmen_handler_t) logger_comment_handler, CARMEN_SUBSCRIBE_ALL ); signal(SIGINT, shutdown_module); logger_starttime = carmen_get_time(); carmen_ipc_dispatch(); return 0; }
void initialize_module_args(int argc, char **argv) { // verifica se os parametros // foram passados corretamente if (argc < 2) { printf("Use: \n %s [bumblebee | gps | fused_odometry | kinect] [<output_path>]\n\n", argv[0]); printf("\nOBS: output_path must be used if sensor is bumblebee or kinect.\n\n"); exit(-1); } char *sensor = argv[1]; // se o sensor escolhido foi a bumblebee if (!strcmp(sensor, "bumblebee")) { if (argc < 3) { printf("\nError: You must set the output path for images!\n\n"); exit(-1); } output_dir_name = argv[2]; if (argc == 4) { if (!strcmp(argv[3], "with_gps")) { carmen_gps_xyz_subscribe_message(NULL, (carmen_handler_t) gps_xyz_message_handler, CARMEN_SUBSCRIBE_ALL); gps_xyz_output_file = fopen(gps_xyz_output_filename, "w"); fprintf(gps_xyz_output_file, "timestamp,x,y\n"); } else if (!strcmp(argv[3], "with_odometry")) { carmen_base_ackerman_subscribe_odometry_message(NULL, (carmen_handler_t) car_odometry_message_handler, CARMEN_SUBSCRIBE_ALL); carmen_xsens_subscribe_xsens_global_quat_message(NULL, (carmen_handler_t) xsens_mti_message_handler, CARMEN_SUBSCRIBE_ALL); car_odometry_output_file = fopen(car_odometry_output_filename, "w"); } } carmen_bumblebee_basic_subscribe_stereoimage(1, NULL, (carmen_handler_t) bumblebee_basic_handler_1, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(2, NULL, (carmen_handler_t) bumblebee_basic_handler_2, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(3, NULL, (carmen_handler_t) bumblebee_basic_handler_3, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(4, NULL, (carmen_handler_t) bumblebee_basic_handler_4, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(5, NULL, (carmen_handler_t) bumblebee_basic_handler_5, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(6, NULL, (carmen_handler_t) bumblebee_basic_handler_6, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(7, NULL, (carmen_handler_t) bumblebee_basic_handler_7, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(8, NULL, (carmen_handler_t) bumblebee_basic_handler_8, CARMEN_SUBSCRIBE_ALL); carmen_bumblebee_basic_subscribe_stereoimage(9, NULL, (carmen_handler_t) bumblebee_basic_handler_9, CARMEN_SUBSCRIBE_ALL); return; } // se o sensor escolhido foi o gps else if (!strcmp(sensor, "gps")) { carmen_gps_subscribe_nmea_message(NULL, (carmen_handler_t) gps_gpgga_handler, CARMEN_SUBSCRIBE_ALL); gps_gpgga_output_file = fopen(gps_gpgga_output_filename, "w"); return; } // se o sensor escolhido foi o fused_odometry else if (!strcmp(sensor, "fused_odometry")) { carmen_fused_odometry_subscribe_fused_odometry_message(NULL, (carmen_handler_t) fused_odometry_handler, CARMEN_SUBSCRIBE_ALL); fused_odometry_output_file = fopen(fused_odometry_output_filename, "w"); return; } else if (!strcmp(sensor, "kinect")) { if (argc < 3) { printf("\nError: You must set kinect output_path!\n\n"); exit(-1); } output_dir_name = argv[2]; initialize_m_gamma (); carmen_kinect_subscribe_depth_message(0, NULL, (carmen_handler_t) kinect_depth_handler, CARMEN_SUBSCRIBE_ALL); carmen_kinect_subscribe_video_message(0, NULL, (carmen_handler_t) kinect_video_handler, CARMEN_SUBSCRIBE_ALL); return; } else if (!strcmp(sensor, "web_cam")) { if (argc < 3) { printf("\nError: You must set web_cam output_path!\n\n"); exit(-1); } output_dir_name = argv[2]; carmen_web_cam_subscribe_message (NULL, (carmen_handler_t) carmen_web_cam_message_handler, CARMEN_SUBSCRIBE_ALL); return; } else if (!strcmp(sensor, "stereo")) { if (argc < 3) { printf("\nError: You must set images output_path!\n\n"); exit(-1); } output_dir_name = argv[2]; carmen_stereo_subscribe(1, NULL, (carmen_handler_t) stereo_handler_1, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(2, NULL, (carmen_handler_t) stereo_handler_2, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(3, NULL, (carmen_handler_t) stereo_handler_3, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(4, NULL, (carmen_handler_t) stereo_handler_4, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(5, NULL, (carmen_handler_t) stereo_handler_5, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(6, NULL, (carmen_handler_t) stereo_handler_6, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(7, NULL, (carmen_handler_t) stereo_handler_7, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(8, NULL, (carmen_handler_t) stereo_handler_8, CARMEN_SUBSCRIBE_ALL); carmen_stereo_subscribe(9, NULL, (carmen_handler_t) stereo_handler_9, CARMEN_SUBSCRIBE_ALL); return; } }