Commit ff679532 by 浦耀宗

更新了README

parent f94d1034
## 集成AAR文件使用说明
## SDK集成使用说明
### 第一步 导入aar文件
##### 将aar文件添加到libs文件中
```gradle
将aar文件添加到libs文件中
```groovy
implementation(name: 'csjsdk-beta', ext: 'aar')
```
##### 在app的build.gradle文件的android{}结构下添加如下代码
```gradle
repositories {
flatDir {
dirs 'libs'
}
在app的build.gradle文件的android{}结构下添加如下代码
```groovy
repositories {
flatDir {
dirs 'libs'
}
}
```
### 第二步 引入依赖库
```gradle
```groovy
implementation 'io.netty:netty-all:4.1.23.Final'
```
### 第三步 初始化
##### 在Application中初始化SDK
##### 请保证设备端有网络的情况下进行代码授权
在Application中初始化SDK
**请保证设备端有网络的情况下进行代码授权**
1.[穿山甲开发者平台上注册账号](http://openpro.csjbot.com)
2. 填入信息后申请 API Key和 User Key
3. 在右侧菜单中找到API管理,API Key 对应 key ,User Key 对应 secret
4. 在初始化的时候填入 ,注意需要给予应用权限
```xml
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <!-- 读外部储存 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 写外部储存 -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 网络通信 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
```
```java
// 在开发者平台申请的key与secret进行授权(只需授权一次即可,后续使用无需授权)
// 开发者平台网址:http://openpro.csjbot.com
CsjRobot.authentication(this,"123", "456", new OnAuthenticationListener() {
CsjRobot.authentication(this,"yourkey", "yoursecret", new OnAuthenticationListener() {
@Override
public void success() {
Log.d("TAG","授权成功!");
......@@ -34,13 +48,43 @@ CsjRobot.authentication(this,"123", "456", new OnAuthenticationListener() {
Log.d("TAG","授权失败!");
}
});
```
只需联网授权一次即可,后续使用无需联网授权,会做本地验证
在成功之后,可以进行初始化SDK,选择需要功能(可以跳过,默认打开),设置连接地址和端口(可选,默认为192.168.99.101),设置机器人类型,默认是Amy迎宾机器人,需要的则设置为对应的机器人类型
```java
// 是否启用语音模块(默认开启) #####在init之前调用
CsjRobot.enableAsr(true);
// 是否启用人脸识别模块
CsjRobot.enableFace(true);
// 是否启用导航模块
CsjRobot.enableSlam(true);
// 设置通信的地址,默认是192.168.99.101, 60002
CsjRobot.setIpAndrPort("127.0.0.1", 60002);
/*
* 设置机器人类型(在init之前调用)
* 如果设置了ALICE,则为第八代机器人的协议
*/
CsjRobot.setRobotType(CsjRobot.RobotType.ALICE_NEW);
/*
* 初始化SDK
*/
CsjRobot.getInstance().init(this);
```
## 机器人功能使用说明
### 注册机器人连接状态事件
SDK初始化
在初始化之后,可以注册机器人连接状态事件,不同的状态在回调中都有展示
```java
CsjRobot.getInstance().registerConnectListener(new OnConnectListener() {
CsjRobot.getInstance().registerConnectListener(new OnConnectListener() {
@Override
public void success() {
startActivity(new Intent(SplashActivity.this,MainActivity.class));
......@@ -60,61 +104,292 @@ CsjRobot.getInstance().init(this);
public void disconnect() {
}
});
});
```
### 注册机器人唤醒事件
```java
CsjRobot.getInstance().registerWakeupListener(new OnWakeupListener() {
@Override
public void response(int i) {
Log.d("TAG","registerWakeupListener:i:"+i);
mCsjBot.getTts().startSpeaking("我在呢!",null);
if (i > 0 && i < 360) {
if (i <= 180) {
CsjlogProxy.getInstance().debug("向左转:+" + i);
if (mCsjBot.getState().getChargeState() == State.NOT_CHARGING) {
mCsjBot.getAction().moveAngle(i,null);
}
} else {
CsjlogProxy.getInstance().debug("向右转:-" + (360 - i));
if (mCsjBot.getState().getChargeState() == State.NOT_CHARGING) {
mCsjBot.getAction().moveAngle(-(360 - i),null);
}
}
}
}
});
```
### 注册机器人语音识别事件
### 一、语音识别、语义理解与唤醒
#### 语音识别
功能可以参考 [Demo的AsrNlpActivity.java](http://gitlab.csjbot.com/open/RobotSDKForYingbin-Android-Sample/blob/master/Android-Sample/app/src/main/java/com/demo/csjbot/csjsdkdemo/future/AsrNlpActivity.java)
1. 打开、关闭语音服务(默认打开,enableAsr 需要置为true)
```java
CsjRobot.getInstance().getSpeech().startSpeechService();
```
2. 注册机器人语音识别和语义理解事件
```java
private OnSpeechListener onSpeechListener = new OnSpeechListener() {
@Override
public void speechInfo(final String s, final int i) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// 简单解析示例
if (Speech.SPEECH_RECOGNITION_RESULT == i) { // 识别到的信息
...
} else if (Speech.SPEECH_RECOGNITION_AND_ANSWER_RESULT == i) {// 识别到的信息与的回答
...
}
}
});
}
};
```
3. 打开多次语音识别
```java
CsjRobot.getInstance().getSpeech().startIsr();
```
注意:此方法默认不会调用,调用之后,SDK将独占麦克风
如果想要停止识别
4. 停止语音识别
```
CsjRobot.getInstance().getSpeech().stopIsr();
```
5. 关闭
```java
CsjRobot.getInstance().getSpeech().closeSpeechService();
```
#### 唤醒事件
注册机器人唤醒事件,对机器人说唤醒词"灵犀灵犀"即可
```java
// 语音识别
CsjRobot.getInstance().registerSpeechListener(new OnSpeechListener() {
@Override
public void speechInfo(String s, int i) {
// 简单解析示例
Log.d("TAG","registerSpeechListener:s:"+s);
if(Speech.SPEECH_RECOGNITION_RESULT == i){ // 识别到的信息
try {
String text = new JSONObject(s).getString("text");
Toast.makeText(MainActivity.this, "识别到的文本:"+text, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}else if(Speech.SPEECH_RECOGNITION_AND_ANSWER_RESULT == i){// 识别到的信息与的回答
try {
String say = new JSONObject(s).getJSONObject("result").getJSONObject("data").getString("say");
Toast.makeText(MainActivity.this, "获取的答案信息:"+say, Toast.LENGTH_SHORT).show();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
});
private OnWakeupListener onWakeupListener = new OnWakeupListener() {
@Override
public void response(final int i) {
...
}
};
```
### 二、导航和行走
导航流程,功能可以参考 [Demo的SlamDemoActivity.java](http://gitlab.csjbot.com/open/RobotSDKForYingbin-Android-Sample/blob/master/Android-Sample/app/src/main/java/com/demo/csjbot/csjsdkdemo/future/SlamDemoActivity.java)
#### 第一次开机
1. 寻找一个合适的地方安放充电桩,并且给充电桩上电
2. 机器人在充电桩充电、开机
3. 等待进入系统之后,利用RobotStuido软件进行建立地图
4. 调用保存地图接口,地图默认名字是 map.map
```java
mCsjBot.getAction().saveMap();
```
5. 随后可以调用查看地图恢复状态
```java
public void queryMapState(View view) {
mCsjBot.getAction().getMapState(onMapStateListener);
}
private OnMapStateListener onMapStateListener = new OnMapStateListener() {
@Override
public void mapState(String s) {
...
}
};
```
6. 利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标1
```java
public void getAndSavePose1(View view) {
...
mCsjBot.getAction().getPosition(listener);
...
}
```
7. 利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标2
```java
public void getAndSavePose2(View view) {
...
mCsjBot.getAction().getPosition(listener);
...
}
```
8. 想要去往点位1,则可以调用去往点位,参见调用方法
```java
public void goPose1(View view) {...}
```
```java
private void goPose(final RobotPose pose) {...}
```
9. 如果想要中途取消,则可以调用取消导航方法
```java
public void cancelNavi(View view) {
mCsjBot.getAction().cancelNavi(new OnNaviListener() {
@Override
public void moveResult(String s) {}
@Override
public void messageSendResult(String s) {}
@Override
public void cancelResult(String s) {
//在此回调中获取状态
}
@Override
public void goHome() {}
});
}
```
#### 再次开机导航流程
前提:
- **充电桩在原来位置**
- **机器人在充电桩开机**
- **已经调用过保存地图接口**
此时当机器人SDK连接之后,可以调用恢复地图接口,恢复地图
```java
public void restoreMap(View view) {
mCsjBot.getAction().loadMap();
}
```
恢复地图之后,可以直接调用保存的点位, 进行导航
```java
public void goPose1(View view) {...}
```
```java
private void goPose(final RobotPose pose) {...}
```
#### 回桩充电
- 注意:需要在充电桩开机
调用回桩充电的接口即可让机器人回去充电
```java
public void goHome(View view) {
mCsjBot.getAction().goHome(new OnNaviListener() {
...
@Override
public void goHome() {
// 如果成功则有回调
}
});
}
```
#### 其他运动接口
1. 点动,调用接口可以让机器人往前、后、左、右运动,注意:这些方法传感器将不起作用,也不会导航
```java
public void forward(View view) {
mCsjBot.getAction().moveForward();
}
public void backward(View view) {
mCsjBot.getAction().moveBack();
}
public void turnLeft(View view) {
mCsjBot.getAction().moveLeft();
}
public void turnRight(View view) {
mCsjBot.getAction().moveLeft();
}
```
Tips:如果想要做App控制机器人运动,可以调用这些方法
2. 转身,转特定角度,以机器人目前朝向作为参考
```java
public void turnRight60Degrees(View view) {
mCsjBot.getAction().moveAngle(-60, new OnGoRotationListener() {
@Override
public void response(int i) {
}
});
}
public void turnLeft60Degrees(View view) {
mCsjBot.getAction().moveAngle(60, new OnGoRotationListener() {
@Override
public void response(int i) {
}
});
}
```
Tips:可以利用这个来做声源定位的转身
转到特定的角度,以机器人开机朝向作为参考
```java
public void turnTo60(View view) {
mCsjBot.getAction().goAngle(60);
}
```
3.
### 注册机器人实时图像传输事件
```java
// 摄像头实时图片传输
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论