26 typedef unsigned char uint8_t;
27 typedef unsigned int uint32_t;
28 #if defined(HOKUYO_AIST_STATIC)
29 #define HOKUYO_AIST_EXPORT
30 #elif defined(HOKUYO_AIST_EXPORTS)
31 #define HOKUYO_AIST_EXPORT __declspec(dllexport)
33 #define HOKUYO_AIST_EXPORT __declspec(dllimport)
37 #define HOKUYO_AIST_EXPORT
74HOKUYO_AIST_EXPORT
inline char const* multiecho_mode_to_string(
MultiechoMode mode)
121class HOKUYO_AIST_EXPORT Sensor
125 Sensor(std::ostream& err_output);
129 void open(std::string port_options);
237 unsigned int samples=10);
303 unsigned int get_ranges(
ScanData& data,
int start_step = -1,
304 int end_step = -1,
unsigned int cluster_count = 1);
320 unsigned int get_ranges_by_angle(
ScanData& data,
double start_angle,
321 double end_angle,
unsigned int cluster_count = 1);
345 unsigned int get_ranges_intensities(
ScanData& data,
346 int start_step = -1,
int end_step = -1,
347 unsigned int cluster_count = 1);
363 unsigned int get_ranges_intensities_by_angle(
ScanData& data,
364 double start_angle,
double end_angle,
365 unsigned int cluster_count = 1);
395 unsigned int get_new_ranges(
ScanData& data,
int start_step = -1,
396 int end_step = -1,
unsigned int cluster_count = 1);
414 unsigned int get_new_ranges_by_angle(
ScanData& data,
415 double start_angle,
double end_angle,
416 unsigned int cluster_count = 1);
445 unsigned int get_new_ranges_intensities(
ScanData& data,
446 int start_step = -1,
int end_step = -1,
447 unsigned int cluster_count = 1);
465 unsigned int get_new_ranges_intensities_by_angle(
ScanData& data,
466 double start_angle,
double end_angle,
467 unsigned int cluster_count = 1);
484 double step_to_angle(
unsigned int step);
487 unsigned int angle_to_step(
double angle);
491 std::ostream& err_output_;
493 uint8_t scip_version_;
495 bool verbose_, enable_checksum_workaround_,
498 double min_angle_, max_angle_, resolution_;
499 int first_step_, last_step_, front_step_;
500 unsigned int max_range_;
502 unsigned int time_resolution_;
505 long long time_offset_;
508 unsigned int last_timestamp_;
510 unsigned int wrap_count_;
512 float time_drift_rate_;
514 float time_skew_alpha_;
516 void clear_read_buffer();
517 int read_line(
char* buffer,
int expected_length=-1);
518 int read_line_with_check(
char* buffer,
int expected_length=-1,
519 bool has_semicolon=
false);
520 bool read_data_block(
char* buffer,
int& block_size);
521 void skip_lines(
int count);
522 int send_command(
char const* cmd,
char const* param,
int param_length,
523 char const* extra_ok);
525 void enter_timing_mode();
526 void leave_timing_mode();
528 unsigned int get_timing_mode_time(
unsigned long long* reception_time=0);
530 unsigned long long get_computer_time();
532 unsigned int wrap_timestamp(
unsigned int timestamp);
535 unsigned long long offset_timestamp(
unsigned int timestamp);
538 unsigned int step_to_time_offset(
int start_step);
540 void find_model(
char const* buffer);
541 void get_and_set_scip_version();
543 void process_vv_line(
char const* buffer,
SensorInfo& info);
544 void process_pp_line(
char const* buffer,
SensorInfo& info);
545 void process_ii_line(
char const* buffer,
SensorInfo& info);
547 uint32_t process_echo_buffer(
int const* buffer,
int num_echos);
548 void read_2_byte_range_data(
ScanData& data,
unsigned int num_steps);
549 void read_3_byte_range_data(
ScanData& data,
unsigned int num_steps);
550 void read_3_byte_range_and_intensity_data(
ScanData& data,
551 unsigned int num_steps);
553 int confirm_checksum(
char const* buffer,
int length,
Base Port class.
Definition port.h:80
Structure to store data returned from the laser scanner.
Definition scan_data.h:53
Sensor information.
Definition sensor_info.h:128
unsigned int open_with_probing(std::string port_options)
Open the laser scanner and begin scanning, probing the baud rate.
Definition sensor.cpp:334
void semi_reset()
Reset everything except motor and serial speed.
Definition sensor.cpp:574
void set_drift_rate(float drift_rate)
Definition sensor.h:262
void close()
Close the connection to the laser scanner.
Definition sensor.cpp:425
void set_power(bool on)
Switch the laser scanner on or off.
Definition sensor.cpp:444
long long time_offset() const
Retrieve the calculated time offset (0 if not calibrated).
Definition sensor.h:240
unsigned int get_raw_time()
Get the raw value of the scanner's clock in milliseconds.
Definition sensor.cpp:835
float skew_alpha() const
Get the calculated skew line slope (default: 0).
Definition sensor.h:266
void set_time_offset(long long time_offset)
Set the time offset (if the calculated value is bad).
Definition sensor.h:243
float drift_rate() const
Retrieve the current clock drift rate (0 if not set).
Definition sensor.h:246
void ignore_unknowns(bool ignore)
Enables/disables ignoring unknown lines in sensor info messages. Default is off.
Definition sensor.h:478
bool is_open() const
Checks if the connection to the laser scanner is open.
Definition sensor.cpp:436
uint8_t scip_version() const
Return the major version of the SCIP protocol in use.
Definition sensor.h:470
long long calibrate_time(unsigned int skew_sleep_time=0, unsigned int samples=10)
Calibrate the time offset between the laser and computer.
Definition sensor.cpp:860
unsigned int get_time()
Get the value of the scanner's clock in milliseconds.
Definition sensor.cpp:829
void get_sensor_info(SensorInfo &info)
Get various information about the scanner.
Definition sensor.cpp:669
void set_verbose(bool verbose)
Turns on and off printing of verbose operating information to stderr. Default is off.
Definition sensor.h:474
void set_high_sensitivity(bool on)
Switch the scanner between normal and high sensitivity modes.
Definition sensor.cpp:640
void reset()
Reset the laser scanner to its default settings.
Definition sensor.cpp:555
void open(std::string port_options)
Open the laser scanner and begin scanning.
Definition sensor.cpp:307
void set_ip(IPAddr const &addr, IPAddr const &subnet, IPAddr const &gateway)
Change the IP address information.
Definition sensor.cpp:525
void set_skew_alpha(float alpha)
Definition sensor.h:279
void set_multiecho_mode(MultiechoMode mode)
Set the multi-echo mode to use. Default is ME_OFF.
Definition sensor.h:481
void set_baud(unsigned int baud)
Change the baud rate when using a serial connection.
Definition sensor.cpp:489
void set_motor_speed(unsigned int speed)
Set the speed at which the scanner's sensor spins.
Definition sensor.cpp:591
FlexiPort data communications library.
Hokuyo laser scanner driver name space.
LaserModel
Laser models.
Definition sensor_info.h:50
MultiechoMode
Possible values of the multiecho mode setting.
Definition sensor.h:65
struct hokuyo_aist::IPAddr IPAddr
Structure to store an IP address.
Structure to store an IP address.
Definition sensor.h:96
unsigned int first
First byte.
Definition sensor.h:98
unsigned int second
Second byte.
Definition sensor.h:100
unsigned int third
Third byte.
Definition sensor.h:102
unsigned int fourth
Fourth byte.
Definition sensor.h:104