Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 6561|回復: 7
打印 上一主題 下一主題

Arduino 控制 Roomba 機器人

[複製鏈接]
跳轉到指定樓層
1#
發表於 2009-12-26 22:38:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
Youtube 上看到的影片 "Basic roomba control by arduino":



影片示範以 Arduino 控制 Roomba,可以讓 Roomba 前進、後退、轉彎。

仔細看,可以看到 Arduino 接著一塊麵包板,上有 XBee module。我懷疑作者可能是用 ZigBee + 遙控器或 PC 軟體介面在控制 Roomba。Very funny.

PS: 本想貼在 Roomba 板,但驗證碼一直出錯(難道是我眼花了,7+4 不是等於 11嗎?怪怪~) ,所以貼到這板。
-----
Cooper Maa
http://coopermaa2nd.blogspot.com/
2#
發表於 2009-12-26 23:19:10 | 只看該作者
習慣就好, 驗證碼程式功能似乎有瑕疵
這個網站的驗證碼害我一開始的時候差點放棄繼續在這裡的慾望
有好幾天都是連續怎麼輸入都說我打錯
害我還誤以為自己是不是沒戴眼鏡看不清楚咧
那時又不曉得要問誰, 幾天後自己就恢復了
結果我現在好像是因為等級有提升,已經不用輸入煩人的驗證碼了哩

不過影片的應用是很有趣
平時可以讓他自己跑來跑去
興趣一來就自己去遙控他, 沒電還會自己去充電, 應該滿好玩
但zigbee有個問題, 在室內距離太短, 遇到柱子或是牆壁容易掛掉
我最近才弄到1.5公里的Zigbee喔, 不過還沒測試清楚詳細功能
.....
路人甲: 拜託喔, 這何必測試, 跑到一公里外你還看的到這台我就輸你
3#
 樓主| 發表於 2009-12-27 02:29:46 | 只看該作者
又遇到同樣的問題,驗證一直錯誤。驗證程式真的有點秀逗,問答 8+5=?,我輸入 13 沒用,想說好像都是那幾個問題,會不會是答錯題,其實是在問我 7+4 =?,索性輸入 11,居然真的過關了,希望下次有效,哈~

1.5 公里的 Zigbee ? 你是用 Digi 的 XBee-Pro 還是其它廠牌的產品?
4#
發表於 2009-12-27 12:44:50 | 只看該作者
我之前都是關掉IE
重開就"可能"會變好
後來就不再有這個問題了

我的zigbee是自己開發的, 上面的晶片當然還是原廠的
就好像顯示卡說 什麼有華碩技嘉微星.....但事實上晶片還是nVidia/ATI啊
不過價格就得比市場上那種10幾公尺的要貴了
等級不一樣嘛
5#
 樓主| 發表於 2009-12-27 12:52:10 | 只看該作者
3# coopermaa
好奇驗證為什麼會失敗,我下載了 Discuz! 7.0 的 source 來看。找到丟出 "驗證問答回答錯誤,無法提交" 訊息的 code,有兩個地方:
1. ajax.php L93:

  1. } elseif($action == 'checksecanswer') {
  2. if($seclevel) {
  3.   $tmp = $seccode;
  4. } else {
  5.   list($tmp, $expiration, $seccodeuid) = explode("\t", authcode($_DCOOKIE['secq'], 'DECODE'));
  6.   if($seccodeuid != $discuz_uid || $timestamp - $expiration > 600) {
  7.    showmessage('submit_secqaa_invalid');
  8.   }
  9. }
  10. require_once DISCUZ_ROOT.'./forumdata/cache/cache_secqaa.php';
  11. !$headercharset && @dheader('Content-Type: text/html; charset='.$charset);
  12. if(md5($secanswer) != $_DCACHE['secqaa'][substr($tmp, 0, 1)]['answer']) {
  13.   showmessage('submit_secqaa_invalid');
  14. }
  15. showmessage('succeed');
複製代碼

2. global.func.php L1197 & L1203:

  1. if($secqaacheck) {
  2. if(!$seclevel) {
  3.   list($seccode, $expiration, $seccodeuid) = explode("\t", authcode($_DCOOKIE['secq'], 'DECODE'));
  4.   if($seccodeuid != $discuz_uid || $timestamp - $expiration > 600) {
  5.    showmessage('submit_secqaa_invalid');
  6.   }
  7.   dsetcookie('secq', '');
  8. }
  9. require_once DISCUZ_ROOT.'./forumdata/cache/cache_secqaa.php';
  10. if(md5($secanswer) != $_DCACHE['secqaa'][substr($seccode, 0, 1)]['answer']) {
  11.          showmessage('submit_secqaa_invalid');
  12. }
  13. $seclevel && $seccode = random(1, 1) * 1000000 + substr($seccode, -6);
複製代碼

showmessage('submit_secqaa_invalid') 就是丟出 "驗證問答回答錯誤,無法提交" 的來源...
接下來就要靠站長了... :D 從這兩個地方下手 debug,應該是可以找出問題
ps: 也許跟 cookie 有關吧
6#
發表於 2009-12-27 13:12:34 | 只看該作者
$timestamp - $expiration > 600 , 看來應是指600秒?
還是0.6秒?
這行就很奇怪
產生驗證碼以後, 按下送出的時間差
0.6秒的話, 你怎樣試都不可能辦到的啊
7#
 樓主| 發表於 2009-12-27 13:24:50 | 只看該作者
timestamp 是 1970 至今經過的 "秒數",應該是 600 秒沒錯。

比較有可能出錯的地方,我覺得是底下這行:

$_DCACHE['secqaa'][substr($seccode, 0, 1)]['answer'])

也許是 cache 的 seccode 對照錯了吧,不然怎會有時輸入錯誤的答案卻可以驗證過關。
8#
發表於 2009-12-28 15:55:44 | 只看該作者
之前也為了驗證碼搞了很久...

後來發現每次都是這幾個數字在換....
所以啦...這個 漏洞 就是,
輸入上一次的結果就對了
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-25 10:36 , Processed in 0.140189 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表