2015年2月2日 星期一

Rapiro (1) 基本介紹與 Arduino 燒錄範例


最近老師進了一批 Rapiro 機器人準備當做課程上的教材

這隻機器人組裝方便 可以自己編譯程式 外觀也頗可愛的

其組裝過程官網有詳細圖解

甚至還提供了機器人的 3D 模型圖與電路圖

取自官方相簿


而他的身體上有 12 顆伺服馬達 (關節

各馬達位置剖面圖 取自


以一個人形機器人來說其實不多

能做的動作也會受到先天上的限制

其控制方式是使用 Arduino 來當作他的主控板


Arduino 主控版

他的頭部有保留位置讓我們可以加裝 Raspberry pi 或是其他類似的微電腦讓機器人本身可以有更多的應用


像是替它裝上耳朵與眼睛 取自

機器人組裝完成後需要安裝他們的驅動才能燒錄他們的範例程式 這些在組裝步驟的第 204 點有提到

組裝完就可以來玩一下他們提供的範例程式囉!

另外提醒一下如果 Tx Rx 腳位有用到的話 ( 有接 pi 板之類的

燒錄前要記得關電或是先拔掉佔用的線哦!

腳位被佔住是無法完成燒錄的大家應該都知道

基本上範例程式我們只會動到機器人的歸零(細調)值 還有 更改原本範例寫好的動作

每台機器人幾乎都會有各自的一組歸零值來調整各自的一些零件誤差

各馬達細調值


而寫好的動作分別有 0~9 總計 10 個動作  官方範例影片

也可以去修改裡面的角度完成一個自己設計的動作




燒錄完成後可以透過 IDE 裡的 Serial Monitor 去對 Arduino 下指令觀看結果

傳送指令

收到預設的指令機器人就會做出相對應的動作囉

除了使用他們寫好的一串動作 也可以用單步的指令來熟悉一下馬達或是 RGB LED 的控制


傳送門在此




2015年1月20日 星期二

Google App Engine X Python X Ubuntu 第二篇 使用 webapp2 架構


繼上次的 Hello World 後我們今天來使用 webapp2 架構來寫我們的前端程式

需要在 app.yaml 檔裡加上這幾行  官方文章傳送門


libraries:
- name: webapp2
  version: latest


加入後的 app.yaml 檔案


接下來雲端程式就能看得懂我們的網頁標籤了

這裡我用一個簡單的輸入變數然後印出迴圈值來演示給大家看


py檔的內容

結果圖


其中比較需要注意的就是 Python 的縮排格式與上引號的使用方式

這種方法是 Html 語法跟 Python 寫在一起的方式

 Html 程式碼一多就會顯得程式碼雜亂

還有另外一種方式是使用模板( Template )的方式可以讓兩種程式碼分開放方便管理與維護

會在後面一點教到

而這禮拜老師出的作業是可輸入變數的乘法表

只需要利用上面的例題動動腦就能做出來囉


結果圖


py檔程式範例

# -*- coding: utf-8 -*-
#create an N-by-M multiplication table

import webapp2

MAIN_PAGE_HTML = """\
<!DOCTYPE html>
<html>
  <body>
    <form action="/" method="post">
     <div> N<input name="N" rows="1" cols="20"/>
           M<input name="M" rows="1" cols="20"/>
            <input type="submit" value="create"> </div>
"""
class MainPage(webapp2.RequestHandler):

    def get(self):
        self.response.write(MAIN_PAGE_HTML)
        self.response.write("</form></html>")

    def post(self):
        self.response.write(MAIN_PAGE_HTML)
        N = int(self.request.get('N'))
        M = int(self.request.get('M'))
        self.response.write("<br><table><tr>")
        for i in range(1,N+1):
            self.response.write("<td>")
            for j in range(1,M+1):
                self.response.write('%s x %s = %2s '%(i,j,j*i)+"<br>")
            self.response.write("</td>")
        self.response.write("</tr></table></form></html>")

application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)
有問題歡迎提問

2015年1月19日 星期一

Google App Engine X Python X Ubuntu 環境安裝與第一個雲端程式


現在 Google App Engine 在個作業系統平台都可以開發使用

而本次使用 Linux ubuntu 來當做範例

首先我們需要使用Google的帳號來創建一個專案

在搜尋列搜尋     GAE console

登入後前往我的控制台

建立雲端的專案


專案名稱隨意取,專案ID須符合他的格式且不重複,後面上傳程式與雲端網址都會用到專案ID

專案建立完成後記下專案ID帳號申請的這個步驟就算完成了

再來我們就要開始建設我們的編譯環境與第一個雲端程式

步驟開始前記得先更新你的作業系統一下

Linux現在都內建Python所以不用另外安裝

我們需要去 Google 的網站下載 Python 的 GAE SDK 開發套件

傳送門

依照自己的作業系統選擇你要的版本

我們這裡使用的是Linux的版本

下載解壓縮後我選擇把檔案放在我的家目錄讓我以後用它比較方便

檔案下載下來後解壓縮

把解壓縮完的資料夾移到家目錄

再來就能開始創建我們的雲端程式了


創建我們的專案資料夾(update)與專案(Hello_world)的資料夾


其最基本的的雲端程式會有兩個檔案    暫定名稱.py   與   app.yaml

Google的範例  傳送門

py 檔的範例

import webapp2
class MainPage(webapp2.RequestHandler):
    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')

application = webapp2.WSGIApplication([
    ('/', MainPage),
], debug=True)

app.yaml 的範例

application: your-app-id
version: 1
runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /.*
  script: helloworld.application

其 application 就是輸入你剛剛創建的專案ID

script 後面的名稱需與py的檔名一樣

下面是本次的範例步驟

這裡使用 vim 來編輯 python 檔
Python 檔內容
這裡使用 vim 來編輯 app.yaml 檔案
application 要輸入剛剛申請的專案ID  script 後面的檔名要跟py檔的檔名一樣

兩個檔案都創建完後能選擇單機測試或是直接上傳到雲端讓其他人看到你的網站


利用 SDK 的套件 dev_appserver.py 上傳專案本機測試

執行後可用瀏覽器在網址列輸入 http://localhost:8080 測試結果

Hello, World!

你也可以選擇真正的放上網路 讓大家都能看到你的作品

第一次上傳會需要輸入 Email 跟 password 來認證
上傳完後就能連線到 專案ID.appspot.com 看結果囉



因老師要求附上 eclipse 的開發環境教學所以有需求的人可以參考一下

eclipse 這套軟體有在做開發的應該都不陌生

其強大的擴充功能讓我們要在上面做 GAE 的開發也很簡單


在 eclipse 上面用 python 做 GAE 的開發需要另外安裝 Pydev 這個套件