Difference between revisions of "URG laser"

From ArmadeusWiki
Jump to: navigation, search
(Usage)
(Code example)
Line 41: Line 41:
  
 
==Code example==
 
==Code example==
 +
With your favorite editor/IDE, create the following program:
 +
 +
<source lang="cpp">
 +
#include <iostream>
 +
#include "UrgCtrl.h"
 +
using namespace std;
 +
using namespace qrk;
 +
 +
int main() {
 +
 +
const char device[] = "/dev/ttyACM0";
 +
UrgCtrl urg;
 +
if (! urg.connect(device)) {
 +
cout << "UrgCtrl::connect: " << urg.what() << endl;
 +
exit(1);
 +
}
 +
vector<long> data;
 +
long timestamp = 0;
 +
while (1)
 +
{
 +
int n = urg.capture(data, &timestamp);
 +
if (n < 0) {
 +
cout << "UrgCtrl::capture: " << urg.what() << endl;
 +
exit(1);
 +
}
 +
cout << "timestamp: " << timestamp << "\t range at 0 degree : " << data[n/2] << " mm" <<endl;
 +
}
 +
return 0;
 +
}
 +
 +
</source>
 +
Save it as ''hello.cpp''
  
 
==Links==
 
==Links==

Revision as of 21:16, 15 July 2010

How to drive Hoyuko's URG series laser sensors.

Installation

$ make menuconfig
Package Selection for the target  --->
    Hardware handling / blockdevices and filesystem maintenance  --->
        [*]   urg library
$ make
  • reflash rootfs


Usage

To use Hokoyu URG laser, you need Prolific pl2303 USB to serial adapter ( see here to install pl2303).

Load the module and connect the URG laser to APF27 dev USB port. You should see something like this :

# modprobe pl2303
usbcore: registered new interface driver usbserial
usbserial: USB Serial Driver core
USB Serial support registered for pl2303
usbcore: registered new interface driver pl2303
pl2303: Prolific PL2303 USB to serial adaptor driver
# usb 2-1: new full speed USB device using mxc-ehci and address 3
usb 2-1: device descriptor read/64, error -71
usb 2-1: New USB device found, idVendor=15d1, idProduct=0000
usb 2-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 2-1: Product: URG-Series USB Driver
usb 2-1: Manufacturer: Hokuyo Data Flex for USB
usb 2-1: configuration #1 chosen from 1 choice
cdc_acm 2-1:1.0: ttyACM0: USB ACM device
# 

Code example

With your favorite editor/IDE, create the following program:

#include <iostream>
#include "UrgCtrl.h"
using namespace std;
using namespace qrk;

int main() {

	const char device[] = "/dev/ttyACM0";
	UrgCtrl urg;
	if (! urg.connect(device)) {
		cout << "UrgCtrl::connect: " << urg.what() << endl;
		exit(1);
	}
	vector<long> data;
	long timestamp = 0;
	while (1)
	{
		int n = urg.capture(data, &timestamp);
		if (n < 0) {
			cout << "UrgCtrl::capture: " << urg.what() << endl;
			exit(1);
		}
		cout << "timestamp: " << timestamp << "\t range at 0 degree : " << data[n/2] << " mm" <<endl;
	}
	return 0;
}

Save it as hello.cpp

Links