前一陣子,看到了這個反重力電池公司(http://antigravitybatteries.com/microstartchallenge/)出的設計題目,一開始並沒有太大的興趣,主要的原因大概是這家廠商的網站有點雜亂,產品的標誌也不太吸引我,電池上有大有小的字體我總覺得不是太美觀。不過呢,仔細看了些他們的新產品,想了想可能的方向,突然有了些靈感,只是這個比賽幾天內就累積到數十件作品,估計比賽截止應該會有上百件,要能拿到前幾名的難度還蠻高的,我一向認為我畢竟不是專搞工業設計的,應該有一大票人可以做出更好的設計,就一直遲遲沒動手。
就這樣一直到截止前幾天,大致搜索了一下參加的上百件作品,居然沒有發現到有跟我的想法類似的,讓我開始猶豫到底要不要參加了。看到許多設計裡面複雜的線條,超級前衛新穎的美工,其實沒有什麼太大的希望。
最後還是決定試一試看看,考量到時間不多,大約只剩三四天了,也沒那個功力去做許多花俏的東西,花了一個小時收集資料,包含接頭與相關配件,另外兩個小時弄了個簡單到像是Kickstarter裡面的設計,將原本的想法做幾張圖出來就交上去不管了。
我最初的想法是這樣的,既然原來廠商的理念是ㄧ個超小型的多功能備用電池加上手電筒,可以充手機筆電機車汽車等等,不如就乾脆讓他功能更強大更好用些。
首先考慮到這家廠商主要產品大概都是些汽機車相關配件,不是以家用電器產品為主,所以外觀要看起來耐用,功能上也得配合汽機車會遇到的狀況。在看廠商展示的影片(https://www.youtube.com/watch?v=bf7u8rQTt94&feature=youtu.be)時發現一個狀況,主要是固定的問題,影片中電池就放在車用電瓶旁邊,一個人在車里發動引擎。但若是只有一個人的話,接完電線又要走回車裡轉鑰匙,萬一車子一個震動,電池就掉進引擎皮帶裡面,或是電線鬆脫短路,感覺蠻危險的,加上引擎蓋擋住視線,很難確認電池的位置。另外,既然是備用跳接電池,一定都是在車子拋錨時才會用到,既然車子沒電的話,萬一發生在晚上四周沒有足夠的燈光看清楚引擎內部,這時有個小燈在引擎蓋上,會比較容易看清楚哪條線要接哪裡。另外,萬一不是電瓶的問題,必須等人來拖吊,閃個警示燈號給附近經過的車子會安全得多。於是決定加上磁鐵,這樣可以吸在車子旁邊或是引擎蓋上。
接下來是考慮手電筒的設計,我還記得國高中露營的時候,都會帶個手電筒,有的是圓筒狀的,有一種是有把手的,我很喜歡那種有把手的設計。因為如果有個把手的話,可以只用一兩隻手指勾住手電筒,還可以空出其他手指做別的事情,必要時也可以掛在皮帶上。但是增加把手就會增加體積,這樣就不符合攜帶方便的理念了,想了幾種不同的設計,最後用了這個可以旋轉的方式。
另外,既然要提供照明的話,多幾個燈不是更好,就乾脆在把手上加一堆LED小燈,還可以當成露營時的帳篷燈,反正只是個提個概念,最後廠商要是不喜歡自己改掉就是了。不過加了這排燈之後,想想光是當成露營燈也沒什麼特別,不如順便用來顯示充電狀態,一舉兩得。
最後是針對家用的功能,除了原本就有附的USB與筆電的插座外,既然有許多高階手機都開始支援無線充電了,乾脆也把這個功能加進去吧,配上估狗的彩虹燈,看起來還有點那麼回事。另外我覺得這家公司的電池上面一堆大大小小各種不同字體的字實在不太好看,可是又規定要用,最後勉強放大商標,把一堆字縮小到角落,勉強算是有個交代。
最後呢,想到既然還有那個旋轉把手,配上無線充電,這不是剛好適合放在桌上當架子看電影順便充電嗎,想到反重力的代表,第一個想到的就是這個我小時候的偶像啦。
至於到底結果如何,就自己去看看吧,讓我還蠻意外的。
https://grabcad.com/challenges/antigravity-batteries-challenge/results
2014/06/27
2014/04/01
JacoRos在Groovy下安裝筆記

看見Moveit的功能實在很心動,一直想要試試看,可是Clearpath裡面沒有怎麼辦呢,雖然可以自己作,但是又覺得應該有人作過了才對吧。
最後找到這個
https://github.com/SankarNatarajan/JacoROS
然後試了一下,在動力學的部份有許多錯誤,不知道怎麼解決。最後就算了。
但是呢,在搜尋解決辦法時,又找到另外一個
https://github.com/fivef/JacoROS/tree/master
這個看起來似乎有點跡象可以用,首先依照說明
wstool set JacoROS --git https://github.com/fivef/JacoROS.git
wstool update JacoROS
cd to the cloned "JacoROS" folder
sudo cp udev /99-jaco -arm. rules /lib/udev/rules. d/
sudo cp -r Kinova ~
然後怎麼不能用呢!
roslaunch jaco start.launch
roslaunch jaco_moveit_config bringup_moveit_planning_execution.launch
這下該怎麼辦呢,最後想到一個個看看吧。
問題出來了,原來是找不到glib-2.0_CONFIG_INCLUDE_PATH這個東西啊。
Please set them or make sure they are set and tested correctly in the CMake files:
-- Configuring incomplete, errors occurred!
找到這個檔案,加上一定會找到的路徑,試試看
FIND_PATH
/
/
/
/
/
DOC "The directory where glib-2.0/glib
FIND_PATH
/
/
/
DOC "The directory where glib-2.0/
重新來一次,果然順利跑到100%。接下來就是
噹噹~可以用了。
2013/12/17
福爾摩斯的部落格謎題3解答
今天發現原來福爾摩斯也有個部落格,詳細介紹請看這裡。
http://mike0123783.pixnet.net/blog/post/37108053-%E7%A6%8F%E7%88%BE%E6%91%A9%E6%96%AFbbc%E9%80%A3%E7%BA%8C%E5%8A%87%E7%89%88
好奇連上去看看,上面還有些謎題,其中有兩個謎題已經有解答了,但是還有第三個謎題還沒解開。
http://www.thescienceofdeduction.co.uk/hidden-messages/hiddenmessage3
看了看,似乎有點頭緒了,可是真的要花時間去解開嗎?
............
............
............
最後忍不住一時手癢,解解看是什麼,原來是
Sherlock
I have
found
you
不過其實大家很早就想到了啊,哈哈。
http://observeanalysededuce.wordpress.com/2010/08/18/sherlock-holmes-hidden-message-3/
隨便看了一些解釋,有些網站說那個豬住在哪裡的問題無關緊要,其實那只是一個提示,豬當然住在豬圈裡啦!
豬圈的英文是pigpen,這個編碼的方式叫做 Pigpen Cipher。
http://en.wikipedia.org/wiki/Pigpen_cipher
哈哈,真是無聊時的好消遣啊!
http://mike0123783.pixnet.net/blog/post/37108053-%E7%A6%8F%E7%88%BE%E6%91%A9%E6%96%AFbbc%E9%80%A3%E7%BA%8C%E5%8A%87%E7%89%88
好奇連上去看看,上面還有些謎題,其中有兩個謎題已經有解答了,但是還有第三個謎題還沒解開。
http://www.thescienceofdeduction.co.uk/hidden-messages/hiddenmessage3
看了看,似乎有點頭緒了,可是真的要花時間去解開嗎?
............
............
............
最後忍不住一時手癢,解解看是什麼,原來是
Sherlock
I have
found
you
不過其實大家很早就想到了啊,哈哈。
http://observeanalysededuce.wordpress.com/2010/08/18/sherlock-holmes-hidden-message-3/
隨便看了一些解釋,有些網站說那個豬住在哪裡的問題無關緊要,其實那只是一個提示,豬當然住在豬圈裡啦!
豬圈的英文是pigpen,這個編碼的方式叫做 Pigpen Cipher。
http://en.wikipedia.org/wiki/Pigpen_cipher
哈哈,真是無聊時的好消遣啊!
2013/11/25
RoboSavvy人型機器人設計比賽-unl
最近參加了個人型機器人的設計比賽,裡面有許多不錯的設計,都可以免費下載下來在自家裡的3D成型機裡面做出來喔。不過呢,這還只是個紙上談兵的部分,做出來能不能動還不知道呢。但是若有時間慢慢拿這些現成的樣本修修改改,應該可以做出些不錯的成果。
這是我的作品,https://grabcad.com/library/robosavvy-humanoid-design-unl-1
主要的設計重點是在可以替換的外殼與容易升級的背包。
當然腳上能夠加的感測器也不能少啦,前後各配備一個超音波感測器,腳底也有四個壓力感測器。背包打開來,裡面一個黑黑獵兔狗骨頭(BeagleBone Black)的小電腦加上一塊1350mAh電池。若是怕不夠用,身體裡面還有空間可以再加上一顆喔。屁股後面紅紅的一個是IMU或加速度計,可作為平衡用的。
這是背包的部分,那個大大的頭上藍色的蓋子裡面可以加個小喇叭。換上小頭,看起來又是另外一種風格。
還有雙伺服馬達的膝關節,三個自由度的髖關節,因為比賽規定只能用AX12/18的伺服機,所以膝關節得用到兩個,才夠產生足夠的扭力。
內部的結構設計,一共用到24個伺服機阿,真是超貴,不過這比賽規定裡面也沒限制,當然就盡量用囉!
小頭的設計。
最後擺幾個姿勢看看,當然不可少的就是有名的金雞獨立啦。
若是去參加足球賽的話,就大概長成這樣吧!
大小兩個頭比較一下。
附錄1:
有人跟我提到,對於那個膝關節有些疑惑,不太清楚到底是怎麼運作的,順便說明如下。
膝關節裡面的兩個伺服機其實是用齒輪連在一起,這樣若兩個一起轉動的話,彼此的扭力會經由齒輪機構傳遞到另一端,也由此增加扭力。下面是用Working Model 2D的模擬,當只有一個伺服機施加扭力時,可以看到移動速度較慢,對地面產生的力量較小,而當兩個伺服機同時工作時,不僅速度增加,地面作用力也變大快要兩倍,也就是能夠支撐或對身體施予更多的力量。


不知道大家看到現在,有沒有猜到設計的靈感來源其實就是來自這幾隻啦!
2013/11/15
smach 狀態機安裝筆記
http://wiki.ros.org/smach/Tutorials/Getting%20Started
這個狀態機似乎蠻好用的,而且還可以顯示各種不同狀況。決定來試試看。
一開始是在hydro下面,可是怎麼都找不到smach-viewer這個東西,這樣要怎麼看那個漂亮的圖呢?
最後是自己下載了一份hydro的版本,rosmake後卻又沒有smach-tutorial可以試,到底還有沒有人在用smach呢?唉!
一氣之下,轉回groovy,這下子內建smach_viewer應該就沒問題了吧。哈哈!
但是呢,還是沒有smach_tutorial可用,這到底怎麼了呢!!!?
最後呢,自己去弄一份來吧,反正都走到這步田地了。
http://ros-users.122217.n3.nabble.com/How-to-install-smach-tutorials-package-td1284493.html
svn co https://code.ros.org/svn/ros-pkg/stacks/executive_smach_tutorials/trunk/ executive_smach_tutorials
rosmake executive_smach_tutorials
結束後進去先跑個範例試試看。
ipython state_machine_simple.py
什麼!!!居然不行,這太誇張了吧!
action_server_wrapper.py", line 9, in <module> from actionlib.simple_action_server import SimpleActionServer ImportError: No module named simple_action_server
這是什麼狀況?怎麼連自家人的程式都這樣搞內鬨呢?
http://answers.ros.org/question/44062/smach-tutorial-importerror-no-module-named-msg/
最後找到這裡一看,
There is a file called examples/actionlib.py in the same folder. Rename the file actionlib.py to actionlib1.py and delete the file actionlib.pyc.
居然是這個問題啊!
開個smach_viewer,跑iterator_tutorial.py,終於看到想看到的狀態機啦!
這個狀態機似乎蠻好用的,而且還可以顯示各種不同狀況。決定來試試看。
一開始是在hydro下面,可是怎麼都找不到smach-viewer這個東西,這樣要怎麼看那個漂亮的圖呢?
最後是自己下載了一份hydro的版本,rosmake後卻又沒有smach-tutorial可以試,到底還有沒有人在用smach呢?唉!
一氣之下,轉回groovy,這下子內建smach_viewer應該就沒問題了吧。哈哈!
但是呢,還是沒有smach_tutorial可用,這到底怎麼了呢!!!?
最後呢,自己去弄一份來吧,反正都走到這步田地了。
http://ros-users.122217.n3.nabble.com/How-to-install-smach-tutorials-package-td1284493.html
svn co https://code.ros.org/svn/ros-pkg/stacks/executive_smach_tutorials/trunk/ executive_smach_tutorials
rosmake executive_smach_tutorials
結束後進去先跑個範例試試看。
ipython state_machine_simple.py
什麼!!!居然不行,這太誇張了吧!
action_server_wrapper.py", line 9, in <module> from actionlib.simple_action_server import SimpleActionServer ImportError: No module named simple_action_server
這是什麼狀況?怎麼連自家人的程式都這樣搞內鬨呢?
http://answers.ros.org/question/44062/smach-tutorial-importerror-no-module-named-msg/
最後找到這裡一看,
There is a file called examples/actionlib.py in the same folder. Rename the file actionlib.py to actionlib1.py and delete the file actionlib.pyc.
居然是這個問題啊!
開個smach_viewer,跑iterator_tutorial.py,終於看到想看到的狀態機啦!
Dell m4700 安裝10.04LTS, ROS, Jaco 筆記
一開始無線網路卡找不到,得自己從別台電腦下載Broadcom的驅動,手動make後在複製到該在的位置。
http://ubuntuforums.org/showthread.php?t=1390979
RAM upgrade: 外加全滿的記憶體後,得要改變核心一下,才能看到升級後的成果。
sudo apt-get update
http://linuxblog.pansapiens.com/2010/06/22/using-more-than-3-gb-of-ram-with-32-bit-ubuntu-10-04-lucid/
可是這時候又找不到網路卡了,當然又是在手動make一下,只是換成新裝的核心位置了。
install Nvidia driver
得要外接個螢幕,用功能鍵將螢幕切換到外部,才能夠看到命令列。
(http://www.nvidia.com/object/linux-display-ia32-310.44-driver.html)
(http://www.ubuntugeek.com/howto-install-nvidia-drivers-manually-on-ubuntu-10-04-lucid-lynx.html)
ctrl+alt+F1 按下後會進到終端機模式
login
sudo service gdm stop 得停止x-server,不然會不給裝。
sudo sh ~/Download/NVIDIA......
至於中文輸入法,就參考這個吧
http://chris959.blogspot.com/2012/02/linux-mint.html
JACO 機器手
http://www.ros.org/wiki/jaco
先設定workspace
重新開一個終端機
就可以啦!
最後實在沒辦法,有許多東西不太支援10.04了,音效卡是其中之一,就換成12.04LTS啦!
http://ubuntuforums.org/showthread.php?t=1390979
RAM upgrade: 外加全滿的記憶體後,得要改變核心一下,才能看到升級後的成果。
sudo apt-get update
http://linuxblog.pansapiens.com/2010/06/22/using-more-than-3-gb-of-ram-with-32-bit-ubuntu-10-04-lucid/
可是這時候又找不到網路卡了,當然又是在手動make一下,只是換成新裝的核心位置了。
install Nvidia driver
得要外接個螢幕,用功能鍵將螢幕切換到外部,才能夠看到命令列。
(http://www.nvidia.com/object/linux-display-ia32-310.44-driver.html)
(http://www.ubuntugeek.com/howto-install-nvidia-drivers-manually-on-ubuntu-10-04-lucid-lynx.html)
ctrl+alt+F1 按下後會進到終端機模式
login
sudo service gdm stop 得停止x-server,不然會不給裝。
sudo sh ~/Download/NVIDIA......
至於中文輸入法,就參考這個吧
http://chris959.blogspot.com/2012/02/linux-mint.html
JACO 機器手
http://www.ros.org/wiki/jaco
先設定workspace
roscd
|
rosws set ros-jaco-arm --git https://github.com/Kinovarobotics/jaco-ros.git
|
rosws update ros-jaco-arm
|
重新開一個終端機
cd ros-jaco-arm
|
rosmake
|
就可以啦!
最後實在沒辦法,有許多東西不太支援10.04了,音效卡是其中之一,就換成12.04LTS啦!
安裝Jaco Arm
根據ros wiki的介紹,基本上只要照著這個網頁安裝完就可以了。
http://ros.org/wiki/jaco?distro=fuerte
就只有這麼幾個步驟。經過測試,Fuerte/Groovy/Hydro都可以用喔。不過呢,這只適合用在rosmake,catkin的版本還沒出。
但是實際上呢,我碰到幾個狀況是網頁上沒提到的。上面的紅字是我補充的部份。
另外呢,在問題回報區(https://github.com/Kinovarobotics/jaco-ros/issues/1)裡面有提到32bit的問題。下面是討論區的回覆。
http://ros.org/wiki/jaco?distro=fuerte
就只有這麼幾個步驟。經過測試,Fuerte/Groovy/Hydro都可以用喔。不過呢,這只適合用在rosmake,catkin的版本還沒出。
roscd
|
rosws set ros-jaco-arm --git https://github.com/Kinovarobotics/jaco-ros.git
到下一步前,必須先關掉目前的終端機或是開一個新的,這樣這個新加工作區的才會被加入。 |
rosws update ros-jaco-arm
|
cd ros-jaco-arm
|
rosmake
|
但是實際上呢,我碰到幾個狀況是網頁上沒提到的。上面的紅字是我補充的部份。
另外呢,在問題回報區(https://github.com/Kinovarobotics/jaco-ros/issues/1)裡面有提到32bit的問題。下面是討論區的回覆。
$ roscd jaco_driver/lib/i386-linux-gnu
$ cp Kinova.API.CommLayerUbuntu.so ~/.ros/
我的解決方式是將那目錄裡面的一堆.so檔全複製一份到/usr/lib裡面。噹噹!出現連線成功的雙藍燈囉!
Dell M 4700 安裝 12.04LTS 加上 ROS 筆記
使用版本12.04.03LTS
音效卡正常,顯示卡與網路卡都可以被Additional Drivers找到。
安裝ros-hydro,這樣才有openni2,可以讀到剛買的primesense 3D攝影機(http://www.primesense.com/solutions/3d-sensor/)。
安裝Clearpath Jaco Driver
先照這個網站上的步驟
http://wiki.ros.org/jaco
然後將幾個.so檔案複製一份到/usr/lib/與~/.ros/
https://github.com/Kinovarobotics/jaco-ros/issues/1
最後找出rules.d,再將99-jaco-arm.rules複製一份過去。
這樣好像就可以了。
最後就是移除一些不必要的軟體囉!
可是呢,最近想用smach時發現hydro有個小問題,就是似乎更新不太完全,這部份好像還沒更新到,難道大家不想用狀態機了嗎!
為了試試看smach,只好降回groovy,但是呢,openni2要怎麼辦呢?
我試了幾種方式,都不太有用,大部分是用在kinect的。
http://answers.ros.org/question/54747/primesense-carmine-doesnt-work-but-asus-xtion-does-openni-launch-devices-connected-but-not-found/
本來以為沒希望了,但是呢,天無絕人之路,從這裡下載了ros-groovy裡面沒附上的openni2_launch,記得要選groovy版。
https://github.com/ros-drivers/openni2_launch
重新catkin_make一下。測試一下,
roslaunch openni2_launch openni2.launch
rosrun rviz rviz
照著openni ros裡面的設定加入depth camera,叮咚!
中間發生了小插曲,因為我砍掉了hydro又重新裝groovy,所以rqt的一堆插件全都失靈,大家都還在懷念hydro啊!真是念舊的ros,該怎麼辦呢!?
http://answers.ros.org/question/91231/rqt-plugin-not-listedfound-in-list-returned-by-rqt-list-plugins/
查了半天rqt裡面的一堆檔案,沒發現有人窩藏hydro在裡面啊,最後找到上面這裡,按照這兩段一用,咻,跟新的一樣啦!
音效卡正常,顯示卡與網路卡都可以被Additional Drivers找到。
安裝ros-hydro,這樣才有openni2,可以讀到剛買的primesense 3D攝影機(http://www.primesense.com/solutions/3d-sensor/)。
安裝Clearpath Jaco Driver
先照這個網站上的步驟
http://wiki.ros.org/jaco
然後將幾個.so檔案複製一份到/usr/lib/與~/.ros/
https://github.com/Kinovarobotics/jaco-ros/issues/1
最後找出rules.d,再將99-jaco-arm.rules複製一份過去。
這樣好像就可以了。
最後就是移除一些不必要的軟體囉!
可是呢,最近想用smach時發現hydro有個小問題,就是似乎更新不太完全,這部份好像還沒更新到,難道大家不想用狀態機了嗎!
為了試試看smach,只好降回groovy,但是呢,openni2要怎麼辦呢?
我試了幾種方式,都不太有用,大部分是用在kinect的。
http://answers.ros.org/question/54747/primesense-carmine-doesnt-work-but-asus-xtion-does-openni-launch-devices-connected-but-not-found/
本來以為沒希望了,但是呢,天無絕人之路,從這裡下載了ros-groovy裡面沒附上的openni2_launch,記得要選groovy版。
https://github.com/ros-drivers/openni2_launch
重新catkin_make一下。測試一下,
roslaunch openni2_launch openni2.launch
rosrun rviz rviz
照著openni ros裡面的設定加入depth camera,叮咚!
中間發生了小插曲,因為我砍掉了hydro又重新裝groovy,所以rqt的一堆插件全都失靈,大家都還在懷念hydro啊!真是念舊的ros,該怎麼辦呢!?
http://answers.ros.org/question/91231/rqt-plugin-not-listedfound-in-list-returned-by-rqt-list-plugins/
查了半天rqt裡面的一堆檔案,沒發現有人窩藏hydro在裡面啊,最後找到上面這裡,按照這兩段一用,咻,跟新的一樣啦!
$ rm ~/.config/ros.org/rqt_gui.ini
$ rqt
2013/06/07
MOPED gfortran f951 error
早上跑去CMU請教了MOPED的作者,根據他的描述,只要參考裏面的modeling.dox,裏面的說明非常的直前(straightforward),只要照著做,就可以自己建立模型庫了。
不過我那時沒帶到我裝了Linux的筆電,只好等下午回到實驗室才能證實他的說法。
對於沒有安裝MOPED的人,請先根據這篇文章將MOPED check out出來,接下來所要用到的都在 pr/src/moped/moped2/modeling/ 這個目錄中。
最容易做的就是下載範例了。用
cd examples
sh download_examples.sh
等個幾分鐘,就全部下載完了。
首先要安裝Modeling
make 沒多久後就出現一個錯誤:
gcc: error trying to exec 'f951': execvp: No such file or directory
查了一下,在這裡提到要安裝gfortran,感覺蠻奇怪的,如果 gcc 是c的編譯器,那gfortran不就是fortran的編譯器了嗎!這不是我大學時代就已經開始淘汰的語言嗎!現在都什麼時代了還有人用fortran寫程式,我這可是最新的電腦耶,怎麼可以裝這種老古董的編譯器自損身價,重新找找看有沒有搞錯,可是都沒找到相關的。
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48697
雖然有點不願意,但是死馬當活馬醫,先用
sudo apt-get install gfortran
試試看,然後重新
make
果真解決了,還真的是 fortran 編譯器的問題,唉,我實在是小看了這博大精深的Linux了。
不過我那時沒帶到我裝了Linux的筆電,只好等下午回到實驗室才能證實他的說法。
對於沒有安裝MOPED的人,請先根據這篇文章將MOPED check out出來,接下來所要用到的都在 pr/src/moped/moped2/modeling/ 這個目錄中。
最容易做的就是下載範例了。用
cd examples
sh download_examples.sh
等個幾分鐘,就全部下載完了。
首先要安裝Modeling
make 沒多久後就出現一個錯誤:
gcc: error trying to exec 'f951': execvp: No such file or directory
查了一下,在這裡提到要安裝gfortran,感覺蠻奇怪的,如果 gcc 是c的編譯器,那gfortran不就是fortran的編譯器了嗎!這不是我大學時代就已經開始淘汰的語言嗎!現在都什麼時代了還有人用fortran寫程式,我這可是最新的電腦耶,怎麼可以裝這種老古董的編譯器自損身價,重新找找看有沒有搞錯,可是都沒找到相關的。
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48697
雖然有點不願意,但是死馬當活馬醫,先用
sudo apt-get install gfortran
試試看,然後重新
make
果真解決了,還真的是 fortran 編譯器的問題,唉,我實在是小看了這博大精深的Linux了。
2012/05/25
2012/05/17
C# game programming - For Serious Game Creation
有用的Timer
using System.Runtime.InteropServices;
namespace GameLoop {
public class PreciseTimer {
[System.Security.SuppressUnmanagedCodeSecurity] [DllImport("kernel32")] private static extern bool QueryPerformanceFrequency(ref long
PerformanceFrequency); [System.Security.SuppressUnmanagedCodeSecurity] [DllImport("kernel32")] private static extern bool QueryPerformanceCounter(ref long PerformanceCount); long _ticksPerSecond = 0; long _previousElapsedTime = 0; public PreciseTimer() {
QueryPerformanceFrequency(ref _ticksPerSecond); GetElapsedTime(); // Get rid of first rubbish result
} public double GetElapsedTime() {
long time = 0; QueryPerformanceCounter(ref time); double elapsedTime = (double)(time - _previousElapsedTime) /
(double)_ticksPerSecond; _previousElapsedTime = time; return elapsedTime;
} }
}
The QueryPerformanceFrequency function retrieves the frequency of the high-resolution performance counter. Most modern hardware has a high- resolution timer; this function is used to get the frequency at which the timer increments. The QueryPerformanceCounter function retrieves the current value of the high-resolution performance counter. These can be used together to time how long the last frame took.
GetElapsedTime should be called once per frame and this will keep track of the time. The elapsed time is so important that it should be incorporated into the game loop. Open the Program.cs file and change the game loop so it takes one argument.
public class FastLoop {
PreciseTimer _timer = new PreciseTimer(); public delegate void LoopCallback(double elapsedTime);
The timer is then called once per frame and elapsed time is passed on to FastLoop’s callback.
void OnApplicationEnterIdle(object sender, EventArgs e) {
while (IsAppStillIdle()) {
_callback(_timer.GetElapsedTime()); }
}
The game loop can now be used to smoothly animate any game! By the end of this chapter, the game loop will be used to smoothly rotate a 3D triangle—the ‘‘Hello World’’ application of OpenGL programming.
2011/10/31
2011/10/13
Working with ROS and OpenCV 在ROS裡面用OpenCV
這個印度人的部落格介紹了不少ROS與OpenCV的東西,先來試試看這個。
http://siddhantahuja.wordpress.com/2011/07/20/working-with-ros-and-opencv-draft/
http://siddhantahuja.wordpress.com/2011/07/20/working-with-ros-and-opencv-draft/
2011/07/26
How to import kivy in Eclipse 如何在Eclipse中加入Kivy的套件
今天查了下Python的資料,看到一個不錯的套件Kivy,可是呢,網站上的資料都只有英文不說,連如何加到Eclipse裡也沒有。難道我得要每次都拖拉我的程式到Kivy中執行嗎?這太麻煩了啊!
在網路上搜尋了一下,沒有人做過這件事,唯一的一個官方討論區的建議是,大部份的Kivy開發者都用小作家類得文字編輯器,在命令模式下執行。雖然我也很享受在鍵盤上敲打然後程式跑出來的感覺,可是呢,總是不甘心好不容易裝了個Eclipse+PyDev卻不能在上面用Kivy,最後花了點時間東看看西找找,居然也被我弄出來了,為了紀念這麼一天,在此紀錄一下。
在Mac OS X下的做法,首先用Terminal執行以下的命令。用來找出到底kivy躲在哪裡。
$ which kivy
我的電腦幫我找出來他在這裡的目錄內。
/usr/local/bin/kivy
輸入剛才找到的目錄,取個名字叫做kivy。
最後呢,他會幫忙找出這些,我加選了出現kivy的那兩個,其他是電腦自行找出來的。
之後選取Apply,當然,別忘記在Project->Property中選用新作的Interpreter。
最後,再重新啓動Eclipse就可以用囉!測試一下Hello World程式,完全沒有錯誤了。
import kivy
kivy.require('1.0.6') # replace with your current kivy version !
from kivy.app import App
from kivy.uix.button import Button
class MyApp(App):
def build(self):
return Button(text='Hello World')
if __name__ in ('__android__', '__main__'):
MyApp().run()
結論,這可能是太簡單了,所以沒有人作成教學放在網路上。不過呢,對於我這種程式菜鳥,還是得靠這種圖文教學才學得會。若有其他人也有同樣的困擾,希望這篇對他有些幫助。
在網路上搜尋了一下,沒有人做過這件事,唯一的一個官方討論區的建議是,大部份的Kivy開發者都用小作家類得文字編輯器,在命令模式下執行。雖然我也很享受在鍵盤上敲打然後程式跑出來的感覺,可是呢,總是不甘心好不容易裝了個Eclipse+PyDev卻不能在上面用Kivy,最後花了點時間東看看西找找,居然也被我弄出來了,為了紀念這麼一天,在此紀錄一下。
在Mac OS X下的做法,首先用Terminal執行以下的命令。用來找出到底kivy躲在哪裡。
$ which kivy
我的電腦幫我找出來他在這裡的目錄內。
/usr/local/bin/kivy
輸入剛才找到的目錄,取個名字叫做kivy。
最後呢,他會幫忙找出這些,我加選了出現kivy的那兩個,其他是電腦自行找出來的。
之後選取Apply,當然,別忘記在Project->Property中選用新作的Interpreter。
最後,再重新啓動Eclipse就可以用囉!測試一下Hello World程式,完全沒有錯誤了。
import kivy
kivy.require('1.0.6') # replace with your current kivy version !
from kivy.app import App
from kivy.uix.button import Button
class MyApp(App):
def build(self):
return Button(text='Hello World')
if __name__ in ('__android__', '__main__'):
MyApp().run()
結論,這可能是太簡單了,所以沒有人作成教學放在網路上。不過呢,對於我這種程式菜鳥,還是得靠這種圖文教學才學得會。若有其他人也有同樣的困擾,希望這篇對他有些幫助。
Subscribe to:
Posts (Atom)




















