极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 23639|回复: 3

【制作】打造自己的第一辆体感智能车(基于Arduino与Kinect)

[复制链接]
发表于 2017-12-10 13:49:02 | 显示全部楼层 |阅读模式
本帖最后由 小志 于 2017-12-10 13:50 编辑

在游戏中学会学习,在学习中学会享受。

这个小项目是之前在学校实验室根据奥松论坛的一篇技术贴做的,已成功运行,现在把相关的资料记录下来,便于日后察阅。

大家也可以动手做一下,还是很有意义的,虽然Kinect停产了,网上还是可以买到的。如果你们实验室有Kinect的话,那就太棒了!你可以省一点钱,毕竟这玩意儿还是小贵的。

体感智能车的原理非常的简单,就是利用Kinect采集人体的姿体信息,然后通过蓝牙串口向Arduino发送字符命令。Arduino通过相应的字符命令控制双H桥电机驱动模块实现小车的前进后退等动作。项目主要用到小车底盘套件、蓝牙、控制器等…


1.Arduino实现串口控制小车


下面按照制作过程为大家介绍如何来弄:

首先你得组装一辆4WD小车,小车是纯金属的外壳比较抗撞不容易损坏,亚克力的也行,视自己情况而定。

安装好小车地盘后再小车地盘内部安装双H桥驱动和电池将控制引脚用3P杜邦线接到Arduino上,连接好电源向Arduino内烧录程序(编译软件为Arduino IDE)。



部分代码如下(PS:代码有点长,文章里就不贴全部的代码了,有需要的小伙伴可以在文章末留言,我通过后台发给你):
  1. #define  pinI1  9      //定义I1接口
  2.    #define  pinI2  8      //定义I2接口
  3.    #define  speedpin 10   //定义EA(PWM调速)接口
  4.    #define  pinI3  4      //定义I3接口
  5.    #define  pinI4  5      //定义I4接口
  6.    #define  speedpin1 6   //定义EB(PWM调速)接口
  7.    #define SPEED    150
  8.    char opt = ' ' ;
  9. void setup()
  10. {       Serial.begin(115200);
  11. pinMode(pinI1,OUTPUT);       //初始化电机控制引脚为输出
  12. pinMode(pinI2,OUTPUT);
  13. pinMode(speedpin,OUTPUT);
  14. pinMode(pinI3,OUTPUT);       //初始化电机控制引脚为输出
  15. pinMode(pinI4,OUTPUT);
  16. pinMode(speedpin1,OUTPUT);
  17. }
  18. void loop()
  19. {·······}
  20. ·····
复制代码

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

2.Kinect与Arduino进行串口通信

下面进行Kinect的代码编写,我采用的是processing软件,使用前需要安装Kinectqu驱动OpenNI_NITE_Installer-win32-0.27和kinect的链接库SimpleOpenNI-0.27,(点击“阅读原文”获取下载地址)。  

解压驱动包,首先安装OpenNI,然后安装SensorKinect,最后Sensor全部安装完成以后,重启电脑。将你的Kinect连接上电脑插好电源,可以通过查看控制面板中的设备管理器,检查你的电脑是否已经识别Kinect。  



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

控制小车的代码如下(部分):
  1. import SimpleOpenNI.*;
  2. SimpleOpenNI  kinect;  
  3. import processing.serial.*;
  4. Serial port;  
  5. ·····  
  6. void setup()
  7. {
  8.    size(640, 600);   
  9.    ·····
  10.    kinect.enableUser(SimpleOpenNI.SKEL_PROFILE_ALL);   
  11.    myFont = createFont("黑体", 32);
  12.    myStr = "····机器人研究所";
  13.    Str_w = "前进";
  14.    ·····
  15.    Str_x = "停止";
  16.    Str_temp_NO = "未识别";
  17.    Str_temp_Yes = "连接成功";   
  18.    ····
  19.    println(Serial.list());//定义串口
  20.    String portName = Serial.list()[0];
  21.    port = new Serial(this, portName, 115200);//波特率
  22. }  
  23. void draw()
  24. {
  25.   ·····
  26.    kinect.getUsers(userList);  
  27.    if (userList.size() > 0)
  28.    {
  29.      int userId = userList.get(0);
  30.      onEndCalibration(userId, true);  
  31.      if ( kinect.isTrackingSkeleton(userId))
  32.      {
  33.          ·····         
  34.          kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_RIGHT_HAND,right_hand);
  35.          kinect.convertRealWorldToProjective(right_hip, right_hip);            
  36.          kinect.getJointPositionSkeleton(userId, SimpleOpenNI.SKEL_HEAD,head);
  37.          kinect.convertRealWorldToProjective(head, head);         
  38.          ·····
  39.         
  40.       /***************************************************************
  41.         
  42.          ellipse(right_hand.x, right_hand.y, 15, 15);
  43.          ****************************************************************/        
  44. // user-tracking callbacks!
  45. void onNewUser(int userId) {
  46.    println("start pose detection");
  47.    kinect.startPoseDetection("Psi", userId);
  48. }
  49. ···············
  50. }
复制代码

这是Kinect捕捉到的人体火柴人图(从网上找了一张示意图):


程序编写完成后连接蓝牙串口(注意没有串口时程序会报错)这样一个体感智能车就制作完成了,接下来你就可以愉快的玩耍了!

有任何问题欢迎留言交流,开始你的学习之旅吧!

PS:如果你觉得本文对你有一点帮助,点赞、转发,不胜感激。
-- END --


Copyright © 2017 Robotkang. 转载请联系作者






扫码关注公众号:ChinanewsTT

分享科技、生活、技术、人生、个人感悟
同时记录个人成长历程
——
个人博客:http://robotkang.cc

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2017-12-10 14:27:31 | 显示全部楼层
你好,麻烦提供完整代码,[email protected],谢谢
回复 支持 反对

使用道具 举报

发表于 2019-12-10 16:11:28 | 显示全部楼层

你好,麻烦提供完整代码,[email protected],谢谢
回复 支持 反对

使用道具 举报

发表于 2019-12-26 08:32:38 | 显示全部楼层
你好,麻烦提供完整代码,[email protected],谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 00:39 , Processed in 0.042923 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表