`
wangiyeng
  • 浏览: 3363 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

机器人判断人是否接近

阅读更多
一个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();
    }
分享到:
评论

相关推荐

    武术擂台格斗机器人代码

    其次,边缘识别是机器人判断自身与擂台边缘距离的重要手段。这通常依赖于图像处理技术,比如霍夫变换或者Canny边缘检测算法。这些算法可以帮助机器人在复杂的环境下识别出边界,避免跌落擂台,同时也可以利用边缘...

    工业机器人课后习题.docx

    搬运机器人常用的末端执行器包括吸附式、夹钳式和仿人式等几种类型,每种都有其适用的场合。 #### 码垛机器人的结构形式 码垛机器人根据结构的不同,可以分为龙门式、摆臂式和关节式三种类型。 #### 码垛机器人的...

    机器人行业专题报告:人形机器人的前世今生.docx

    人形机器人,作为一种高度模拟人类形态的智能机器人,其发展历程可以追溯到古代,历经了从简单结构驱动到高度智能化的转变。按照优必选公司的分类,人形机器人分为L0至L5六个层级,代表着从无智能到拥有接近人类思维...

    机器人技术创新报告.pdf

    外形方面,机器人将更加接近人类,拥有高度逼真的皮肤、头发、五官等,使人难以分辨其与真人的区别,如同科幻电影中的形象。 在逻辑分析能力上,智能机器人将具备更强的自主判断和问题解决能力。例如,当能量不足时...

    基于Kinect的仿人机器人实时模仿系统.pdf

    仿人机器人的最终目标是研制出具备人类特征,如行走、感官、思维、判断等能力的高级智能机器人,以期在某些程度上能够替代人类并服务于人类。 动作捕捉技术是实现机器人模仿人类运动的关键环节之一。动作捕捉系统...

    机器人技术与世界智能机器人发展对人类的影响 图.doc

    "机器人技术与世界智能机器人发展对人类的影响" 机器人技术是 21 世纪科技发展的热点之一,建立在多学科发展的基础之上,具有应用领域广、技术新、学科综合与交叉性强的特点。传统的机器人技术涉及机械学、电子学、...

    机器人技术视频讲座(64讲)-机器人技术46-机器人控制的模糊算法.zip

    3. **感知与决策**:模糊逻辑可以处理传感器数据的不确定性,帮助机器人做出更接近人类决策的判断。 4. **力控应用**:在抓取和操纵物体时,模糊控制可以帮助机器人调整接触力,避免损坏脆弱物品或自身。 5. **...

    灭火机器人

    5. **决策逻辑**:根据传感器输入和当前状态,机器人需要能做出合适的决策,例如是否接近火源,是否需要避开障碍物,或是是否需要返回充电。 6. **通信模块**:如果机器人需要远程监控或操作,还需要包含无线通信...

    传感器新视角--传感器在机器人中的应用.doc

    接近觉传感器帮助机器人判断目标物的接近程度,实现避障功能。 这些传感器的综合运用,使得机器人能够在各种环境中执行复杂的任务,从而推动了自动化和智能化的发展。随着技术的不断进步,未来的机器人将更加智能化...

    机器人技术视频讲座(64讲)-机器人技术44-机器人控制的模糊算法.zip

    例如,如果一个机器人试图避开障碍物,模糊逻辑可以根据距离、速度和方向等参数的模糊范围来判断何时应该转向或者停止。这些参数不再是精确的数值,而是模糊集中的成员度,对应不同的接近程度。 讲座可能涵盖了以下...

    扎气球机器人课件.pptx

    红外传感器作为距离检测装置,帮助机器人判断与气球的距离。Luby传感器则在控制系统中起到决策作用,根据接收到的信息指挥机器人的行动。电源系统采用白盒电池,为整个机器人提供动力。 Woody控制器是机器人的心脏...

    救援机器人

    力/扭矩传感器能够测量施加在机器人手部上的力量和扭矩,这对于判断抓握力度是否合适至关重要。在救援过程中,过大的力可能会伤害到受害者,而力不足则可能导致抓取失败。 ##### 3. 滑动传感器 滑动传感器可以帮助...

    机器人的感知分析.doc

    机器人的感知系统是实现智能机器人与人、环境相互操作的重要的 I/O 工具,要使机器人和人的功能更为接近,以从事更高级的工作,就要求机器人能有判断力,这就要给机器人安装物体检口传感器,特别是视觉传感器和触觉...

    机器人现场编程-工业机器人使用安全规范.pptx

    这样,任何人都能判断机器人当前是否处于可接近或危险的状态。 这些安全原则不仅适用于川崎工业机器人,也广泛适用于其他品牌的工业机器人。在实施现场编程时,严格遵循这些规范是保障生产安全、预防事故的关键。...

    机器人的技术伦理及影响.pdf

    这表明,人们期望机器人能够在各方面接近甚至达到人类水平,这不仅涉及机器人的技术性能,也涉及机器人与人类的互动方式和交互设计。 第四,控制论对于机器人与人类关系的解读,提出了机器人和人类可以被视为同为...

    自动回复机器人

    QQ自动回复机器人是一种智能化的工具,它通过编程和人工智能技术,帮助用户在QQ聊天平台实现自动应答。...随着AI技术的进步,这类机器人的表现将越来越接近人类,为日常生活和工作带来极大的便利。

    智能消防机器人的融合感知技术.pdf

    超声波避障传感器能够根据设定的安全距离阈值来判断机器人与障碍物是否过于接近。 火源探测是消防机器人的另一关键功能。火源探测可以通过火焰的温度、烟雾、燃烧气体和热辐射等特征来完成。火焰放射出的光波长度...

    28杠+控制+机器人代码

    4. **随机性与策略平衡**:为了使机器人的行为更接近人类玩家,可能需要引入一定的随机性,同时还要结合固定或学习到的策略,避免过于机械化的表现。 5. **人机交互**:机器人可能需要与游戏服务器和用户界面进行...

    MEMS传感器如何助力机器人越来越智能.doc

    例如,通过使用MEMS加速度传感器和陀螺仪等设备,可以监测机器人的运动状态,一旦检测到接近人类或其他障碍物时,能够及时减速或停止动作,避免潜在的伤害事故。 ##### 2. 异常状况检测 除了安全防护外,MEMS...

    程序\避障\基于单片机的机器人避障程序,实现机器人的自动转向

    在这个避障项目中,单片机会通过传感器(例如红外线传感器或超声波传感器)收集环境信息,判断是否有障碍物接近。一旦检测到障碍,它将触发相应的转向或停止指令。 接下来,我们讨论避障算法的设计。通常,避障程序...

Global site tag (gtag.js) - Google Analytics