<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Robotkang</title>
    <description>欢迎来到我的个人网站~</description>
    <link>http://robotkang.cc/</link>
    <atom:link href="http://robotkang.cc/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Sun, 31 Dec 2017 03:38:52 +0000</pubDate>
    <lastBuildDate>Sun, 31 Dec 2017 03:38:52 +0000</lastBuildDate>
    <generator>Jekyll v3.6.2</generator>
    
      <item>
        <title>如何高效且优雅的翻墙</title>
        <description>&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/image/%E7%A7%91%E5%AD%A6%E4%B8%8A%E7%BD%91.png&quot; alt=&quot;上网&quot; /&gt;
&lt;br /&gt;
  以前是知道有翻墙这么个东西，总感觉天朝的网络世界已经够我遨游了，而且处处是一片祥和，所以就觉得墙内挺好，也就懒得架梯子翻墙了，但最近时不时的要上网查点技术资料，有的时候需要频繁的访问国外的一些网站，可在天朝是不能随随便便访问外网的。搜索一番，在无意中发现了&lt;a href=&quot;https://i.sihua.me/?u=9831&quot;&gt;SihuaCloud&lt;/a&gt;这个网站。免费使用了一下感觉各方面都很满意，网速很快很稳定，不过免费的有各种不尽人意的地方，比如什么定时断网、流量限制、时间限制什么的，用起来各种不爽，于是索性就买了一年的会员。接下来就是使用它了，这段时间一直在用。      &lt;br /&gt;
&lt;br /&gt;
  我一直认为，使用vpn 本身并没有错误，大多数用vpn的人是想使用国外的服务，facebook twitter youtube google 等等，这些做的比国内好许多产品，只是因为政治上的原因而禁止进入中国，身处大陆地区的网民才只好用vpn这种工具翻墙。       &lt;br /&gt;
&lt;br /&gt;
  如果大家有更好的方案，可以一起探讨一下。(∩_∩) (^o^)/~          &lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;p style=&quot;color: #FF2D2D&quot;&gt;
&lt;strong&gt;推荐大家使用付费的，包年包月也花不了几个钱，用着也省心&lt;/strong&gt;&lt;/p&gt;

&lt;!--| VPN服务商| 特点   |  月/价格  |官方网站  |
| :---:  | :----:  | :---:  | :---:  |
| Loco加速器   |  快速、稳定，支持所有设备，随时随地使用 |  ¥15  |  [点此进入][4]     |
| 流星加速器    |    无限流量，国内外节点，全部地域可用    |  ¥20 |  [点此进入][5]     |
| 赤兔加速器    |    一群有理想、无节操的青年们的诚意之作    |  ¥20 |  [点此进入][6]     |
| 豆荚VPN    |    轻便、客户端体积小，不与其他进程抢占CPU使用率 |  ¥20 |  [点此进入][7]     |
| 灰熊加速器    |    新用户注册即送1G 高速流量，不限带宽连接服务器    |  ¥20 |  [点此进入][8]     |
| 泰坦加速器    |  免费试用、多平台支持、快速稳定、数据加密 |  ¥25 |  [点此进入][9]     |
| GreenVPN    |  老牌VPN、快速、稳定的网络优化服务、售后很好 |  ¥18 |  [点此进入][10]     |
| 天行VPN    |  老牌VPN、提供世界各地VPN代理服务器，低延时、高稳定性 |  ¥20 |  [点此进入][11]     |--&gt;

&lt;p&gt;&lt;a href=&quot;https://i.sihua.me/?u=9831&quot;&gt;&lt;img style=&quot;border: 0px&quot; src=&quot;http://omjh2j5h3.bkt.clouddn.com/image/Google%20earth.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;自从翻墙以来，感觉是发现了新大陆！最近发现谷歌地球是相当…用一个词形容那就是“惊艳”，玩了一下午简直停不下来，当查看天朝的时候，发现并没有给任何一个城市建模（反正截止目前没得），这也难怪，与世隔绝嘛，大家都懂。         &lt;br /&gt;
&lt;br /&gt;
  墙外的世界是如此美好，先让我呼吸下新鲜空气先(^o^)/~&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;如果注定要一个人赶路，那就此告别吧，大漠孤烟，夕阳西下。再喝最后一碗酒，然后我就出发。不必挽留，无需相送。今日一别，来世再见。若他们问起我，就说我是尘世的一粒沙，本该浪迹天涯……
——来自《网易云音乐》&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

</description>
        <pubDate>Thu, 30 Nov 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/11/The-ladder/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/11/The-ladder/</guid>
        
        <category>博客</category>
        
        
      </item>
    
      <item>
        <title>怎样提高工作和学习的效率</title>
        <description>&lt;p&gt;　　在这个到处都是自媒体的时代，&lt;code class=&quot;highlighter-rouge&quot;&gt;微信公众号&lt;/code&gt;早已深入人心，或许我们每个人的微信里都或多或少订阅了各种各样的公众号。我其实早已在去年还在学校的时候就开始探索微信公众号了，记得当时开通自己的公众号后还很兴奋，首先让室友关注了一波，然后偶尔在上面更新几篇我最近在实验室各种DIY的过程和心得。不过，在我更新了一篇关于如何翻墙科学上网的文章后，不好的事情就发生了，当我再一次的登录我的账号的时候就登不上了，被官方给封了，说是被传播不良知识什么来的，我只想说我是大大的良民啊，教墙内之人翻墙出去查查资料也犯法吗ε=(´ο｀*)))唉，确实当时那段时间有关部门查封VPN的力度挺大的，只能说撞在枪口上了吧。就这样，我的第一个公众号就离我而去。&lt;/p&gt;

&lt;p&gt;　　但作为社会主义接班人，我过了几天又申请了一个公众号，但这个公众号我还没想好定位，发一些生活记录和技术文章吧又和我网站的文章重合了（那时我已搭建好了我的个人网站），所以说这个号又被晾在沙滩上了。&lt;/p&gt;

&lt;p&gt;　　哎（三声），直到有一天，我看到一个公众号是每天精选几条新闻发出来，我就在想这个形式还是不错的，正好我是有每天看科技新闻的习惯，可以将我看到的有价值的新闻&lt;code class=&quot;highlighter-rouge&quot;&gt;分享&lt;/code&gt;出来，总的来说有以下三个方面优点：一是可以将杂乱的新闻做下&lt;code class=&quot;highlighter-rouge&quot;&gt;二次分选&lt;/code&gt;传递给大家，订阅者每天只需几十秒就可以了解今天世界各地发生的主流新闻；二是可以督促我主动去了解各类新闻，随时了解周围所发生的事，拓展自己的知识面；三是可以可以锻炼一下自已的毅力坚持力，不出意外的话（要是过年回到家里就没得法子了，我家所在的位置都是没有网络滴，没错，你没看错，连手机都没有网络），我每天在早上8点左右都会推送一篇新闻的，以供大家了解时事，希望看到这篇文章的童鞋可以&lt;code class=&quot;highlighter-rouge&quot;&gt;关注&lt;/code&gt;一下&lt;strong style=&quot;color: #FF2D2D&quot;&gt;【订阅号：纵览天下事一简报】&lt;/strong&gt;，二维码在文章的下方，打开微信扫码即可关注，也许你觉得没有什么，但每增加一个订阅者就是对我的一份鼓励，鼓励我能长久的更新下去O(∩_∩)O哈哈~&lt;/p&gt;

&lt;p&gt;以上就是我的公众号运营之路，欢迎大家分享自己的所见所闻。&lt;/p&gt;

&lt;p&gt;&lt;strong style=&quot;color: #FF2D2D&quot;&gt;Slogan：&lt;/strong&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;每天几秒，纵览天下；十条简报，便知窗外！&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;新闻还在发生，我在这里等你，I   Want  U！！！&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/kanggzh.jpg&quot; width=&quot;130&quot; height=&quot;130&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;最后编辑时间为: Oct.02, 2017 at 08:03 pm&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;我觉得生命是最重要的，所以在我心里，没有事情是解决不了的。不是每一个人都可以幸运的过自己理想中的生活，有楼有车当然好了，没有难道哭吗？所以呢，我们一定要享受我们所过的生活。——《新不了情》
&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;　&lt;/p&gt;

</description>
        <pubDate>Tue, 07 Nov 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/11/How-to-improve-the-efficiency-of-work-and-study/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/11/How-to-improve-the-efficiency-of-work-and-study/</guid>
        
        <category>博客</category>
        
        
      </item>
    
      <item>
        <title>我的公众号运营之路</title>
        <description>&lt;p&gt;　　在这个到处都是自媒体的时代，&lt;code class=&quot;highlighter-rouge&quot;&gt;微信公众号&lt;/code&gt;早已深入人心，或许我们每个人的微信里都或多或少订阅了各种各样的公众号。我其实早已在去年还在学校的时候就开始探索微信公众号了，记得当时开通自己的公众号后还很兴奋，首先让室友关注了一波，然后偶尔在上面更新几篇我最近在实验室各种DIY的过程和心得。不过，在我更新了一篇关于如何翻墙科学上网的文章后，不好的事情就发生了，当我再一次的登录我的账号的时候就登不上了，被官方给封了，说是被传播不良知识什么来的，我只想说我是大大的良民啊，教墙内之人翻墙出去查查资料也犯法吗ε=(´ο｀*)))唉，确实当时那段时间有关部门查封VPN的力度挺大的，只能说撞在枪口上了吧。就这样，我的第一个公众号就离我而去。&lt;/p&gt;

&lt;p&gt;　　但作为社会主义接班人，我过了几天又申请了一个公众号，但这个公众号我还没想好定位，发一些生活记录和技术文章吧又和我网站的文章重合了（那时我已搭建好了我的个人网站），所以说这个号又被晾在沙滩上了。&lt;/p&gt;

&lt;p&gt;　　哎（三声），直到有一天，我看到一个公众号是每天精选几条新闻发出来，我就在想这个形式还是不错的，正好我是有每天看科技新闻的习惯，可以将我看到的有价值的新闻&lt;code class=&quot;highlighter-rouge&quot;&gt;分享&lt;/code&gt;出来，总的来说有以下三个方面优点：一是可以将杂乱的新闻做下&lt;code class=&quot;highlighter-rouge&quot;&gt;二次分选&lt;/code&gt;传递给大家，订阅者每天只需几十秒就可以了解今天世界各地发生的主流新闻；二是可以督促我主动去了解各类新闻，随时了解周围所发生的事，拓展自己的知识面；三是可以可以锻炼一下自已的毅力坚持力，不出意外的话（要是过年回到家里就没得法子了，我家所在的位置都是没有网络滴，没错，你没看错，连手机都没有网络），我每天在早上8点左右都会推送一篇新闻的，以供大家了解时事，希望看到这篇文章的童鞋可以&lt;code class=&quot;highlighter-rouge&quot;&gt;关注&lt;/code&gt;一下&lt;strong style=&quot;color: #FF2D2D&quot;&gt;【订阅号：纵览天下事一简报】&lt;/strong&gt;，二维码在文章的下方，打开微信扫码即可关注，也许你觉得没有什么，但每增加一个订阅者就是对我的一份鼓励，鼓励我能长久的更新下去O(∩_∩)O哈哈~&lt;/p&gt;

&lt;p&gt;以上就是我的公众号运营之路，欢迎大家分享自己的所见所闻。&lt;/p&gt;

&lt;p&gt;&lt;strong style=&quot;color: #FF2D2D&quot;&gt;Slogan：&lt;/strong&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;每天几秒，纵览天下；十条简报，便知窗外！&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;新闻还在发生，我在这里等你，I   Want  U！！！&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/kanggzh.jpg&quot; width=&quot;130&quot; height=&quot;130&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;最后编辑时间为: Oct.02, 2017 at 08:03 pm&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;我觉得生命是最重要的，所以在我心里，没有事情是解决不了的。不是每一个人都可以幸运的过自己理想中的生活，有楼有车当然好了，没有难道哭吗？所以呢，我们一定要享受我们所过的生活。——《新不了情》
&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;　&lt;/p&gt;

</description>
        <pubDate>Mon, 02 Oct 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/10/WeChat/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/10/WeChat/</guid>
        
        <category>博客</category>
        
        
      </item>
    
      <item>
        <title>复杂寻线小车的原理及实现</title>
        <description>&lt;p&gt;学校的那台[nao机器人]系统版本比较低了，官方慢慢的不支持了，所以我就给它来了一次升级，好在刷机比较成功。不过刷机后机器人开机的时间比较长了，估计是硬件有点跟不上了吧…  现在把升级过程方法记录在这里，大家也可以参考一下~&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;机器人刷机的办法一般有两种，第一种是通过choregraph来，先去&lt;a href=&quot;https://www.ald.softbankrobotics.com/en&quot;&gt;官网&lt;/a&gt;community-source-documentions-NAOQI OS下载你需要的系统镜像文件版本，然后再去chore（连接-高级-更新机器人系统），这种是比较正常的办法~但是有时候机器人系统完全崩溃，想要整个机器人恢复到出厂设置，变成一台全新的机器人，那么就需要用到下面的方法了。&lt;/li&gt;
  &lt;li&gt;在给机器人刷机恢复至出厂设置前，你需要准备以下几样：&lt;br /&gt;
a) NAOQI os&lt;br /&gt;
b) Flasher（官网下，下载位置与OS下载位置相同）&lt;br /&gt;
c) 大于4G的U盘&lt;br /&gt;&lt;/li&gt;
  &lt;li&gt;下面我们就开始刷机。&lt;br /&gt;
第一步，先打开flasher，注意要用管理员权限打开，然后插上U盘，选中你的U盘。&lt;br /&gt;
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/nao%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%88%B7%E6%9C%BA%E6%96%87%E7%AB%A0/2.png&quot; alt=&quot;world&quot; /&gt;
第二步，选中U盘之后，勾选 Factory reset，这一步一定要勾选，因为只有这样才能把原本的系统完全抹去。&lt;br /&gt;
第三步，点击&lt;code class=&quot;highlighter-rouge&quot;&gt;write&lt;/code&gt;，开始刻写镜像文件OS至U盘。&lt;br /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;在这一步骤，很可能出现错误，显示在记得U盘里已经有了什么driver什么的，出现这一错误的原因是因为U盘已经被windows系统装上了驱动，需要清除，所以我们给它清除一下即可。
点击电脑左下角“开始”，输入“diskpart”，这个是Windows自带的。&lt;/code&gt;
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/nao%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%88%B7%E6%9C%BA%E6%96%87%E7%AB%A0/1.png&quot; alt=&quot;world&quot; /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;然后，我们就按照下图的指示，一步步的来clean你的U盘。注意最好把盘里重要的资料备份，因为这步操作会把盘里的东西全抹掉。&lt;/code&gt;
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/nao%E6%9C%BA%E5%99%A8%E4%BA%BA%E5%88%B7%E6%9C%BA%E6%96%87%E7%AB%A0/3.png&quot; alt=&quot;world&quot; /&gt;
接下来我们就可以去write了。&lt;br /&gt;
第四步，write完成后，就要开始正式刷机了。&lt;br /&gt;
首先，关闭机器人，刷机要在机器人关闭情况下进行，但是切记要确保机器人有电，否则刷机过程中没电了就得重刷了。&lt;br /&gt;
接下来把U盘插入机器人后脑部的USB，然后按住breast button要等到等变蓝再松手，机器人会启动，button会持续开始闪烁蓝灯，这就意味着开始刷机了，然后耐心等待即可，大概需要十分钟左右。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;刷机成功，机器人会说话，大概意思就是让你触摸它的头部或者手部脚部它就会wake up，然后就算是刷机彻底成功啦~就可以愉快的继续使用NAO了。&lt;br /&gt;&lt;/p&gt;

&lt;p style=&quot;color: #FF2D2D&quot;&gt;
&lt;strong&gt;话说，中午的时候外甥女给我发来几张图片，点开一看，原来今天是我们成为QQ好友整七年的日子，感觉腾讯这个小功能做的还是蛮贴心的，也觉得时间过得还真是快啊...所以下班后去超市买了十块钱的瓜子庆祝了一下...&lt;/strong&gt;
&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;总有一天，我会克服请假、签证、资金等种种羁绊，远渡重洋，跋涉万里，直到北欧大陆的尽头，在北极光的照耀下，拿出冻得快要没电的手机，打开网易云音乐，点开这首victory ，我要看看是怎样的陆地，怎样的天空，怎样的海洋，怎样的国家，怎样的人民，怎样的环境，怎样的生活，能孕育出这样的歌曲。
&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
        <pubDate>Wed, 06 Sep 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/09/the-car-of-follow-line/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/09/the-car-of-follow-line/</guid>
        
        <category>博客</category>
        
        
      </item>
    
      <item>
        <title>永远年轻，永远热泪盈眶</title>
        <description>&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/2017-03-25.png&quot; alt=&quot;world&quot; /&gt;&lt;/p&gt;

&lt;p&gt;在毕业之后，忙于各种事情，一直没有静下心来写一点东西，上一篇博客还是在5月底的时候，博客闲了，但人儿一直在忙碌，今天我就趁着晚饭后的闲暇时光记录一下我这几个月来所度过的时光(^o^)/~
&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;第一件事就是毕业，六月，一个美好而又伤感的季节，之前一直再看着别人毕业，拍照，聚餐，求职…，当自己真正经历这些的时候，一切是那么坦然。时间在不断的推着你往前走，有些时候，有些事情，都是那么的顺其自然。&lt;/p&gt;

&lt;p&gt;第二件事就是热度永远都是那么高的求职找工作，很庆幸在经过自己一段时间的努力进入到了自己喜欢的公司，做着自己喜欢的事情，与优秀的人在一起工作、学习是件很爽的事情。永远年轻，永远热泪盈眶。&lt;/p&gt;

&lt;p&gt;第三件事情就是在工作之前回家呆了半个月。随着自己的成长，离家也越来越远，在家的日子也越来越少。小学在隔壁的村子里，然后到了20公里外的旗里。初中也是在旗里，高中就到了100多公里外的呼和浩特读书，大学跑到了1500公里外的重庆求学，毕业之后到了2000多公里外的深圳做了一位南飘(～￣▽￣)～。所以这半个月也许是未来几年在家里呆的最长的时间了吧，一直很欣赏一句话：当回家成了一种奢侈，才明白成长是一条离家远行的路！远行，是为了离家更近一些。&lt;/p&gt;

&lt;p&gt;第四件事情就是为大学的班级体做了一个&lt;a href=&quot;http://robotkang.cc/college/&quot;&gt;班级主页和纪念视频&lt;/a&gt;，这是一件很美好也很有意义的事情，也许多少年后，班级里的每一个人都可以在我的网站和纪念视频里找到他自己年少时的影子。不过个人感觉有一点不足的就是没有留下每位同学的个人视频。&lt;/p&gt;

&lt;p&gt;PS：蛋疼的是留言系统又挂了，多说挂了，网易云更贴挂了……接下来也不知道该用什么留言插件了，先放着后来再说吧&lt;/p&gt;

&lt;p&gt;在这个博客里，以后属于技术的文字可能真的会越来越少。但我深深的热爱着技术。但我更想写多一点生活在这里，哪怕很无聊，哪怕是流水账，我希望很多年后的某一天，有个地方可以让我回过头，看看当初的自己。也希望将来的某一天，老朋友进来我跟他一起回味，新朋友进来我跟他一起分享。&lt;/p&gt;

&lt;p&gt;不是放弃追求，而是追求这个年纪眼里的酷。         &lt;br /&gt;
学老罗引用那句话结尾，永远年轻，永远热泪盈眶。&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;男人炫耀的资本不是你现在有多少钱，有多大的权利。而是你经历了什么，越过了多大的坎，跳过了多深的坑照样一身傲气，最后完成了自己的梦想成家立业 。到那时你即使身无分文，出门人家也瞧得起你。人家可能会说，那个男孩当年是个搬砖的，现在一步一步爬成了一个大老板。而你开着保时捷跑在马路上横冲直撞，人家只会说这孩子当初穷的时候不坚持梦想，把自己的礼节、知识全搞丢了，走了错路。虽然有了钱，但也一无所有。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;hr /&gt;
&lt;p&gt;本文由 &lt;a href=&quot;http://robotkang.cc/about/&quot;&gt;KangZhijun&lt;/a&gt; 创作，采用 &lt;a href=&quot;https://creativecommons.org/licenses/by/4.0/&quot;&gt;知识共享署名4.0&lt;/a&gt; 国际许可协议进行许可&lt;br /&gt;
本站文章除注明转载/出处外，均为本站原创或翻译，转载前请务必署名&lt;br /&gt;
最后编辑时间为: Aug 01, 2017 at 09:22 pm　&lt;/p&gt;

</description>
        <pubDate>Tue, 01 Aug 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/08/%E6%B0%B8%E8%BF%9C%E5%B9%B4%E8%BD%BB-%E6%B0%B8%E8%BF%9C%E7%83%AD%E6%B3%AA%E7%9B%88%E7%9C%B6/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/08/%E6%B0%B8%E8%BF%9C%E5%B9%B4%E8%BD%BB-%E6%B0%B8%E8%BF%9C%E7%83%AD%E6%B3%AA%E7%9B%88%E7%9C%B6/</guid>
        
        <category>闲言碎语</category>
        
        
      </item>
    
      <item>
        <title>闲来无事，自己做了一个arduino履带超声波避障小车</title>
        <description>&lt;p&gt;　　这我看到网上有很多小伙伴做的超声波壁障小车都是用减速电机来作为动力输出，我觉得自己再做一个这样的意义也不怎么大，正好手头也没有电机驱动板。于是我就想能不能用连续旋转舵机舵机来作为动力输出，实验室也有很多这样的的舵机，我就不用在某宝上花钱买了O(∩_∩)O,利用一周多的课余时间终于把这个小玩意儿搞好了，本着开源共享的理念，下面就让我细细道来&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;材料：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;小车底盘、履带&lt;/li&gt;
  &lt;li&gt;两个连续旋转舵机、一个标准小舵机（用来旋转超声波模块）&lt;/li&gt;
  &lt;li&gt;一个HC-SR04超声波模块、一个超声波模块旋转云台（支架）&lt;/li&gt;
  &lt;li&gt;Arduino UNO、Arduino  V5 拓展板（这个很好用）&lt;/li&gt;
  &lt;li&gt;一个4.8V电池盒【舵机需要单独供电】、一块12V电池&lt;/li&gt;
  &lt;li&gt;杜邦线若干、小螺钉螺母若干。&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;程序&quot;&gt;程序：&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;啥话不说，先上程序&lt;/strong&gt;&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;	/*
	Date:2017-05-25
	Name:超声波避障小车
	Writer: mengzhe
	Arduino IDE 1.5.6
	*/
	#include &amp;lt;Servo.h&amp;gt;               //调用舵机库
	Servo left;
	Servo right;
	Servo head;                     //定义左右和头部舵机名称
	const int TrigPin = 3;
	const int EchoPin = 2;          //定义HC-SR04引脚
	float da;
	float dl;
	float dr;                       //将距离存储为单精度浮点数 前左右三组数据
	void setup()
	{
	  Serial.begin(9600);// 初始化串口通信及连接SR04的引脚
	  left.attach(10);
	  right.attach(11);
	  head.attach(12);
	  pinMode(TrigPin, OUTPUT);
	  pinMode(EchoPin, INPUT); //要检测引脚上输入的脉冲宽度，需要先设置为输入状态   
	  Serial.println(&quot;Ultrasonic Car  By Mengzhe&quot;);
	  left.write(90);
	  right.write(90);
	  head.write(105);             //小车初始化 停止 头朝前看
	  Serial.println(&quot;System start complete&quot;);
	  delay(1000);
	}

	void loop()
	{
	  digitalWrite(TrigPin, LOW);
	  delayMicroseconds(2);
	  digitalWrite(TrigPin, HIGH);
	  delayMicroseconds(10);
	  digitalWrite(TrigPin, LOW);//产生一个10us的高脉冲触发TrigPin 
	  da = pulseIn(EchoPin, HIGH) / 58.00;//读取接收到反射时长 计算出距离并换算成cm
	  if (da &amp;gt;= 20)
	  {
	    left.write(45);
	    right.write(111);
	    Serial.print(&quot;Distance = &quot;);
	    Serial.print(da);
	    Serial.print(&quot;cm&quot;);
	    Serial.print(&quot;  &quot;);
	    Serial.println(&quot;Moving advance&quot;);
	    delay(500);          //如果距离大于20cm则前进并输出&quot;正在前进&quot;
	  }
	  else if (da &amp;lt;= 20)
	  {
	    left.write(90);
	    right.write(90);
	    Serial.print(&quot;Distance = &quot;);
	    Serial.print(da);
	    Serial.print(&quot;    &quot;);
	    Serial.println(&quot;Stopped&quot;); //如果距离小于20cm则小车停止并输出&quot;停止&quot;
	    head.write(180);
	    delay(1000);
	    digitalWrite(TrigPin, LOW);
	    delayMicroseconds(2);
	    digitalWrite(TrigPin, HIGH);
	    delayMicroseconds(10);
	    digitalWrite(TrigPin, LOW);
	    dl = pulseIn(EchoPin, HIGH) / 58.00;
	    Serial.print(&quot;Left distance = &quot;);
	    Serial.print(dl);
	    Serial.print(&quot;  &quot;);//头部舵机左转测量左边距离并输出
	    head.write(25);
	    delay(1000);
	    digitalWrite(TrigPin, LOW);
	    delayMicroseconds(2);
	    digitalWrite(TrigPin, HIGH);
	    delayMicroseconds(10);
	    digitalWrite(TrigPin, LOW);
	    dr = pulseIn(EchoPin, HIGH) / 58.00;
	    Serial.print(&quot;Right distance = &quot;);
	    Serial.print(dr);
	    Serial.print(&quot;  &quot;);
	    Serial.println();//头部舵机右转测量右边距离并输出
	    head.write(105);     //头部舵机回中
	    if (dl &amp;gt;= 20 &amp;amp;&amp;amp; dl &amp;lt;= 1000 &amp;amp;&amp;amp; dl &amp;gt; dr)
	    {
	      left.write(180);
	      right.write(180);
	      Serial.println(&quot;Turning left&quot;);
	      delay(900);      //判断左右距离 若左边大则左转
	    }
	    else if (dl &amp;gt;= 1000)
	    {
	      left.write(0);
	      right.write(0);
	      Serial.println(&quot;Turning right&quot;);
	      delay(900);
	      //特殊情况 若左边返回距离大于1000则说明探头被遮挡 此时右转
	    }
	    else if (dr &amp;gt;= 20 &amp;amp;&amp;amp; dr &amp;lt;= 1000 &amp;amp;&amp;amp; dr &amp;gt; dl)
	    {
	      left.write(0);
	      right.write(0);
	      Serial.println(&quot;Turning right&quot;);
	      delay(900);      //判断左右距离 若右边大则右转
	    }
	    else if (dr &amp;gt;= 1000)
	    {
	      left.write(180);
	      right.write(180);
	      Serial.println(&quot;Turning left&quot;);
	      delay(900);
	      //特殊情况 若右边返回距离大于1000则说明探头被遮挡 此时左转
	    }
	    else if (dr &amp;lt;= 20 &amp;amp;&amp;amp; dl &amp;lt;= 20)
	    {
	      left.write(180);
	      right.write(180);
	      Serial.println(&quot;Turning around&quot;);//若左右两边距离均小于20cm 则掉头
	      delay(1500);
	    }
	  }
	}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;正文&quot;&gt;正文：&lt;/h3&gt;

&lt;p&gt;1.首先得把小车的底盘部分给搞好，在这里我得感谢一位我们机器人团队里的一位大神和我在实验室里拼了几个小时的底盘部分，我们装了拆，拆了装，直到诞生了我们都比较满意的这个底盘,因为这些零件都是我从学院库房的某个角落里翻出来，东拼西凑的.
&lt;a href=&quot;/photos/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/2017-1.png&quot; width=&quot;500&quot; height=&quot;340&quot; alt=&quot;photos&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;/photos/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/2017-2.png&quot; width=&quot;500&quot; height=&quot;340&quot; alt=&quot;photos&quot; /&gt;&lt;/a&gt;&lt;p&gt;&lt;/p&gt; 
2.接下来，就是接线，接电池啥的。在这里我再次强调一下(舵机必须得单独供电)，在这里，我向大家推介一本书《Arduino机器人制作指南》，我从本书中获得了很大的帮助。也可以仿照我画的这张图接线(画的不是很好，大家能看懂就行O(∩_∩)O)：
&lt;p&gt;
&lt;a href=&quot;/photos/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/2017-3.png&quot; width=&quot;500&quot; height=&quot;340&quot; alt=&quot;photos&quot; /&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;
3.安装好控制超声波模块的舵机。        
&lt;p&gt;
&lt;a href=&quot;/photos/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/2017-4.png&quot; width=&quot;500&quot; height=&quot;340&quot; alt=&quot;photos&quot; /&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;
4.安装好的整体效果图，简单的固定好，不是很美观,对于大神搞这些来说这都是小意思     
&lt;p&gt;
&lt;a href=&quot;/photos/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/2017-5.png&quot; width=&quot;500&quot; height=&quot;340&quot; alt=&quot;photos&quot; /&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;
5.经过我不断的调试，终于搞定了(这个程序也是参考了很多人的，在此表示感谢)，有不足之处，望共同探讨，以求进步。               

总：经过运行，小车的效果还是嘿棒滴，履带的可玩性也比较大。后期我会不断地往上加新的功能，欢迎共同探讨O(∩_∩)O~      

&lt;p&gt;
我在极客工坊的原帖地址：http://www.geek-workshop.com/thread-26377-1-1.html
      
      


&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;
</description>
        <pubDate>Thu, 25 May 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/05/%E8%87%AA%E5%B7%B1%E5%81%9A%E7%9A%84%E4%B8%80%E4%B8%AAarduino%E5%B1%A5%E5%B8%A6%E8%B6%85%E5%A3%B0%E6%B3%A2%E9%81%BF%E9%9A%9C%E5%B0%8F%E8%BD%A61/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/05/%E8%87%AA%E5%B7%B1%E5%81%9A%E7%9A%84%E4%B8%80%E4%B8%AAarduino%E5%B1%A5%E5%B8%A6%E8%B6%85%E5%A3%B0%E6%B3%A2%E9%81%BF%E9%9A%9C%E5%B0%8F%E8%BD%A61/</guid>
        
        <category>Arduino</category>
        
        
      </item>
    
      <item>
        <title>VS Code 配置Python </title>
        <description>&lt;h2 id=&quot;visual-studio-code&quot;&gt;Visual Studio Code&lt;/h2&gt;

&lt;p&gt;　Microsoft在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目：一个运行于 &lt;code class=&quot;highlighter-rouge&quot;&gt;Mac OS X&lt;/code&gt;、&lt;code class=&quot;highlighter-rouge&quot;&gt;Windows&lt;/code&gt;和 &lt;code class=&quot;highlighter-rouge&quot;&gt;Linux&lt;/code&gt; 之上的，针对于编写现代 Web 和云应用的跨平台源代码编辑器。      &lt;br /&gt;
    看到&lt;code class=&quot;highlighter-rouge&quot;&gt;Visual Studio Code&lt;/code&gt;还是蛮激动的，界面也很好看，非常轻量级，搭配各种插件的话，就可以重现Visual Studio的强大功能。&lt;code class=&quot;highlighter-rouge&quot;&gt; 微软&lt;/code&gt; 这两年来不断开放的姿态，越来越让我们看到微软的情怀和未来。Visual Studio Code的定位应该还是Editor，一个全功能的Editor，通过Editor反推微软的SDK，.NET(开源，跨平台)等产品铺路。&lt;/p&gt;

&lt;h2 id=&quot;vs-code-配置python&quot;&gt;VS Code 配置Python&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt; 1. 进入VS Code官网，下载软件&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;官网: &lt;a href=&quot;https://code.visualstudio.com/Download#&quot;&gt;https://code.visualstudio.com/Download#&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python也要在本地下载安装好，我现在安装的是&lt;code class=&quot;highlighter-rouge&quot;&gt; python 3.5.2&lt;/code&gt; ，配置好环境变量.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt; 2.安装VS Code的Python插件，选择安装次数最多的那个&lt;/strong&gt;     &lt;br /&gt;
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/vscode/1.jpg&quot; width=&quot;800&quot; height=&quot;500&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt; 3.安装其他插件&lt;/strong&gt;  &lt;br /&gt;
 &lt;strong&gt;3.1 配置flake8&lt;/strong&gt;    &lt;br /&gt;
 安装flake8之后写代码的时候编辑器就会提示哪里出错，代码格式不规范也会提示.           &lt;br /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;1.&lt;/code&gt;打开命令行「windows：cmd」
&lt;code class=&quot;highlighter-rouge&quot;&gt;2.&lt;/code&gt;输入 &lt;code class=&quot;highlighter-rouge&quot;&gt;pip install flake8&lt;/code&gt;.
&lt;code class=&quot;highlighter-rouge&quot;&gt;3.&lt;/code&gt;安装flake8成功后，打开VScode，文件-&amp;gt;首选项-&amp;gt;用户设置，在settings.json文件中输入”python.linting.flake8Enabled”: true
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/vscode/2.jpg&quot; width=&quot;750&quot; height=&quot;250&quot; alt=&quot;photos&quot; /&gt;
 &lt;strong&gt;3.2 配置yapf&lt;/strong&gt;      &lt;br /&gt;
 安装yapf之后在VScode中按&lt;code class=&quot;highlighter-rouge&quot;&gt;Alt+Shift+F&lt;/code&gt;即可自动格式化代码      &lt;br /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;1.&lt;/code&gt;打开命令行
&lt;code class=&quot;highlighter-rouge&quot;&gt;2.&lt;/code&gt;输入 &lt;code class=&quot;highlighter-rouge&quot;&gt;pip install yapf&lt;/code&gt;.
&lt;code class=&quot;highlighter-rouge&quot;&gt;3.&lt;/code&gt;安装yapf成功后，打开VScode，文件-&amp;gt;首选项-&amp;gt;用户设置，在settings.json文件中输入”python.formatting.provider”: “yapf”&lt;/p&gt;

&lt;p&gt; &lt;strong&gt;3.3软件自带插件，直接在软件中安装&lt;/strong&gt;      &lt;br /&gt;
 &lt;code class=&quot;highlighter-rouge&quot;&gt;1&lt;/code&gt; &lt;strong&gt;vscode-icons&lt;/strong&gt;：可以使VScode左侧的资源管理器根据文件类型显示图标      &lt;br /&gt;
  Enable the extension：
Go to File &amp;gt; Preferences &amp;gt; File Icon Theme &amp;gt; VSCode Icons.      &lt;br /&gt;
 &lt;code class=&quot;highlighter-rouge&quot;&gt;2&lt;/code&gt; &lt;strong&gt;markdown&lt;/strong&gt;：Markdown 编辑器   &lt;br /&gt;
 &lt;code class=&quot;highlighter-rouge&quot;&gt;3&lt;/code&gt; &lt;strong&gt;Guides&lt;/strong&gt;：缩进辅助线. Guides is simply an extension that add various indentation guide lines       &lt;br /&gt;
 &lt;code class=&quot;highlighter-rouge&quot;&gt;4&lt;/code&gt; &lt;strong&gt;Git History&lt;/strong&gt;：Git 历史       &lt;br /&gt;
 &lt;code class=&quot;highlighter-rouge&quot;&gt;5&lt;/code&gt; &lt;strong&gt;Settings Sync&lt;/strong&gt;：用户配置同步      &lt;br /&gt;
 &lt;code class=&quot;highlighter-rouge&quot;&gt;6&lt;/code&gt; &lt;strong&gt;View in Browser&lt;/strong&gt;：Extension for vscode to view a html file in a browser.&lt;code class=&quot;highlighter-rouge&quot;&gt;Ctrl + F1&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.设置快捷键&lt;/strong&gt;        &lt;br /&gt;
 文件-&amp;gt;首选项-&amp;gt;键盘快捷方式，将需要的修改的快捷键的整个大括号里面的内容复制到右边keybindings.json文件中，然后修改“key”的值为你需要的快捷键即可。我这边只修改了复制一行和删除一行的快捷键。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/vscode/4.jpg&quot; width=&quot;700&quot; height=&quot;180&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;总结&quot;&gt;总结&lt;/h2&gt;

&lt;p&gt; 好了，接下来就可以愉快的敲代码了O(∩_∩)O哈哈~&lt;/p&gt;

&lt;p&gt; 到这边VScode就可以编辑python代码了，新建一个文件夹，用VSCode打开该文件夹，并在其中新建一个test.py文件来做测试。编辑完代码按F5即可运行。初次运行会让你选环境，选择python即可。默认按F5后需要再按一次F5程序才会运行，如果要按F5马上运行需要将launch.json文件的 &lt;code class=&quot;highlighter-rouge&quot;&gt;&quot;stopOnEntry&quot;: true&lt;/code&gt;,改为&lt;code class=&quot;highlighter-rouge&quot;&gt; &quot;stopOnEntry&quot;: false&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/vscode/5.jpg&quot; width=&quot;800&quot; height=&quot;500&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt; 有什么需要补充或者哪里有错误的欢迎大家指出(｡・`ω´･)&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;哥们儿，我们内蒙喝酒有个规矩。我先介绍一下今天桌上的几个朋友，然后咱们先喝一圈。 喝完之后你能说出来他们的名字，就是你认我们这些朋友，我们自己喝一杯。 要是你说不出来名字，就是情谊还没到，你自己喝一杯。准备好没？ 先从你旁边的噶拉仓巴拉丹扎木苏日丹开始，再往下是乌勒吉德勒格列日图愣…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

</description>
        <pubDate>Tue, 25 Apr 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/04/VS-Code-%E9%85%8D%E7%BD%AEPython/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/04/VS-Code-%E9%85%8D%E7%BD%AEPython/</guid>
        
        <category>Python</category>
        
        
      </item>
    
      <item>
        <title>webots使用指南</title>
        <description>&lt;h2 id=&quot;webots的前世今生&quot;&gt;Webots的前世今生&lt;/h2&gt;

&lt;p&gt;　Webots是Cyberbotics公司出品的&lt;code class=&quot;highlighter-rouge&quot;&gt;便携式机器人仿真平台&lt;/code&gt;，可运行在windows，Mac和Linux上，内建3D编辑器,可构建3D机器人模型。应用C++或Java或者MATLAB编辑机器人程序可模拟机器人的动作。也就是说，它支持多种编程语言，包括C, C++, JAVA, Python, Matlab, VRML97。      &lt;br /&gt;
    Webots是一个商业产品，最新的版本是8.5.4，从官网下载的版本刚开始打开的时候是试用版（Free）,这个免费版本是个鸡肋，它不允许用户修改机器人的控制器的代码，就是说，你不能写自己的控制器。下载之后，从官网注册一个账号之后用注册的账号在软件的Preference中的License注册，可以免费使用30天的PRO版本，或者EDU版本。PRO版本是旗舰版，涵盖了软件所有的功能，所以使用的时候推荐使用&lt;code class=&quot;highlighter-rouge&quot;&gt;PRO版本&lt;/code&gt;。       &lt;br /&gt;
    这个软件学起来其实很容易，就是一个仿真平台，并且封装和提供了各种&lt;code class=&quot;highlighter-rouge&quot;&gt;API函数&lt;/code&gt;。这个软件的学习资料中文版的很少，几乎没有，我知道的只有一个“Webots使用介绍.pdf”这个中文教程，但是它其实就是官网的第一个教程的翻译而已。官网或者软件本身提供了两个很好的很强大的英文学习资料，并且以pdf格式和html两种形式发布，一个是UserGuide（用户指南），一个是Reference Manual(参考手册)。 我推荐在网页直接看，因为网页的目录做得很好，查找方便，另外，用&lt;code class=&quot;highlighter-rouge&quot;&gt;google浏览器&lt;/code&gt;还可以直接网页翻译，遇到不认识的英文词句就可以很快捷地理解他们的意思了。&lt;/p&gt;

&lt;h2 id=&quot;webots快速上手&quot;&gt;Webots快速上手&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. 进入webots官网，注册账号&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;官网: &lt;a href=&quot;http://www.cyberbotics.com/&quot;&gt;http://www.cyberbotics.com/&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;用户指南：&lt;a href=&quot;https://www.cyberbotics.com/doc/guide/index&quot;&gt;https://www.cyberbotics.com/doc/guide/index&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;参考手册：&lt;a href=&quot;https://www.cyberbotics.com/doc/reference/index&quot;&gt;https://www.cyberbotics.com/doc/reference/index&lt;/a&gt;        &lt;br /&gt;
&lt;strong&gt;2.登陆到webots官网，激活软件试用，过期之后可重新申请。 &lt;/strong&gt;     &lt;br /&gt;
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/webots/444.png&quot; width=&quot;420&quot; height=&quot;250&quot; alt=&quot;photos&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt; 3.在webots里新建world，点击菜单栏加号添加机器人，选择aldebaran里的NAO机器人&lt;/strong&gt;  &lt;br /&gt;
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/webots/555.png&quot; width=&quot;420&quot; height=&quot;250&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt; 4.左侧窗口中展开NAO模型，设置参数，将如图两个参数设置为正确值。&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/webots/666.png&quot; width=&quot;250&quot; height=&quot;400&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;   &lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;1.狼牙月，漫天星光；无人夜，遍山萤火。城间歌舞升平，山间琴弦独奏，试问吾友，如今安在？       &lt;br /&gt;
2.最怕你一生碌碌无为,
却还说平凡难能可贵&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

</description>
        <pubDate>Wed, 19 Apr 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/04/webots%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/04/webots%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97/</guid>
        
        <category>NAO机器人</category>
        
        
      </item>
    
      <item>
        <title>蓝牙模块相关知识汇总</title>
        <description>&lt;h2 id=&quot;蓝牙hc05模块探究-设置at指令&quot;&gt;蓝牙HC05模块探究-设置AT指令&lt;/h2&gt;

&lt;p&gt;　蓝牙HC05是主从一体的蓝牙串口模块，简单的说，当蓝牙设备与蓝牙设备配对连接成功后，我们可以忽视蓝牙内部的通信协议，直接将将蓝牙当做串口用。当建立连接，两设备共同使用一通道也就是同一个串口，一个设备发送数据到通道中，另外一个设备便可以接收通道中的数据。当然，对于建立这种通道连接是有一定条件，那就是对蓝牙设置好能进行配对连接的AT模式。 一般的蓝牙串口模块引脚：&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;RXD：接收端         &lt;br /&gt;
TXD：发送端     &lt;br /&gt;
AT：设置工作模式（1、工作模式 2、AT指令设置模式）          &lt;br /&gt;
VCC：模块供电正极（5V）        &lt;br /&gt;
GND:模块供电负极&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/%E8%93%9D%E7%89%99/7.png&quot; width=&quot;380&quot; height=&quot;230&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;一般的蓝牙模块使用有三种&quot;&gt;一般的蓝牙模块使用有三种。&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;一：蓝牙从设备与电脑配对连接(1、电脑自带蓝牙 2、电脑不带蓝牙，这事需要蓝牙适配器)&lt;/li&gt;
  &lt;li&gt;二：蓝牙从设备与手机配对连接&lt;/li&gt;
  &lt;li&gt;三：蓝牙从设备与蓝牙主设备配对连接&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;hc05蓝牙模块的at模式设置的方法大致有三种&quot;&gt;HC05蓝牙模块的AT模式设置的方法大致有三种：&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;一、默认设置&lt;/li&gt;
  &lt;li&gt;二、用USB转UART模块设置&lt;/li&gt;
  &lt;li&gt;三、用带有蓝牙设置的主控器串口程序进行设置&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;  第一：主要默认设置：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;模块工作角色：从模式&lt;/li&gt;
  &lt;li&gt;串口参数：38400bits/s 停止位1位无校验位&lt;/li&gt;
  &lt;li&gt;配对码：1234&lt;/li&gt;
  &lt;li&gt;设备名称：HC-05&lt;/li&gt;
  &lt;li&gt;连接模式：任意蓝牙设备连接模式（恢复默认设置 AT指令：AT+ORGL）&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;  第二：用USB to UART模块设置蓝牙&lt;/strong&gt;     &lt;br /&gt;
    蓝牙与USB转串口模块连接方式，RXD-TX TXD-RX VCC-VCC GND-GND       &lt;br /&gt;
    要设置蓝牙AT指令，必须让AT引脚置高(接高电平)，然后接上蓝牙模块，当蓝牙模块state灯变为慢闪，则表明已经进入AT模式。（j将蓝牙模块与转串口模块对插，用跳线将AT对应的引脚接VCC）这时候将转串口模块接入电脑，打开超级终端或者串口调试助手便可以开始设置AT模式。      &lt;br /&gt;
    打开串口调试助手，测试AT指令，找到相应串口号后，注意两点，&lt;code class=&quot;highlighter-rouge&quot;&gt;1、设置AT模式的波特率为38400 &lt;/code&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;2、输入指令后加上回车后换行，发送后返回OK.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/%E8%93%9D%E7%89%99/6.png&quot; width=&quot;420&quot; height=&quot;250&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;    &lt;em&gt;下面来设置模块为从机模式，依次输入指令:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;AT+NAME=Bluetooth-Slave  蓝牙名称为Bluetooth-Slave&lt;/li&gt;
  &lt;li&gt;AT+ROLE=0                蓝牙模式为从模式&lt;/li&gt;
  &lt;li&gt;AT+CMODE=0               蓝牙连接模式为任意地址连接模式&lt;/li&gt;
  &lt;li&gt;AT+PSWD=1234             蓝牙配对密码为1234&lt;/li&gt;
  &lt;li&gt;AT+UART=9600，0，0       蓝牙通信串口波特率为9600，停止位1位，无校验位&lt;/li&gt;
  &lt;li&gt;AT+RMAAD                 清空配对列表&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;相应返回OK表示设置成功。这个时候的蓝牙就可以与电脑主机或者手机配对通信。需要注意的是设置指令里的符号不要在中文状态下输入，否则不会返回相应指令。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt; 第三：用Arduino配置蓝牙AT指令&lt;/strong&gt;            &lt;br /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;步骤一 &lt;/code&gt;给Arduino下载程序&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;	#define AT 2
	#define LED 13
	void setup()
	{
		pinMode(LED,OUTPUT);
		pinMode(AT,OUTPUT);
		digitalWrite(AT,HIGH);
		Serial.begin(38400);//这里应该和你的模块通信波特率一致
		delay(100);
		Serial.println(&quot;AT&quot;);
		delay(100);
		Serial.println(&quot;AT+NAME=OPENJUMPER-Bluetooth&quot;);//命名模块名
		delay(100);
		Serial.println(&quot;AT+ROLE=0&quot;);//设置主从模式：0从机，1主机
		delay(100);
		Serial.println(&quot;AT+PSWD=1234&quot;);//设置配对密码，如1234
		delay(100);
		Serial.println(&quot;AT+UART=9600,0,0&quot;);//设置波特率9600，停止位1，校验位无
		delay(100);
		Serial.println(&quot;AT+RMAAD&quot;);//清空配对列表
	}
	void loop()
	{
	       digitalWrite(LED, HIGH);
	       delay(500);
	       digitalWrite(LED, LOW);
	       delay(500);
	}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;步骤二&lt;/code&gt; 蓝牙与Ardino连线 RXD-TX TXD-RX VCC-VCC GND-GND AT-2 （当很多传感器扩展板带有蓝牙模块接口，则可以直接将蓝牙插在扩展板上接口，不用麻烦接线）。   &lt;br /&gt;
&lt;code class=&quot;highlighter-rouge&quot;&gt;步骤三&lt;/code&gt; 按下Arduino的复位按键，让程序开始运行一次，当发现板载L灯500ms闪烁时则表明已设置成功。&lt;/p&gt;

&lt;h2 id=&quot;两个蓝牙模块配对连接教程具体at指令参考hc05at指令集&quot;&gt;两个蓝牙模块配对连接教程：（具体AT指令参考HC05AT指令集）&lt;/h2&gt;

&lt;p&gt;简单说 一个蓝牙设置为主机，一个蓝牙设置为从机，设置对应密码波特率AT指令后，自动连接配对。&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;第一步&lt;/code&gt;：准备好做主机的蓝牙模块，用cp2102转串口模块连接蓝牙并进入AT设置模式（指示灯慢闪）
分别输入下面AT指令 （注意输入指令后加上回车后换行，发送后返回OK表示设置成功，如下指令是一条一条输入，切勿所有一起输入再点发送。设置完成后可以通过AT指令类似AT+NAME?这样的指令查询刚刚设置是否成功，具体参考HC05AT指令集）&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;AT+NAME=Bluetooth-Master  蓝牙主机名称为Bluetooth-Master &lt;/li&gt;
  &lt;li&gt;AT+ROLE=1                蓝牙模式为主模式&lt;/li&gt;
  &lt;li&gt;AT+CMODE=1              蓝牙连接模式为任意地址连接模式&lt;/li&gt;
  &lt;li&gt;AT+PSWD=1234             蓝牙配对密码为1234&lt;/li&gt;
  &lt;li&gt;AT+UART=9600，0，0       蓝牙通信串口波特率为9600，停止位1位，无校验位&lt;/li&gt;
  &lt;li&gt;AT+RMAAD                 清空配对列表&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;第二步&lt;/code&gt;：准备好做从机的蓝牙模块用cp2102转串口模块连接蓝牙并进入AT设置模式（指示灯慢闪）
分别输入下面AT指令 （注意输入指令后加上回车后换行，发送后返回OK表示设置成功）    &lt;br /&gt;
（如果设置没有效果可以先恢复出厂设置AT+ORGL）&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;AT+NAME=Bluetooth-Slave  蓝牙名称为Bluetooth-Slave&lt;/li&gt;
  &lt;li&gt;AT+ROLE=0                蓝牙模式为从模式&lt;/li&gt;
  &lt;li&gt;AT+CMODE=1              蓝牙连接模式为任意地址连接模式&lt;/li&gt;
  &lt;li&gt;AT+PSWD=1234             蓝牙配对密码为1234&lt;/li&gt;
  &lt;li&gt;AT+UART=9600，0，0       蓝牙通信串口波特率为9600，停止位1位，无校验位&lt;/li&gt;
  &lt;li&gt;AT+RMAAD                 清空配对列表&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;第三步&lt;/code&gt;：分别给主模块和从模块选择进入工作模式，并重新上电。两个模块会自动连接然后配对，这样后，状态灯会出现慢闪烁指示。&lt;/p&gt;

&lt;h3 id=&quot;附表&quot;&gt;附表：&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/%E8%93%9D%E7%89%99/5.png&quot; width=&quot;680&quot; height=&quot;430&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;人，活一辈子，总该做点什么，应该有自己存在的目的和追求。但大多数的人，仅仅是为了生存而疲于奔波，他们中的很多人一直到老，整个人生经历中竟然没有几件值得回忆的事情。如果问他们为什么而活着，他们会告诉你，既然还活着，那就活下去吧。那样的人生有什么意义？多么可悲。当你的精神上有了追求，不管你追寻的是什么，只要你坚信你是对的，就去做。就算是时间和历史将你遗忘，只要你自己为你自己所做的一切而感到满足，那就足够了。——《藏地密码》
&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
        <pubDate>Thu, 13 Apr 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/04/%E8%93%9D%E7%89%99%E6%A8%A1%E5%9D%97%E7%9A%84%E4%BD%BF%E7%94%A8/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/04/%E8%93%9D%E7%89%99%E6%A8%A1%E5%9D%97%E7%9A%84%E4%BD%BF%E7%94%A8/</guid>
        
        <category>博客</category>
        
        
      </item>
    
      <item>
        <title>Arduino与Kinect打造体感智能车</title>
        <description>&lt;p&gt;　　这个小项目是之前在学校实验室做的，已成功运行，现在把相关的资料记录下来，便于日后察阅。&lt;/p&gt;

&lt;p&gt;　　之前大部分步骤是按照奥松的这篇教程来做的，原文地址：&lt;a href=&quot;http://www.alsrobot.cn/article-114.html&quot; target=&quot;_blank&quot;&gt;奥松&lt;/a&gt;，有什么问题也可以在文章末尾给我留言。&lt;/p&gt;

&lt;h2 id=&quot;正文&quot;&gt;正文：&lt;/h2&gt;
&lt;p&gt;  体感智能车的原理非常的简单，就是利用Kinect采集人体的姿体信息，然后通过蓝牙串口向Arduino发送字符命令。Arduino通过相应的字符命令控制双H桥电机驱动模块实现小车的前进后退等动作。项目主要用到小车底盘套件、蓝牙、控制器等…
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/%E6%99%BA%E8%83%BD%E8%BD%A6/1.png&quot; width=&quot;380&quot; height=&quot;230&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;###Arduino实现串口控制小车&lt;/p&gt;

&lt;p&gt; 下面按照制作过程为大家介绍如何来弄。&lt;/p&gt;

&lt;p&gt;一、安装4WD小车，小车是纯金属的外壳比较抗撞不容易损坏，亚克力的也行，视自己情况而定。
&lt;a href=&quot;http://v.youku.com/v_show/id_XNTU2NjY3MDI0.html&quot;&gt;安装视频&lt;/a&gt;
&lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/%E6%99%BA%E8%83%BD%E8%BD%A6/3.png&quot; width=&quot;380&quot; height=&quot;230&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;      安装好小车地盘后再小车地盘内部安装双H桥驱动和电池将控制引脚用3P杜邦线接到Arduino上，连接好电源向Arduino内烧录程序（编译软件为Arduino IDE）。代码如下：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;    #define  pinI1  9      //定义I1接口
    #define  pinI2  8      //定义I2接口
    #define  speedpin 10   //定义EA(PWM调速)接口
    #define  pinI3  4      //定义I3接口
    #define  pinI4  5      //定义I4接口
    #define  speedpin1 6   //定义EB(PWM调速)接口 
    #define SPEED    150 
    char opt = ' ' ; 
void setup()
{    	 Serial.begin(115200);
  pinMode(pinI1,OUTPUT);       //初始化电机控制引脚为输出
  pinMode(pinI2,OUTPUT);
  pinMode(speedpin,OUTPUT);
  pinMode(pinI3,OUTPUT);       //初始化电机控制引脚为输出
  pinMode(pinI4,OUTPUT);
  pinMode(speedpin1,OUTPUT);
}
 void loop()
{
    while(Serial.available()&amp;gt;0)
      opt = Serial.read();
    switch(opt)
    {
      case 'w':
        Straight(200);
        break;
      case 'a':
        zuozhuan(200);
        break;
      case 's':
        Retreat(200);
        break;
      case 'd':
        youzhuan(200);
	break;
      case 'x':
        Stop(200);
        break;
      case 'q':
        Straight(200);
        delay(1000);
        zuozhuan(200);
        delay(500);
         Straight(200);
        delay(1000);
        youzhuan(200);
        delay(500);
        Stop(200);
        opt = -1;
        break;
      default:
        break;
    }
    Serial.flush();
}
//直行函数time为直行的时间  单位ms
 void Straight(int time)
 {
     analogWrite(speedpin,SPEED);//输入模拟值进行设定速度
     analogWrite(speedpin1,SPEED);      
     digitalWrite(pinI4,HIGH);//使直流电机（右）逆时针转
     digitalWrite(pinI3,LOW);      
     digitalWrite(pinI1,HIGH);//使直流电机（左）顺时针转
     digitalWrite(pinI2,LOW);     
     delay(time);
 } 
  //右转函数time为直行的时间  单位ms
 void youzhuan(int time)
 {
     analogWrite(speedpin,SPEED);//输入模拟值进行设定速度
     analogWrite(speedpin1,SPEED);      
     digitalWrite(pinI4,HIGH);//使直流电机（右）逆时针转
     digitalWrite(pinI3,LOW);      
     digitalWrite(pinI1,LOW);//使直流电机（左）顺时针转
     digitalWrite(pinI2,HIGH);     
     delay(time);
 }
  //左转函数time为直行的时间  单位ms
 void zuozhuan(int time)  	{
     analogWrite(speedpin,SPEED);//输入模拟值进行设定速度
     analogWrite(speedpin1,SPEED);      
     digitalWrite(pinI4,LOW);//使直流电机（右）逆时针转
     digitalWrite(pinI3,HIGH);      
     digitalWrite(pinI1,HIGH);//使直流电机（左）顺时针转
     digitalWrite(pinI2,LOW);     
     delay(time);
 }  	  //后退函数time为后退的时间  单位ms
 void Retreat(int time)
 {
     analogWrite(speedpin,SPEED);//输入模拟值进行设定速度
     analogWrite(speedpin1,SPEED);      
     digitalWrite(pinI4,LOW );//使直流电机（右）顺时针转
     digitalWrite(pinI3,HIGH);      
     digitalWrite(pinI1,LOW);//使直流电机（左）逆时针转
     digitalWrite(pinI2,HIGH);  
     delay(time);
 }  
//刹车函数time为停车的时间  单位ms
 void Stop(int time)
 {
     digitalWrite(pinI4,HIGH);//使直流电机（右）刹车
     digitalWrite(pinI3,HIGH);      
     digitalWrite(pinI1,HIGH);//使直流电机（左）刹车
     digitalWrite(pinI2,HIGH);
     delay(time);  
 }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;        程序下载好后安装蓝牙模块，通过串口助手进行测试，确定字符命令可以控制小车。&lt;/p&gt;

&lt;p&gt;###Kinect与Arduino进行串口通信&lt;/p&gt;

&lt;p&gt;        下面进行Kinect的代码编写，我采用的是processing软件，使用前需要安装Kinectqu驱动&lt;code class=&quot;highlighter-rouge&quot;&gt;OpenNI_NITE_Installer-win32-0.27&lt;/code&gt;和kinect的链接库&lt;code class=&quot;highlighter-rouge&quot;&gt;SimpleOpenNI-0.27&lt;/code&gt;&lt;a href=&quot;https://code.google.com/p/simple-openni/downloads/list&quot; target=&quot;_blank&quot;&gt;下载地址&lt;/a&gt;。
 &lt;/p&gt;

&lt;p&gt;         解压驱动包，首先安装&lt;code class=&quot;highlighter-rouge&quot;&gt;OpenNI&lt;/code&gt;，然后安装&lt;code class=&quot;highlighter-rouge&quot;&gt;SensorKinect&lt;/code&gt;，最后Sensor全部安装完成以后，重启电脑。将你的Kinect连接上电脑插好电源，可以通过查看控制面板中的设备管理器，检查你的电脑是否已 经识别&lt;code class=&quot;highlighter-rouge&quot;&gt;Kinect&lt;/code&gt;。
 &lt;img src=&quot;http://omjh2j5h3.bkt.clouddn.com/%E6%99%BA%E8%83%BD%E8%BD%A6/2.png&quot; width=&quot;300&quot; height=&quot;180&quot; alt=&quot;photos&quot; /&gt;&lt;/p&gt;

&lt;p&gt;          驱动安装完成后下载&lt;code class=&quot;highlighter-rouge&quot;&gt;processing&lt;/code&gt;软件双击打开，打开后会在&lt;code class=&quot;highlighter-rouge&quot;&gt;我的文档&lt;/code&gt;中出现processing文件夹讲下载的库文件&lt;code class=&quot;highlighter-rouge&quot;&gt;SimpleOpenNI-0.27&lt;/code&gt;解压后复制到processing下的libraries下如果没有新建一个即可。重新打开processing就可以进行Kenect的程序编写了。&lt;/p&gt;

&lt;p&gt;          控制小车的代码如下：&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;	import SimpleOpenNI.*;
	SimpleOpenNI  kinect;  
	import processing.serial.*;
	Serial port;  
	PFont myFont;
	String myStr;
	String Str_w;
	String Str_s;
	String Str_a;
	String Str_d;
	String Str_x;
	String Str_temp_NO;
	String Str_temp_Yes;  
	PVector right_hand;
	PVector right_hip;  
	PVector head;  
	PVector left_hand;
	PVector left_hip;  
	PVector difference;
	float   shouju;
	float   youtou;
	float   zuotou;
	float   youhip;
	float   zuohip;  
	char ch_w= 'w';
	char ch_s= 's';
	char ch_a= 'a';
	char ch_d= 'd';
	char ch_x= 'x';  
	void setup() 
	{
	  size(640, 600);   
	  kinect = new SimpleOpenNI(this); 
	  kinect.enableDepth(); 
	  kinect.enableRGB();  
	  kinect.setMirror(true);  
	  kinect.enableUser(SimpleOpenNI.SKEL_PROFILE_ALL);    
	  myFont = createFont(&quot;黑体&quot;, 32); 
	  myStr = &quot;重庆文理学院机器人研究所&quot;; 
	  Str_w = &quot;前进&quot;;
	  Str_s = &quot;后退&quot;;
	  Str_a = &quot;左转&quot;;
	  Str_d = &quot;右转&quot;;
	  Str_x = &quot;停止&quot;; 
	  Str_temp_NO = &quot;未识别&quot;;
	  Str_temp_Yes = &quot;连接成功&quot;;   
	  right_hand = new PVector();
	  right_hip = new PVector();  
	  head = new PVector();  
	  left_hand = new PVector();
	  left_hip = new PVector();   
	  println(Serial.list());//定义串口
	  String portName = Serial.list()[0];
	  port = new Serial(this, portName, 115200);//波特率
	}  
	void draw() 
	{ 
	  background(80,100,140);//
	kinect.update();   
	  //PImage depthImage = kinect.depthImage();
	  //image(kinect.depthImage(),0, 0);  
	  PImage rgbImage = kinect.rgbImage();  
	  image(rgbImage, 0, 0);    
	  fill(0,0,255); 
	  textFont(myFont); 
	  text(myStr, 100, 530);   
	  text(&quot;www.cqwu.net&quot; , 195, 565);    
	  IntVector userList = new IntVector();
	  kinect.getUsers(userList);  
	  if (userList.size() &amp;gt; 0)
	  {
	    int userId = userList.get(0);
	    onEndCalibration(userId, true);  
	    if ( kinect.isTrackingSkeleton(userId))
	    {
	        fill(0,0,255);
	        textFont(myFont); 
	        text(myStr, 100, 530);   
	        text(&quot;www.cqwu.net &quot; , 195, 565);         
	        fill(0, 255, 0);
	        textSize(25);
	        text(Str_temp_Yes, 270,30);         
	        kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_RIGHT_HAND,right_hand);
	        kinect.convertRealWorldToProjective(right_hand, right_hand);       
	        kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_RIGHT_HIP,right_hip);
	        kinect.convertRealWorldToProjective(right_hip, right_hip);             
	        kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_HEAD,head);
	        kinect.convertRealWorldToProjective(head, head);         
	        kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_LEFT_HAND,left_hand);
	        kinect.convertRealWorldToProjective(left_hand, left_hand);               
	        kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_LEFT_HIP,left_hip);
	        kinect.convertRealWorldToProjective(left_hip, left_hip);         
	       //textSize(20);
	        difference = PVector.sub(right_hand, left_hand);
	        shouju = difference.mag();
	// text(&quot;shouju: &quot; + int(shouju), 20, 20);          
	        difference = PVector.sub(right_hand, head);
	        youtou = difference.mag();
	      //  text(&quot;youtou: &quot; + int(youtou), 20, 45);         
	        difference = PVector.sub(left_hand, head);
	        zuotou = difference.mag();
	      //  text(&quot;zuotou: &quot; + int(zuotou), 20, 70);         
	        difference = PVector.sub(right_hand, right_hip);
	        youhip = difference.mag();
	      //  text(&quot;youhip: &quot; + int(youhip), 20, 95);         
	        difference = PVector.sub(left_hand, right_hip);
	        zuohip = difference.mag();
         //  text(&quot;zuohip: &quot; + int(zuohip), 20, 120);          
	        fill(255, 255, 0);
	        textSize(20);
	        if(shouju&amp;gt;400 &amp;amp;&amp;amp; youtou&amp;gt;200 &amp;amp;&amp;amp; zuotou&amp;gt;200 &amp;amp;&amp;amp; youhip&amp;gt;200 &amp;amp;&amp;amp; zuohip&amp;gt;200)
	        {
	          text(Str_w, 20, 40);
	          port.write(ch_w);
	        }
	        else if(shouju&amp;lt;200 &amp;amp;&amp;amp; youtou&amp;lt;200 &amp;amp;&amp;amp; zuotou&amp;lt;200 &amp;amp;&amp;amp; youhip&amp;gt;200 &amp;amp;&amp;amp; zuohip&amp;gt;200)
	        {
	          text(Str_s, 20, 40);
	          port.write(ch_s); 
	        }
	        else if(shouju&amp;gt;300 &amp;amp;&amp;amp; youtou&amp;gt;180 &amp;amp;&amp;amp; zuotou&amp;gt;180 &amp;amp;&amp;amp; youhip&amp;lt;150 &amp;amp;&amp;amp; zuohip&amp;gt;250)
	        {
	          text(Str_a, 20, 40);
	          port.write(ch_a); 
	        }
	        else if(shouju&amp;gt;300 &amp;amp;&amp;amp; youtou&amp;gt;180 &amp;amp;&amp;amp; zuotou&amp;gt;180 &amp;amp;&amp;amp; youhip&amp;gt;200 &amp;amp;&amp;amp; zuohip&amp;lt;150)
	        {
	          text(Str_d, 20, 40);
	          port.write(ch_d); 
	        }
	        else if(shouju&amp;lt;250 &amp;amp;&amp;amp; youtou&amp;gt;180 &amp;amp;&amp;amp; zuotou&amp;gt;180 &amp;amp;&amp;amp; youhip&amp;lt;180 &amp;amp;&amp;amp; zuohip&amp;lt;180)
	        {
	          text(Str_x, 20, 40);
	          port.write(ch_x); 
	        }        
	        /***************************************************************
	        fill(255, 0, 0);
	        ellipse(left_hip.x, left_hip.y, 15, 15);
	        ellipse(left_hand.x, left_hand.y, 15, 15);
	        ellipse(head.x, head.y, 15, 15);
	        ellipse(right_hip.x, right_hip.y, 15, 15);
	        ellipse(right_hand.x, right_hand.y, 15, 15);
	        ****************************************************************/
	        /****************************************************************
	        stroke(0, 255, 0);
	        strokeWeight(4);
	        line(right_hand.x, right_hand.y, head.x, head.y);
	        line(right_hand.x, right_hand.y, right_hip.x, right_hip.y);
	        line(left_hand.x, left_hand.y, head.x, head.y);
	        line(left_hand.x, left_hand.y, left_hip.x, left_hip.y);
	        ****************************************************************/
	    }
	  }
	  else
	  {
	      fill(255, 0, 0);
	      textSize(25);
	      text(Str_temp_NO, 280, 30);
	  }
	}  
	// user-tracking callbacks!
	void onNewUser(int userId) {
	  println(&quot;start pose detection&quot;);
	  kinect.startPoseDetection(&quot;Psi&quot;, userId);
	}
	void onEndCalibration(int userId, boolean successful) {
	  if (successful) {
	    println(&quot;  User calibrated !!!&quot;);
	    kinect.startTrackingSkeleton(userId);
	  }
	  else {
	    println(&quot;  Failed to calibrate user !!!&quot;);
	    kinect.startPoseDetection(&quot;Psi&quot;, userId);
	  }
	}
	void onStartPose(String pose, int userId) {
	  println(&quot;Started pose for user&quot;);
	  kinect.stopPoseDetection(userId);
	  kinect.requestCalibrationSkeleton(userId, true);
	}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;        程序编写完成后连接蓝牙串口（注意没有串口时程序会报错）这样一个体感智能车就制作完成了。&lt;/p&gt;

&lt;hr /&gt;
&lt;blockquote&gt;
  &lt;p&gt;我觉得生命是最重要的，所以在我心里，没有事情是解决不了的。不是每一个人都可以幸运的过自己理想中的生活，有楼有车当然好了，没有难道哭吗？所以呢，我们一定要享受我们所过的生活。——《新不了情》
&lt;br /&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;　&lt;/p&gt;

</description>
        <pubDate>Mon, 10 Apr 2017 00:00:00 +0000</pubDate>
        <link>http://robotkang.cc/2017/04/Arduino%E4%B8%8EKinect%E6%89%93%E9%80%A0-%E4%BD%93%E6%84%9F%E6%99%BA%E8%83%BD%E8%BD%A6/</link>
        <guid isPermaLink="true">http://robotkang.cc/2017/04/Arduino%E4%B8%8EKinect%E6%89%93%E9%80%A0-%E4%BD%93%E6%84%9F%E6%99%BA%E8%83%BD%E8%BD%A6/</guid>
        
        <category>Arduino</category>
        
        
      </item>
    
  </channel>
</rss>
