Update of /cvsroot/playerstage/code/player/server/drivers/laser
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4151/server/drivers/laser
Modified Files:
sicks3000.cc
Log Message:
made acinclude driver list alphabetical again
added tcpstream driver
bug fixes for s3000 and nav200 drivers
made point features more visible in playerv vector map display
Index: sicks3000.cc
===================================================================
RCS file: /cvsroot/playerstage/code/player/server/drivers/laser/sicks3000.cc,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** sicks3000.cc 6 Dec 2007 19:12:39 -0000 1.8
--- sicks3000.cc 18 Dec 2007 05:05:08 -0000 1.9
***************
*** 148,151 ****
--- 148,152 ----
int64_t GetTime();
+ void SetScannerParams(int data_count);
protected:
***************
*** 166,169 ****
--- 167,172 ----
int scan_min_segment, scan_max_segment;
+ bool recognisedScanner;
+
// Opaque Driver info
Device *opaque;
***************
*** 217,220 ****
--- 220,226 ----
assert(rx_buffer);
+ recognisedScanner = false;
+
+ // Assume s300
memset(&data_packet,0,sizeof(data_packet));
data_packet.min_angle = DTOR(-135);
***************
*** 255,258 ****
--- 261,283 ----
}
+
////////////////////////////////////////////////////////////////////////////////
+ // Set up scanner parameters based on number of results per scan
+ void SickS3000::SetScannerParams(int data_count)
+ {
+ if (data_count == 761) // sicks3000
+ {
+ data_packet.min_angle = DTOR(-95);
+ data_packet.max_angle = DTOR(95);
+ data_packet.resolution = DTOR(0.25);
+ data_packet.max_range = 49;
+
+ config_packet.min_angle = DTOR(-95);
+ config_packet.max_angle = DTOR(95);
+ config_packet.resolution = DTOR(0.25);
+ config_packet.max_range = 49;
+
+ recognisedScanner = true;
+ }
+ }
////////////////////////////////////////////////////////////////////////////////
***************
*** 314,317 ****
--- 339,343 ----
{
player_opaque_data_t * recv = reinterpret_cast<player_opaque_data_t * >
(data);
+ unsigned int messageOffset = rx_count;
rx_count += recv->data_count;
if (rx_count > rx_buffer_size)
***************
*** 322,326 ****
else
{
! memmove(&rx_buffer[rx_count], recv->data, recv->data_count);
ProcessLaserData();
}
--- 348,352 ----
else
{
! memcpy(&rx_buffer[messageOffset], recv->data, recv->data_count);
ProcessLaserData();
}
***************
*** 448,451 ****
--- 474,479 ----
{
int data_count = (size - 22) / 2;
+ if (!recognisedScanner)
+ SetScannerParams(data_count); // Set up parameters based on
number of results.
data_packet.ranges_count = data_count;
data_packet.ranges = new float [data_count];
-------------------------------------------------------------------------
SF.Net email is sponsored by:
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services
for just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit