Jori_Lee 发表于 2017-7-9 19:35:50

想体验和小宝宝一起生活吗?婴儿抚育机器人可以帮到你!

请看视频:http://cache.tv.qq.com/qqplayerout.swf?vid= n0521xlf31r
项目简介:
这是一款帮助您体验如何与婴儿相处的机器人。
在第一个关卡,我们的机器人内置了几款通用标准姿势,通过陀螺仪和传感器判断当前触碰位置及压力值,指导准爸妈们学习正确的抱姿。进入第二关后机器人通过Realsense扫描分析室内环境,当遇到可能对婴儿造成威胁的物品时,会预警提示,帮助营造一个安全的家庭环境。在“说说说”环节,机器人会模拟婴儿学习说话的情境,只有当反复教她说某个词句到达一定量次后,她才会掌握这个词句。同时它会默默记录您的语言习惯,不时说出您常说的词句,让您意识到作为家长在孩子的成长过程中扮演着“被学习者”的角色。
如果您想要个孩子,可以借助这款机器人提前感受当爸妈的体验,为未来对的婴儿抚育做好准备;如果您不确定会不会要孩子,和机器人互动的体验也可以作为参考依据。
硬件清单:DF Robot (SKU:ROB0112)履带机器人移动平台      Intel RealsenseCamera R200   Lattepanda   显示屏Arduino   触摸传感器   陀螺仪   微型音箱或喇叭   USB麦克风   LED灯珠   5号电池
可能使用的工具及设备:十字螺丝刀热熔胶枪3D打印机缝纫机激光切割机 等
使用场景:


制作步骤:1.3D建模——打印3D模型 —— 拼接3D模型


2.连接Intel Realsense Camera R200、Lattepanda与显示屏、Arduino、触摸传感器、陀螺仪、喇叭与USB麦克风和LED
a
3.组装DF Robot (SKU:ROB0112) 履带机器人移动平台

4.上传代码using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Threading;


namespace version2
{
    public partial class Form1 : Form
    {
      private int index;
      //private string[] vocabulary = new string[] { };
      private PXCMSession session;
      private bool closing = false;
      private volatile bool stop = true;
      //protected string curr_module_name;
      public bool IsChinese;
      protected int curr_volume;
      protected int curr_pitch;
      protected int curr_speech_rate;
      public bool _isSuspended = false;
      Thread thread_voice_recognition;
      Thread thread_check_suspended;
      
      public Form1(PXCMSession session)
      {
            InitializeComponent();
            this.session = session;
            Stop.Enabled = false;
            English.Checked = true;
            
      }

      private void Start_Click(object sender, EventArgs e)
      {
            Start.Enabled = false;
            Stop.Enabled = true;
            stop = false;
            //DoVoiceRecognition();
            //Thread thread_face_tracking = new Thread(DoVoiceRecognition);
            thread_voice_recognition = new Thread(DoVoiceRecognition);
            thread_voice_recognition.Start();
            System.Threading.Thread.Sleep(5);
            thread_check_suspended = new Thread(CheckSuspended);
            thread_check_suspended.Start();
            /*Thread thread_speechSynthesis = new Thread(DoSpeechSynthesis);
            thread_speechSynthesis.Start();
            System.Threading.Thread.Sleep(5);*/
            English.Enabled = false;
            Chinese.Enabled = false;
            textBox1.Enabled = false;
            textBox2.Enabled = false;
            textBox3.Enabled = false;
            //DoVoiceRecognition();
            //DoSpeechSynthesis();
            
      }

      public void CheckSuspended()
      {
            if(_isSuspended)
            {
                thread_voice_recognition.Suspend();
            }
            else
            {
                if(thread_voice_recognition.ThreadState == ThreadState.Suspended)
                {
                  thread_voice_recognition.Resume();
                }
               
            }
      }

      public string AlertToString(PXCMSpeechRecognition.AlertType label)
      {
            switch (label)
            {
                case PXCMSpeechRecognition.AlertType.ALERT_SNR_LOW: return "SNR_LOW";
                case PXCMSpeechRecognition.AlertType.ALERT_SPEECH_UNRECOGNIZABLE: return "SPEECH_UNRECOGNIZABLE";
                case PXCMSpeechRecognition.AlertType.ALERT_VOLUME_HIGH: return "VOLUME_HIGH";
                case PXCMSpeechRecognition.AlertType.ALERT_VOLUME_LOW: return "VOLUME_LOW";
                case PXCMSpeechRecognition.AlertType.ALERT_SPEECH_BEGIN: return "SPEECH_BEGIN";
                case PXCMSpeechRecognition.AlertType.ALERT_SPEECH_END: return "SPEECH_END";
                case PXCMSpeechRecognition.AlertType.ALERT_RECOGNITION_ABORTED: return "REC_ABORT";
                case PXCMSpeechRecognition.AlertType.ALERT_RECOGNITION_END: return "REC_END";
            }
            return "Unknown";
      }

      //private delegate void VoiceRecognitionCompleted();
      private void DoVoiceRecognition()
      {
            //bool _isChinese = this.IsChinese;
            VoiceRecognition vr = new VoiceRecognition();
            vr._isChinese = this.IsChinese;
            vr.DoIt(this, session);

            /*this.Invoke(new VoiceRecognitionCompleted(
                delegate
                {
                  Start.Enabled = true;
                  Stop.Enabled = false;
                  //Form1.Enabled = true;
                  if (closing) Close();
                }
            ));*/
      }

      /*private void DoSpeechSynthesis()
      {
            int volume = int.Parse(textBox1.Text);
            int pitch = int.Parse(textBox2.Text);
            int rate = int.Parse(textBox3.Text);
            bool _isChinese = this.IsChinese;
            SpeechSynthesis ss = new SpeechSynthesis();
            ss.DoIt(volume, pitch, rate, 1, "Today will be sunday", _isChinese);
            
      }*/

      private delegate void TreeViewUpdateDelegate(string line);
      public void PrintConsole(string line)
      {
            Result.Invoke(new TreeViewUpdateDelegate(delegate(string line1) { Result.Nodes.Add(line1).EnsureVisible(); }), new object[] { line });
      }



      public void PrintStatus(string line)
      {
            //Status2.Invoke(new TreeViewUpdateDelegate(delegate(string line1) { Status2.Nodes.Add(line1).EnsureVisible(); }), new object[] { line });
            System.Console.WriteLine(line);
      }

      

      private delegate void ConsoleReplaceTextDelegate(TreeNode tn1, string text);
      public static string TrimScore(string s)
      {
            s = s.Trim();
            int x = s.IndexOf('[');
            if (x < 0) return s;
            return s.Substring(0, x);
      }

      public void ClearScores()
      {
            foreach (TreeNode n in Result.Nodes)
            {
                string s = TrimScore(n.Text);
                if (s.Length > 0)
                  Result.Invoke(new ConsoleReplaceTextDelegate(delegate(TreeNode tn1, string text) { tn1.Text = text; }), new object[] { n, s });
            }
      }

      public void SetScore(int label, int confidence)
      {
            for (int i = 0; i < Result.Nodes.Count; i++)
            {
                string s = TrimScore(Result.Nodes.Text);
                if (s.Length == 0) continue;
                if ((label--) != 0) continue;
                Result.Invoke(new ConsoleReplaceTextDelegate(delegate(TreeNode tn1, string text) { tn1.Text = text; }), new object[] { Result.Nodes, Result.Nodes.Text + " [" + confidence + "%]" });
                break;
            }
      }

      private void Stop_Click(object sender, EventArgs e)
      {
            Start.Enabled = true;
            Stop.Enabled = false;
            stop = true;
            English.Enabled = true;
            Chinese.Enabled = true;
            textBox3.Enabled = true;
            textBox2.Enabled = true;
            textBox1.Enabled = true;
      }

      private void English_Click(object sender, EventArgs e)
      {
            label1.Text = "Volume";
            label2.Text = "Pitch";
            label3.Text = "Rate";
            Start.Text = "Start";
            Stop.Text = "Stop";
            this.IsChinese = false;
            
      }
   
      private void Chinese_Click(object sender, EventArgs e)
      {
            label1.Text = "音量";
            label2.Text = "音调";
            label3.Text = "音速";
            Start.Text = "开始";
            Stop.Text = "结束";
            this.IsChinese = true;
      }
      
    }
}


5.组装外壳与硬件


现在你拥有一个像小宝宝一样的机器人了。
我们还在考虑,在你有了真正的小宝宝以后,能不能让它变身成宝宝的玩伴。





2506789591 发表于 2018-11-29 19:37:27

66666
页: [1]
查看完整版本: 想体验和小宝宝一起生活吗?婴儿抚育机器人可以帮到你!