Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 package com.github.rosjava.android_extras.android_tutorial_hokuyo;
00018
00019 import android.os.Bundle;
00020 import org.ros.address.InetAddressFactory;
00021 import org.ros.android.android_acm_serial.AcmDevice;
00022 import org.ros.android.android_acm_serial.AcmDeviceActivity;
00023 import org.ros.exception.RosRuntimeException;
00024 import com.github.rosjava.rosjava_extras.hokuyo.LaserScanPublisher;
00025 import com.github.rosjava.rosjava_extras.hokuyo.scip20.Device;
00026 import org.ros.namespace.GraphName;
00027 import org.ros.node.NodeConfiguration;
00028 import org.ros.node.NodeMainExecutor;
00029 import org.ros.time.NtpTimeProvider;
00030
00031 import java.util.concurrent.CountDownLatch;
00032 import java.util.concurrent.TimeUnit;
00033
00037 public class MainActivity extends AcmDeviceActivity {
00038
00039 private final CountDownLatch nodeRunnerServiceLatch;
00040
00041 private NodeMainExecutor nodeMainExecutor;
00042
00043 public MainActivity() {
00044 super("Hokuyo Node", "Hokuyo Node");
00045 nodeRunnerServiceLatch = new CountDownLatch(1);
00046 }
00047
00048 @Override
00049 public void onCreate(Bundle savedInstanceState) {
00050 super.onCreate(savedInstanceState);
00051 setContentView(R.layout.main);
00052 }
00053
00054 @Override
00055 protected void init(NodeMainExecutor nodeMainExecutor) {
00056 nodeRunnerServiceLatch.countDown();
00057 this.nodeMainExecutor = nodeMainExecutor;
00058 }
00059
00060 private void startLaserScanPublisher(AcmDevice acmDevice) {
00061 try {
00062 nodeRunnerServiceLatch.await();
00063 } catch (InterruptedException e) {
00064 throw new RosRuntimeException(e);
00065 }
00066 NodeConfiguration nodeConfiguration =
00067 NodeConfiguration.newPublic(InetAddressFactory.newNonLoopback().getHostAddress(),
00068 getMasterUri());
00069 nodeConfiguration.setNodeName(GraphName.newAnonymous());
00070 NtpTimeProvider ntpTimeProvider =
00071 new NtpTimeProvider(InetAddressFactory.newFromHostString("192.168.0.1"),
00072 nodeMainExecutor.getScheduledExecutorService());
00073 ntpTimeProvider.startPeriodicUpdates(1, TimeUnit.MINUTES);
00074 nodeConfiguration.setTimeProvider(ntpTimeProvider);
00075 Device scipDevice =
00076 new Device(acmDevice.getInputStream(), acmDevice.getOutputStream(), ntpTimeProvider);
00077 LaserScanPublisher laserScanPublisher = new LaserScanPublisher(scipDevice);
00078 nodeMainExecutor.execute(laserScanPublisher, nodeConfiguration);
00079 }
00080
00081 @Override
00082 public void onPermissionGranted(final AcmDevice acmDevice) {
00083 new Thread() {
00084 @Override
00085 public void run() {
00086 startLaserScanPublisher(acmDevice);
00087 };
00088 }.start();
00089 }
00090
00091 @Override
00092 public void onPermissionDenied() {
00093 }
00094 }