本页介绍了 RotationAction 的用法, 包含使用rotate顺时针旋转、逆时针旋转,使用rotateTo旋转到指定角度等功能。
本页内容
运行环境准备
软件平台
- 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等底盘系统
编译运行
- 打开RotationAction工程,检查libs路径下是否有 slamware_sdk_android.jar 文件,以及jinLibs路径下是否有 librpsdk.so 文件,若想尝试其他版本的SDK,请直接将这两个文件替换。
到 Project Structure --> app --> Dependencies 检查Slamware SDK是否添加到工程中。
l
将以下代码段的"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);
Android设备连接底盘发射出的WIFI或连入底盘的同一网络,按下shift + F10 运行,Android手机端的显示界面如下
本例程仅仅用作最简单SDK类的演示,故没有写设计精美的界面和复杂的事务逻辑
- 在手机界面上从上到下依次点击各个按钮,机器人底盘将会进行相应的旋转运动,其运动状态可在Robostuio上观察到
代码描述
Android端从上到下三个按键一次是使机器人逆时针转180度、逆时针转180度、转到yaw值为270度的位置。
Rotation类的yaw属性为弧度制,所以此示例代码中使用setPI方法将角度转为弧度
旋转指定角度/旋转到指定角度/* 与底盘连接 */ AbstractSlamwarePlatform robotPlatform = DeviceManager.connect("10.0.130.71", 1445); private float setPI(int i) { return (float)(i*Math.PI/180); } @Override public void onClick(View view) { try { /* 如果当前正在运动,先停止 */ if(action != null) { action.cancel(); } switch (view.getId()) { /* Anticlockwise Rotate 180 */ case R.id.button_anticlockwise: action = robotPlatform.rotate(new Rotation(setPI(-180), 0, 0)); Log.d(TAG, ""); break; /* Clockwise Rotate 180 */ case R.id.button_clockwise: action = robotPlatform.rotate(new Rotation(setPI(180), 0, 0)); break; /* Rotate to 270 */ case R.id.button_rotate_to: action = robotPlatform.rotateTo(new Rotation(setPI(270), 0, 0)); break; default: break; } } catch (ConnectionFailException e) { /* Exception Handle code*/ ... } }