本页介绍了 GetLaserScan 的用法,  使用getLaserScan方法实现当前雷达扫描数据的获取。



本页内容


运行环境准备

  • 软件平台

    • Android Studio 3.1.3
    • Slamware Android SDK: slamware_sdk_android.2.6.0_rtm.20180820.tar.gz
    • RoboStudio(用于显示地图):Robostudio installer
    • Sample Code: 

      使用不同版本的Android Studio可能会带来编译异常,请自行下载相关库和修改build.gradle配置文件,本例程基于Slamware Android SDK 2.6.0 进行开发,若想尝试更高的SDK版本,请直接替换工程中的 slamware_sdk_android.jar 和 librpsdk.so 文件。

  • 硬件平台

          (以下任选其一)

      • Slamware SDP mini 
      • Slamware SDP
      • Slamware 套装 (基于Slamware导航方案的用户机器人系统)
      • Zeus/Apollo等底盘系统

编译运行

  1. 打开GetLaserScan工程,检查libs路径下是否有 slamware_sdk_android.jar 文件,以及jinLibs路径下是否有 librpsdk.so 文件,若想尝试其他版本的SDK,请直接将这两个文件替换。



  2. 到 Project Structure --> app --> Dependencies 检查Slamware SDK是否添加到工程中。

  3. 将以下代码段的"10.0.130.71"修改为底盘的IP地址,默认情况下为192.168.11.1,当WIFI处于Station模式下请将PC与底盘使用Ethenet连接后查看。方法说明:AbstractSlamwarePlatform connect(String host, int port),其中host为底盘IP,port为网络端口号,返回值为底盘的实例对象。

    /* 与底盘连接 */
    AbstractSlamwarePlatform robotPlatform = DeviceManager.connect("10.0.130.71", 1445);
  4. Android设备连接底盘发射出的WIFI或连入底盘的同一网络,按下shift + F10 运行

    本例程仅仅用作最简单SDK类和方法的演示,故没有设计Android界面

  5. 获取到数据在Android Studio Logcat 中的输出如下





代码描述

  • 获取当前雷达获取到的数据

    /* 与底盘连接 */
    final AbstractSlamwarePlatform robotPlatform = DeviceManager.connect("10.0.130.71", 1445);
    
    LaserScan laserScan;
    try {
    	laserScan = robotPlatform.getLaserScan();
    
    	/* Get Lidar scan data */
    	Vector<LaserPoint> laserPoints = laserScan.getLaserPoints();
    
    	/* print Laser data */	
    	for(int i=0; i<laserPoints.size(); i++) {
            Log.d(TAG, "Angle:    " + laserPoints.get(i).getAngle()
                     + " Distance: " + laserPoints.get(i).getDistance()
                     +" is Valid: " + laserPoints.get(i).isValid());
            }
        } 
    } catch (ConnectionTimeOutException e) {
    	/* Exception Handle code*/
    	....	   
    }