小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 8087|回复: 4

小R科技树莓派摄像头识别摄像头循迹

[复制链接]
发表于 2018-4-25 13:25:16 | 显示全部楼层 |阅读模式
更新日志20180711:
因3B+使用raspbian系统,和UBUNTU系统权限设置不同,使用此功能时出现原地转圈的问题,
目前已经更新一版固件,同时支持3B/3B+,目前固件名称:XiaoRGEEK_Raspbian_2.4G_3B&3B+_20180711.tar.gz
具体参考树莓派固件更新帖:http://www.wifi-robots.com/thread-28889-1-1.html




R科技树莓派摄像头识别之循迹篇
                                                                                        ——By Ray_yi
  研究了一段时间的python-opencv,也给一些同学提供了摄像头循迹的测试代码,
因摄像头不能复用(mjpg-streamer与opencv无法简易的同时调用摄像头),实际使用
起来很复杂,故将摄像头循迹与python版本代码wifirobots.py融合,发布一个测试版
本程序以供大家学习,后续将发布全新固件以及上位机程序,加入在线调试参数等功能。
固件已更新: XiaoRGEEK_C_LCD_PathDec_20180425.tar.gz,百度网盘已上传 --20180501
一、此次需要替换两个文件,新增两个文件,具体如下:
注意:
a.程序在固件 XiaoRGEEK_PythonAndC_5inchLCD_20171231.rar基础上做的开发,
建议更新到此版本后,再做文件替换。
b.需要先调整电机接线,保证电机测试时,方向指令与实际效果一致,
即Motor_Forward(),前进;Motor_Backward(),后退;
        Motor_TurnLeft(),左转;Motor_TurnRight(),右转。

1、需替换的文件:start.sh 、 wifirobots.py            
start.sh:/home/liuviking/work/mjpg-streamer-experimental-xr/路径下,
     为mjpg_streamer的启动脚本。
wifirobots.py : /home/liuviking/work/wifirobots/路径下,为python版的主程序。

2、 需新增的文件:start_mjpg_streamer.sh 、stop_mjpg_streamer.sh
这两个文件都放在/home/liuviking/work/wifirobots/路径下,和python版的主程序放在统一目录。
两个文件分别是通过python启动和停止mjpg_streamer。
二、功能介绍
       1、摄像头循迹指令,与传感器(红外巡线、超声波等)并列,可在现有上位机软件的自定义指令里添加:
FF130700FF,进入调试模式,Cruising_Flag= 8,调试模式下,mjpg_streamer正常工作,
可以通过手机端或者电脑端调整摄像头云台的角度,以保证摄像头对着正前方,车前的
黑线(案例是以黑线为轨迹)在画面中间,后续可以再进入此模式进行具体调试。

FF130701FF,进入循迹模式,Cruising_Flag= 7,循迹模式下:mjpg_streamer 停止工作,
python_opencv开始进行图像识别,并修正小车运行方向,控制小车进行巡黑线运行。

三、程序框架简介
       此版本python代码,一共使用三个线程同时工作。
主线程:循环进行端口监听,保证指令传输的优先级,主要运行Communication_Decode()指令解析函数,并直
     接处理手动控制指令,包含小车方向控制、调速、舵机(云台、机械臂)控制、LED控制、改变Cruising_Flag值。

T1线程:循环执行Cruising_Mod(),根据Cruising值,切换为不同的自动模式,包括红外跟随模式、红外巡线模式、红外避障模式、
     超声波避障模式、超声波距离PC显示、超声波遥控避障、Path_Dect 调试模式(新增)、Path_Dect 循迹模式(新增)

T2线程:循环执行Path_Dect_img_processing()当进入摄像头循迹模式时,开始对摄像头数据进行处理:截取灰度通道、二值化处理、输出Path_Dect_px值。
其中:摄像头循迹程序为:根据Path_Dect_px值,来决定小车的运动方向

def    Path_Dect():
         global Path_Dect_px
         global Path_Dect_on
         while (Path_Dect_on):
                   if Path_Dect_px < 260:
                            print("turnleft")
                            Motor_TurnLeft()
                   elif Path_Dect_px> 420:

                            print("turnright")
                            Motor_TurnRight()
                   else :
                            print("gostright")
                            Motor_Forward()
                   time.sleep(0.007)
                   Motor_Stop()
                   time.sleep(0.006)
固件、工具、更新文件存放位置
链接:https://pan.baidu.com/s/1w-ok6_t9XDxb3GQOGQfxag
密码:3j27
树莓派小车套装链接:https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-15160605207.32.34be745exxUR6E&id=546164068526https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-15160605207.26.77d3745eHGqqnQ&id=554476952192
后续会持续做更多的基于树莓派的摄像头识别应用,也欢迎大家提供相关意见和建议,帖子留言或者发到邮箱:ray_yi@wifi-robots.com,一起来学习成长~~~

start.sh (4.7 KB, 下载次数: 11)
回复

使用道具 举报

发表于 2018-7-7 19:22:54 | 显示全部楼层
你好,调试摄像头位置使黑线处于中间,然后开始视频循迹,小车出现原地打转的情况,电机连线应该没有问题,请教您一下,这个是什么地方可能有问题?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-11 21:34:29 | 显示全部楼层
huangyao8988 发表于 2018-7-7 19:22
你好,调试摄像头位置使黑线处于中间,然后开始视频循迹,小车出现原地打转的情况,电机连线应该没有问题, ...

你用的3B+主板哈?这个需要更新固件,raspbian系统的权限和ubuntu mate不太一样。稍后会更新一个固件出来,你可以重新刷一下就好了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-12 11:43:02 | 显示全部楼层
huangyao8988 发表于 2018-7-7 19:22
你好,调试摄像头位置使黑线处于中间,然后开始视频循迹,小车出现原地打转的情况,电机连线应该没有问题, ...

问题已经解决,刷新一下最新固件哈,可以看一下树莓派固件更新帖
回复 支持 反对

使用道具 举报

发表于 2018-7-16 16:01:21 | 显示全部楼层
问题已经解决,刷新一下最新固件哈,可以看一下树莓派固件更新帖
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-3-29 21:26 , Processed in 1.072358 second(s), 21 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

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