Visual Servoing Platform  version 3.3.0
vpSickLDMRS Class Reference

#include <vpSickLDMRS.h>

+ Inheritance diagram for vpSickLDMRS:

Public Types

enum  MagicWord { MagicWordC2 = 0xAFFEC0C2 }
 
enum  DataType { MeasuredData = 0x2202 }
 

Public Member Functions

 vpSickLDMRS ()
 
 vpSickLDMRS (const vpSickLDMRS &sick)
 
virtual ~vpSickLDMRS ()
 
vpSickLDMRSoperator= (const vpSickLDMRS &sick)
 
bool setup (const std::string &ip, int port)
 
bool setup ()
 
bool measure (vpLaserScan laserscan[4])
 
void setIpAddress (std::string ip_address)
 
void setPort (int com_port)
 

Protected Attributes

int socket_fd
 
unsigned char * body
 
vpColVector vAngle
 
double time_offset
 
bool isFirstMeasure
 
size_t maxlen_body
 
std::string ip
 
int port
 

Detailed Description

Driver for the Sick LD-MRS laser scanner.

Warning
For the moment, this driver works only on UNIX platform.

The code below shows how the four laser scan provided by the Sick LD-MRS could be acquired.

#include "visp3/sensor/vpSickLDMRS.h"
int main()
{
#if !defined(_WIN32) && (defined(__unix__) || defined(__unix) ||
(defined(__APPLE__) && defined(__MACH__))) // UNIX std::string ip =
"131.254.12.119";
vpSickLDMRS laser;
laser.setIpAddress(ip);
laser.setup();
vpLaserScan laserscan[4];
for ( ; ; ) {
// Get the measured points in the four layers
laser.measure(laserscan);
// Prints all the measured points
for (int layer=0; layer<4; layer++) {
std::vector<vpScanPoint> pointsInLayer = laserscan[layer].getScanPoints(); vpScanPoint p;
for (unsigned int i=0; i < pointsInLayer.size(); i++) {
std::cout << pointsInLayer[i] << std::endl;
}
}
}
#endif
}
Examples
SickLDMRS-Acq.cpp, and SickLDMRS-Process.cpp.

Definition at line 106 of file vpSickLDMRS.h.

Member Enumeration Documentation

◆ DataType

Enumerator
MeasuredData 

Flag to indicate that the body of a message contains measured data.

Definition at line 113 of file vpSickLDMRS.h.

◆ MagicWord

Enumerator
MagicWordC2 

The magic word that allows to identify the messages that are sent by the Sick LD-MRS.

Definition at line 109 of file vpSickLDMRS.h.

Constructor & Destructor Documentation

◆ vpSickLDMRS() [1/2]

vpSickLDMRS::vpSickLDMRS ( )

Default constructor that initialize the Ethernet address to "131.254.12.119", set the port to 12002 and allocates memory for the body messages.

Definition at line 70 of file vpSickLDMRS.cpp.

◆ vpSickLDMRS() [2/2]

vpSickLDMRS::vpSickLDMRS ( const vpSickLDMRS sick)
inline

Copy constructor.

Definition at line 119 of file vpSickLDMRS.h.

◆ ~vpSickLDMRS()

vpSickLDMRS::~vpSickLDMRS ( )
virtual

Destructor that deallocate the memory for the body messages.

Definition at line 87 of file vpSickLDMRS.cpp.

Member Function Documentation

◆ measure()

bool vpSickLDMRS::measure ( vpLaserScan  laserscan[4])

Get the measures of the four scan layers.

Returns
true if the measures are retrieven, false otherwise.
Examples
SickLDMRS-Acq.cpp, and SickLDMRS-Process.cpp.

Definition at line 161 of file vpSickLDMRS.cpp.

◆ operator=()

vpSickLDMRS& vpSickLDMRS::operator= ( const vpSickLDMRS sick)
inline

Copy constructor.

Definition at line 127 of file vpSickLDMRS.h.

◆ setIpAddress()

void vpLaserScanner::setIpAddress ( std::string  ip_address)
inlineinherited

Set the Ethernet address of the laser.

Examples
SickLDMRS-Acq.cpp, and SickLDMRS-Process.cpp.

Definition at line 68 of file vpLaserScanner.h.

◆ setPort()

void vpLaserScanner::setPort ( int  com_port)
inlineinherited

Set the communication port.

Definition at line 71 of file vpLaserScanner.h.

◆ setup() [1/2]

bool vpSickLDMRS::setup ( )

Initialize the connection with the Sick LD-MRS laser scanner.

Returns
true if the device was initialized, false otherwise.

Definition at line 114 of file vpSickLDMRS.cpp.

◆ setup() [2/2]

bool vpSickLDMRS::setup ( const std::string &  ip_address,
int  com_port 
)

Initialize the connection with the Sick LD-MRS laser scanner.

Parameters
ip_address: Ethernet address of the laser.
com_port: Ethernet port of the laser.
Returns
true if the device was initialized, false otherwise.
Examples
SickLDMRS-Acq.cpp, and SickLDMRS-Process.cpp.

Definition at line 102 of file vpSickLDMRS.cpp.

Member Data Documentation

◆ body

unsigned char* vpSickLDMRS::body
protected

Definition at line 153 of file vpSickLDMRS.h.

◆ ip

std::string vpLaserScanner::ip
protectedinherited

Definition at line 71 of file vpLaserScanner.h.

◆ isFirstMeasure

bool vpSickLDMRS::isFirstMeasure
protected

Definition at line 156 of file vpSickLDMRS.h.

◆ maxlen_body

size_t vpSickLDMRS::maxlen_body
protected

Definition at line 157 of file vpSickLDMRS.h.

◆ port

int vpLaserScanner::port
protectedinherited

Definition at line 75 of file vpLaserScanner.h.

◆ socket_fd

int vpSickLDMRS::socket_fd
protected

Definition at line 151 of file vpSickLDMRS.h.

◆ time_offset

double vpSickLDMRS::time_offset
protected

Definition at line 155 of file vpSickLDMRS.h.

◆ vAngle

vpColVector vpSickLDMRS::vAngle
protected

Definition at line 154 of file vpSickLDMRS.h.

vpLaserScan
Implements a laser scan data structure that contains especially the list of scanned points that have ...
Definition: vpLaserScan.h:63
vpSickLDMRS
Driver for the Sick LD-MRS laser scanner.
Definition: vpSickLDMRS.h:106
vpLaserScanner::ip
std::string ip
Definition: vpLaserScanner.h:71
vpLaserScan::getScanPoints
std::vector< vpScanPoint > getScanPoints()
Definition: vpLaserScan.h:93
vpSickLDMRS::setup
bool setup(const std::string &ip, int port)
Definition: vpSickLDMRS.cpp:102
vpSickLDMRS::measure
bool measure(vpLaserScan laserscan[4])
Definition: vpSickLDMRS.cpp:161
vpScanPoint
Class that defines a single laser scanner point.
Definition: vpScanPoint.h:72
vpLaserScanner::setIpAddress
void setIpAddress(std::string ip_address)
Definition: vpLaserScanner.h:68