一个Cruzr机器人项目,要实现人离开显示迎宾表情,人接近跳到程序主页,
方法是:在onCreate 中加传感器监听,在每2s内检测数据变动,判断距离是否在指定范围内,在范围内则发出 迎接语音提示,然后再判断是否在主页,否 则用finish 和 startActivity跳转到主页
下面是代码
void initWelcome(){
try {
// List<SensorDevice> sensorDeviceList = sensorManager.getDeviceList();
// for (SensorDevice sd:sensorDeviceList ) {
// Log.d(TAG, sd.getDescription()+sd.getId()+sd.getName()+sd.getType());
// }
SensorManager sensorManager = Robot.globalContext().getSystemService(SensorManager.SERVICE);
String sensorId="human_detect";
//判断是否打开,否则打开
if(sensorManager.isEnabled("human_detect")){
Log.d(TAG, "human_detect isEnabled");
}else{
Log.d(TAG, "human_detect is not Enabled");
sensorManager.enable(sensorId).get();
}
//传感器监听
SensorListener sensorListener = new SensorListener() {
//传感器变化事件
@Override
public void onSensorChanged(SensorDevice sensorDevice, SensorEvent sensorEvent/* [1] */) {
VisualManager mVisualManager = VisualManager.getInstance();
EmotionManager emotionManager = Robot.globalContext().getSystemService(EmotionManager.SERVICE);
ExpressingOption /* [1] */ option = new ExpressingOption.Builder(
Uri.parse("emotion://va/littlestar_smile")).setSticky(true).setLoops(1).build();
if(sensorEvent.getTimestamp()-lastTime>2000){//间隔2秒 判断一次
float[] tmpValues=sensorEvent.getValues(); //传感器的值
if(tmpValues[0]<2&&tmpValues[1]<0.8){ //现在有人接近了
//关闭空闲功能
LeisureManager leisureManager=LeisureManager.get();
leisureManager.prohibitedLeisure();
leisureManager.wakeup();
if(!humanStand){ //之前没有人,现在有人了
mVisualManager.stop("visualIndex");//人脸检测关闭
// RobotAssist.motionRest();
//Date 的 getHours()过时的方法
Calendar cal = Calendar.getInstance();
int hours = cal.get( Calendar.HOUR_OF_DAY );
String greet="你好";
if (hours>7&&hours<11){
greet="上午好";
}else if(hours>12){
greet="下午好";
}else if(hours>10&&hours<14){
greet="中午好";
}
greet+="我是门诊导诊机器人,有什么需要帮忙的?";
RobotAssist.speeekWithMotion2(greet).done(new DoneCallback() {
@Override
public void onDone(Object o) {
if(!isCurrent)
restartApp2();//回到首页
}
});
emotionManager.dismiss();//关表情
// initVisual();
// getCurr();
}
humanStand=true;
}else {
if(humanStand=true){
humanStand=false;
emotionManager.express(option); //promise =
RobotAssist.motionRest();
}
}
lastTime=sensorEvent.getTimestamp();
values = tmpValues; //[2.0, 0.0]
// initVisual();
}
// Log.d(TAG, sensorEvent.toString());
}
};
sensorManager.registerListener("human_detect", sensorListener);
} catch (SensorException e) {
e.printStackTrace();
} catch (CancelledException e) {
e.printStackTrace();
}
}
// void restartApp1(){
// ActivityManager manager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
// manager.restartPackage("com.example.test");
// }
void restartApp2(){
Intent intent= new Intent(IndexActivity.this,IndexActivity.class);
startActivity(intent);
// System.exit(0);
finish();
}
分享到:
相关推荐
机器人仿人竞速赛,通过舵机传感器控制,来完成机器人仿人竞速赛
类人机器人可以实现越来越复杂的功能并适应更复杂的环境。 为了促进类人机器人技术的发展,北京理工大学的一个团队从2000年开始进行类人机器人的研究。他们的研究主要集中在类人机器人的稳定行走,全身复杂运动,人...
: 介绍了国外仿人机器人发展的特点, 详细分析了日本、 美国和韩国等国几种仿人机器人的主要技术及 其技术指标。
内容包括仿人机器人学的运动学、ZMP和动力学、双足步态规划、全身运动模式的生成和动力学仿真等,是对10多年来仿人机器人的研究成果的总结。本书图文并茂,深入浅出,内容丰富,对广大读者了解和掌握当今世界在仿人...
首先,我们要了解该报警出现的原因:现在所选的负载设定值超过了容许值的90%
仿人形机器人设计专门教材,有详细介绍关于人形机器人的设计
介绍了仿人机器人设计和实现过程,内容详细,值得仿人机器人的学习爱好者收藏
仿人形机器人
工业机器人相关基础知识,主要是判断试题集
当类人机器人与人类之间发生物理交互时,可能会发生潜在的有害物理接触。 这份报告的目的是研究使用胡椒类人形机器人照顾老年人时的安全管理方面。 无法预测老年人对Pepper功能的反应。 因此,有必要事先弄清保证...
机器人的执行机构机器人的分类空天机器人: –空间机器人 –太空机器人 陆地机器人: –自主机器人 –半自主机器人 –遥控机器人 水下机器人: –ROV(遥控潜水器) 机器人的感知系统机器人的基本组成 机器人的能源...
人形机器人应用程序探究——基于Nao机器人 基础文档
邮件机器人邮件机器人邮件机器人邮件机器人
资源名称:机器人学:智能机器人传感技术内容简介: 本书深入系统地论述了各类智能机器人传感器的原理、结构、性能,以及信号处理和应用技术,是我国第一部全面论述智能机器人传感技术的专著。全书共四编,计27章。...
本书提供了一系列多元且实用的工具,可用于复杂机器人系统的建模和控制,以及数字人的建模和运动生成。书中首先介绍机器人运动学的数学原理和控制系统设计,然后将机器人算法和建模过程向更高维度、更大规模和更复杂...
仿人机器人_仿人机器人步行运动学建模与仿真_马飞
这是一次关于打造智能机器人的高级技术+案例+算法课程,课程内容的强大之处在于,教会同学们从全方位的角度来实践智能机器人的开发与打造。课程包括了了三套课程, 分别是机器人基础原理与实践,机器人云台基础和...
本文系硕士毕业论文,内容包含了机器人步态规划方法,轨迹曲线仿真,控制方法试验等重点内容
穿戴式助行机器人是一种交互式机器人系统,由使用者穿戴在身上,使用者 通过外部控制设备或自动控制器向穿戴式助行机器人传达控制指令,穿戴式助行 机器人向使用者提供运动所需的能量和力量,辅助使用者执行使用者...
机器人知识、机器人三原则、人与机器人关系全文共3页,当前为第1页。机器人知识、机器人三原则、人与机器人关系全文共3页,当前为第1页。机器人知识、机器人三原则、人与机器人关系 机器人知识、机器人三原则、人与...