2018年2月6日 星期二

[Telemba] 遠端親臨機器人中橋接平板和掃地機器人的程式設計


打開firmware/application可以瞭解橋接平板和掃地機器人的程式設計,我們找到main.c程式,如上圖,可以看到LED燈初始化(led_init)、按鈕初始化(button_init)、掃地機器人初始化(roomba_init)、還有平板初始化(android_init),所有初始化工作結束後,就進入無窮迴圈for (;;),在這個迴圈中只做一件事android_update。
android_update()函式就在android.c程式中,一開始若dev_handle為0,表示跟平板間的連線有題題,此時會暫停掃地機器人的運作roomba_set_drive (0, 0),熄燈led_set(1, 0),接下來判斷和平板間的通訊是否完成AndroidAppIsReadComplete,若通訊結束,先判斷是否成功,若不成功則閃燦燈號led_set(1, !led_get(1));,接下來讀取資料AndroidAppRead。
接下來依照接收資料的第一個位元組來決定掃地機器人的動作,您可以參閱前一篇文章的說明遠端親臨機器人Android App程式設計,其他命令如下:

要查看如何與掃地機器人溝通可以打開roomba.c,以下是控制馬達部份,可以清楚地看到是採用UART的通訊來和掃地機器人溝通,前後把計時器關閉或啟用。

2018年2月5日 星期一

[Telemba] 遠端親臨機器人Android App程式設計


開放原始碼網址:https://github.com/start-jsk/telemba
可以看到有五個資料夾,分別為:
  1. android/TelembaController (APP)
  2. electric (電路)
  3. firmware/application (韌體,用來連接平板以及掃地機器人)
  4. hangouts (影音通話)
  5. mechanical/Telemba-012 (機構)
本篇文章將介紹APP,點選android/TelembaController,可以看到三個資料夾以及五個檔案。

點選src/jp/hackerspace/TelembaController,就可以看到2個資料夾以及4個檔案,分述如下:
打開MQTTClientService.java,重要的物聯網相關程式如下圖。


this.pubNode = new MQTTPublishNode() ; //建立物聯網發佈節點
this.brokerUrl = "tcp://telemba.jp:1883"; //設定物聯網仲裁主機的網址以及通訊埠
this.usb2roomba = new USB2Roomba(TelembaActivity.getActivity()) ;//建立USB到掃地機器人的物件
this.usb2roomba.setMQTTClient(this.pubNode);//設定物聯網發佈節點

有關MQTT客戶端(Client)是使用org.eclipse.paho.client.mqttv3.MqttClient;,請參考https://www.eclipse.org/paho/files/javadoc/org/eclipse/paho/client/mqttv3/MqttClient.html的說明。
以下是訂閱主題的程式說明:

在打開MQTTUtil有兩支程式分別是MQTTCallback.javaMQTTPublishNode.java,前者是負責處理訂閱主題後,收到伺服主機送主題更新資料的回呼程式,而後者則是發佈主題命令。

從上面程式,可以很清楚收到物聯網主題訊息後,如何把訊息轉換成命令來控制掃地機器人。下圖為收到"invite"命令後,啟動Hangout的情形。



進入USBUtil資料夾,打開RoombaCommand.java就可以查看平板程式是如何下命令來指揮掃地機器人,例如啟動則用START命令,也就是128。


2018年2月4日 星期日

[Telemba] 如何製作遠端親臨機器人

前三篇有關於遠端臨場機器人文章:
1. 遠端臨場機器人(Telepresence Robot)
2. 號稱世界上最便宜的遠端臨場機器人
3. 一個不錯的開放源碼機器人研究基地:START@JSK

本篇將介紹如何製作全世界最便宜的遠端親臨機器人,大家可以拜訪:How to make your Telemba,如下圖:



在上圖右手邊有19篇文章,仔細閱讀就可以瞭解如何製作遠端親臨機器人,以下是介紹幾個重要的文件:

1. Android_APP_JP 

在Google Play 可以找到TelebaController,它是Android應用程式,筆者試過在台灣的Google Play找不到。



2. Development Environment
經由一塊板子PIC24FJ64GB002,來連接Android平板和Roomba掃地機器人,不過PIC不再支援MLA (Microchip Library for Application),必須使用v2013_06_15版本。
目前PIC支援智慧型手機的現況:
http://www.microchip.com/design-centers/smartphone-accessory

3. DMMPrinting_JP

3D列印的資料,您可以上網去購買,網站:https://make.dmm.com/item/97852/,7696日元。








機構連接
電子元件連接


使用Hangouts來通訊


9. MQTT_JP
此份文件記錄控制命令。


ルンバ 600シリーズ
ルンバ 700シリーズ



2018年2月3日 星期六

[Telemba] 一個不錯的開放源碼機器人研究基地:START@JSK

昨天敏哥發佈"號稱世界上最便宜的遠距臨場機器人"文章,對於想研究機器人者來說,是很值得研究的開放源碼,今晨閱讀LICENSE文件,如下:


Copyright (c) 2013, start-jsk
All rights reserved.

Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.

* Neither the name of the {organization} nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission. 

文件第一行有start-jsk的字眼,Google一下,就可以看到start-jsk,也是一個開放源碼的文件,我們可以發現有太多的專案使用start-jsk的技術,其中world's cheapest telepresence robot project-telemba就是使用這個開放源碼來擴充。

 START@JSK

START@JSK的網站值得大家去拜訪,網址:http://www.jsk.imi.i.u-tokyo.ac.jp/start/,從網站中可以得知這個網站是由東京大學信息系統工程實驗室在維護。