文章標籤


more tags...

Blogs

最新回應

有沒有說錯, 第二天就開始玩機器人啦?

因為 VPL 蠻簡單的, 所以我們第二天就可以看見機器人(嚴格說應該是車子吧?)啦...

從新的 VPL 專案開始, 為了要看見車子, 我們從 service 選一個 Generic Differential Drive 放到 Diagram 上,


(Generic Differential Drive 意思就是通用差速驅動, 關於差速的說明, 可以參考 Wiki 的 差速器 , 基本上就是同一軸的左右輪胎可以轉不同的速度的車子)

 

image

 

對 GenericDifferentialDrive 點選右鍵, 選 Set Configuration

image

 

會跳到 GenericDifferentialDrive 的設定畫面, 我們選 Use a manifest

image

所謂的 manifest, 在這裡指的是一整個拖拉庫的服務全部都包起來啦...

現在當然還沒能力創建一個 manifest, 就直接匯入現有的.

image

 

然後選這次的活動獎品(目前只有虛擬寶物), LEGO.NXT.Tribot.Simulation.manifest.xml

 

image

 

Okay, 現在你的設定應該是如下圖

 

image

 

現在你可以存檔, 開始執行看看會不會有機器車子跑出來了...

什麼? 你說你等了好久都沒看到, 又發現跳出 Browser 跟你講 ERROR ??

你該不會是用 Vista, 又跟我一樣把 Visual Programming Language Express Edtion 裝在那個 Program Files 目錄當中吧?? 如果是, 恭喜你, 請把 Visual Programming Language Expression Editon 改用系統管理員身分執行吧, 請在開始選單上面對 Visual Programming Language Expression Edtion 點選右鍵, 選"以系統管理員身分執行" , 這樣才不會有權限上的問題歐...

解決了權限, 再執行一次就應該可以看到如下畫面啦.

image

 

啊...這樣能幹嘛...

因為我們什麼也還沒開始寫啊, 所以現在就只能移動攝影機, 看看畫面這樣而已, 可以用上下左右跟滑鼠操作攝影機移動.

那我們趕快來寫點程式來玩它吧^ ^

為了能夠操控裏頭的那個虛擬寶物(機器車子), 我們先從 service 拖一個 Direction Dialog 到 Diagram 上, 這個 Direction Dialog 會在系統中產生一個有上下左右以及 Stop 的五鍵, 好讓我們可以操控虛擬畫面裡面的車子,

現在你的 Diagram 裡面應該有兩個 service 啦.

image

 

接著要介紹 Calculate 這個 Basic Activities, 這個 Calculate 活動呢, 除了可以做算式運算, 也可以負責拆解訊息, 在 VPL 裡面, 訊息可以透過 Join 活動組合起來, 也可以透過 Calculate 活動拆開, 你可以把訊息想成是某個 Class 的物件, 而 Calculate 就是負責調用該物件的屬性, Join 就像是把多個屬性合併成為一個新的 Class.

當然 Class 的說明是為了讓那些習慣寫 Code 的人來了解的, 事實上, VPL 內部的訊息就是訊息, 可以透過 Join 任意組合以及透過 Calculate 任意拆解或運算其中的子訊息.

寫了一堆, 還是不如直接操作比較容易了解.

把 Calculate 拉到 Diagram 當中之後, 我們把 DirectionDialog 的 Notification (右下方的紅圈) 拉到 Calculate , 表示把 DirectionDialog 的通知餵給 Calculate, 你會看到 Connections 對話框彈出來:

image

這個對話框問我們要把 DirectionDialog 的三種通知 (ButtonPress : 表示按鍵被按下了, ButtonRelease 表示按鍵被放開了, DialogStateChange 表示對話框的狀態改變了) 哪一種餵給 Calculate 呢, 我們選 ButtonPress.

然後 DirectionDialog 就跟 Calculate 連上了, 接著我們要選 Calculate 中間的輸入, 會有提示下拉, 我們選 Name, 表示要從 ButtonPress 訊息當中, 拆解出 Name 這個訊息 (被按下的按鈕名稱) , 這個被按下的按鈕名稱將會被輸出到 Calculate 的右端.

image

 

接著, 我們再從 Basic Activites 當中拉一個 Switch 活動,

這個 Switch 活動, 就像是 C++ 當中的 Switch, 代表根據多個不同的訊息, 我們要採取多個不同的輸出, Switch 左下方有一個 "+", 表示你可以新增加一個訊息分岔點, 我們一共要五個 (因為有五個按鈕) , 這五個按鈕的名稱分別為 "Stop", "Forwards", "Backwards", "Left", "Right" , 新增五個後通通給它填好,然後把剛剛 Calculate 的右邊訊息餵給 Switch, 現在應該如下圖:

image

 

接下來要弄 VPL 當中最辛苦的資料設定 (相較於寫 Code 設定資料而言), 請從 Basic Activities 當中拖拉 7 個 Data 活動, 型態都是 double , 值分別設定為  0, 0.8, -0.8, 0.6,-0.6, 0.6, -0.6 (你可以用複製貼上來加速動作), 然後一一設定連線, 我們把 "Stop" 連到 0, "Forwards" 連到 0.8, "Backwards" 連到 -0.8 , "Left" 連到 0.6,-0.6 兩個 Data, "Right" 則是連到另一組 0.6,-0.6 Data , 如下圖:

image

現在我們要開始 Join, Merge 這些資料輸出了, Join 剛剛介紹了, 是負責把多個訊息合併成為一個, Merge 也是, 但不同點在於, Join 是把多個訊息組合成為子訊息, 一起輸出, Merge 則是左邊進來右邊出去, 沒有任何改變.

請把 0, 0.8, -0.8 三個訊息 Merge, 把 0.6, -0.6 兩組訊息 join, 然後分別填上 left, right, 如下圖: (請注意, "Left" 那一組的 Data 輸出 剛好跟 "Right" 這一組的 Data 輸出, 採取不同的 left, right join 方式)

image

 

讓我們先解決上面的 Merge, 把它的輸出餵給一開始的 GenericDifferentialDrive , 你會看到對話框彈出來, 我們要把 Merge 的輸出對應到車子的油門 (SetDrivePower)

image

按下 OK, 你會看到另一個對話框, 分別指定左邊輪子的油門跟右邊輪子的油門, 我們通通設為 value.

image

 

這樣我們就完成了前進, 後退, 以及停止啦, 等不及的人可以先按 F5 (Run 選單下面的 Start) 玩玩看會不會前進後退.

緊接著趕快把 "Left", "Right" 設定好, 我們把這兩組 Join 好的資料通過 Merge , 再輸出給 GenericDifferentialDrive , 啊, 一個 GenericDifferentialDrive 不願意吃兩個輸入耶, 沒關係, VPL 當中, 物件可以有多個分身, 只要 Name 屬性相同, 就表示是相同的物件. (那些沒有 Name 屬性的物件, 都是基本物件, 一定不同). 所以你可以複製一個分身, 或者再拖拉一次, 系統會問你是否要新增還是使用原來的物件. (當然是使用原來的).

複製好 GenericDifferentialDrive 的分身後, 把 "Left", "Right" 兩組 Join 好的資料透過 Merge 再餵給它, 你又看到 Connections 的對話框了, 一樣選 SetDrivePower, 接著 Data Connections 對話框要設定如下:

image

 

最後, 你的程式就如下圖所示:

image

 

噹噹, 恭喜你完成可以操控機器車子的程式囉,

你可以試玩看看, 但是要常常 Stop 歐, 不然一定會像我一樣翻車的

 

image

 

我可不知道翻車要怎麼救...

明天我們再來改良吧^ ^


DotBlogs Tags: Robotics

關連文章

回應

  • dotjum 2008/12/18 上午 11:40 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    原來可以先跑模擬器,真是增長知識了。感謝分享

  • laneser 2008/12/18 上午 11:53 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    to dotjum :

      因為我也還沒有拿到獎品啊XD
      況且如果大家要玩玩看, 沒有虛擬器就只能乾瞪眼啦, 有虛擬器玩起來以後....就更想去買一個真的啦...嗚嗚

  • tttt 2009/1/14 下午 12:00 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    有没中文的资料啊。介绍介绍啊

  • laneser 2009/1/14 下午 03:04 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    to tttt :
      我目前也只有看到英文的說明耶...
    沒有找到其他中文的相關資料 (有也只有一點點).
    連 MSDN 裡面很多說明也都只有一點點...

    目前比較齊全的就是安裝完以後 document 目錄當中的 chm ...

  • tttt  2009/1/15 下午 06:37 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    英文好差劲 也硬着头皮看那个帮助文档.
    拖拖拽拽的 觉得很有意识 呵呵
    你写的非常棒.强烈支持你。呵呵

  • laneser 2009/1/15 下午 06:43 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    to tttt : 謝謝你的支持^ ^  看 chm 如果有問題也可以提出討論看看, 我讀那個 chm 讀很多次了耶... (老實說那些 chm 門檻有點高), 如果看完我三十天的修練文章再去讀 chm 應該會比較容易看得懂 (畢竟我的文章中有很大的部分也是來自 chm)

  • tinghoo 2009/2/23 下午 10:55 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    请问一下,我完全按着你的步骤做,可是出来的小车完全没反应,还有那个遥控杆不是应该5个键吗,我只有4个,没有向下那个键

  • laneser 2009/2/24 上午 12:09 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    to tinghoo : 缺了向下鍵, 應該是畫面太小了, 這是 Robotics Studio 內附的元件的小  bug... 應該還是可以在視窗下面的邊緣找到一點點向下鍵吧...

  • tinghoo 2009/2/24 下午 04:32 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    这样子,谢谢
    另外,我完全按你的做,可以小车没反应,做到前后走的时候我试了下就没有反应,全做好再试还是没反应,这是什么问题呢

  • tinghoo 2009/2/24 下午 04:58 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    现在可以了,谢谢~

  • williams 2009/2/25 上午 10:47 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    hi,請教一個問題:
    為何按左右,車子是旋轉,謝謝:)

  • laneser 2009/2/25 下午 03:48 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    to williams : 因為按下去左右的時候, 是利用兩邊的輪子轉向不同造成車子轉向, 而兩邊的輪子用的力道一樣,  方向不同, 就變成車子原地打轉...

  • williams 2009/2/26 上午 11:23 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    OK我了解了,感謝laneser大:)

  • 游客 2009/3/14 下午 12:05 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    请问,我照着你这个作,但就到那个虚拟仿真就就是不出画面,你说是administrator登录即可,可是我这个还是不行,不知为什么。

  • 游客 2009/3/14 下午 01:24 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    不好意思,已经解决了,是杀软的问题

  • tinghoo 2009/3/26 下午 09:08 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    你好,请教您一个问题:
    我利用VSE自己做了一个环境,但是我不知道怎样把自己做的小车放进自己做的环境中,能否请您指导我一下,麻烦您了:)

  • 刘帅 2009/3/29 下午 01:19 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    你好,为什么我按照你的步骤进想到第一次出现垃圾站画面的时候 不能出现图像。
    请多多指教
    “該不會是用 Vista, 又跟我一樣把 Visual Programming Language Express Edtion 裝在那個 Program Files 目錄當中吧?? 如果是, 恭喜你, 請把 Visual Programming Language Expression Editon 改用系統管理員身分執行吧, 請在開始選單上面對 Visual Programming Language Expression Edtion 點選右鍵, 選"以系統管理員身分執行" , 這樣才不會有權限上的問題歐...

    解決了權限, 再執行一次就應該可以看到如下畫面啦.

    就是这个部分 请一定多多指教

  • 刘帅 2009/3/29 下午 01:25 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    还是我 不好意思!
    楼主大哥 我运行到到第一次形成画面的时候,可以运行程序,也会弹出出现画面的窗口但是为什么画面上是空白的 没有图像!!!
    还请大哥 多多指点!!!

  • capricorn 2009/5/17 下午 11:26 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    你好!
    我完全按照你的指导做成的,但是不知道为什么小车是不动的?按DSS Direction dialog完全没有反应

  • QIAN 2009/5/27 上午 09:47 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    楼主,我按你的指导完成了画面,可是车子不能动,为什么呢啊~~?

  • lantian0811 2009/5/31 上午 10:01 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    楼主,为什么我按您的步骤做的 小车不能动呢 希望您能给与指点

  • huang 2009/8/11 下午 10:43 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    大家注意,里面的名字一定要按楼主给的图那样打,要不就会出现小车没反应的情况,注意大小写。

    另外想问一下2008版本中,老提示http://localhost:50000 需要用户名密码,不知道怎么设置,有的说在DSS control panel中取消,但不知道在什么位置,没找到~~

  • laneser 2009/8/12 上午 11:01 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    to huang :
      你想取消那個 security 設定, 如果是 dsshost, 請取消 dsshost.exe.config 當中的
        <add key="Security" value="store\SecuritySettings.xml" />

    就可以了, 其他如 vplhost 等等可以比照更改 vplhost.exe.config 辦理. 但是會出現沒有安全性的警告.

  • 张益 2009/12/4 上午 09:59 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    请问: 我能不能改遥控杆的大小在 仿真界面?

  • Sinba 2010/1/14 上午 10:30 回覆

    # re: [Robotics Studio] 開始玩機器人啦 -- Day2

    哈哈,很有意思,谢谢啊


*標 題:

*姓 名:

 電子郵件: (將不會被顯示)

 個人網頁:

*回應

登入後使用進階評論

Please add 6 and 6 and type the answer here: