搜索
bottom↓
回复: 23

可否利用透镜组和光电鼠标构造测试移动方向和速度的系统

[复制链接]

出0入0汤圆

发表于 2011-12-21 12:26:43 | 显示全部楼层 |阅读模式
因为光电鼠标是利用影象来计算移动速度和方向的,利用透镜成像将地面转成图像投影到鼠标芯片上,非常简单。可否?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2011-12-21 12:29:07 | 显示全部楼层
我有过这样的想法。

出0入0汤圆

发表于 2011-12-21 12:31:51 | 显示全部楼层
鼠标的成像像素很低,用在鼠标上合适,四轴上行不通
你试试把鼠标拿起一定高度移动,有几个鼠标能动得了的
我试了下双飞燕的X7,即使把下面判断鼠标是否拉起的按键按下,一样动不了,激光引擎的

出0入0汤圆

发表于 2011-12-21 12:44:16 | 显示全部楼层
我也有想过。按照搜到的东西,有人做过,给鼠标芯片加个镜头,然后距离也就增加到最多1米。为什么不能更远不知道。

出0入0汤圆

发表于 2013-1-21 11:58:14 | 显示全部楼层
我可以赞助这个项目

出0入0汤圆

发表于 2013-1-21 12:42:16 | 显示全部楼层
walker_r 发表于 2011-12-21 12:31
鼠标的成像像素很低,用在鼠标上合适,四轴上行不通
你试试把鼠标拿起一定高度移动,有几个鼠标能动得了的
...

这是因为没有对焦吧
要离开桌面一段距离,首先得改透镜

出0入0汤圆

发表于 2013-1-21 12:48:29 | 显示全部楼层
试过做平面的定位,把鼠标装到机器人底盘上,按到地面上。效果还是不错的。不过有个坎就哭了,再者久了镜头会变脏。

鼠标的分辨率还是相当高的,以前高端游戏鼠标都有3200dpi@1k fps,现在应该更强了。不过用在四轴上对焦是个问题,还得是动态对焦。

出0入0汤圆

发表于 2013-1-21 14:25:37 | 显示全部楼层
669911 发表于 2013-1-21 11:58
我可以赞助这个项目

兄弟是什么用途的,我们可以聊下: qq 24453405

出0入0汤圆

发表于 2013-8-26 22:46:48 | 显示全部楼层
ilawp 发表于 2013-1-21 12:48
试过做平面的定位,把鼠标装到机器人底盘上,按到地面上。效果还是不错的。不过有个坎就哭了,再者久了镜头 ...

你用的鼠标芯片型号是多少啊  资料方便传一下吗?   谢谢

出0入0汤圆

发表于 2013-8-26 23:37:07 | 显示全部楼层
kang732816702 发表于 2013-8-26 22:46
你用的鼠标芯片型号是多少啊  资料方便传一下吗?   谢谢

用的是罗技的一款高端游戏鼠标,二手剪线的,型号忘了。
没资料,主控里面跑linux,有驱动,具体咋实现我不懂。

出0入0汤圆

发表于 2013-8-26 23:45:07 | 显示全部楼层
ilawp 发表于 2013-8-26 23:37
用的是罗技的一款高端游戏鼠标,二手剪线的,型号忘了。
没资料,主控里面跑linux,有驱动,具体咋实现我 ...

哦  跟我做的不一样  我是要用鼠标的芯片做一个测位移的项目

出0入0汤圆

发表于 2013-8-26 23:52:07 | 显示全部楼层
去avago看看,貌似安捷伦部分业务与avago合并了,鼠标传感器算到avago。曾经看过一款传感器,spi接口的,有详细datasheet,应该可以用的起来

出0入0汤圆

发表于 2014-3-19 08:41:03 | 显示全部楼层
现在A3080 A9500 A9800等又成了原相的东西了 安华高把这些东西又转给原相了 去原相官网上只能找到datasheet 就是找不到固件

出0入0汤圆

发表于 2014-3-19 08:45:07 | 显示全部楼层
鼠标扫描速度慢,快速和低速移动得到的指不一样,不能计算速度,方向有可能是反的。

出0入0汤圆

发表于 2014-4-2 09:29:29 | 显示全部楼层
ilawp 发表于 2013-1-21 12:48
试过做平面的定位,把鼠标装到机器人底盘上,按到地面上。效果还是不错的。不过有个坎就哭了,再者久了镜头 ...

那你说怎么把鼠标输出的距离转变成实际距离的呢?这是怎么各对应关系?

出0入0汤圆

发表于 2014-4-2 09:38:46 | 显示全部楼层
mbwhy 发表于 2014-4-2 09:29
那你说怎么把鼠标输出的距离转变成实际距离的呢?这是怎么各对应关系? ...

鼠标输出的应该是单位时间内的位移,xy两个方向。结合陀螺仪得到的角度信息(需要积分),用极坐标再积分
如果能保证机构没有旋转,只有平移的话,就不需要陀螺仪
单个鼠标没办法得到旋转的数据
置于鼠标数据和实际距离直接的关系,需要标定

出0入0汤圆

发表于 2014-4-2 09:49:54 | 显示全部楼层
ilawp 发表于 2014-4-2 09:38
鼠标输出的应该是单位时间内的位移,xy两个方向。结合陀螺仪得到的角度信息(需要积分),用极坐标再积分 ...

你说的标定是指 让鼠标移动一段已知的距离看鼠标的实际输出,然后算出这个对应关系?  能不能用鼠标DPI这个信息,不是指鼠标移动一英尺的输出的点数吗?

出0入0汤圆

发表于 2014-4-2 09:52:17 | 显示全部楼层
lizhijieli 发表于 2014-3-19 08:45
鼠标扫描速度慢,快速和低速移动得到的指不一样,不能计算速度,方向有可能是反的。 ...

你要看移动多快。
我试过,在比较理想的表面上,快速和慢速移动鼠标相同距离,数据相差极小。移动过快了,计算出来的就偏短,那是因为超出使用范围了。
以我当时用过的G9X为例,标称最大加速度30g,最大速度150英寸 (3.81米)/秒,当然理论值看起来要美好一点
现在avago 的a9800传感器应该算比较顶尖的,数据不详。

出0入0汤圆

发表于 2014-4-2 09:54:25 | 显示全部楼层
mbwhy 发表于 2014-4-2 09:49
你说的标定是指 让鼠标移动一段已知的距离看鼠标的实际输出,然后算出这个对应关系?  能不能用鼠标DPI这 ...

那个dpi也不是很严格的。比如dpi设置成400,标定出来是390左右。毕竟给人用,只要线性度好就行了,人会适应实际的dpi。

出0入0汤圆

发表于 2014-4-2 10:05:22 | 显示全部楼层
可以,但是对高度要求很高,对地面的纹理要求也高,对环境光线的要求也高,这样飞着没多大实用价值了吧

出0入8汤圆

发表于 2014-4-2 10:10:48 | 显示全部楼层
我也有兴趣,可以一起做,我想要做一个手持打印机,用鼠标传感器获得喷头的移动位置信息来控制喷墨。,

出0入0汤圆

发表于 2014-4-2 10:15:07 | 显示全部楼层
ilawp 发表于 2014-4-2 09:54
那个dpi也不是很严格的。比如dpi设置成400,标定出来是390左右。毕竟给人用,只要线性度好就行了,人会适 ...

嗯,官方说的这个DPI应该是在某个确定的高度下,还有如果每次高度变了就要重新标定对吧,我觉得这个应该有个关系在里面,看过APM的光流那段程序,当然他这里面有角度的变换,最后把高度信息也加进去了,还有一个系数,不过这个系数怎么来的没看明白。
  1. void AP_OpticalFlow::update_position(float roll, float pitch, float sin_yaw, float cos_yaw, float altitude)
  2. {
  3.     float diff_roll     = roll  - _last_roll;
  4.     float diff_pitch    = pitch - _last_pitch;
  5.     float change_x, change_y;   // actual change in x, y coordinates

  6.     // only update position if surface quality is good and angle is not
  7.     // over 45 degrees
  8.     if( surface_quality >= 10 && fabsf(roll) <= FORTYFIVE_DEGREES
  9.      && fabsf(pitch) <= FORTYFIVE_DEGREES ) {
  10.             altitude = max(altitude, 0);

  11.         // change in position is actual change measured by sensor (i.e. dx, dy) minus expected change due to change in roll, pitch
  12.         change_x = dx - (diff_roll * radians_to_pixels);
  13.         change_y = dy - (-diff_pitch * radians_to_pixels);

  14.         float avg_altitude = (altitude + _last_altitude)*0.5f;

  15.         // convert raw change to horizontal movement in cm
  16.         // perhaps this altitude should actually be the distance to the
  17.         // ground?  i.e. if we are very rolled over it should be longer?
  18.         x_cm = -change_x * avg_altitude * conv_factor;
  19.         // for example if you are leaned over at 45 deg the ground will
  20.         // appear farther away and motion from opt flow sensor will be less
  21.         y_cm = -change_y * avg_altitude * conv_factor;
  22.     }

  23.     _last_altitude = altitude;
  24.     _last_roll = roll;
  25.     _last_pitch = pitch;
  26. }
复制代码

出0入0汤圆

发表于 2014-4-2 11:10:54 | 显示全部楼层
mbwhy 发表于 2014-4-2 10:15
嗯,官方说的这个DPI应该是在某个确定的高度下,还有如果每次高度变了就要重新标定对吧,我觉得这个应该 ...

没玩过四轴,只玩过单轴陀螺仪。
系数也有办法。。。标定。。。找规律。
特定距离下dpi也许可以这样解释。视场角一定的,距离越远看到的面积越大,计算出的位移越小。前提是得能聚焦,不然感光器件看到一团模糊是算不出来的

出0入0汤圆

发表于 2014-4-2 13:57:36 | 显示全部楼层
这不就是光流传感器吗,还用那么麻烦吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 19:10

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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