Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
R
RobotSDKForYingbin-Android-Sample
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
open
RobotSDKForYingbin-Android-Sample
Commits
24f41902
Commit
24f41902
authored
Jul 29, 2020
by
浦耀宗
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改了文档
parent
ff679532
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
163 行增加
和
653 行删除
+163
-653
Android-Sample/README_en.md
+1
-1
Android-Sample/README_zh.md
+162
-652
docs/穿山甲机器人AI手册_Android发行版.pdf
+0
-0
没有找到文件。
Android-Sample/README_en.md
View file @
24f41902
## Integrated AAR file instructions
## [中文文档点我](http://gitlab.csjbot.com/
jingweicheng/csjsdkdemo/blob/master
/README_zh.md)
## [中文文档点我](http://gitlab.csjbot.com/
open/RobotSDKForYingbin-Android-Sample/blob/master/Android-Sample
/README_zh.md)
### Step 1 import AAR file
##### Add AAR file to LIBS file
```
gradle
...
...
Android-Sample/README_zh.md
View file @
24f41902
...
...
@@ -38,16 +38,16 @@ implementation 'io.netty:netty-all:4.1.23.Final'
```
java
CsjRobot
.
authentication
(
this
,
"yourkey"
,
"yoursecret"
,
new
OnAuthenticationListener
()
{
@Override
public
void
success
()
{
Log
.
d
(
"TAG"
,
"授权成功!"
);
}
@Override
public
void
success
()
{
Log
.
d
(
"TAG"
,
"授权成功!"
);
}
@Override
public
void
error
()
{
Log
.
d
(
"TAG"
,
"授权失败!"
);
}
});
@Override
public
void
error
()
{
Log
.
d
(
"TAG"
,
"授权失败!"
);
}
});
```
只需联网授权一次即可,后续使用无需联网授权,会做本地验证
...
...
@@ -115,54 +115,54 @@ CsjRobot.getInstance().registerConnectListener(new OnConnectListener() {
功能可以参考
[
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)
1
、
打开、关闭语音服务(默认打开,enableAsr 需要置为true)
```
java
CsjRobot
.
getInstance
().
getSpeech
().
startSpeechService
();
```
```
java
CsjRobot
.
getInstance
().
getSpeech
().
startSpeechService
();
```
2
.
注册机器人语音识别和语义理解事件
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
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
)
{
// 识别到的信息与的回答
...
}
}
});
}
};
```
```
java
CsjRobot
.
getInstance
().
getSpeech
().
startIsr
();
```
3、打开多次语音识别
注意:此方法默认不会调用,调用之后,
SDK
将独占麦克风
```
java
CsjRobot
.
getInstance
().
getSpeech
().
startIsr
();
```
如果想要停止识别
4
.
停止语音识别
注意:此方法默认不会调用,调用之后,SDK将独占麦克风
```
CsjRobot
.
getInstance
().
getSpeech
().
stopIsr
();
```
如果想要停止识别
5
.
关闭
4、停止语音识别
```
java
CsjRobot
.
getInstance
().
getSpeech
().
closeSpeechService
();
```
```
CsjRobot.getInstance().getSpeech().stopIsr();
```
5、关闭
```
java
CsjRobot
.
getInstance
().
getSpeech
().
closeSpeechService
();
```
#### 唤醒事件
...
...
@@ -185,92 +185,92 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
#### 第一次开机
1.
寻找一个合适的地方安放充电桩,并且给充电桩上电
1、
寻找一个合适的地方安放充电桩,并且给充电桩上电
2.
机器人在充电桩充电、开机
2、
机器人在充电桩充电、开机
3.
等待进入系统之后,利用RobotStuido软件进行建立地图
3、
等待进入系统之后,利用RobotStuido软件进行建立地图
4.
调用保存地图接口,地图默认名字是 map.map
4、
调用保存地图接口,地图默认名字是 map.map
```java
mCsjBot.getAction().saveMap();
```
```
java
mCsjBot
.
getAction
().
saveMap
();
```
5.
随后可以调用查看地图恢复状态
5、
随后可以调用查看地图恢复状态
```java
public void queryMapState(View view) {
mCsjBot.getAction().getMapState(onMapStateListener);
}
private OnMapStateListener onMapStateListener = new OnMapStateListener() {
@Override
public void mapState(String s) {
...
}
};
```
```
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);
...
}
```
6、利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标1
7. 利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标2
```
java
public
void
getAndSavePose1
(
View
view
)
{
...
mCsjBot
.
getAction
().
getPosition
(
listener
);
...
}
```
```java
public void getAndSavePose2(View view) {
...
mCsjBot.getAction().getPosition(listener);
...
}
```
8. 想要去往点位1,则可以调用去往点位,参见调用方法
7、利用 RobotStuido 软件,移动机器人到合适的位置,调用获取坐标2
```java
public void goPose1(View view) {...}
```
```
java
public
void
getAndSavePose2
(
View
view
)
{
...
mCsjBot
.
getAction
().
getPosition
(
listener
);
...
}
```
```java
private void goPose(final RobotPose pose) {...}
```
9. 如果想要中途取消,则可以调用取消导航
方法
8、想要去往点位1,则可以调用去往点位,参见调用
方法
```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() {}
});
}
```
```
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
()
{}
});
}
```
#### 再次开机导航流程
...
...
@@ -328,361 +328,66 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
####
其他运动接口
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) {
}
});
}
```
1
、点动,调用接口可以让机器人往前、后、左、右运动,注意:这些方法传感器将不起作用,也不会导航
Tips:可以利用这个来做声源定位的转身
```
java
public void forward(View view) {
mCsjBot.getAction().moveForward();
}
转到特定的角度,以机器人开机朝向作为参考
public void backward(View view) {
mCsjBot.getAction().moveBack();
}
```java
public void turnTo60(View view) {
mCsjBot.getAction().goAngle(60);
}
```
public void turnLeft(View view) {
mCsjBot.getAction().moveLeft();
}
3.
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) {
}
});
}
### 注册机器人实时图像传输事件
```
java
// 摄像头实时图片传输
CsjRobot.getInstance().registerCameraListener(new OnCameraListener() {
@Override
public void response(Bitmap bitmap) {
public void turnLeft60Degrees(View view) {
mCsjBot.getAction().moveAngle(60, new OnGoRotationListener() {
@Override
public void response(int i) {
}
});
}
});
}
```
### 注册机器人综合人体检测事件
```
java
// 综合人体检测
CsjRobot.getInstance().registerDetectPersonListener(new OnDetectPersonListener() {
@Override
public void response(int i) {
if(i == 0){ // 无人
Log.d("TAG","registerDetectPersonListener:无人");
}else if(i == 1){ // 有人
Log.d("TAG","registerDetectPersonListener:有人");
}
}
});
```
Tips:可以利用这个来做声源定位的转身
### 注册人脸信息事件
```
java
// 人脸信息
CsjRobot.getInstance().registerFaceListener(new OnFaceListener() {
@Override
public void personInfo(String s) {
// 人脸识别到的会员信息(人脸一直在就会持续触发)
Log.d("TAG","registerFaceListener:s:"+s);
}
@Override
public void personNear(boolean b) {
if(b){// 有人脸靠近
Log.d("TAG","registerFaceListener:有人脸靠近");
}else{// 人脸消失
Log.d("TAG","registerFaceListener:人脸消失");
}
}
});
```
3、转到特定的角度,以机器人开机朝向作为参考
### 注册机器人头部传感器事件(小雪)
```
java
// 机器人头部传感器(小雪)
CsjRobot.getInstance().registerHeadTouchListener(new OnHeadTouchListener() {
@Override
public void response() {
Log.d("TAG","registerHeadTouchListener:头部传感器触发");
}
});
public void turnTo60(View view) {
mCsjBot.getAction().goAngle(60);
}
```
### 机器人动作
```
java
// 机器人动作
Action action = CsjRobot.getInstance().getAction();
// 动作重置
action.reset();
// 肢体动作(bodyPart:肢体部位,action:对应动作)
action.action(2,6);// 低头
// 开始左右摆手(intervalTime:间隔时间)
action.startWaveHands(1000);
// 停止左右摆手
action.stopWaveHands();
// 开始跳舞
action.startDance();
// 停止跳舞
action.stopDance();
// 获取当前机器人的位置信息
action.getPosition(new OnPositionListener() {
@Override
public void positionInfo(String s) {
// 返回json
/*{
"msg_id":"NAVI_GET_CURPOS_RSP",
"x":”0”,
"y":”0”,
"z":”0”,
"rotation":”0”,
"error_code":0
}*/
}
});
// 移动方法(direction:方向 0:前 1:后 2:左 3:右)
// 移动距离较短
action.move(0);
// 导航方法(机器人导航到某个点)
String json = "";
/*{
"x":2,
"y":1,
"z":0,
"rotation":30
}*/
action.navi(json, new OnNaviListener() {
@Override
public void moveResult(String s) {
// 到达后通知
}
@Override
public void messageSendResult(String s) {
// 导航消息发送成功后的通知
}
@Override
public void cancelResult(String s) {
}
@Override
public void goHome() {
}
});
// 机器人取消当前导航
action.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() {
}
});
// 转至特定角度()
action.goAngle(180);
// 步进角度(Rotation>0:向左转,Rotation<0:向右转)
action.moveAngle(180, new OnGoRotationListener() {
@Override
public void response(int i) {
// 到达角度通知
}
});
// 回去充电
action.goHome(new OnNaviListener() {
@Override
public void moveResult(String s) {
}
@Override
public void messageSendResult(String s) {
}
@Override
public void cancelResult(String s) {
}
@Override
public void goHome() {
// 充电通知
}
});
// 保存当前机器人的地图信息
action.saveMap();
action.saveMap(String name);
// 加载保存的机器人地图信息
action.loadMap();
action.loadMap(String name);
// 机器人速度设置(0.1-0.7,默认0.5)
action.setSpeed(0.6f);
// 获取所有地图
action.getMapList(new OnMapListListener() {
@Override
public void response(String s) {
}
});
// 导航状态查询
action.search(new OnNaviSearchListener() {
@Override
public void searchResult(String s) {
/*{
"msg_id":"NAVI_GET_STATUS_RSP",
"state":0,
"error_code":0
}*/
// state:0空闲,1:正在导航
}
});
// 点头动作
action.nodAction();
// 小雪右臂摆动
action.snowRightArm();
// 小雪左臂摆动
action.snowLeftArm();
// 小雪双臂摆动
action.snowDoubleArm();
// 爱丽丝抬头
action.AliceHeadUp();
// 爱丽丝头低头
action.AliceHeadDown();
// 爱丽丝头部重置
action.AliceHeadHReset();
// 爱丽丝左手臂抬起
action.AliceLeftArmUp();
// 爱丽丝左手臂放下
action.AliceLeftArmDown();
// 爱丽丝右手臂抬起
action.AliceRightArmUp();
// 爱丽丝右手臂放下
action.AliceRightArmDown();
// 小雪左臂摆动次数
action.SnowLeftArmSwing(20);
// 小雪右臂摆动次数
action.SnowRightArmSwing(20);
// 小雪双臂摆动次数
action.SnowDoubleArmSwing(20);
// 向左转
action.turnLeft(new OnGoRotationListener() {
@Override
public void response(int i) {
// 完成通知
}
});
// 向右转
action.turnRight(new OnGoRotationListener() {
@Override
public void response(int i) {
// 完成通知
}
});
// 向左移动
action.moveLeft();
// 向右移动
action.moveRight();
// 前进
action.moveForward();
// 后退
action.moveBack();
```
### TTS(语音合成)
```
java
// 机器人TTS
ISpeechSpeak speak = CsjRobot.getInstance().getTts();
...
...
@@ -716,40 +421,7 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
CsjRobot.getInstance().setTts(null);
```
### 语音识别
```
java
// 机器人语音
Speech speech = CsjRobot.getInstance().getSpeech();
// 开启讯飞语音服务(默认开启,无需手动调用)
speech.startSpeechService();
// 关闭讯飞语音服务
speech.closeSpeechService();
// 开启多次识别
speech.startIsr();
// 关闭多次识别
speech.stopIsr();
// 开启单次识别
speech.startOnceIsr();
// 关闭单次识别
speech.stopOnceIsr();
// 手动唤醒机器人
speech.openMicro();
// 手动去获取问题的答案
speech.getResult("你叫什么名字?", new OnSpeechGetResultListener() {
@Override
public void response(String s) {
}
});
```
### 人脸识别信息
```
java
...
...
@@ -815,188 +487,27 @@ private OnWakeupListener onWakeupListener = new OnWakeupListener() {
### 机器人状态
```
java
// 机器人状态
State state = CsjRobot.getInstance().getState();
// 机器人的连接状态
state.isConnect();
// 机器人的电量值
state.getElectricity();
// 机器人当前充电状态
state.getChargeState();
// 机器人关机
state.shutdown();
// 机器人重启
state.reboot();
// 获取机器人电量信息
state.getBattery(new OnRobotStateListener() {
@Override
public void getBattery(int i) {
// 返回的电量值
}
@Override
public void getCharge(int i) {
}
});
// 获取机器人的充电状态
state.getCharge(new OnRobotStateListener() {
@Override
public void getBattery(int i) {
}
@Override
public void getCharge(int i) {
// 返回的充电状态
}
});
// 机器人检查信息
state.checkSelf(new OnWarningCheckSelfListener() {
@Override
public void response(String s) {
// 返回机器人的检查信息
}
});
// 手动获取综合人体检测的信息
state.getPerson(new OnDetectPersonListener() {
@Override
public void response(int i) {
// 返回的状态
// i==0 无人 i==1 有人
}
});
// 获取机器人的SN信息
state.getSN(new OnSNListener() {
@Override
public void response(String s) {
// 返回的SN信息
}
});
```
### 机器人表情
```
java
// 机器人表情
Expression expression = CsjRobot.getInstance().getExpression();
// 获取机器人表情
expression.getExpression(new OnExpressionListener() {
@Override
public void response(int i) {
// 返回的表情
}
});
// 开心
expression.happy();
// 悲伤
expression.sadness();
// 惊讶
expression.surprised();
// 微笑
expression.smile();
// 正常
expression.normal();
// 愤怒
expression.angry();
// 闪电
expression.lightning();
// 困倦
expression.sleepiness();
```
### 机器人版本
```
java
// 机器人版本信息
Version version = CsjRobot.getInstance().getVersion();
// 获取机器人版本信息
version.getVersion(new OnGetVersionListener() {
@Override
public void response(String s) {
// 返回的版本信息
}
});
// 底层软件检查
version.softwareCheck(new OnUpgradeListener() {
@Override
public void checkRsp(int i) {
if (i == 60002) {//已是最新版本
} else if (i == 60001) {//没有获取到版本信息,请检查网络
} else if (i == 0) {//正常更新
}
}
@Override
public void upgradeRsp(int i) {
}
@Override
public void upgradeProgress(int i) {
}
});
// 机器人版本信息
Version version = CsjRobot.getInstance().getVersion();
// 底层软件更新
version.softwareUpgrade(new OnUpgradeListener() {
@Override
public void checkRsp(int i) {
}
@Override
public void upgradeRsp(int i) {
}
@Override
public void upgradeProgress(int i) {
// 更新进度
}
});
// 获取机器人版本信息
version.getVersion(new OnGetVersionListener() {
@Override
public void response(String s) {
// 返回的版本信息
}
});
```
### 其他功能
```
java
// 其他功能
Extra extra = CsjRobot.getInstance().getExtra();
// 获取机器人的热词列表
extra.getHotWords(new OnHotWordsListener() {
@Override
public void hotWords(List<String> list) {
// 返回的热词列表
}
});
// 设置热词功能
extra.setHotWords(null);
// 恢复出厂设置
extra.resetRobot();
```
\ No newline at end of file
docs/穿山甲机器人AI手册_Android发行版.pdf
View file @
24f41902
No preview for this file type
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论