2018年9月15日 星期六

小巨蛋也能碰瓷!? 邪會、區塊鍊與超冷門運動 - 曲棍球


中國是傾全國之力在發展曲棍球,每一個城區的大型商場都會有一個冰球場,而台灣是用爸媽的力量,為了小孩發展出驚人的對抗耐力

亞運結束都要快一個月了,還記得戴資穎的臉書上寫著:盼體育環境加強

這個其實全國人民都知道,我以前也是跟風一起當作茶餘飯後話家常而以

認識我的朋友都知道假日都出現在宜蘭衝浪

這次的亞運我關注的其實是非常冷門的運動 陸上曲棍球

新聞上寫著 - 女子曲棍球隊亞運首戰就對上球隊職業化的日本以011吞敗

7月才開始在南投竹山高中集訓的曲棍球隊,雖然首場比賽大比分輸給日本,看出我們與日本職業與非職業的差距

曲棍球可以說是加拿大的國隊,兒童比賽是不允許全力衝撞的(畢盡還在發育),但成人比賽不只有衝撞,要打架可以,不準用桿子打,不是去練舞室打,而是要打就脫護具打,打完繼續比賽! 像不像男生打完架隔天還是好朋友的樣子? 就是這麼熱血暢快!!!

亞運女子曲棍球在小組賽第二戰對上中國隊,仍然無法終止輸球命運,甚至連首顆進球都還未能出現,以09吞下第二敗,曲棍球環境在台灣,真的辛苦了

我兒子比在成都工作好朋友的女兒早一年在台灣練曲棍球,好友的雖女兒晚一年,但進步的幅度快到驚人,對岸這些家長怕輸給其他人似的,都請最好的私人教練,所以他們的球員才會有一批又一批

中國是傾全國之力在發展曲棍球,每一個城區的大型商場都會有一個冰球場,而台灣是用爸媽的力量,為了小孩發展出驚人的對抗耐力


球證、旁證加上主辦、協辦,所有的單位全部都是我的人! 怎麼和我鬥!


出社會服務了這麼久,沒碰過慣老闆、跟著鄉民罵邪會,也笑過中國的碰瓷

沒想到讓小朋友練曲棍球能讓我提升對抗耐力、碰到邪會、慣老闆與碰瓷,活這麼大,還真的被長知識了

首先是練習場的類邪會,由於比賽是需要一些費用才有辦法讓雙方的隊伍競賽,曲棍球神奇之處在於所有小朋友的爸媽感情都很好,這是團隊運動有的特殊現像

為了讓小朋友的能力變強,我們想出了一個方法,讓教練帶著大家每週或每月打一場,以戰養戰,比賽的費用由爸媽出

看似完美計畫,練習場說一句,你們打這麼爛,以戰養戰有什麼用,不要浪費錢辦比賽了

What!? 我出錢讓我孩子上場打都不行! ?

! 接下來這些爸媽又想到一個方式,繞過練習場,由爸媽名義發起組織,結果邪會say NO,一定要曾經組織過的練習場才能報名

套句強雄說的話:球證、旁證加上主辦、協辦,所有的單位全部都是我的人! 怎麼和我鬥! !!!

好吧! 即然沒辦法這麼做! 那就只好加強基本功了! 在成都工作的好友都說他女兒都是請國家級的教練,那我們也來請國手教好了!

假設我們花了1500二個小時,請一個國手級的教練一對一(這裡不寫出真實價格),結果會連練習場都發現小朋友最近進步神速,接著會來問,要不要來一對一呀? 我們請某某國手教練教你,二個小時收1500

乍看之下好像二邊都是1500,但是練習場要跟教練對拆,教練收800或是更少,場地費需要維護這能理解,但練習場還不希望教練在外私下開課,也不願意讓學員私底下去找其他球隊的教練

被發現怎麼辦!? 你就不用來啦!

真是有見地!!! 生平第一次碰到慣老闆就獻給他們了!


為什麼比克不會變超級賽亞人? 他是那美克星人你在這期待什麼?


練習場非常不喜歡爸媽感情太好,也不希望家長找大教練,大教練就是國手級的,他說何必找國手級的,其他教練也行啊!(大教練對拆下來幾乎沒賺頭吧!? 我猜!) 問題就在於其他教練上課時,小朋友混水摸魚也不管,根本就是來打工下班收錢,這樣對小朋友一點練習的功效都沒有

對岸的教練是做不對,馬上就扯開喉嚨破口大罵了! 我做家長是可以接受讓教練臭罵的,所以會希望教練嚴格一些,如同衝浪,剛開始沒教好,後面調姿勢是很困難的,我做人有個原則,服務留給我,錢就留給你,總是要讓人賺一些吃飯錢嘛~

其實這些很會教小朋友的國手教練講了一句我非常認同的話:不是每個曲棍球的球員都有辦法下來當教練,有些人很會進攻,也許是天才型選手,但當他作指揮時,就是有人聽不下去

這就跟我在教小朋友scratch一樣,在我身邊的理工宅窩裡,隨便去挑一個宅宅教小朋友寫code試試,上到一半就可以準備放手讓大家打game了,會教和不會教還是有差滴!

如同兒子問為什麼比克不會變超級賽亞人一樣? 他是那美克星人你在這期待什麼?

因為曲棍球這種在台灣的冷門運動,你吹噓你的桿子、帽子、護具都高檔到不行,桿子拍面多美多神奇,聽你就能上天堂,不要聽其他人亂說,殊不知台灣曲棍球裝備有在代理的就是Bauer,我也在深圳工作過,淘寶在台灣用順豐運費雖然比較貴,且淘寶賣家問的比你還詳細,就怕你買錯! 神奇吧! 淘寶不是水貨林立嗎?


運動區塊鍊也許是一個解決方法


聽過區塊鍊嗎? 或是比特幣???  區塊鍊的核心意義在於去中心化與無法竄改資料的優勢,假設你有一個停車場,平常開車去上班,車位空了,想出租出去,有一個人說,你上班之後,你的位置我幫你想辦法,而且還可以收到一些錢,而這個人我們叫他中間人(中心化),中間人用你的車位賺了一些錢,再分一些紅利給你,如果我把中間人掉拿,讓想租你車位的人直接來找你,把中間的抽佣全退給你,這就叫去中心化

無法竄改資料是什麼意思? 做網路交易需要大量的後端存儲,如果是你的電腦資源分一丁點給我存,我的電腦也分一丁點給他存,大家的電腦都分一點給其他地球人甚至賽亞人存,有沒有感覺很像一個鏈結? 這就是區塊鍊

大家存了壓縮過後的資料,此時我想改他的壓縮資料,但卻還有千千萬萬個他的壓縮資料還沒改,這就是無法竄改資料的優勢,所以科技人才會想把銀行這個全世界最大的中間人給推翻掉

寫到這裡知道我想表達什麼了嗎? 運動區塊鍊也許是一個解決方法,但還是無法解決場地問題,簡直是逼這些家長跳出來自己去外面租場地,這也ok~如同一日幕僚在問柯市長為什麼當初要出來選,就走投無路啊!


小巨蛋也能碰瓷!?


最近兒子從陸上曲棍球開始練冰,所以常去小巨蛋跟著教練溜冰,隊友的媽媽告訴我們,他們上個月遇到碰瓷! 什麼!?小巨蛋也能碰瓷?

當時的情形是隊友和教綀在中間綀習,結果突然從外圈溜進來一個女生,在他們面前跌倒,最後這個女生是被抬著出場的,隔了兩個禮拜後隊友媽媽接到警察電話到警察局,警察請隊友媽媽留下聯絡電話並沒有做筆錄就讓她離開了,之後接到女生的來電,說那天她被隊友撞倒腳踝斷掉,當天開刀打了鋼釘,手術費要8萬元,再加上手術後的疤很醜,讓她心靈創傷,再加上一年後要開刀將鋼釘取出還要錢blabla...

目前案件還在進行中,隊友媽媽也去小巨蛋調閱監視器,發現他們並沒有互相碰撞,而是女生一進溜冰場就直接往教練與隊友中間跌倒,然後呢? 然後就被抬出去了! 但小巨蛋也說對方有點奇怪,溜冰場是有5萬的公共意外險,對方說他們不要公共意外險,也不要和解,那就怪啦! 也沒提告,是要和解什麼?隊友媽媽以此事件告訴我們希望我們提醒小朋友在溜冰場時一定要特別注意,我想也有可能之前用這個方式得手拿過一些利益吧~

通常曲棍球的後衛基本上比前鋒要壯一倍,因為離球門近,要擋敵對的人,而且抄到球要pass給前鋒去得分,傳球除力肌肉要大塊之外還要控球精準,我一開始完全不懂,覺得怎麼跟籃球不太相同,這都是教練告訴我的觀念,但從我的工作經驗,也從對岸每天在吹噓幾個億幾個億的商場下存活經驗看來,教練的眼睛是真誠的,教練是真心希望教出來的小球員能夠在場上用自己的方式得分,就如同自己在教兒子scratch,兒子完成後,我眼睛發亮的情況與教練是一樣的

我開始從簡單的漫畫入門,背號88在講一組冰上曲棍球隊,為了打進全國聯賽的高中熱血故事(井上雄彥表示:…),也看了曲棍球電影、接下來還補木村拓哉的冰上悍將,持續吸收路上與冰上曲棍球裝備與相關知識

我喜歡衝浪與搖滾樂、寫code手作與燒菜,太太在兒子小時就就曾跟他說過,你不需要爸爸喜歡什麼就跟著喜歡,要找到你自己喜歡的事物,現在他找到了,我能幫助他的就是堅持喜歡下去

回到那天看到戴資穎的臉書,我也真心盼望體育環境要加強,但可能是要想辦法推翻也許比較快

2018年8月18日 星期六

ROS的世界 - SLAM與導航 - Part 3

好啦! 終於要進入為什麼最後會挑ROSSimple Care往下胡搞的原因了



首先,要安裝小烏龜

sudo apt-get install ros-kinetic-turtlesim


然後再下這個指令rosrun turtlesim turtlesim_node

最後再開一個Terminal,下rosrun turtlesim turtle_teleop_key

就可以用Keyboard的上下左右去控制烏龜移動啦!



這裡其實就用到我們第二篇寫的PublisherSubscriber的概念


此時我們再開一個Terminal輸入 rostopic list


 這樣就會看到目前是有哪些topic是正在使用的,然後我們需要用到/turtle1/pose


再來輸入rostopic echo /turtle1/pose,代表我在其中的Terminal控制小烏龜移動後,另一個Terminal可以顯示出目前小烏龜的x ytheta

而當小烏龜移動到畫面的左下角時(如下圖紅框)x y0 (原點)



這樣有沒有一點FU!? KNN室內定位那2篇文章,我們用了64個點去判斷定位,所以不再是三角定位或多點定位,而是Machine Learning定位,基本是一種硬體愈快,定位速度愈快的暴力定位法 XD


這樣還不足夠選ROS讓我們把頭洗下去的理由,接下來我們來讓小烏龜亂跑,畢盡掃地機器人也是自動跑的,哪有手動控制這麼笨的!?


這個時候要介紹大家另一本書 A Gentle Introduction to ROS" by Jason M. O'Kane

3.3A publisher program會讓小烏龜亂跑

#include<ros/ros.h>
#include<geometry_msgs/Twist.h>
#include<stdlib.h>

int main(int argc, char** argv){
       
        ros::init(argc,argv,"turtle_publlisher_node");
        ros::NodeHandle nh;

       
        ros::Publisher pub=nh.advertise<geometry_msgs::Twist>("turtle1/cmd_vel",1000);

        srand(time(0));

        ros::Rate rate(2);
        while(ros::ok){
                geometry_msgs::Twist msg;
                msg.linear.x=2*double(rand())/double(RAND_MAX);
                msg.angular.z=4*double(rand())/double(RAND_MAX)-2;

                pub.publish(msg);

                ROS_INFO_STREAM("Sending random velocity command:"
                        <<"linear="<<msg.linear.x
                        <<"angular="<<msg.angular.z);

                rate.sleep();
        }
}
       

3.4 A subscriber program的程式是去Subscribe turtle1/pose,與前面我們用的rostopic echo /turtle1/pose有異曲同工之妙

#include<ros/ros.h>
#include<turtlesim/Pose.h>
#include<iomanip>

void poseMessageReceived(const turtlesim::Pose& msg){
        ROS_INFO_STREAM(std::setprecision(2)<<std::fixed
                        <<"position=("<< msg.x <<","<<msg.y<<")"
                        <<"direction="<< msg.theta);

}

int main(int argc, char** argv){
        ros::init(argc, argv, "turtlesim_subscriber_node");
        ros::NodeHandle nh;

        ros::Subscriber sub=nh.subscribe("turtle1/pose",1000,&poseMessageReceived);

        ros::spin();

}

如果您不想寫Code,就直接download

記得下載之後要放到catkin_ws/src內,然後再catkin_make ~

catkin_make 100%就代表沒問題了!



這裡再寫一次步驟

1.     新的Terminal -> roscore
2.     開新的Terminal -> rosrun turtlesim turtlesim_node
3.     再開新的Terminal -> rosrun turtlesim_publisher turtlesim_publisher_exe
4.     再再開新的Terminal -> rosrun turtlesim_subscriber turtlesim_subscriber_exe



然後就會看到小烏龜在亂跑,而且Subscribe有吐出資料來


這代表我在Subscribe這裡寫成把資料丟到我們的Back_end,不就跟之前的課程,用Linkint7697把資料往後端丟一模模一樣樣!?

更威猛的是,ROS官方這裡Android版本的Source code!!!

實在是太令人感動了!

但上面的Source Code APP要用真實的硬體才容易了解它在做些什麼事

小弟在操作的時候,是手機控制Turtlebot3的硬體,然後在手機顯示出SLAM後的地圖

Turtlebot3是一個小型機器人,如下圖


 這裡有e-Manual可供有興趣的伙伴研究,寫的真的很詳細


但我們目前是在Ubuntu上模擬,沒有硬體怎麼辦?

別擔心! ROS都幫我們想好了,而且接下來的模擬SLAM就是小弟下定決心要玩ROS的主因了

如果您跟第一篇一樣 sudo apt-get install ros-kinetic-desktop-full,那麼ROS裡應該有RvizGazebo這兩套模擬器了,如果沒有就麻煩Google一下囉 ~

先來了解一下何謂gmappingAMCL

gmapping是沒有圖的時候,我們可以透過SLAM即時建圖又可以順便定位存圖的居家好伙伴

AMCL是已經用gmapping做好圖或是別人幫我們做好的圖,讓機器人或APP拿來定位用

想要更了解什麼是gmappingAMCL? -> 那就一定要提古月居的網誌了

大神寫的可清楚了



開個Terminal
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_gazebo turtlebot3_world.launch





看不起人啊! 居然出現Error!

沒關係,我們在Terminal輸入export SVGA_VGPU10=0roslaunch一次

或是把它加入.bashrc

$ echo "export SVGA_VGPU10=0" >> ~/.bashrc


  

註:大家有興趣可以參考

再一次roslaunch turtlebot3_gazebo turtlebot3_world.launch


  

終於開啟了烏龜世界

 再開個Terminal

export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_gazebo turtlebot3_gazebo_rviz.launch




GazeboRViz的視窗放在一起如下圖


上圖右邊會看到RvizTurtlebot3有一點點的紅線


沒錯!那個就是模擬的LidarSLAM出來的夢中的紅線啊!

再再開個Terminal
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping



 然後就會看到它一直跑




回到RViz按下ADD

 選擇Map按下OK


選擇Map裡的Topic -> By topic,再選Map按下ok



再再再開個
Terminal用方向鍵去控制turtlebot3
roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch


Turtlebot3跑完SLAM後會長這樣



 最後 rosrun map_server map_saver -f ~/map



然後把SLAM相關的東西全部都關掉,然後
export TURTLEBOT3_MODEL=waffle_pi
roslaunch turtlebot3_gazebo turtlebot3_world.launch

export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map1.yaml

rosrun rviz rviz -d `rospack find turtlebot3_navigation`/rviz/turtlebot3_nav.rviz

會發現左邊RViz的圖怪怪的,因為Turtlebot3的位置不對了,所以這樣玩導航就不會正確



RViz使用2D Pose EstimateTurtlebot3放在小紅框的位置(如下圖)



註:記得如果Turtlebot的方向是朝上,在RViz就要朝上哦! 上圖就是在RViz的方向是朝下,所以看起來怪怪的,跑起來也不對


再來用2D Nav Goal選個方向,會發現綠色箭頭會愈來愈少(收斂中),而且GazeboTurtlebot也會跟著跑,終於玩到導航囉 ~



再再再再開個Terminal -> rostopic list 發現/amcl_pose就是我們要的位置資訊


 再再再再再開個Terminal -> rostopic echo /amcl_pose 會一直回傳目前Turtlebot的位置



好啦! 寫到這裡,就知道為什麼要挑選ROS繼續玩下去了吧?

但我們還是不會推出產品,畢盡是開放社群,做產品很燒錢的

再來就是待在家中,其實連我都不喜歡戴東西在身上,之前在玩Deep LearningWiFi Finger Print的時候就有一個Idea,如果把WiFi打出去的訊號再回收,用大量數據判斷這個人是誰,就解決了不戴任何裝置在身上的問題,只是那個時候想利用像這三篇文章一樣做實驗去證明我的論點可以做,肯定會有一堆網友打臉說不行,所以沒提出這個Idea,現在不用寫文章證明啦! 這裡

未來的長照方向肯定是機器人加新技術領域的天下,不用再做功德了!

感謝MakerPro在小弟持續富堅的情況下催稿生出這三篇,想要感受如何被催稿嗎? 試試MakerPro!

ROS在台灣也有2個很活躍的社群FB,一個是ROS Taipei,另一個ROS Taiwan 2個版主都是神人等級,也感謝幫忙解惑的ROS高高手Steven,不然這一篇寫不出來啊!!!

最後再介紹一本中文釋本,是CAVEDU的曾老大翻釋的,看這本就知道ROS能玩的確實不少

您也有Idea找不到人分享嗎? 加入我們吧! 絕對不會有打臉狀況 XD

Simple Care - 開放長照智慧系統 !

#文章發表於南科AI_Robot


FB設定搶先看的方式

設定搶先看的兩種方式 A1. 先到我家的日常粉絲團按下 …( 紅框處 ) A2. 按下追蹤中 ( 紅框處 ) A3. 按下搶先看 ( 紅框處 ) A4. 完成!!! 另一種方式 ...