- CaBot app is a bluetooth peripheral app of CaBot.
- The user need to specify a team name in the setting view
- The app will advertise BLE service as
CaBot-<team name>
when it is in foreground
- The app will advertise BLE service as
- CaBot's ros1 system needs to be launched with
-e <team name>
option- CaBot scans the name and tries to connect when found
- There are multiple IN/OUT characteristics (subject to be changed)
- The map screen incorporates a Java script file, which is copied by a script at build time.
- The java script file is the 3D Visualization Library for use with the ROS JavaScript Libraries
- The map screen receives data using web sockets.
- For more information on ros3djs, check here.
- Service UUID:
35CE0000-5E89-4C0D-A3F6-8A6A507C1BF1
- characteristics
type | ID | IN/OUT | data | description |
---|---|---|---|---|
version | 0x00 | IN | text | protocol version |
manage | 0x01 | OUT | text | send command to control system (reboot, restart, etc) |
device status | 0x02 | IN | text | device status JSON |
system status | 0x03 | IN | text | system status JSON |
battery status | 0x04 | IN | text | battery status JSON |
log | 0x05 | OUT | text | send log text |
summons | 0x010 | OUT | text | set the destination of the robot (summon mode), specify a node id |
destination | 0x11 | OUT | text | set the destination of the robot (normal mode), specify a node id or __cancel__ for cancel |
speech | 0x30 | IN | text | speak input text |
navi | 0x40 | IN | text | navigation status, next or arrived, sound, content, subtour |
heart_beat | 0x9999 | OUT | text | send heart beat every second |
$ open CaBot.xcworkspace and build
Main Bundle
| - Resource
| - Resource_DIR
| - _metadata.yaml
| - ...
| - <any subdir>
| - Resource_DIR
| - _metadata.yaml
| - ...
name: I18NText # this should be unique among Resource_DIRs
language: LanguageCode? # optional, if specified, use the language instead of the system setting
conversation: Source<Conversation>? # optional, conversation source
destinations: Source<Destinations>? # optional, destinations source
tours: Source<Tours>? # optional, tours source
location:
ibeacon-uuid: [String] # for beacon scanning
lat: Float # to determine location automatically
lng: Float #
radius: Int # in meters
<key>
can be any property string such as name
and title
.
<key>: text # text for the system language
<key>-ja: text # text for the language specified by the 2-characters lang code (ja in this case)
<key>-ja-pron: text # reading text for the language specified by the 2-characters lang code (ja in this case)
type: String (local / remote)
src: String (relative path / URL)
- JavaScript to handle conversation
- it needs to implement
function getResponse(request)
custom global objects
Bundle.loadYaml : returns a list of destination from a specified yaml file
Console.log : print log
Bluetooth.scanBeacons : scan beacons
Device.type : device type like iPhone13,3
Device.id : device vendor uuid
HTTPS.postJSON : post JSON to a host (not implemented yet)
View.showModalWaitingWithMessage : show modal wait and a message
View.hideModalWaiting : hide the modal wait
View.alert : show an alert with title and message
[Destination | DestinationRef | DestinationSource]
title: I18NText
value: String
startMessage: Source?
arriveMessages: [Source]?
content: Source?
waitingDestination: DestinationRef
subtour: <file name>/<id of a tour>
ref: <file name>/<value of a destination>
if other keys of the Destination format are specified, it will override the reference destination
title: I18NText
file: Source?
[Tour]
id: String
title: I18NText
introduction: I18NText # brief description of the tour
destinations: Destinations