Enumerations | Functions

urg_ctrl.h File Reference

URG control. More...

#include "urg_t.h"
Include dependency graph for urg_ctrl.h:
This graph shows which files directly or indirectly include this file:

Enumerations

enum  { UrgLineWidth = 64 + 1 + 1, UrgInfinityTimes = 0 }
 

Parameter for object.

More...
enum  urg_request_type {
  URG_GD, URG_GD_INTENSITY, URG_GS, URG_MD,
  URG_MD_INTENSITY, URG_MS
}
 

Command type of URG.

More...
enum  { URG_FIRST = -1, URG_LAST = -1, UrgInvalidTimestamp = -1 }
 

To omit URG data range specification.

More...

Functions

void urg_initialize (urg_t *urg)
int urg_connect (urg_t *urg, const char *device, long baudrate)
 Connection.
void urg_disconnect (urg_t *urg)
 Disconnection.
int urg_isConnected (const urg_t *urg)
 Checks whether connected or not and returns the result.
const char * urg_error (const urg_t *urg)
 Get error message.
int urg_versionLines (urg_t *urg, char *lines[], int lines_max)
 Get string containing version information.
int urg_parameters (urg_t *urg, urg_parameter_t *parameters)
 URG Returns parameter.
const char * urg_model (const urg_t *urg)
 URG Returns the sensor type.
int urg_dataMax (const urg_t *urg)
 Returns the number of maximum data obtained in one scan.
int urg_scanMsec (const urg_t *urg)
 Returns measurement time taken for one scan.
long urg_maxDistance (const urg_t *urg)
 Maximum measurable distance.
long urg_minDistance (const urg_t *urg)
 Minimum measureable distance.
int urg_setSkipLines (urg_t *urg, int lines)
 Sets the number of lines to be skiped.
int urg_setSkipFrames (urg_t *urg, int frames)
 Sets number of scans to be skipped.
int urg_setCaptureTimes (urg_t *urg, int times)
 Sets number of times the data to be acquired .
int urg_remainCaptureTimes (const urg_t *urg)
 Get number of remaining times on MD/MS capture.
int urg_requestData (urg_t *urg, urg_request_type request_type, int first_index, int last_index)
 Request for distance data.
int urg_receiveData (urg_t *urg, long data[], int data_max)
 Receive URG data.
int urg_receiveDataWithIntensity (urg_t *urg, long data[], int data_max, long intensity[])
 Get data with intensity.
int urg_receivePartialData (urg_t *urg, long data[], int data_max, int first_index, int last_index)
 Get partial URG data.
long urg_recentTimestamp (const urg_t *urg)
 Receive time stamp.
double urg_index2rad (const urg_t *urg, int index)
 Change index value into angle (radian).
int urg_index2deg (const urg_t *urg, int index)
 Change index into angle(degree).
int urg_rad2index (const urg_t *urg, double radian)
 Angle(radian) is converted to index value.
int urg_deg2index (const urg_t *urg, int degree)
 Angle(degree) is converted into index.
int urg_laserOn (urg_t *urg)
 Directs laser to switch on.
int urg_laserOff (urg_t *urg)
 Directs laser to switch off.
int urg_reboot (urg_t *urg)
 reboot
int urg_reset (urg_t *urg)
int urg_enableTimestampMode (urg_t *urg)
 Enters into time stamp mode.
int urg_disableTimestampMode (urg_t *urg)
 Comes out of time stamp mode.
long urg_currentTimestamp (urg_t *urg)
 Get time stamp.

Detailed Description

URG control.

Author:
Satofumi KAMIMURA
Id:
urg_ctrl.h 1723 2010-02-24 23:30:34Z satofumi
Todo:
Define examples for each functions

Enumeration Type Documentation

anonymous enum

Parameter for object.

Enumerator:
UrgLineWidth 

Maximum length of a line.

UrgInfinityTimes 

continuous data transmission

anonymous enum

To omit URG data range specification.

Enumerator:
URG_FIRST 

starting position when complete data is to be acquired

URG_LAST 

end position when complete data is to be acquired

UrgInvalidTimestamp 

Error value of timestamp.

Command type of URG.

Enumerator:
URG_GD 

GD command.

URG_GD_INTENSITY 

GD command(Inclusing intensity data).

URG_GS 

GS command.

URG_MD 

MD command.

URG_MD_INTENSITY 

MD command(Inclusing intensity data).

URG_MS 

MS command.


Function Documentation

int urg_connect ( urg_t urg,
const char *  device,
long  baudrate 
)

Connection.

Parameters:
[in,out] urg Structure of URG control
[in] device Connection device
[in] baudrate Baudrate
Return values:
0 Normal
<0 Error
See also:
gd_scan.c, md_scan.c

Example

urg_t urg;

// Coonnection
if (urg_connect(&urg, "COM3", 115200) < 0) {
  printf("urg_connect: %s\n", urg_error(&urg));
  return -1;
}

...

urg_disconnect(&urg); 

Here is the call graph for this function:

Here is the caller graph for this function:

long urg_currentTimestamp ( urg_t urg  ) 

Get time stamp.

Returns TM1 response.

Parameters:
[in,out] urg Structure of URG control
Return values:
>=0 Timestamp [msec]
<0 Error

Example

// Enters into time stamp
urg_enableTimestampMode(&urg);

// Get URG time stamp continuously.
for (i = 0; i < 5; ++i) {
  long timestamp = urg_currentTimestamp(&urg);
  printf("timestamp: %ld\n", timestamp)
}

// leave tiemstamp mode
urg_disableTimestampMode(&urg); 

Here is the call graph for this function:

int urg_dataMax ( const urg_t urg  ) 

Returns the number of maximum data obtained in one scan.

Parameters:
[in,out] urg Structure of URG control
Return values:
>=0 number of maximum data obtained in one scan
<0 Error
See also:
gd_scan.c

Example

enum { BufferSize = 2048 };
long data[BufferSize];

...

// Checks whether number of maximum data obtained by URG sensor does not exceeds receive buffer
// (This is not necessary if size of buffer is dynamically allocated.)
int data_max = urg_dataMax(&urg);
ASSERT(BufferSize >= data_max);

Here is the caller graph for this function:

int urg_deg2index ( const urg_t urg,
int  degree 
)

Angle(degree) is converted into index.

Parameters:
[in,out] urg Structure of URG control
[in] Angle(degre) 
Returns:
Index value
See also:
index_convert.c

Here is the call graph for this function:

int urg_disableTimestampMode ( urg_t urg  ) 

Comes out of time stamp mode.

Parameters:
[in,out] urg Structure of URG control
Return values:
0 Normal
<0 Error

Here is the call graph for this function:

void urg_disconnect ( urg_t urg  ) 

Disconnection.

Parameters:
[in,out] urg Structure of URG control
See also:
urg_connect()
gd_scan.c, md_scan.c

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_enableTimestampMode ( urg_t urg  ) 

Enters into time stamp mode.

Parameters:
[in,out] urg Structure of URG control
Return values:
0 Normal
<0 Error

Here is the call graph for this function:

const char* urg_error ( const urg_t urg  ) 

Get error message.

Parameters:
[in,out] urg Structure of URG control
Returns:
Error message
See also:
urg_connect()
gd_scan.c, md_scan.c

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_index2deg ( const urg_t urg,
int  index 
)

Change index into angle(degree).

Parameters:
[in,out] urg Structure of URG control
[in] index Index value
Returns:
Angle [degree]
See also:
index_convert.c

Here is the call graph for this function:

double urg_index2rad ( const urg_t urg,
int  index 
)

Change index value into angle (radian).

urg_sensor_radian.png

Front of the sensor is a positive in X axis

Parameters:
[in,out] urg Structure of URG control
[in] index Index value
Returns:
angle[radian]

Example

// To operate urg_index2rad(), data from 0 to last_index is stored.
// The data of the step not measured becomes -1.
urg_requestData(&urg, URG_GD, first_index, last_index);
n = urg_receiveData(&urg, data, data_max);
for (i = 0; i < n; ++i) {
  long l = data[i];
  if (l > min_distance) {
    double rad = urg_index2rad(&urg, i);
    double x = data[i] * cos(rad);
    double y = data[i] * sin(rad);
    printf("%f, %f\n", x, y);
  }
} 
See also:
index_convert.c

Here is the caller graph for this function:

void urg_initialize ( urg_t urg  ) 

Here is the call graph for this function:

int urg_isConnected ( const urg_t urg  ) 

Checks whether connected or not and returns the result.

Parameters:
[in,out] urg Structure of URG control
Return values:
0 if connected
<0 if disconnected
See also:
urg_connect(), urg_disconnect()

Example

if (urg_isConnected(&urg) < 0) {
  printf("not connected.\n");
} else {
  printf("connected.\n");
} 

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_laserOff ( urg_t urg  ) 

Directs laser to switch off.

Parameters:
[in,out] urg Structure of URG control
Return values:
0 Normal
<0 Error

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_laserOn ( urg_t urg  ) 

Directs laser to switch on.

Parameters:
[in,out] urg Structure of URG control
Return values:
0 Normal
<0 Error
See also:
gd_scan.c

Here is the call graph for this function:

Here is the caller graph for this function:

long urg_maxDistance ( const urg_t urg  ) 

Maximum measurable distance.

Parameters:
[in,out] urg Structure of URG control
Return values:
>=0 Maximum measurable distance [mm]
<0 Error
See also:
expand_2d.c

Example

...
n = urg_receiveData(&urg, data, data_max);

min_distance = urg_minDistance(&urg);
max_distance = urg_minDistance(&urg);

// Output only valid data
for (i = 0; i < n; ++i) {
  long length = data[i];
  if ((length > min_distance) && (length < max_distance)) {
    printf("%d:%d\n", i, length);
  }
}

Here is the caller graph for this function:

long urg_minDistance ( const urg_t urg  ) 

Minimum measureable distance.

Parameters:
[in,out] urg Structure of URG control
Return values:
>=0 Minimum measurable distance [mm]
<0 Error
See also:
expand_2d.c

Here is the caller graph for this function:

const char* urg_model ( const urg_t urg  ) 

URG Returns the sensor type.

Parameters:
[in,out] urg Structure of URG control
Return values:
URG sensor type
printf("URG type: %s\n", urg_model(&urg)); 

Here is the caller graph for this function:

int urg_parameters ( urg_t urg,
urg_parameter_t parameters 
)

URG Returns parameter.

Parameters:
[in,out] urg Structure of URG control
[out] parameters Structure of URG parameter
Return values:
0 Normal
<0 Error
See also:
urg_maxDistance(), urg_minDistance(), urg_scanMsec(), urg_dataMax()

Execution example of get_parameters.c (Classic-URG)

% ./get_parameters
urg_getParameters: No Error.
distance_min: 20
distance_max: 5600
area_total: 1024
area_min: 44
area_max: 725
area_front: 384
scan_rpm: 600

urg_getDistanceMax(): 5600
urg_getDistanceMin(): 20
urg_getScanMsec(): 100
urg_getDataMax(): 726 

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_rad2index ( const urg_t urg,
double  radian 
)

Angle(radian) is converted to index value.

urg_sensor_radian.png

Front of the sensor is a positive in X axis

Parameters:
[in,out] urg Structure of URG control
[in] Angle(radian) 
Returns:
Index
See also:
index_convert.c

Here is the caller graph for this function:

int urg_reboot ( urg_t urg  ) 

reboot

Return values:
0 Normal
<0 Error
Attention:
Only Top-URG (2010-02-04)

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_receiveData ( urg_t urg,
long  data[],
int  data_max 
)

Receive URG data.

Parameters:
[in,out] urg Structure of URG control
[out] data Storage location of received data
[in] data_max Maximum number of data that can be received
Return values:
0 > Number of data received
<0 Error
See also:
urg_requestData()

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_receiveDataWithIntensity ( urg_t urg,
long  data[],
int  data_max,
long  intensity[] 
)

Get data with intensity.

Parameters:
[in,out] urg Structure of URG control
[out] data Storage location of received data
[in] data_max Maximum number of data that can be received
[out] intensity Storage location of intensity of received data.
Attention:
Applicable only to Classic-URG (currently 2008-12-24)
int urg_receivePartialData ( urg_t urg,
long  data[],
int  data_max,
int  first_index,
int  last_index 
)

Get partial URG data.

Parameters:
[in,out] urg Structure of URG control
[out] data Storage location of received data
[in] data_max Maximum number of data that can be received
[in] first_index Index of the first data stored.
[in] last_index Index of the last data stored
Return values:
0 > Number of data received
<0 Error
See also:
gd_scan.c, md_scan.c
long urg_recentTimestamp ( const urg_t urg  ) 

Receive time stamp.

Parameters:
[in,out] urg Structure of URG control
Return values:
Time stamp [msec]
See also:
md_scan.c

Example

urg_requestData(&urg, URG_GD, URG_FIRST, URG_LAST);
n = urg_receiveData(&urg, data, data_max);
if (n > 0) {
  long timestamp = urg_recentTimestamp(&urg);
  printf("timestamp: %d\n", timestamp);

  // Display data etc
  // !!!
} 

Here is the caller graph for this function:

int urg_remainCaptureTimes ( const urg_t urg  ) 

Get number of remaining times on MD/MS capture.

Parameters:
[in,out] urg Structure of URG control
Return values:
remaining times. (100 means infinity times)
See also:
md_scan.c
int urg_requestData ( urg_t urg,
urg_request_type  request_type,
int  first_index,
int  last_index 
)

Request for distance data.

Request for distance data of [first_index, last_index]. Return all scan data when specified URG_FIRST, URG_LAST.

Parameters:
[in,out] urg Structure of URG control
[in] request_type Received data type.
[in] first_index Index of the first data stored
[in] last_index Index of the last received data stored.
Return values:
0 Normal
<0 Error
See also:
urg_receiveData()
gd_scan.c, md_scan.c

Example

// Get one scan data from GD command
urg_requestData(&urg, URG_GD, URG_FIRST, URG_LAST);
n = urg_receiveData(&urg, data, data_max);

// Get data continuously from MD scan
urg_requestData(&urg, URG_MD, URG_FIRST, URG_LAST);
while (1) {
  n = urg_receiveData(&urg, data, data_max);
  if (n > 0) {
    // Display data etc
    ...
  }
} 

Here is the call graph for this function:

Here is the caller graph for this function:

int urg_reset ( urg_t urg  ) 
Deprecated:
use reboot() function.

Here is the call graph for this function:

int urg_scanMsec ( const urg_t urg  ) 

Returns measurement time taken for one scan.

Returns measurement time when motor speed is 100% as specified.

Parameters:
[in,out] urg Structure of URG control
Return values:
>=0 measurement time taken for one scan [msec]
<0 Error
See also:
urg_setMotorSpeed()
md_scan.c
int urg_setCaptureTimes ( urg_t urg,
int  times 
)

Sets number of times the data to be acquired .

Parameters:
[in,out] urg Structure of URG control
[in] times Number of scan data
Return values:
0 Normal
<0 Error
Attention:
Valid only with MD/MS command
Specify UrgInfinityTimes to acquire data more than 100 times

Example

// Data is supplied indefinitely
urg_setCaptureTimes(&urg, UrgInfinityTimes);

...

// Data acquistion is stopped if laser is switched off.
urg_laserOff(&urg);

Here is the caller graph for this function:

int urg_setSkipFrames ( urg_t urg,
int  frames 
)

Sets number of scans to be skipped.

Parameters:
[in,out] urg Structure of URG control
[in] frames Number of skipped frames.
Return values:
0 Normal
<0 Error
Attention:
Valid only with MD/MS command.
int urg_setSkipLines ( urg_t urg,
int  lines 
)

Sets the number of lines to be skiped.

The volume of acquire data can be reduced by skipping the lines .

Parameters:
[in,out] urg Structure of URG control
[in] lines Number of lines to be skiped.
Return values:
0 Normal
<0 Error
int urg_versionLines ( urg_t urg,
char *  lines[],
int  lines_max 
)

Get string containing version information.

Parameters:
[in,out] urg Structure of URG control
[out] lines Buffer having version information
[in] lines_max Maximum lines in buffer
Return values:
0 Normal
<0 Error
Attention:
The length of a line in the buffer should be equal to more than # UrgLineWidth[byte].
See also:
get_version_lines.c

Here is the call graph for this function: