Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

本页介绍了 VirtualTrackWithOA的用法,   包含轨道优先模式的简单介绍。


本页内容


轨道优先模式简介

轨道优先模式可以理解为道路导航中的高速路优先

1. 在起始点和目标点之间,如果存在轨道,会优先上轨道。

2. 如果轨道上遇到障碍物,会下轨道绕行后再上轨道继续前进。


运行环境准备

  • 软件平台

    • 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. 打开VirtualTrackWithOA工程,检查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. 虚拟轨道和机器人的运动状态可以在Robostudio上查看





代码描述

  • 画一条机器人当前位置x轴方向正向的,长6米的轨道,然后沿轨道走到目标点

    导航到目标点
    /* 与底盘连接 */
    final AbstractSlamwarePlatform robotPlatform = DeviceManager.connect("10.0.130.71", 1445);
    
    try {
    
        //draw a 6 meter virtual track
        Pose pose = robotPlatform.getPose();
        Line line = new Line(new PointF(pose.getX(), pose.getY()), new PointF(pose.getX()+6, pose.getY()));
        robotPlatform.addLine(ArtifactUsageVirtualTrack, line);
    
        IMoveAction action = robotPlatform.getCurrentAction();
        if (action != null)
            action.cancel();
    
        MoveOption moveOption = new MoveOption();
        moveOption.setTrackWithOA(true);
    
        action = robotPlatform.moveTo(new Location(7, 0, 0), moveOption, 0);
    
        action.waitUntilDone();
        if (action.getStatus() == ERROR)
            Log.d(TAG, "Action Failed");
    
    } catch (ConnectionTimeOutException e) {
    	/* Exception Handle code*/
    	....	   
    }
  • No labels