URG laser

From ArmadeusWiki
Revision as of 20:17, 15 July 2010 by OlivierR (Talk | contribs) (Code example)

Jump to: navigation, search

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 laser.cpp

Links