unismart 发表于 2011-12-21 12:26:43

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

因为光电鼠标是利用影象来计算移动速度和方向的,利用透镜成像将地面转成图像投影到鼠标芯片上,非常简单。可否?

ywb888 发表于 2011-12-21 12:29:07

我有过这样的想法。

walker_r 发表于 2011-12-21 12:31:51

鼠标的成像像素很低,用在鼠标上合适,四轴上行不通
你试试把鼠标拿起一定高度移动,有几个鼠标能动得了的
我试了下双飞燕的X7,即使把下面判断鼠标是否拉起的按键按下,一样动不了,激光引擎的

flyunlimit 发表于 2011-12-21 12:44:16

我也有想过。按照搜到的东西,有人做过,给鼠标芯片加个镜头,然后距离也就增加到最多1米。为什么不能更远不知道。

669911 发表于 2013-1-21 11:58:14

我可以赞助这个项目

bigfatfish 发表于 2013-1-21 12:42:16

walker_r 发表于 2011-12-21 12:31 static/image/common/back.gif
鼠标的成像像素很低,用在鼠标上合适,四轴上行不通
你试试把鼠标拿起一定高度移动,有几个鼠标能动得了的
...

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

ilawp 发表于 2013-1-21 12:48:29

试过做平面的定位,把鼠标装到机器人底盘上,按到地面上。效果还是不错的。不过有个坎就哭了,再者久了镜头会变脏。

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

mika米卡 发表于 2013-1-21 14:25:37

669911 发表于 2013-1-21 11:58 static/image/common/back.gif
我可以赞助这个项目

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

kang732816702 发表于 2013-8-26 22:46:48

ilawp 发表于 2013-1-21 12:48 static/image/common/back.gif
试过做平面的定位,把鼠标装到机器人底盘上,按到地面上。效果还是不错的。不过有个坎就哭了,再者久了镜头 ...

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

ilawp 发表于 2013-8-26 23:37:07

kang732816702 发表于 2013-8-26 22:46 static/image/common/back.gif
你用的鼠标芯片型号是多少啊资料方便传一下吗?   谢谢

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

kang732816702 发表于 2013-8-26 23:45:07

ilawp 发表于 2013-8-26 23:37 static/image/common/back.gif
用的是罗技的一款高端游戏鼠标,二手剪线的,型号忘了。
没资料,主控里面跑linux,有驱动,具体咋实现我 ...

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

ilawp 发表于 2013-8-26 23:52:07

去avago看看,貌似安捷伦部分业务与avago合并了,鼠标传感器算到avago。曾经看过一款传感器,spi接口的,有详细datasheet,应该可以用的起来

Athelloren 发表于 2014-3-19 08:41:03

现在A3080 A9500 A9800等又成了原相的东西了 安华高把这些东西又转给原相了 去原相官网上只能找到datasheet 就是找不到固件

lizhijieli 发表于 2014-3-19 08:45:07

鼠标扫描速度慢,快速和低速移动得到的指不一样,不能计算速度,方向有可能是反的。

mbwhy 发表于 2014-4-2 09:29:29

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

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

ilawp 发表于 2014-4-2 09:38:46

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

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

mbwhy 发表于 2014-4-2 09:49:54

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

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

ilawp 发表于 2014-4-2 09:52:17

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

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

ilawp 发表于 2014-4-2 09:54:25

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

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

小号 发表于 2014-4-2 10:05:22

可以,但是对高度要求很高,对地面的纹理要求也高,对环境光线的要求也高,这样飞着没多大实用价值了吧

bujie8010 发表于 2014-4-2 10:10:48

我也有兴趣,可以一起做,我想要做一个手持打印机,用鼠标传感器获得喷头的移动位置信息来控制喷墨。,

mbwhy 发表于 2014-4-2 10:15:07

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

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

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

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

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

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

    _last_altitude = altitude;
    _last_roll = roll;
    _last_pitch = pitch;
}

ilawp 发表于 2014-4-2 11:10:54

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

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

zrbworktest 发表于 2014-4-2 13:57:36

这不就是光流传感器吗,还用那么麻烦吗?
页: [1]
查看完整版本: 可否利用透镜组和光电鼠标构造测试移动方向和速度的系统