2016/07/07

Ubuntu ALSA 音效卡與 Python的問題 - Google Speech API

當我測試Google Speech API語音輸入時,不斷地收到錯誤訊息。

ALSA lib pcm_dsnoop.c:618:(snd_pcm_dsnoop_open) unable to open slave
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear 
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2239:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side

找了許多方式,最後安裝jack, jackd1, jackd2等等,解決第一行的問題。
sudo apt-get install python-pyaudio
sudo apt-get install multimedia-jack jack jackd1 jackd2
sudo apt-get purge bluez-alsa
pulseaudio --kill
jack_control start

然後修改/usr/share/alsa/alsa.conf裡跟rear, center_lfe, side有關的,前面全部加上#(http://blog.yjl.im/2012/11/pyaudio-portaudio-and-alsa-messages.html),就解決了後面三行的錯誤。

sudo gedit /usr/share/alsa/alsa.conf

#pcm.rear cards.pcm.rear
#pcm.center_lfe cards.pcm.center_lfe
#pcm.side cards.pcm.side


2016/02/05

ROS 在 Ubuntu下的 IDE

最近決定想找個小又方便的ROS IDE用用,雖然用過Eclipse也覺得不錯,但覺得有點麻煩,最後找到一個叫做PyCharm的。

基本上這兩個地方都還算詳細。照著作就可以用了。

http://wiki.ros.org/IDEs#Reusing_your_shell.27s_environment

http://my.phirobot.com/blog/2013-12-ros_ide_for_python_pycharm.html

唯一遇到的問題是第二個網站上的版本比較老了,因此我的作法是。

  1. 下載安裝免費版pycharm。
  2. 萬一有問題的話,就安裝jre 和 jdk,用 sudo apt-get install default-jre default-jdk。
  3. 照網站上改 .desktop的檔案,注意目錄和名稱會隨版本而不同。
  4. 測試時用 git clone https://github.com/ros/ros_tutorials 下載。
  5. 接下來照著網站上做就可以了。

2016/01/22

Ubuntu下Arduiino IDE的State Machine問題研究

下載Arduino IDE 1.6.7後想試試看狀態機,找了幾個版本,覺得這個可能最好用。

http://playground.arduino.cc/Code/SMlib

但是編譯時出現錯誤說某些函數沒定義所以不給過。因此想說奇怪,都是官方網站出的,怎麼會有問題呢。

試了幾個其他版本,只有1.0.5可用,但覺得這實在太舊了,字型超醜,很不適應。想要用新一些的,最後找到1.7.8的。

下載後發現必須要多弄一個步驟,在Preference裡面的Behavior中Executable text file選每次都問,才能直接從檔案總管理面執行。
試跑了狀態機的範例,都沒有問題了。

唯一的遺憾是沒辦法將IDE加到旁邊的快捷列。之後有空再研究看看了。

2016/01/19

在Ubuntu下安裝sublime Text 2與Arduino編譯器

兩種方式
1. Ubuntu Software Center裡面搜尋後安裝。
2. http://sysadmintutorial.blogspot.com/2013/05/how-to-install-sublime-text-2-license.html裡有自行搬運安裝的方式。

安裝Arduino編譯器
https://github.com/Robot-Will/Stino
我因為找不到Package Control,只好直接將Stino下載後解壓到Package的目錄內。好像還可以用。
是了一下,可以編譯也可以監測Com port,但是不能夠上傳程式。

http://www.crazyengineers.com/threads/use-sublime-text-3-editor-as-arduino-ide-to-edit-upload-arduino-sketch-into-arduinos.71159/
這一家也有類似的問題。

算了,只好放棄。

2014/12/22

瘋狂卡丁車設計比賽

唉,說起來好像有點上癮了,看到有趣的設計比賽就會忍不住想試試看。這次也是,沉寂一陣子之後的GrabCAD又辦了個比賽(https://grabcad.com/challenges/the-get-crazy-razor-crazy-cart-design-challenge),規定要用Solid Edge 加上KeyShot,雖然距離上次用 Solid Edge 畫圖是幾年前的的事情了,但是呢,多少還是有點模糊的印象。

這個比賽是要為Razor(http://www.razor.com/)這個製造很多種滑板車小型電動車等等的公司的一個產品叫做瘋狂卡丁車設計些有創意高品質又有設計感的東西,一開始看覺得傻眼,不知道到底要比些什麼,什麼是有創意高品質又有設計感,實在難以捉摸。決定先看看他們的產品影片吧,沒想到他們還有搞笑模仿影片,一共有兩集,講得是箱子賽車手與黑猩猩倉庫管理員的追逐,很多橋段是模仿Ken Block裡面的,像是黑猩猩跟梯子,或是堆高機等。





既然英文程度明顯太差,看了幾遍還搞不太清楚這個比賽的主題到底是什麼,不如等個幾天,看了些別人的創作方向再做決定吧,看到有個改裝成雪地車的(https://grabcad.com/library/crazy-snow-cart-1)實在太強了,車底下的機構一點都不含糊,還有鏈條齒輪什麼的,很難想像這是在幾天內完成的。不過暫時想不到什麼好設計,決定等等看再說了。

等到最後剩下十天不到了,似乎看不出大致的創作主題,查了些比賽的留言,也沒有什麼幫助,可是,如果要參加的話得要開始畫圖了,不然就來不及了。

最先的構想是像上面影片中,做個小紙箱的3D print架子,紙箱上面可以印各種車款的前後與側面,這樣玩家可以開自己喜歡的車子,但是感覺像是抄襲,若是有錢買了一台倒可以自己設計架子過過開名車的乾癮。

不久後又看到另一個影片。


裡面雖然沒有出現這個瘋狂卡丁車,倒是讓我有點覺得不如來設計個真的賽車外殼。畫了一堆草圖,試了許多不同長寬比例,發現這卡丁車加上駕駛後近似於正方體的空間實在很難搭配外殼,任何賽車縮成這樣的比例後完全不能看。

最後實在沒辦法了,只好增加工作量修改車體了,將腳踏板稍往前伸,降低膝蓋高度,將方向盤折個方向,這樣可以使車體稍具流線型。方向盤的位置我試了很久,因為要考慮到成人體型與大腿和身體還有手肘的活動範圍。



另外賽車外型則是想到很多年前高三準備考大學聯考時,在清華大學圖書館裡面不認真讀書,老是跑到五六樓看小說與設計圖鑑,一看就兩三個小時,其中有本關於汽車設計的書,裡面一台骨董賽車讓我到今天都還記得的,就是這個Audi Union Type C。基本上原來車體是長流線型,但是考慮到這台卡丁車在甩尾時半徑可以很小,長車體其實不適合在室內活動,而且卡丁車駕駛大半身體都在車身上面,跟只露出頭的原設計很不同,最後調整程稍微有點可愛卡通造型的車體。



另外呢,還有個要改的就是旁邊的漂移拉桿,又增加了個四連桿機構,將拉桿向前向外移,更像是復古的賽車旁有的煞車。既然都改了這麼多了,順便連內裝也改成復古風的儀表板和皮椅。




這樣基本架構算是完成了,接著就是連著兩三天的換材料背景-調攝影機燈光-算圖的無限循環,最後做了數十張圖,挑出其中可用的十幾張,進Photoshop加上商標處理後,就先交卷了。










最後呢,被建議要做影片,因為沒多少時間了,就加減做了個充數的。

https://www.youtube.com/watch?v=JuMyRAmnw9o

至於結果讓我還蠻意外的(https://grabcad.com/challenges/the-get-crazy-razor-crazy-cart-design-challenge/results),居然能有前幾名。

2014/06/27

反重力電池設計比賽

前一陣子,看到了這個反重力電池公司(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/04/01

JacoRos在Groovy下安裝筆記

Displaying
Displaying

看見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

這下該怎麼辦呢,最後想到一個個看看吧。
cd jaco
mkdir build
cd build
cmake ..

問題出來了,原來是找不到glib-2.0_CONFIG_INCLUDE_PATH這個東西啊。
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
glib-2.0_CONFIG_INCLUDE_PATH
   used as include directory in directory /home/permma/ros_workspace/jacoros/jaco

-- Configuring incomplete, errors occurred!


找到這個檔案,加上一定會找到的路徑,試試看
jacoros/jaco/cmake/Findglib.cmake

FIND_PATH( glib-2.0_INCLUDE_PATH glib.h
        /usr/include/glib-2.0/
        /usr/local/include
        /opt/local/include
        /usr/lib/i386-linux-gnu/glib-2.0/include
        /usr/lib/x86_64-linux-gnu/glib-2.0/include
        DOC "The directory where glib-2.0/glib.h resides")

FIND_PATH( glib-2.0_CONFIG_INCLUDE_PATH glibconfig.h
        /usr/lib/i386-linux-gnu/glib-2.0/include
        /usr/lib/x86_64-linux-gnu/glib-2.0/include
        /usr/lib/glib-2.0/include
        DOC "The directory where glib-2.0/glibconfig.h resides")

重新來一次,果然順利跑到100%。接下來就是
make
rosmake jaco

噹噹~可以用了。