智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 12367|回复: 45
打印 上一主题 下一主题

[讨论] 摄像头+直立小车,请教一些中断问题

  [复制链接]

10

主题

169

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3183
威望
1604
贡献
1001
兑换币
830
注册时间
2012-6-30
在线时间
289 小时
跳转到指定楼层
1#
发表于 2013-4-11 11:33:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
          最近自己在试着制作一辆用摄像头循迹的直立小车,摄像头是用OV7620,系统板芯片是用XS128.小车的硬件部分都已经完工了,软件部分,车子已经能立起来了(只是会在一个地方来回摆动,摆动范围大概5厘米左右),摄像头也已经能够采集到图像(前提是摄像头图像采集程序未加入直立1MS中断程序)。一旦将直立程序和摄像头图像采集程序结合在一起,车子还是像原来那样立着,只是摄像头采集到的图像受到干扰,采集到的图像中间某些地方是乱七八糟的图像。个人认为是因为摄像头在中断里进行图像采集时受到直立1MS中断的干扰。现在还没有什么头绪将两个中端融合,使他们不会出现什么冲突,所以想请教论坛里的大神们能给予一点指示,要怎么调整程序使小车既可以像原来那样的立着,摄像头采集到的图像也不会受到干扰。PS:在论坛上面看到一些帖子,制作线性CCD自平衡小车的同学,都说线性CCD的曝光时间是20ms,但我的摄像头图像采集程序才16.67ms,不知各位制作CCD直立小车是怎么安排时序问题,想借鉴一下,看能不能解决我的摄像头直立小车问题,谢谢!

36

主题

1837

帖子

3

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6375
威望
3368
贡献
1847
兑换币
2326
注册时间
2013-2-3
在线时间
580 小时
2#
发表于 2013-4-11 14:41:26 | 只看该作者
你的分析是对的,摄像头的数据传输一定不能打断!
所以你可以利用行消隐区进行平衡控制。
一行是64us,大概每20行控制一次。
回复 支持 反对

使用道具 举报

10

主题

169

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3183
威望
1604
贡献
1001
兑换币
830
注册时间
2012-6-30
在线时间
289 小时
3#
 楼主| 发表于 2013-4-11 16:31:49 | 只看该作者
灰原姐姐 发表于 2013-4-11 14:41
你的分析是对的,摄像头的数据传输一定不能打断!
所以你可以利用行消隐区进行平衡控制。
一行是64us,大 ...

      我请教了一下我们学校的老师,他的建议是将直立控制程序放置在主函数里面,同时也是设置一个1ms中断程序,在1ms中断程序里只要一个标志名称(假设是runflag)就行,当1ms中断时,标志runflag 置1,同时主函数里面,当runflag为1时,执行直立函数,同时将runflag置0.我这样试过了,没问题,摄像头可以正常采集图像。但是这样做有一个要求,就是主函数里面的程序不能太多,一旦太多,程序执行直立函数就会乱掉,小车就无法正常直立。
回复 支持 反对

使用道具 举报

36

主题

1837

帖子

3

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6375
威望
3368
贡献
1847
兑换币
2326
注册时间
2013-2-3
在线时间
580 小时
4#
发表于 2013-4-11 18:03:40 | 只看该作者
老干妈 发表于 2013-4-11 16:31
我请教了一下我们学校的老师,他的建议是将直立控制程序放置在主函数里面,同时也是设置一个1ms中断 ...

你听我的没错,XS128主频低,不能多任务交叉。
只能用行消隐区控制平衡。
你在行中断里面数行数,然后在相邻两行的消隐区里面调用平衡控制函数。
并且要保证此函数执行时间不超过16us。
这就一定不会有问题了。
回复 支持 反对

使用道具 举报

10

主题

169

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3183
威望
1604
贡献
1001
兑换币
830
注册时间
2012-6-30
在线时间
289 小时
5#
 楼主| 发表于 2013-4-11 19:45:18 | 只看该作者
灰原姐姐 发表于 2013-4-11 18:03
你听我的没错,XS128主频低,不能多任务交叉。
只能用行消隐区控制平衡。
你在行中断里面数行数,然后在 ...

调直立用到卡尔曼滤波的话时间不可能小于16us,而且我发现速度分时控制的函数时间非常长,因为单片机里面的程序一旦用到除法,时间就会花很多,上百us
回复 支持 反对

使用道具 举报

36

主题

1837

帖子

3

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6375
威望
3368
贡献
1847
兑换币
2326
注册时间
2013-2-3
在线时间
580 小时
6#
发表于 2013-4-12 12:28:41 | 只看该作者
老干妈 发表于 2013-4-11 19:45
调直立用到卡尔曼滤波的话时间不可能小于16us,而且我发现速度分时控制的函数时间非常长,因为单片机里面 ...

但是你没必要用浮点型啊!!!
回复 支持 反对

使用道具 举报

10

主题

155

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1506
威望
802
贡献
382
兑换币
231
注册时间
2012-5-18
在线时间
161 小时
毕业学校
北京师范大学珠海分校
7#
发表于 2013-4-12 13:15:31 | 只看该作者
本帖最后由 新人类 于 2013-4-12 13:24 编辑

大约33毫秒的控制周期能满足你的 控制要求么?摄像头一帧的周期是33ms 也就是说你有两场16ms的图像其实都是一个景物的信息。。。所以我觉得。。。你可以考虑老师那种方法的延伸。。。就是直接在main里面做直立不中断。。。不过就是不知道控制周期能不能满足你的直立控制 以及转向控制要求。
回复 支持 反对

使用道具 举报

10

主题

169

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3183
威望
1604
贡献
1001
兑换币
830
注册时间
2012-6-30
在线时间
289 小时
8#
 楼主| 发表于 2013-4-13 13:16:44 | 只看该作者
新人类 发表于 2013-4-12 13:15
大约33毫秒的控制周期能满足你的 控制要求么?摄像头一帧的周期是33ms 也就是说你有两场16ms的图像其实都是 ...

可以,我试过了,车子能正常循迹,不过我的直立还调的不够好,小车走走停停的,不过基本没啥问题了,现在只要把直立调好就行了
回复 支持 反对

使用道具 举报

58

主题

314

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4665
威望
2430
贡献
705
兑换币
1501
注册时间
2013-3-24
在线时间
765 小时
9#
发表于 2013-11-10 12:11:36 | 只看该作者
灰原姐姐 发表于 2013-4-11 14:41
你的分析是对的,摄像头的数据传输一定不能打断!
所以你可以利用行消隐区进行平衡控制。
一行是64us,大 ...

灰原姐姐,我用的是k60,dma传输,怎么解决摄像头采集和直立的时序问题
回复 支持 反对

使用道具 举报

36

主题

1837

帖子

3

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6375
威望
3368
贡献
1847
兑换币
2326
注册时间
2013-2-3
在线时间
580 小时
10#
发表于 2013-11-10 13:58:59 | 只看该作者
原来不是我 发表于 2013-11-10 12:11
灰原姐姐,我用的是k60,dma传输,怎么解决摄像头采集和直立的时序问题

手动卡时吧。
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-7 21:34 , Processed in 0.107572 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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