為了挑戰使用CAD混飯吃,已經把螢幕補滿,外接三個,總共四螢幕。
技術不如人,所以裝備要用好的…
但是偶爾還是想用ubuntu,既然螢幕夠用,那就來用virtualBox吧,這個已經很久沒用了。
升到最新版、登入ubuntu,然後就是apt-get update、apt-get upgrade,接著要開google chrome,卻跳出fatal error,說是NSS的問題。
論壇上有兩三種解決方案,其實就是單純的設定問題而已,ubuntu預設是這樣:
但是在virtualBox裡面卻是這樣:
只要把important security updates 打勾就好了。那,為什麼開啟google chrome會有error,firefox就不會呢?應該是版本問題吧,系統已經把chrome升到最新版,卻沒有升級firefox……
chromebook
聽說在chromebook上面安裝 linux 比較簡單,但是我從一開始的 developer mode 就卡關了,那就來紀錄一下細節好了。
雖然做了一支 recovery drive ,不過這個其實用不到。我這台是 acer R11 CB5-132T/C738T ,要進入 developer mode ,開機或關機狀態都可以,只要按住“esc”+“refresh”然後按一下電源按鈕就好了,接著螢幕會顯示必須插入 recovery drive 之類的訊息,不管它,直接按 ctrl+D …接著按 enter 就好了,然後只要等待即可,機器裡面的資料都會被清掉,反正是新的機器,沒差。
另外,一直在考慮要安裝哪一版的ubuntu,既然都有了復原系統的 image ,就先隨便選一個吧,如果用不習慣再重來一次就好…
目前用的是比較輕量級的桌面ˋ,在 chrome OS 的 shell 打 sudo startxfce4 就可以進入 xubuntu,不過預裝的東西很少,語系檔案、語言包都沒有,開個網頁看不到中文也是怪怪的,只好自己安裝。另外就是鍵盤 layout,我是切回 chrome OS 輸入這個指令:
sudo sh -e ~/Downloads/crouton -t keyboard -u
目前比較不習慣的就是 chromebook 沒有 caps lock 鍵,印象中,這個有解決方案的…
ubuntu 系統關機之後就直接回到 chrome OS、要離開終端機模擬器就輸入 exit、要關掉 crosh 這個 shell 就按 ctrl+D ……先這樣吧,再玩一陣子看看…
Raphael’s life 2017
看樣子接下來幾個月,老鼠不會太多了。前陣子是雨傘節,今天是隻野貓,在深夜若無其事出現跟我打招呼,還好我嚇大的,抵抗力強。
前兩天才見識蜘蛛的驚人特技,從地面一躍而起,通過我的小腿、大腿,然後抵達腋下,咚咚咚,大約就是花了三秒而已,真的跟蜘蛛人一樣,啊,這樣講有點怪,應該說蜘蛛人真的跟蜘蛛一樣。
不過蜘蛛在皮膚上攀爬的觸感,其實不會太糟糕,跟蟑螂比起來。嗯,我們工廠的保全確實不好,畢竟是防人,而不是防野生動物,所以就是形式上養了幾隻狗,再加上他們也該退休了,只是在死撐,因為他們領不到十八啪。
所以,年邁的守門員放了一隻野貓進來,也算情有可原。(回想起來,他們年輕的時候,眼鏡蛇都逃不過他的法眼……)
spacenav_node
複習一下,先玩玩spacenav_node,應該是經常使用CAD軟體的人,才有這種3D滑鼠吧。
我不打電動,所以沒有joystick,之前都是用鍵盤來控制turtlebot,這次就用3D滑鼠好了。主要參考這兩個網頁︰
http://library.isr.ist.utl.pt/docs/roswiki/spacenav_node(2f)Tutorials(2f)WritingTeleopNode.html
http://wiki.ros.org/joy/Tutorials/WritingTeleopNode
在控制turtlebot之前,照慣例還是先用turtlesim來練習,我自己的cpp是這樣的︰
#include <ros/ros.h>
#include <geometry_msgs/Twist.h>
#include <sensor_msgs/Joy.h>
class TeleopTurtle
{
public:
TeleopTurtle();
private:
void joyCallback(const sensor_msgs::Joy::ConstPtr& joy);
ros::NodeHandle nh_;
int linear_, angular_;
double l_scale_, a_scale_;
ros::Publisher vel_pub_;
ros::Subscriber joy_sub_;
};
TeleopTurtle::TeleopTurtle():
linear_(1),
angular_(2)
{
nh_.param("axis_linear", linear_, linear_);
nh_.param("axis_angular", angular_, angular_);
nh_.param("scale_angular", a_scale_, a_scale_);
nh_.param("scale_linear", l_scale_, l_scale_);
vel_pub_ = nh_.advertise<geometry_msgs::Twist>("turtle1/cmd_vel", 1);
joy_sub_ = nh_.subscribe<sensor_msgs::Joy>("joy", 10, &TeleopTurtle::joyCallback, this);
}
void TeleopTurtle::joyCallback(const sensor_msgs::Joy::ConstPtr& joy)
{
geometry_msgs::Twist twist;
twist.angular.z = a_scale_*joy->axes[angular_];
twist.linear.x = l_scale_*joy->axes[linear_];
vel_pub_.publish(twist);
}
int main(int argc, char** argv)
{
ros::init(argc, argv, "teleop_turtle");
TeleopTurtle teleop_turtle;
ros::spin();
}
launch file :
<?xml version='1.0' ?>
<launch>
<!-- Turtlesim Node-->
<node pkg="turtlesim" type="turtlesim_node" name="sim"/>
<!--spacenav node-->
<node respawn="true" pkg="spacenav_node" type="spacenav_node" name="turtle_spacenav" >
<remap from="spacenav/joy" to="joy" />
</node>
<param name="axis_linear" value="1" type="int"/>
<param name="axis_angular" value="0" type="int"/>
<param name="scale_linear" value="2" type="double"/>
<param name="scale_angular" value="2" type="double"/>
<node pkg="robot_spacenav" type="turtle_spacenav" name="teleop"/>
</launch>
我的pkg name : robot_spacenav, cpp name : turtle_spacenav.cpp
cpp檔案中header 是需要注意的,舊版本ROS與新版本有些不同。然後就是CMakeLists.txt,需要add executable、target link libraries.
實際上叫出turtlesim來測試,可以用,不過就是大材小用,只能前進後退、左轉右轉,這種3D滑鼠是有6 dof 的,因為我的code就跟tutorial一樣,只設定了四個參數嘛。
所以這個spacenav_node還可以有很多應用。
玩車
以前,別人把我這個人跟「玩車」劃上等號,其實我不太喜歡這個形象,所以我遠離了車友、車聚,一方面改變形象、一方面省錢。
車本身已經有獨特性,所以只要它能動、有冷氣可以吹,我就滿足了。
「車,就是個交通工具,只要能從A點移動到B點,也就夠了。」一般來講是這樣沒錯,我只是比較要求車輛表現出來的細節,也就是行駛中它回饋給我的各種訊息。
就像音響,我覺得花一萬塊弄一組來聽也就OK了,但是有些人覺得要花十萬。
就像相機,也有人肯花十萬去弄一組來拍。
因為我是不太懂音響或攝影的,所以只能這樣籠統的敘述,理論上花越多錢可以得到越多細節。還好汽車是不太一樣的,在其他國家有些平價車款也能給你很多細節,只不過它可能舒適性沒有很好、或者品牌價值沒有很高,單純就是車款定位的問題。
20歲的掀背車與0歲的掀背車


到底是偶然還是必然?反正就是出現了一個換車的契機。以後應該沒什麼機會買自己的玩具,大部分都是小朋友的奶粉、尿布、玩具、衣服…之類的,所以,換車其實是為了省錢。
未來20年應該還不用擔心沒有汽油可燒,那就換一台自己喜歡的車吧!
當然對我而言,妥協是免不了的。最後的羅密歐也許有機會脫手,而這台…我老婆叫它小銀,必須進回收廠了,雖然只要越過了turbo lag的門檻,還是衝勁十足的。
新車,也是不錯啦,畢竟是深思熟慮過了。可惜的是,全面數位化的控制系統,即使車頭掛著獅子,牠的野性已不復存在了。其實這也沒啥大不了,現在需要的就是一台實用的車而已。
這幾天的感想:隔音好、排氣管的聲音有夠小、去超市買鮮奶可以直接放手套箱保溫、原廠配的大尺寸輪胎在坑洞超多的柏油路上效果不錯。
現在的車好像都有car play,不過這跟玩車應該沒什麼關係。
其實玩自走車也可以說成是在玩車吧,不過玩這種車,真的是越早開始越好。
然後,行李箱的空間在視覺上好像小了一點,過兩天要去載turtlebot,到時候就知道差多少了…
blender筆記(鏡射)
其實不太會用CAD軟體,雖然建模的時候可以輕鬆的完成我想要的各種幾何條件,但是要怎麼優化模型外觀我就不太會了。以前會直接轉檔然後丟進alias studio去處理,不過這個已經很久沒用了,而且,它要花錢買的。
反正都是要給3d印表機的檔案,就轉成mesh、在blender裡面整型吧,整出一個low poly風格也不錯。這次要記錄的是blender的鏡射,目前blender主要還是應用在遊戲、動畫領域吧,有時候想要找一些需要的教學會花比較多時間,所以就記錄一下,免得以後忘了。
blender也不是不能用在工程方面,只是它缺少很多CAD軟體的自動化功能,要是能出現幾個工程用外掛就好了。
這次要處理這個模型
先設定一個參考點
在這裡就是圖片上的cube.002
在modifier選單裡面,可以選一個Mirror Object,以這個object的原點作為鏡射參考點
如果沒有設定這個mirror object,就會變成這樣,左邊跟右邊連在一起
鏡射完成之後,看起來是兩個分開的object,實際上卻還是同一個,所以要切換到edit mode,全選左邊或右邊的face,然後按P,就會變成兩個獨立的object.
另外,如果要跟其他object做布林運算,最好在鏡射之前完成,鏡射之後再去做布林運算可能會有問題。
GIMP_新式身分證照片
平常使用GIMP只有剪貼這種基本的動作而已,最近又必須用到照片了,只好來學一下比較麻煩的用法。
以前換新式身分證的時候,我只是把大頭照的藍色背景修掉,就把照片交出去了,戶政人員也沒說什麼,當時很順利就換到了身分證,不過那個檔案已經找不到了,只好再弄一個。看一看相關資料,原來內政部的要求是比較嚴格的。網路上的說法,大部分是把身分證照片當成2吋大頭照,實際上,從規格上來看,現在的身分證照片跟傳統的2吋照片是不一樣的。
然後,到底應該怎麼換算呢?總覺得不能完全相信網路上的說法,所以我把它畫出來、再想辦法去算它到底幾吋、或幾公分。我只是隨性地畫一下,只要符合規定就好:照片本身要有3.5公分x4.5公分,臉的部分,要從頭頂開始算,高度必須在3.2到3.6公分,使用GIMP的話還是以像素為單位必較準,我自己用的規格是450×563像素,臉部輪廓的高度是405個像素。
接下來是實做,我找到兩個比較有參考價值的網頁:
這一個做法比較簡單,畫出一個概略的輪廓,然後游標會從套索形狀變成筆刷,再用筆刷去塗我們想要extract的部分,重點的部分塗一下,就自動把整個人頭還有肩膀都選起來了,然後按個enter就完成,接著剪下或複製到別的地方,就能用了。雖然簡單,但是頭髮的部分沒有辦法處理的很好,很多細節都不見了。
http://www.readhouse.net/post/547962/
這一篇的做法可以比較精細,但是可能版本不一樣,所以該作者寫的指令我都找不到,他說的顏色、分量、通道混合器,在我這裡是顏色、構成要素、色版混合器。
他的顏色、反相,在我這裡是顏色、相反亮度。
他說的圖層蒙板其實就是遮罩。
不過,最後的顏色、單色化,我就真的找不到。所以,雖然頭髮的輪廓大部分都擷取到了,但是外圍還是留著一圈淡淡的背景色,只好手工移除了……其實我沒有全做完,因為真的太多了,反正照片印出來之後,是看不出來的。上述兩種方法可以合併使用,這樣的話,在使用遮罩的時候,臉、跟脖子的部分只要隨便塗一塗就好,用第一種方法擷取的臉部輪廓其實還不錯,拿過來這邊疊上去就OK了。
然後排版可以參考這一篇:
http://takeson.blogspot.tw/2014/07/gimp6x42.html
雖然還有另一種方法叫做“貼上成為圖樣”,但是我比較喜歡用格線來對齊。
修復windows 7 MBR
裝備:MSI GT60,這臺預裝win 7,之前都用virtualBox在跑ubuntu,既然它的性能還不錯,就實際裝個ubuntu來跑ROS吧……雖然也事先爬了文,最後還是把它玩壞了,我比較沒有辦法理解的是boot-repair,按照它的說明,我應該可以指定安裝GRUB的磁區,結果呢,其實沒辦法選,然後不管我選yes還是選no,它都會在所有磁區安裝GRUB,就這樣,windows開不了機啦,不管開機模式怎麼換,legacy、uefi with csm、uefi,都沒有用,後來連鍵盤都失效了,幸虧USB還能用,插上無線鍵盤繼續搶救。
安裝ubuntu的部分,開機時要用這個參數:nouveau.modeset=0
如果用這個開機:nomodeset,libata.force=noncq
好像不行
然後,要怎麼用一個開機選單來啟動兩個系統?c磁碟是ssd(本來是win 7),d磁碟是傳統硬碟(預計安裝ubuntu),看起來很麻煩,除了三種開機模式,這個主機板還得指定SATA mode,而c磁碟預裝的win 7是個RAID0,即使grub已經寫入到每個磁區,打開grub.cfg來看,根本偵測不到windows系統。
只看到一個HDD,正常應該要有兩個。撇開這個問題不談,假設SATA mode 設定為RAID會影響到ubuntu,那麼切換到其他mode之後,win 7這個RAID0系統也會有問題吧?
我應該會採用比較笨的做法,不讓grub覆寫到windows的磁區,如果要用ubuntu就用uefi mode開機,要用win 7的時候就切換到legacy mode.(那uefi with csm mode到底要幹嘛?)……也許砍掉重練會比較簡單,也就是在uefi mode安裝win 7,但是我不想這麼做,再說,我也沒有安裝光碟,暫時用非正規方法吧。
接下來進入這篇的重點,把win 7救回來,怎麼救呢,首先會想到移除grub,移除之後只要開機就會看到grub rescue,這也沒什麼,但是,用windows修復光碟居然開不了機,那就會有一點慌了…
其實光碟機是有運轉的,可是它就不開機,只能死馬當活馬醫,弄一個usb開機碟吧。先把手上這張修復光碟轉成iso,再拿iso檔來製作開機碟。有很多類似的軟體可以做這些事,隨便找了一個叫做anyburn的,安裝完才發現它也能製作開機碟,那就不用再下載其他軟體啦。
終於,看到了windows開機畫面,然後用命令提示字元來修復mbr,有人說要到E:/boot執行 bootsect /nt60 SYS
不過對我來講,在一開始的地方X:\windows\system32>
執行bootsect /nt60 SYS /mbr
就可以了,然後重開機,總算看到win 7了,好幾天沒看到它了。
raspberry pi 2,ubuntu,raspbian
最近找到的作業系統有四個,其中有三個已經安裝了ROS indigo,img檔案:
PXFmini_ErleBrain2_03_03_2016,2015-04-06-ubuntu-trusty,2015-10-14-ubuntu-trusty,aristoteles
第一個是raspbian,其它都是ubuntu,這裡也有介紹如何在raspbian安裝ROS indigo:
http://wiki.ros.org/ROSberryPi/Installing%20ROS%20Indigo%20on%20Raspberry%20Pi
不過我還是盡量採用簡單的方法。
目前遇到的問題都是wifi連線,當初買wifi dongle的時候沒有考慮到它的射程,因為turtlebot還有無人機會在設定的範圍內跑來跑去,所以到時候還是要再買射程較遠的wifi dongle.現在遇到的問題就先跳過去吧。
然後來整理一下爬文的心得,其中也包括鳥哥私房菜,花時間去那邊看看,對於netmask、gateway這一類東西可以有一些基本的理解。
通常,大部分教我們設定wifi的文章會提到wpa_supplicant.conf,實際上在PXFmini_ErleBrain2_03_03_2016這個系統上只要在/etc/network/interfaces做好設定(固定或浮動ip),就可以連上網路了,不過,要先按照這裡的說明把power_mgnt關掉,網路才不會自己斷線。當然,事情不會那麼順利的,雖然可以透過wifi上網,但是連線速度非常緩慢。另外,接上網路線的時候,輸入
apt-cache search ros-indigo
……它不會出現任何東西,這個img的版本是:Raspbian GNU/Linux 8 (jessie)、Linux 4.1.7-v7+、arm,如果要下載,它會要求輸入訂單號碼(我跟他們買了PXFmini飛控板),然後透過email傳送下載連結。erle robotics是一家西班牙公司,PXFmini_ErleBrain2_03_03_2016這個img預設的keyboard layout是"gb",不需要登入就會進入圖形介面,一開始的這個視窗
直接關掉就可以,當然,如果你買了他們家的產品,點選之後就可以開始玩,以後只要開機,它就會自己啟動ROS、autopilot……,然後就不會有"startx"這個動作了。……這是/home目錄的結構
他們是以raspbian為基礎build出這個系統,所以有個方便的地方,只要用raspi-config就能擴充磁碟容量。
接下來這兩個就簡單帶過:
2015-04-06-ubuntu-trusty—>Ubuntu 14.04.2 LTS、Linux 3.18.0-20-rpi2、armv71
2015-10-14-ubuntu-trusty—>Ubuntu 14.04.3 LTS、Linux 3.18.0-25-rpi2、armv71
這兩個就沒有辦法用wifi上網,我確認過/etc/udev//rules.d/70-persistent.rules,裡面的地址跟wlan0的HWaddr是一致的,所以理論上應該不用動到這個檔案。輸入ifconfig,插上網路線可以看到wlan0的ip,拔掉網路線就不見了。……另外,我裝了Lubuntu,所以遇到vim顏色設定的問題,這邊的shell底色預設為黑色,深藍色的註解就看不清楚啦,可以參考這個網頁,下載desert256.vim、建立資料夾,然後在~/.vimrc加上
color desert256
最後是這個亞里斯多德:Ubuntu 14.04.2 LTS、Linux 3.18.0-20-rpi2、armv71,它的hostname是aristoteles,img檔也用這個名稱,這個檔案有15GB,16G的記憶卡裝不下,雖然有調整的方法,但是,拿一個32G的記憶卡來裝比較快。…它預設是義大利的鍵盤配置,startx之後,wow這個桌面真不錯,但是它的鍵盤不能改成US配置,在文字介面是沒問題的,進入圖形介面就變成預設的鍵盤配置,大概需要特殊的方法去改,反正圖形介面對我來講用處不大,不管他。
網路方面呢,即使插上網路線也連不上網路,通常下了ifconfig命令之後還可以看到HWaddr,但是這裡什麼都看不到,eth0、wlan0都沒有出現,那就這樣吧
sudo rm /etc/udev/rules.d/70-persistent-net.rules
把這個檔案砍了,接下來一切都恢復正常了,有線網路OK、無線網路OK,
連上wifi,ping google.com,沒問題。安裝套件也沒問題。然後
apt-cache search ros-indigo-turtlebot
嗯,桌面版有的,這裡也有,接下來可以準備測試raspi-turtlebot了。……我發現它有network manager,單純只是好奇,進去圖形介面試用

別人家的網路訊號那麼強,擺在旁邊的分享器訊號卻很弱…

換一個driver,再refresh,訊號就變強了,但是無論如何都連不上wifi,算了,這應該不重要。
折磨人的GPU
在COSCUP遇到的同好曾經分享過顯示卡驅動程式的相關問題,所以我也花了時間研究……
我的裝備:Toshiba satellite M840,顯示卡Radeon HD 7670M,當然還有intel,通常筆記型的,都是hybrid狀態。
結論:最簡單的方法,使用“額外驅動程式”,安裝fglrx就可以了。
我一向偏好簡單的方法,但是安裝之後,表面上看起來有安裝了,實際上執行
fglrxinfo
會有類似這樣的結果
表示沒有安裝成功。後來也試了其他安裝方法,其中一個狀況是登入之後還會一直跳出登入的畫面,一直循環,解決方法是這個:
https://andnovar.wordpress.com/2013/05/18/ubuntu-login-loop-xauthority/
另外,我的感想是:別管xorg.conf 了……爬文的過程中發現一種說法,linux kernel的版本也會有影響,所以另外安裝一個比較舊的系統:ubuntu 14.04.2、kernel:linux 3.16.
重開機,看不到畫面,螢幕一直在閃,以前也遇過這樣的事,那個時候莫名其妙把螢幕顯示的問題弄好,然後就不管他了。現在我覺得可以這樣理解:X server 是正常的,但是client 殘廢了。
我好歹也爬文了,所以做了這些事:
切換到tty2
sudo service lightdm stop
Xorg -configure
sudo su
cd ~
cp xorg.conf.new /etc/X11/xorg.conf
重開機……還是一樣,理論上“X”會產生最佳設定,但是在xorg.conf的section module的內容是load glx,而我找不到glx這個東西,雖然它自動產生了一大串看起來很正式的設定,卻起不了作用。其他的aticonfig –initial 或amdconfig –initial 之類的命令其實也都無所謂,在這台satellite m840上面,如果用Additional Drivers 來安裝驅動程式還裝不起來,大概其他方式也很難有作用了。
接下來,講一件神奇的事吧,使用Additional Drivers安裝fglrx,重開機,畫面是這樣:
驅動程式安裝成功了,但是X client 還是廢的,執行一個命令、比如說開一個終端機也很慢,再來一組對比的照片:

這也是用來測試fglrx驅動程式的命令,齒輪會轉動、包住齒輪的方塊也會轉動,只是轉得很慢。然後,我做了一件事,在電腦的VGA輸出接上一個螢幕、執行
amdcccle
然後,螢幕的顯示就變正常了,兩個螢幕都正常,執行
fgl_glxgears
齒輪還有方塊轉得很快、瘋狂地轉……可能是一隻bug;可能這台satellite m840“不乾淨”…
接著測試了幾次,開機的時候必須外接一個螢幕電腦才會正常,那我去參加maker faire不就要多帶一個螢幕去幫電腦開機?
從另一個角度想,多一個、兩個螢幕其實會讓我比較容易向參觀者解釋一些東西,長桌上也不會那麼空虛XD



