Compare commits

..
6 Commits
Author SHA1 Message Date
David Lechner bf59ef4478 v2.0.0.post2 2022-02-21 11:29:57 -06:00
David Lechner 6b1f7d8eaa pybricks.ev3devices: fix Motor code completion
The Microsoft Python extension for VS code doesn't include imports in
type hints, so the Motor type wasn't working properly. We can fix this
by wrapping the import type in a new, empty class definition.

The DCMotor class was also missing from ev3devices so this is fixed as well.
2022-02-21 11:01:11 -06:00
David Lechner df27ebc27e pybricks.messaging: fix BluetoothMailboxServer close
As per standard Python socketserver, there is `server_close()` rather than `close()`.

Fixes #51
2021-04-07 19:41:30 +02:00
David Lechner b471cae0bc v2.0.0.post1 2020-12-28 16:40:42 -06:00
David Lechner eb7f441c9e pybricks: remove non-EV3 APIs
This is the v2 branch which only supports EV3. Removing the extra APIs
will prevent them from showing up when this library is used for code
completion.
2020-12-28 16:36:47 -06:00
David Lechner dca8518575 pybricks: add type hints for v2
This adds PEP 561 style type hints for Pybricks v2 (just EV3).
2020-12-28 16:21:56 -06:00
385 changed files with 2854 additions and 12215 deletions
-2
View File
@@ -1,2 +0,0 @@
github: [pybricks]
-38
View File
@@ -1,38 +0,0 @@
name: Release @pybricks/ide-docs
on:
push:
tags:
- '@pybricks/ide-docs/**'
jobs:
publish_ide_docs:
runs-on: ubuntu-20.04
steps:
- name: Ubuntu packages
run: |
sudo apt-get update
sudo apt-get install -y dvisvgm preview-latex-style texlive texlive-fonts-extra texlive-latex-extra
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Set up Python 3.8
uses: actions/setup-python@v1
with:
python-version: 3.8
- name: Install dependencies
run: |
pip install poetry
poetry run python -m pip install --upgrade pip
poetry run python -m pip install --upgrade setuptools
poetry install
- uses: actions/setup-node@v1
with:
node-version: '14.x'
registry-url: 'https://registry.npmjs.org'
- run: yarn build
working-directory: doc/ide
- run: yarn publish
working-directory: doc/ide
env:
NODE_AUTH_TOKEN: ${{ secrets.NODE_AUTH_TOKEN }}
@@ -1,14 +1,14 @@
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Build Python package and docs
name: Python package
on: [ push, pull_request ]
jobs:
build:
runs-on: ubuntu-20.04
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.9]
@@ -32,12 +32,6 @@ jobs:
- name: Build package
run: poetry build
- name: Lint docs
run: poetry run doc8
- name: Build html docs for Read the Docs
run: poetry run doc8 --extension .inc
- name: Build html docs
run: poetry run make -C doc html
- name: Instal IDE docs dependencies
run: |
sudo apt-get update
sudo apt-get install dvisvgm preview-latex-style texlive texlive-fonts-extra texlive-latex-extra
- name: Build html docs for Pybricks Code IDE
run: poetry run make -C doc html SOURCEDIR=ide
-22
View File
@@ -1,22 +0,0 @@
name: Release to PyPI
on:
release:
types: [published]
jobs:
build_and_publish:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: 3.8
- uses: abatilo/actions-poetry@v2.0.0
with:
poetry-version: 1.1.6
- run: poetry install
- run: poetry build
- run: poetry publish
env:
POETRY_PYPI_TOKEN_PYPI: ${{ secrets.PYPI_TOKEN }}
+3
View File
@@ -1,3 +1,6 @@
[submodule "pybricks-projects"]
path = pybricks-projects
url = https://github.com/pybricks/pybricks-projects
[submodule "media/ev3dev-media"]
path = media/ev3dev-media
url = https://github.com/ev3dev/ev3dev-media.git
+1 -1
View File
@@ -15,7 +15,7 @@ builtins
cdot
Celcius
cityhub
technichub
cplushub
de
dev
en
+12
View File
@@ -0,0 +1,12 @@
# Changelog
<!-- refer to https://keepachangelog.com/en/1.0.0/ for guidance -->
## 2.0.0.post2
### Added
- Added this changelog.
### Fixed
- Fixed code completion for `DCMotor` and `Motor` classes in MS Python VS Code extension.
- Fixed missing `DCMotor` type in `ev3devices`.
+1 -1
View File
@@ -1,6 +1,6 @@
MIT License
Copyright (c) 2018-2021 The Pybricks Authors
Copyright (c) 2018-2020 The Pybricks Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
+2 -3
View File
@@ -6,8 +6,8 @@
import os
# General information about the project.
project = 'pybricks'
copyright = '2018-2021 The Pybricks Authors'
project = 'pybricks-micropython'
copyright = '2018-2020 The Pybricks Authors'
author = ''
_TITLE = 'Pybricks Modules and Examples'
@@ -15,7 +15,6 @@ _DISCLAIMER = 'LEGO, the LEGO logo, MINDSTORMS and the MINDSTORMS EV3 logo are\
trademarks and/or copyrights of the LEGO Group of companies \
which does not sponsor, authorize or endorse this site.'
html_favicon = '../common/images/favicon.ico'
html_logo = '../common/images/pybricks-logo-rtd.png'
latex_logo = '../common/images/pybricks-logo-large.png'
+9 -12
View File
@@ -1,14 +1,11 @@
0 Name: hubs.ldr
0 Name: pupmotors
0 Author: Pybricks {laurens@pybricks.com}
0 !LICENSE MIT
0 ROTATION CENTER 0 0 0 1 "Custom"
0 ROTATION CONFIG 0 0
1 15 -20 -56 320 1 0 0 0 1 0 0 0 1 26910.dat
1 15 -330 -80 110 0 0 1 0 1 0 -1 0 0 28738.dat
1 71 -310 -40 390 1 0 0 0 1 0 0 0 1 22127.dat
1 15 260 -16 90 1 0 0 0 1 0 0 0 1 45601p02.dat
1 3 440 -16 10 1 0 0 0 1 0 0 0 1 45601c01.dat
1 3 780 -16 -310 1 0 0 0 1 0 0 0 1 45601c01.dat
1 15 -930 -40 360 1 0 0 0 1 0 0 0 1 95646c01.dat
1 15 -1490 32 350 1 0 0 0 1 0 0 0 1 53788c01.dat
0
1 15 -420 -56 -250 1 0 0 0 1 0 0 0 1 26910.dat
1 15 10 -80 140 1 0 0 0 1 0 0 0 1 28738.dat
1 71 -270 -40 630 1 0 0 0 1 0 0 0 1 22127.dat
1 15 200 -96 600 -1 0 0 0 1 0 0 0 -1 28739.dat
1 15 470 -16 -90 1 0 0 0 1 0 0 0 1 45601p02.dat
1 15 -800 -40 360 1 0 0 0 1 0 0 0 1 95646c01.dat
1 15 -1160 32 -310 1 0 0 0 1 0 0 0 1 53788c01.dat
1 71 -1340 -40 430 1 0 0 0 1 0 0 0 1 87576c01.dat
-11
View File
@@ -1,11 +0,0 @@
0 Name: hubsoverview.ldr
0 Author: Pybricks {laurens@pybricks.com}
0 !LICENSE MIT
0 ROTATION CENTER 0 0 0 1 "Custom"
0 ROTATION CONFIG 0 0
1 15 90 -56 300 1 0 0 0 1 0 0 0 1 26910.dat
1 15 -150 -80 300 1 0 0 0 1 0 0 0 1 28738.dat
1 71 -360 -40 120 -1 0 0 0 1 0 0 0 -1 22127.dat
1 15 -160 -16 -40 1 0 0 0 1 0 0 0 1 45601p02.dat
1 3 50 -16 -140 1 0 0 0 1 0 0 0 1 45601c01.dat
0
-40
View File
@@ -1,40 +0,0 @@
0 Name: imu.ldr
0 Author: Pybricks {laurens@pybricks.com}
0 !LICENSE MIT
0 ROTATION CENTER 0 0 0 1 "Custom"
0 ROTATION CONFIG 0 0
1 3 -80 -20 160 0 0 1 0 1 0 -1 0 0 45601c01.dat
1 322 0 20 70 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 -160 20 70 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 0 20 250 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 -160 20 250 1 0 0 0 1 0 0 0 1 39367p01.dat
0 WRITE Type in the comment
1 3 720 -80 170 0 0 -1 0 -1 0 -1 0 0 45601c01.dat
1 322 800 20 80 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 640 20 80 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 800 20 260 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 640 20 260 1 0 0 0 1 0 0 0 1 39367p01.dat
0 WRITE Type in the comment
1 3 720 -70 -630 0 1 0 0 0 -1 -1 0 0 45601c01.dat
1 322 770 20 -720 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 610 20 -720 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 770 20 -540 1 0 0 0 1 0 0 0 1 39367p01.dat
1 322 610 20 -540 1 0 0 0 1 0 0 0 1 39367p01.dat
0 WRITE Type in the comment
0 WRITE Type in the comment
0 MLCAD BTG Group name
1 71 -230 60 -780 0 0 1 -1 0 0 0 -1 0 55615.dat
0 MLCAD BTG Group name
1 4 -90 60 -800 0 0 1 -1 0 0 0 -1 0 32278.dat
0 MLCAD BTG Group name
1 2 -250 60 -640 0 1 0 -1 0 0 0 0 1 32278.dat
0 MLCAD BTG Group name
1 71 -230 40 -780 0 0 1 0 1 0 -1 0 0 55615.dat
0 MLCAD BTG Group name
1 1 -250 -100 -780 0 1 0 0 0 -1 -1 0 0 32278.dat
0 GROUP 5 Group name
1 15 -20 90 -570 0 0 -1 0 -1 0 -1 0 0 3811.dat
1 15 720 90 -570 0 0 -1 0 -1 0 -1 0 0 3811.dat
1 15 -30 90 190 0 0 -1 0 -1 0 -1 0 0 3811.dat
1 15 720 90 190 0 0 -1 0 -1 0 -1 0 0 3811.dat
0
Binary file not shown.

Before

Width:  |  Height:  |  Size: 654 KiB

-412
View File
@@ -1,412 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="1250"
height="720"
viewBox="0 0 1250 720"
sodipodi:docname="imuexamples.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<image
sodipodi:absref="imuexamples.png"
xlink:href="imuexamples.png"
y="0"
x="0"
id="image872"
preserveAspectRatio="none"
height="720"
width="1250.0001"
style="stroke-width:3.19999957" />
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker8272"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path8270"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0"
refX="0"
id="marker6790"
style="overflow:visible"
inkscape:isstock="true"
inkscape:collect="always">
<path
id="path6788"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
transform="matrix(-0.8,0,0,-0.8,-10,0)"
inkscape:connector-curvature="0" />
</marker>
<marker
inkscape:isstock="true"
style="overflow:visible"
id="marker5128"
refX="0"
refY="0"
orient="auto"
inkscape:stockid="Arrow1Lend"
inkscape:collect="always">
<path
transform="matrix(-0.8,0,0,-0.8,-10,0)"
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
d="M 0,0 5,-5 -12.5,0 5,5 Z"
id="path5126"
inkscape:connector-curvature="0" />
</marker>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1853"
inkscape:window-height="1145"
id="namedview4"
showgrid="false"
inkscape:zoom="0.75000002"
inkscape:cx="643.10407"
inkscape:cy="459.26885"
inkscape:window-x="67"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1090"
width="88.926552"
height="42.092525"
x="415.71399"
y="513.96191" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1092"
width="88.926552"
height="4"
x="415.71399"
y="513.96191" />
<text
id="text1096"
y="544.38055"
x="423.85089"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="544.38055"
x="423.85089"
id="tspan1094"
sodipodi:role="line">Y: Left</tspan></text>
<rect
y="519.35236"
x="773.67474"
height="42.092525"
width="148.7303"
id="rect875"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="519.35236"
x="773.67474"
height="4"
width="148.7303"
id="rect877"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="783.47827"
y="549.93768"
id="text881"><tspan
sodipodi:role="line"
id="tspan879"
x="783.47827"
y="549.93768"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">X: Forward</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect883"
width="84.926552"
height="42.092525"
x="613.005"
y="435.9295" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect885"
width="84.926552"
height="4"
x="613.005"
y="435.9295" />
<text
id="text889"
y="466.51483"
x="626.14191"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="466.51483"
x="626.14191"
id="tspan887"
sodipodi:role="line">Z: Up</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4694"
d="M 814.16733,68.128379 C 812.90144,125.87929 718.05656,283.01422 674.91202,173.29441"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4696"
width="224.77599"
height="42.092525"
x="746.64636"
y="31.371185" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4698"
width="224.77599"
height="4"
x="746.64636"
y="31.371185" />
<text
id="text4702"
y="61.956482"
x="756.44995"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="61.956482"
x="756.44995"
id="tspan4700"
sodipodi:role="line">top_side = -Axis.Z</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 588.78088,131.62753 C 602.71447,261.13607 408.36126,182.49627 438.30137,83.694259"
id="path4704"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="46.682903"
x="354.89914"
height="42.092525"
width="244.42542"
id="rect4684"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="46.682903"
x="354.89914"
height="4"
width="244.42542"
id="rect4686"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="364.70273"
y="77.268227"
id="text4690"><tspan
sodipodi:role="line"
id="tspan4688"
x="364.70273"
y="77.268227"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">front_side = -Axis.X</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4716"
d="m 980.70246,244.86037 c 22.58974,-82.56389 91.04754,17.95479 125.63244,-75.14241"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4718"
width="232.75874"
height="42.092525"
x="1002.7154"
y="152.06769" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4720"
width="232.75874"
height="4"
x="1002.7154"
y="152.06769" />
<text
id="text4724"
y="182.65302"
x="1012.519"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="182.65302"
x="1012.519"
id="tspan4722"
sodipodi:role="line">front_side = Axis.Z</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4736"
d="M 1032.9329,450.74191 C 947.09947,493.10021 907.59636,422.33393 942.18123,329.23673"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="431.80176"
x="1020.7235"
height="42.092525"
width="223.09496"
id="rect4728"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="431.80176"
x="1020.7235"
height="4"
width="223.09496"
id="rect4730"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="1028.8771"
y="462.38702"
id="text4734"><tspan
sodipodi:role="line"
id="tspan4732"
x="1028.8771"
y="462.38702"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">top_side = -Axis.X</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 281.59646,261.93718 c -22.58969,-82.56389 -41.04752,14.62146 -75.63239,-78.47574"
id="path4738"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="167.09308"
x="109.27574"
height="42.092525"
width="215.38545"
id="rect4740"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="167.09308"
x="109.27574"
height="4"
width="215.38545"
id="rect4742"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="119.07937"
y="197.67841"
id="text4746"><tspan
sodipodi:role="line"
id="tspan4744"
x="119.07937"
y="197.67841"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">top_side = Axis.Z</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path4758"
d="m 420.02759,339.6125 c 9.12433,-59.47413 -33.03745,-120.40753 -79.74207,-81.45106"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4750"
width="234.44266"
height="42.092525"
x="404.79791"
y="314.1073" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4752"
width="234.44266"
height="4"
x="404.79791"
y="314.1073" />
<text
id="text4756"
y="344.69263"
x="414.6015"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="344.69263"
x="414.6015"
id="tspan4754"
sodipodi:role="line">front_side = Axis.X</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5128)"
d="M 601.65481,535.63708 V 437.18765"
id="path5118"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-curvature="0"
id="path6786"
d="M 736.87546,624.06352 822.93347,573.9822"
style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6790)" />
<path
style="fill:none;stroke:#000000;stroke-width:1.99999988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker8272)"
d="M 528.06103,622.66606 432.1922,566.71727"
id="path8268"
inkscape:connector-curvature="0" />
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

-12
View File
@@ -1,12 +0,0 @@
0 Name: orientation.ldr
0 Author: Pybricks {laurens@pybricks.com}
0 !LICENSE MIT
0 ROTATION CENTER 0 0 0 1 "Custom"
0 ROTATION CONFIG 0 0
1 15 -160 -56 260 0 0 1 0 1 0 -1 0 0 26910.dat
1 71 -430 -40 520 0 0 -1 0 1 0 1 0 0 22127.dat
1 15 140 -16 30 0 0 1 0 1 0 -1 0 0 45601p02.dat
1 3 430 -16 -180 0 0 1 0 1 0 -1 0 0 45601c01.dat
1 0 724 -90 -378 0 0 -1 0 -1 0 -1 0 0 u9218c01.dat
1 15 760 -100 -378 1 0 0 0 1 0 0 0 1 20841.dat
0
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

@@ -1,269 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="600"
height="450"
viewBox="0 0 600 450"
sodipodi:docname="orientation_inventorhub.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1853"
inkscape:window-height="1145"
id="namedview4"
showgrid="false"
inkscape:zoom="1.0606602"
inkscape:cx="333.28458"
inkscape:cy="169.50072"
inkscape:window-x="67"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="600"
height="450"
x="0"
y="0" />
<image
sodipodi:absref="orientation_inventorhub.png"
xlink:href="orientation_inventorhub.png"
y="48.001614"
x="101.28084"
id="image999"
preserveAspectRatio="none"
height="338.39999"
width="360"
style="stroke-width:1.25" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 176.58676,175.20729 110.16176,79.35702 99.66667,-78 -102.66667,-76.666662 z"
id="path1112"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<rect
y="237.61398"
x="378.28824"
height="42.092525"
width="92.709976"
id="rect1046"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="237.61398"
x="378.28824"
height="4"
width="92.709976"
id="rect1048"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="388.25851"
y="268.19931"
id="text1052"><tspan
sodipodi:role="line"
id="tspan1050"
x="388.25851"
y="268.19931"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">RIGHT</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1056"
d="M 409.20157,108.45455 C 426.1171,112.8 410.02912,48.247438 452.86824,50.454538"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1058"
width="99.939941"
height="42.092525"
x="450.50766"
y="27.638273" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1060"
width="99.939941"
height="4"
x="450.50766"
y="27.638273" />
<text
id="text1064"
y="58.223598"
x="460.47794"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="58.223598"
x="460.47794"
id="tspan1062"
sodipodi:role="line">FRONT</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1068"
width="88.709984"
height="42.092525"
x="74.64743"
y="289.41293" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1070"
width="88.709984"
height="4"
x="74.64743"
y="289.41293" />
<text
id="text1074"
y="319.99826"
x="84.647736"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="319.99826"
x="84.647736"
id="tspan1072"
sodipodi:role="line">BACK</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1078"
width="67.413025"
height="42.092525"
x="254.93002"
y="151.108" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1080"
width="67.413025"
height="4"
x="254.93002"
y="151.108" />
<text
id="text1084"
y="181.69333"
x="264.9003"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="181.69333"
x="264.9003"
id="tspan1082"
sodipodi:role="line">TOP</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 214.04234,123.11631 c -16.91553,4.34545 -0.82755,-60.207112 -43.66667,-58.000012"
id="path1088"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1090"
width="80.376648"
height="42.092525"
x="96.597748"
y="43.11636" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1092"
width="80.376648"
height="4"
x="96.597748"
y="43.11636" />
<text
id="text1096"
y="73.701691"
x="106.40134"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="73.701691"
x="106.40134"
id="tspan1094"
sodipodi:role="line">LEFT</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 332.37499,402.3481 C 301.57806,421.60983 193.9783,440.31402 214.86196,371.07607"
id="path1100"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="377.55441"
x="320.28799"
height="42.092525"
width="122.20998"
id="rect1102"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="377.55441"
x="320.28799"
height="4"
width="122.20998"
id="rect1104"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="330.9249"
y="408.13974"
id="text1108"><tspan
sodipodi:role="line"
id="tspan1106"
x="330.9249"
y="408.13974"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">BOTTOM</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 98 KiB

@@ -1,263 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="600"
height="450"
viewBox="0 0 600 450"
sodipodi:docname="orientation_movehub.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1172"
id="namedview4"
showgrid="false"
inkscape:zoom="1.5"
inkscape:cx="207.51304"
inkscape:cy="268.59606"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="600"
height="450"
x="0"
y="0" />
<image
sodipodi:absref="orientation_movehub.png"
xlink:href="orientation_movehub.png"
style="stroke-width:1.25"
width="463.20001"
height="402.39999"
preserveAspectRatio="none"
id="image1010"
x="15.085896"
y="11.234114" />
<rect
y="210.2413"
x="361.42303"
height="42.092525"
width="90.876648"
id="rect1198"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="210.2413"
x="361.42303"
height="4"
width="90.876648"
id="rect1200"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="370.06"
y="240.82661"
id="text1204"><tspan
sodipodi:role="line"
id="tspan1202"
x="370.06"
y="240.82661"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">RIGHT</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1208"
d="m 453.0864,92.872824 c 16.9155,4.34545 0.8275,-60.207095 43.6666,-57.999995"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1210"
width="103.04331"
height="42.092525"
x="494.39255"
y="12.056505" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1212"
width="103.04331"
height="4"
x="494.39255"
y="12.056505" />
<text
id="text1216"
y="42.641838"
x="505.36276"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="42.641838"
x="505.36276"
id="tspan1214"
sodipodi:role="line">FRONT</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1220"
width="88.709984"
height="42.092525"
x="9.1156197"
y="321.3736" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1222"
width="88.709984"
height="4"
x="9.1156197"
y="321.3736" />
<text
id="text1226"
y="351.95892"
x="21.119404"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="351.95892"
x="21.119404"
id="tspan1224"
sodipodi:role="line">BACK</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1230"
width="67.413025"
height="42.092525"
x="185.39822"
y="160.40205" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1232"
width="67.413025"
height="4"
x="185.39822"
y="160.40205" />
<text
id="text1236"
y="190.98738"
x="195.36848"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="190.98738"
x="195.36848"
id="tspan1234"
sodipodi:role="line">TOP</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 213.14372,122.85522 c -16.91553,4.34545 -0.82755,-60.207091 -43.66667,-57.999991"
id="path1240"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1242"
width="80.376648"
height="42.092525"
x="95.699127"
y="42.85524" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1244"
width="80.376648"
height="4"
x="95.699127"
y="42.85524" />
<text
id="text1248"
y="73.440567"
x="106.52438"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="73.440567"
x="106.52438"
id="tspan1246"
sodipodi:role="line">LEFT</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 223.05333,425.42158 C 192.2564,444.68328 84.656638,463.38748 105.5403,394.14948"
id="path1252"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="400.62772"
x="210.96632"
height="42.092525"
width="122.8654"
id="rect1254"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="400.62772"
x="210.96632"
height="4"
width="122.8654"
id="rect1256"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="222.49867"
y="431.21304"
id="text1260"><tspan
sodipodi:role="line"
id="tspan1258"
x="222.49867"
y="431.21304"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">BOTTOM</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

@@ -1,269 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="600"
height="450"
viewBox="0 0 600 450"
sodipodi:docname="orientation_primehub.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1172"
id="namedview4"
showgrid="false"
inkscape:zoom="0.75000002"
inkscape:cx="728.73773"
inkscape:cy="159.45867"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="600"
height="450"
x="0"
y="0" />
<image
sodipodi:absref="orientation_primehub.png"
xlink:href="orientation_primehub.png"
y="48.382168"
x="100.66959"
id="image1021"
preserveAspectRatio="none"
height="338.39999"
width="358.39999"
style="stroke-width:1.25" />
<path
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 176.58676,175.20729 110.16176,79.35702 99.66667,-78 -102.66667,-76.666662 z"
id="path1112"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<rect
y="237.61398"
x="378.28824"
height="42.092525"
width="92.709976"
id="rect1046"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="237.61398"
x="378.28824"
height="4"
width="92.709976"
id="rect1048"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="388.25851"
y="268.19931"
id="text1052"><tspan
sodipodi:role="line"
id="tspan1050"
x="388.25851"
y="268.19931"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">RIGHT</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1056"
d="M 409.20157,108.45455 C 426.1171,112.8 410.02912,48.247438 452.86824,50.454538"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1058"
width="99.939941"
height="42.092525"
x="450.50766"
y="27.638273" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1060"
width="99.939941"
height="4"
x="450.50766"
y="27.638273" />
<text
id="text1064"
y="58.223598"
x="460.47794"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="58.223598"
x="460.47794"
id="tspan1062"
sodipodi:role="line">FRONT</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1068"
width="88.709984"
height="42.092525"
x="74.64743"
y="289.41293" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1070"
width="88.709984"
height="4"
x="74.64743"
y="289.41293" />
<text
id="text1074"
y="319.99826"
x="84.647736"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="319.99826"
x="84.647736"
id="tspan1072"
sodipodi:role="line">BACK</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1078"
width="67.413025"
height="42.092525"
x="254.93002"
y="151.108" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1080"
width="67.413025"
height="4"
x="254.93002"
y="151.108" />
<text
id="text1084"
y="181.69333"
x="264.9003"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="181.69333"
x="264.9003"
id="tspan1082"
sodipodi:role="line">TOP</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 214.04234,123.11631 c -16.91553,4.34545 -0.82755,-60.207112 -43.66667,-58.000012"
id="path1088"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1090"
width="80.376648"
height="42.092525"
x="96.597748"
y="43.11636" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1092"
width="80.376648"
height="4"
x="96.597748"
y="43.11636" />
<text
id="text1096"
y="73.701691"
x="106.40134"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="73.701691"
x="106.40134"
id="tspan1094"
sodipodi:role="line">LEFT</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 332.37499,402.3481 C 301.57806,421.60983 193.9783,440.31402 214.86196,371.07607"
id="path1100"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="377.55441"
x="320.28799"
height="42.092525"
width="122.20998"
id="rect1102"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="377.55441"
x="320.28799"
height="4"
width="122.20998"
id="rect1104"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="330.9249"
y="408.13974"
id="text1108"><tspan
sodipodi:role="line"
id="tspan1106"
x="330.9249"
y="408.13974"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">BOTTOM</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

@@ -1,263 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="600"
height="450"
viewBox="0 0 600 450"
sodipodi:docname="orientation_technichub.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1172"
id="namedview4"
showgrid="false"
inkscape:zoom="1.0606602"
inkscape:cx="288.44009"
inkscape:cy="242.25201"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="600"
height="450"
x="0"
y="0" />
<image
sodipodi:absref="orientation_technichub.png"
xlink:href="orientation_technichub.png"
style="stroke-width:1.25"
width="359.20001"
height="323.20001"
preserveAspectRatio="none"
id="image870"
x="95.0215"
y="66.343895" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect873"
width="94.047379"
height="42.092525"
x="369.40115"
y="235.02014" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect875"
width="94.047379"
height="4"
x="369.40115"
y="235.02014" />
<text
id="text879"
y="265.60547"
x="379.37143"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="265.60547"
x="379.37143"
id="tspan877"
sodipodi:role="line">RIGHT</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 397.89738,128.77907 c 16.91553,4.34545 0.82755,-60.207095 43.66667,-57.999995"
id="path889"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="47.962753"
x="439.20349"
height="42.092525"
width="99.704239"
id="rect881"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="47.962753"
x="439.20349"
height="4"
width="99.704239"
id="rect883"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="449.17377"
y="78.54808"
id="text887"><tspan
sodipodi:role="line"
id="tspan885"
x="449.17377"
y="78.54808"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">FRONT</tspan></text>
<rect
y="272.67694"
x="108.42245"
height="42.092525"
width="88.709984"
id="rect961"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="272.67694"
x="108.42245"
height="4"
width="88.709984"
id="rect963"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="123.72604"
y="303.26227"
id="text967"><tspan
sodipodi:role="line"
id="tspan965"
x="123.72604"
y="303.26227"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">BACK</tspan></text>
<rect
y="157.47092"
x="232.60791"
height="42.092525"
width="67.413025"
id="rect4648"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="157.47092"
x="232.60791"
height="4"
width="67.413025"
id="rect4650"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="243.7567"
y="188.05624"
id="text4654"><tspan
sodipodi:role="line"
id="tspan4652"
x="243.7567"
y="188.05624"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">TOP</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path987"
d="m 218.40482,122.94083 c -16.91553,4.34545 -0.82755,-60.207095 -43.66667,-57.999995"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="42.940842"
x="100.96023"
height="42.092525"
width="80.376648"
id="rect932"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="42.940842"
x="100.96023"
height="4"
width="80.376648"
id="rect934"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="113.1997"
y="73.526169"
id="text938"><tspan
sodipodi:role="line"
id="tspan936"
x="113.1997"
y="73.526169"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">LEFT</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1114"
d="m 352.17398,396.21985 c -30.79693,19.2617 -138.39669,37.9659 -117.51303,-31.272"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1116"
width="117.09069"
height="42.092525"
x="340.08701"
y="371.42603" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1118"
width="117.09069"
height="4"
x="340.08701"
y="371.42603" />
<text
id="text1122"
y="402.01135"
x="349.49805"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="402.01135"
x="349.49805"
id="tspan1120"
sodipodi:role="line">BOTTOM</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

@@ -1,269 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="600"
height="450"
viewBox="0 0 600 450"
sodipodi:docname="orientation_tiltsensor.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1172"
id="namedview4"
showgrid="false"
inkscape:zoom="1.0606602"
inkscape:cx="329.73302"
inkscape:cy="132.75133"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="600"
height="450"
x="0"
y="0" />
<image
sodipodi:absref="orientation_tiltsensor.png"
xlink:href="orientation_tiltsensor.png"
y="98.870911"
x="99.318779"
id="image1043"
preserveAspectRatio="none"
height="278.62332"
width="264.25601"
style="stroke-width:1.94886804" />
<rect
y="151.37714"
x="349.25064"
height="42.092525"
width="88.709976"
id="rect1266"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="151.37714"
x="349.25064"
height="4"
width="88.709976"
id="rect1268"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="356.72086"
y="181.96249"
id="text1272"><tspan
sodipodi:role="line"
id="tspan1270"
x="356.72086"
y="181.96249"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">RIGHT</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1276"
d="m 352.16392,122.88432 c 16.9155,4.34545 0.8275,-60.207107 43.6666,-58.000007"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1278"
width="96.876648"
height="42.092525"
x="393.46988"
y="42.068047" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1280"
width="96.876648"
height="4"
x="393.46988"
y="42.068047" />
<text
id="text1284"
y="72.653381"
x="401.27359"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="72.653381"
x="401.27359"
id="tspan1282"
sodipodi:role="line">FRONT</tspan></text>
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1298"
width="53.967594"
height="42.092525"
x="279.03238"
y="98.204475" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1300"
width="53.967594"
height="4"
x="279.03238"
y="98.204475" />
<text
id="text1304"
y="128.78979"
x="283.19595"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="128.78979"
x="283.19595"
id="tspan1302"
sodipodi:role="line">TOP</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 260.67132,140.21275 c -16.9155,4.34545 -0.8275,-60.207108 -43.6666,-58.000008"
id="path1308"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1310"
width="75.544754"
height="42.092525"
x="148.05865"
y="60.212769" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333321;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1312"
width="75.544754"
height="4"
x="148.05865"
y="60.212769" />
<text
id="text1316"
y="90.798088"
x="156.17328"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="90.798088"
x="156.17328"
id="tspan1314"
sodipodi:role="line">LEFT</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 408.00402,238.77787 c -30.7969,19.26173 -138.2788,38.90873 -117.3951,-30.32922"
id="path1320"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
y="213.98419"
x="395.91714"
height="42.092525"
width="119.87664"
id="rect1322"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="213.98419"
x="395.91714"
height="4"
width="119.87664"
id="rect1324"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.52250361;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="404.72061"
y="244.56952"
id="text1328"><tspan
sodipodi:role="line"
id="tspan1326"
x="404.72061"
y="244.56952"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">BOTTOM</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1332"
d="m 237.12342,170.915 c -20.5212,19.15467 -39.4653,3.18452 -66.9567,32.8243"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1288"
width="88.709984"
height="42.092525"
x="103.77959"
y="169.67621" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.24119687;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1290"
width="88.709984"
height="4"
x="103.77959"
y="169.67621" />
<text
id="text1294"
y="200.26154"
x="115.41656"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="200.26154"
x="115.41656"
id="tspan1292"
sodipodi:role="line">BACK</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

-256
View File
@@ -1,256 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="450"
height="450"
viewBox="0 0 450 450"
sodipodi:docname="primehub_buttons.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1172"
id="namedview4"
showgrid="false"
inkscape:zoom="1.0606602"
inkscape:cx="264.34169"
inkscape:cy="315.96311"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false"
showguides="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="450"
height="450"
x="0"
y="0" />
<g
id="g970"
transform="translate(17.441551,-18.065971)">
<image
sodipodi:absref="primehubtop.png"
xlink:href="primehubtop.png"
y="28.855242"
x="78.985664"
id="image853"
preserveAspectRatio="none"
height="386.06873"
width="244.9046"
style="stroke-width:3.63406801" />
<circle
r="19.625"
cy="80.700775"
cx="272.00305"
id="path856"
style="fill:none;fill-opacity:1;stroke:#d0d0d0;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<circle
style="fill:none;fill-opacity:1;stroke:#f4f4f4;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="circle858"
cx="272.00305"
cy="80.700775"
r="21.5" />
<rect
y="133.10596"
x="108.8772"
height="183.39523"
width="184.14073"
id="rect964"
style="fill:#f4f4f4;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
</g>
<circle
style="fill:#f4f4f4;fill-opacity:1;stroke:#dddddd;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="path860"
cx="218.73126"
cy="345.19565"
r="32.29121" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 276.1665,59.318793 228.55465,27.616844"
id="path1036"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<g
id="g846"
transform="translate(-26.959225)">
<rect
y="2.5080223"
x="44.959225"
height="42.092525"
width="244.56721"
id="rect1038"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="2.5080223"
x="44.959225"
height="4"
width="244.56721"
id="rect1040"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="52.096157"
y="33.093319"
id="text1044"><tspan
sodipodi:role="line"
id="tspan1042"
x="52.096157"
y="33.093319"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">Button.BLUETOOTH</tspan></text>
</g>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 217.75258,250.87782 v 96.66666"
id="path1058"
inkscape:connector-curvature="0" />
<rect
y="241.26053"
x="123.07694"
height="42.092525"
width="194.36263"
id="rect1050"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="241.26053"
x="123.07694"
height="4"
width="194.36263"
id="rect1052"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="130.21388"
y="271.84586"
id="text1056"><tspan
sodipodi:role="line"
id="tspan1054"
x="130.21388"
y="271.84586"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">Button.CENTER</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 166.52786,347.04816 -35.28065,69.10991"
id="path893"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<g
id="g852"
transform="translate(7.1281185)">
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1073"
width="159.69595"
height="42.092525"
x="10.871881"
y="404.98434" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1075"
width="159.69595"
height="4"
x="10.871881"
y="404.98434" />
<text
id="text1079"
y="435.56967"
x="18.008812"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="435.56967"
x="18.008812"
id="tspan1077"
sodipodi:role="line">Button.LEFT</tspan></text>
</g>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1081"
d="m 273.24721,347.04816 35.28065,69.10991"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1061"
width="172.36263"
height="42.092525"
x="261.2052"
y="404.98434" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1063"
width="172.36263"
height="4"
x="261.2052"
y="404.98434" />
<text
id="text1067"
y="435.56967"
x="268.34213"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="435.56967"
x="268.34213"
id="tspan1065"
sodipodi:role="line">Button.RIGHT</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 10 KiB

-424
View File
@@ -1,424 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="450"
height="400"
viewBox="0 0 450 400"
sodipodi:docname="primehub_display.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="1172"
id="namedview4"
showgrid="false"
inkscape:zoom="1.5"
inkscape:cx="380.9636"
inkscape:cy="114.1086"
inkscape:window-x="1920"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false"
showguides="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="450"
height="400"
x="0"
y="0" />
<g
id="g970"
transform="translate(17.20585,-24.225357)">
<image
sodipodi:absref="primehubtop.png"
xlink:href="primehubtop.png"
y="28.855242"
x="78.985664"
id="image853"
preserveAspectRatio="none"
height="386.06873"
width="244.9046"
style="stroke-width:3.63406801" />
<circle
r="19.625"
cy="80.700775"
cx="272.00305"
id="path856"
style="fill:none;fill-opacity:1;stroke:#d0d0d0;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<circle
style="fill:none;fill-opacity:1;stroke:#f4f4f4;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="circle858"
cx="272.00305"
cy="80.700775"
r="21.5" />
<rect
y="133.10596"
x="108.8772"
height="183.39523"
width="184.14073"
id="rect964"
style="fill:#f4f4f4;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
</g>
<circle
style="fill:#f4f4f4;fill-opacity:1;stroke:#dddddd;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="path860"
cx="218.49556"
cy="339.03625"
r="32.29121" />
<rect
y="113.78788"
x="241.52562"
height="26.547276"
width="28.4128"
id="rect874"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect876"
width="28.4128"
height="26.547276"
x="241.52562"
y="149.18375" />
<rect
y="184.57956"
x="241.52562"
height="26.547276"
width="28.4128"
id="rect878"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect880"
width="28.4128"
height="26.547276"
x="241.52562"
y="219.97539" />
<rect
y="255.37122"
x="241.52562"
height="26.547276"
width="28.4128"
id="rect882"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect891"
width="28.4128"
height="26.547276"
x="278.60895"
y="113.78788" />
<rect
y="149.18375"
x="278.60895"
height="26.547276"
width="28.4128"
id="rect893"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect895"
width="28.4128"
height="26.547276"
x="278.60895"
y="184.57956" />
<rect
y="219.97539"
x="278.60895"
height="26.547276"
width="28.4128"
id="rect897"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect899"
width="28.4128"
height="26.547276"
x="278.60895"
y="255.37122" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect903"
width="28.4128"
height="26.547276"
x="130.27565"
y="113.78788" />
<rect
y="149.18375"
x="130.27565"
height="26.547276"
width="28.4128"
id="rect905"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect907"
width="28.4128"
height="26.547276"
x="130.27565"
y="184.57956" />
<rect
y="219.97539"
x="130.27565"
height="26.547276"
width="28.4128"
id="rect909"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect911"
width="28.4128"
height="26.547276"
x="130.27565"
y="255.37122" />
<rect
y="113.78788"
x="167.35896"
height="26.547276"
width="28.4128"
id="rect915"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect917"
width="28.4128"
height="26.547276"
x="167.35896"
y="149.18375" />
<rect
y="184.57956"
x="167.35896"
height="26.547276"
width="28.4128"
id="rect919"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect921"
width="28.4128"
height="26.547276"
x="167.35896"
y="219.97539" />
<rect
y="255.37122"
x="167.35896"
height="26.547276"
width="28.4128"
id="rect923"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect927"
width="28.4128"
height="26.547276"
x="204.44231"
y="113.78788" />
<rect
y="149.18375"
x="204.44231"
height="26.547276"
width="28.4128"
id="rect929"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect931"
width="28.4128"
height="26.547276"
x="204.44231"
y="184.57956" />
<rect
y="219.97539"
x="204.44231"
height="26.547276"
width="28.4128"
id="rect933"
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1" />
<rect
style="fill:#ffec6c;fill-opacity:1;stroke:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect935"
width="28.4128"
height="26.547276"
x="204.44231"
y="255.37122" />
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 143.07085,125.96136 95.458999,94.259414"
id="path972"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1058"
width="63.773277"
height="42.092525"
x="49.546856"
y="64.91291" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1060"
width="63.773277"
height="4"
x="49.546856"
y="64.91291" />
<text
id="text1064"
y="95.498222"
x="54.1838"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="95.498222"
x="54.1838"
id="tspan1062"
sodipodi:role="line">(0, 0)</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path974"
d="M 291.95856,125.96136 339.57041,94.259414"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="64.91291"
x="320.7131"
height="42.092525"
width="63.773277"
id="rect976"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="64.91291"
x="320.7131"
height="4"
width="63.773277"
id="rect978"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="325.35004"
y="95.498222"
id="text982"><tspan
sodipodi:role="line"
id="tspan980"
x="325.35004"
y="95.498222"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">(0, 4)</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 291.95856,270.25941 47.61185,31.70195"
id="path984"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cc" />
<rect
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect986"
width="63.773277"
height="42.092525"
x="320.7131"
y="288.9325" />
<rect
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect988"
width="63.773277"
height="4"
x="320.7131"
y="288.9325" />
<text
id="text992"
y="319.51782"
x="325.35004"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="319.51782"
x="325.35004"
id="tspan990"
sodipodi:role="line">(4, 4)</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-curvature="0"
id="path1020"
d="M 143.07085,270.14558 95.458999,301.84753"
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="288.9325"
x="49.536201"
height="42.092525"
width="63.773277"
id="rect1012"
style="opacity:1;fill:#e7f2fa;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:24.19441986px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="54.173134"
y="319.51782"
id="text1018"><tspan
sodipodi:role="line"
id="tspan1016"
x="54.173134"
y="319.51782"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">(4, 0)</tspan></text>
<rect
y="288.93512"
x="49.546856"
height="4"
width="63.773277"
id="rect1022"
style="opacity:1;fill:#6ab0de;fill-opacity:1;stroke:none;stroke-width:2.13333344;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

-115
View File
@@ -1,115 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="450"
height="106"
viewBox="0 0 450 106"
sodipodi:docname="primehub_light.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6">
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath860">
<rect
style="fill:#6ab0de;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect862"
width="589.10107"
height="96.333336"
x="235.33333"
y="-236.00002" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath1040">
<rect
style="fill:#1e1e1e;fill-opacity:1;stroke:none;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect1042"
width="128.5101"
height="19.934668"
x="827.15656"
y="74.666672" />
</clipPath>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath894">
<rect
style="fill:#d92626;fill-opacity:0.45762712;stroke:none;stroke-width:1.13385832;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect896"
width="298.05273"
height="138.83516"
x="69.762825"
y="296.87869" />
</clipPath>
</defs>
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1853"
inkscape:window-height="1145"
id="namedview4"
showgrid="false"
inkscape:zoom="0.70710678"
inkscape:cx="333.41863"
inkscape:cy="-328.9942"
inkscape:window-x="67"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2"
inkscape:snap-global="false"
showguides="false" />
<rect
style="fill:#fcfcfc;fill-opacity:1;stroke:none;stroke-width:1.13385844;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="rect844"
width="450"
height="106"
x="0"
y="0" />
<image
sodipodi:absref="primehubtop.png"
xlink:href="primehubtop.png"
style="stroke-width:3.63406801"
width="244.9046"
height="386.06873"
preserveAspectRatio="none"
id="image853"
x="96.427216"
y="16.477236"
clip-path="url(#clipPath894)"
transform="translate(-0.0475179,-296.61368)" />
<circle
style="fill:#3d83ff;fill-opacity:0.36312848;stroke:#2d95ff;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="path860"
cx="218.832"
cy="54.269928"
r="32.29121" />
</svg>

Before

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

@@ -1,14 +0,0 @@
0 Name: pupdevicesoverview.ldr
0 Author: Pybricks {laurens@pybricks.com}
0 !LICENSE MIT
0 ROTATION CENTER 0 0 0 1 "Custom"
0 ROTATION CONFIG 0 0
1 15 130 -280 500 0 1 0 -1 0 0 0 0 1 54675c01.dat
1 71 330 -280 300 0 1 0 -1 0 0 0 0 1 22169c01.dat
1 15 540 -280 220 1 0 0 0 1 0 0 0 1 21980c01.dat
1 15 560 -280 830 1 0 0 0 1 0 0 0 1 37316.dat
1 15 370 -280 990 -1 0 0 0 -1 0 0 0 1 37308c01.dat
1 15 750 -320 550 1 0 0 0 1 0 0 0 1 26912.dat
1 0 750 -310 586 -1 0 0 0 -1 0 0 0 1 u9218c01.dat
1 15 560 -266 808 -1 0 0 0 -1 0 0 0 1 u9218c01.dat
0
+5 -10
View File
@@ -1,13 +1,8 @@
0 Name: pupmotors.ldr
0 Name: pupmotors
0 Author: Pybricks {laurens@pybricks.com}
0 !LICENSE MIT
0 ROTATION CENTER 0 0 0 1 "Custom"
0 ROTATION CONFIG 0 0
1 15 430 -96 190 0 0 1 1 0 0 0 1 0 54675c01.dat
1 15 430 -96 400 0 0 1 1 0 0 0 1 0 54675c01.dat
1 322 430 -72 30 0 0 1 1 0 0 0 1 0 54696c01.dat
1 71 430 -72 -180 0 0 1 1 0 0 0 1 0 54696c01.dat
1 71 190 -144 -180 1 0 0 0 1 0 0 0 1 22169c01.dat
1 71 -20 -216 -140 1 0 0 0 1 0 0 0 1 22172c01.dat
1 15 120 -320 160 1 0 0 0 1 0 0 0 1 26913c01.dat
0
1 15 410 -72 30 0 0 1 1 0 0 0 1 0 54696c01.dat
1 71 230 -144 0 1 0 0 0 1 0 0 0 1 22169c01.dat
1 71 40 -216 0 1 0 0 0 1 0 0 0 1 22172c01.dat
1 15 -140 -320 80 1 0 0 0 1 0 0 0 1 26913c01.dat
Binary file not shown.

Before

Width:  |  Height:  |  Size: 866 KiB

After

Width:  |  Height:  |  Size: 576 KiB

+16 -72
View File
@@ -11,8 +11,8 @@
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="2000"
height="1118"
viewBox="0 0 529.16666 295.80416"
height="610"
viewBox="0 0 529.16666 161.39583"
version="1.1"
id="svg8"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
@@ -57,9 +57,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.35"
inkscape:cx="619.19211"
inkscape:cy="823.24691"
inkscape:zoom="0.49497475"
inkscape:cx="899.69341"
inkscape:cy="449.26412"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
@@ -87,18 +87,18 @@
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-1.1958167)">
transform="translate(0,-135.60415)">
<image
sodipodi:absref="pupmotors.png"
xlink:href="pupmotors.png"
width="529.16669"
height="295.80417"
preserveAspectRatio="none"
id="image853"
y="135.60416"
x="-2.220446e-16"
y="1.1958181" />
id="image853"
preserveAspectRatio="none"
height="161.39583"
width="529.16669" />
<g
transform="matrix(1.9732825,0,0,1.9732825,82.068314,-182.19652)"
transform="matrix(1.9732825,0,0,1.9732825,-10.059646,-179.85595)"
id="g2717">
<g
transform="matrix(1,-0.27773651,0,1,59.387949,102.27922)"
@@ -123,7 +123,7 @@
</g>
<g
id="g2727"
transform="matrix(1.7059944,0,0,1.7059944,-18.326438,-250.00951)">
transform="matrix(1.7059944,0,0,1.7059944,79.305221,-182.52003)">
<g
style="fill:#2980b9;fill-opacity:1;stroke:#fffbfb;stroke-width:0.13229167;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="g2721"
@@ -147,7 +147,7 @@
sodipodi:nodetypes="ccccsc" />
</g>
<g
transform="matrix(1.7059944,0,0,1.7059944,40.772154,-187.53273)"
transform="matrix(1.7059944,0,0,1.7059944,125.04034,-119.77598)"
id="g2747">
<g
transform="matrix(1,-0.27773651,0,1,61.231459,102.02783)"
@@ -173,7 +173,7 @@
</g>
<g
id="g2757"
transform="matrix(1.9732825,0,0,1.9732825,-63.81015,-178.54646)">
transform="matrix(1.9732825,0,0,1.9732825,-108.71143,-177.21012)">
<g
style="fill:#2980b9;fill-opacity:1;stroke:#fffbfb;stroke-width:0.13229167;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="g2751"
@@ -196,7 +196,7 @@
style="fill:#2980b9;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
transform="matrix(1.9732825,0,0,1.9732825,-192.3424,-182.95247)"
transform="matrix(1.9732825,0,0,1.9732825,-212.65488,-179.47797)"
id="g2767">
<g
transform="matrix(1,-0.27773651,0,1,59.387949,102.27922)"
@@ -219,61 +219,5 @@
id="path2765"
inkscape:connector-curvature="0" />
</g>
<g
id="g874"
transform="matrix(1.9732825,0,0,1.9732825,-208.72093,-323.71573)">
<g
style="fill:#2980b9;fill-opacity:1;stroke:#fffbfb;stroke-width:0.13229167;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="g868"
transform="matrix(1,-0.27773651,0,1,59.387949,102.27922)">
<path
id="path866"
style="fill:#2980b9;fill-opacity:1;fill-rule:evenodd;stroke:#fffbfb;stroke-width:0.13229167;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 107.60315,149.3339 -4.4195,12.01847 -4.419489,-12.01847 c 2.609269,1.92005 6.179199,1.90899 8.838989,0 z"
inkscape:connector-curvature="0" />
</g>
<path
inkscape:connector-curvature="0"
id="path870"
d="m 148.90956,215.29575 c -8.02867,2.89572 -14.60635,11.81219 -14.60635,19.93021 l 1.74541,-0.62952 c 0,-7.05178 5.7198,-14.86961 12.86094,-17.44522 7.14113,-2.57561 12.86094,1.11628 12.86094,8.16806 l 1.74541,-0.62952 c 0,-8.11802 -6.57768,-12.28973 -14.60635,-9.39401 z"
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2980b9;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate" />
<path
inkscape:connector-curvature="0"
id="path872"
d="m 161.70224,224.65346 1.85836,-0.53454 0.43431,0.40926 -0.98973,1.42822 c 0,0 -2.13398,-0.30486 -2.13398,-0.32574 0,-0.0209 0.83104,-0.9772 0.83104,-0.9772 z"
style="fill:#2980b9;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
transform="matrix(1.9732825,0,0,1.9732825,-134.6376,-374.36454)"
id="g884">
<g
transform="matrix(1,-0.27773651,0,1,59.387949,102.27922)"
id="g878"
style="fill:#2980b9;fill-opacity:1;stroke:#fffbfb;stroke-width:0.13229167;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<path
inkscape:connector-curvature="0"
d="m 107.60315,149.3339 -4.4195,12.01847 -4.419489,-12.01847 c 2.609269,1.92005 6.179199,1.90899 8.838989,0 z"
style="fill:#2980b9;fill-opacity:1;fill-rule:evenodd;stroke:#fffbfb;stroke-width:0.13229167;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path876" />
</g>
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#2980b9;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 148.90956,215.29575 c -8.02867,2.89572 -14.60635,11.81219 -14.60635,19.93021 l 1.74541,-0.62952 c 0,-7.05178 5.7198,-14.86961 12.86094,-17.44522 7.14113,-2.57561 12.86094,1.11628 12.86094,8.16806 l 1.74541,-0.62952 c 0,-8.11802 -6.57768,-12.28973 -14.60635,-9.39401 z"
id="path880"
inkscape:connector-curvature="0" />
<path
style="fill:#2980b9;fill-opacity:1;stroke:none;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 161.70224,224.65346 1.85836,-0.53454 0.43431,0.40926 -0.98973,1.42822 c 0,0 -2.13398,-0.30486 -2.13398,-0.32574 0,-0.0209 0.83104,-0.9772 0.83104,-0.9772 z"
id="path882"
inkscape:connector-curvature="0" />
</g>
<ellipse
style="fill:#454545;fill-opacity:1;stroke:none;stroke-width:0.68220371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:75.59054565;stroke-opacity:1"
id="path886"
cx="158.78319"
cy="17.35313"
rx="1.295833"
ry="1.1623898"
transform="matrix(0.89702138,0.44198716,0,1,0,0)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 17 KiB

+1 -10
View File
@@ -1,8 +1,7 @@
0 Name: pupmotors
0 Author: Pybricks {laurens@pybricks.com}
0 !LICENSE MIT
0 !LDCAD GROUP_DEF [topLevel=true] [LID=0] [GID=9FDP9pj0O55] [name=Group 1] [center=0 0 0]
1 15 600 -280 180 1 0 0 0 1 0 0 0 1 37316.dat
1 15 600 -280 240 -1 0 0 0 -1 0 0 0 1 37316c01.dat
1 15 60 -272 160 -1 0 0 0 -1 0 0 0 1 37312c01.dat
1 15 -400 -280 240 -1 0 0 0 -1 0 0 0 1 37308c01.dat
1 0 -400 -310 -374 -1 0 0 0 -1 0 0 0 1 u9218c01.dat
@@ -11,11 +10,3 @@
1 0 630 -310 -384 -1 0 0 0 -1 0 0 0 1 u9218c01.dat
1 15 60 -320 -430 0 0 1 0 1 0 -1 0 0 20844.dat
1 0 60 -310 -394 -1 0 0 0 -1 0 0 0 1 u9218c01.dat
1 15 600 -266 158 -1 0 0 0 -1 0 0 0 1 u9218c01.dat
1 15 1130 -280 240 1 0 0 0 1 0 0 0 1 37316.dat
1 15 1290 -280 220 1 0 0 0 1 0 0 0 1 37308.dat
1 0 690 -312 530 0 0 1 0 1 0 -1 0 0 22168.dat
0 !LDCAD GROUP_NXT [ids=0] [nrs=2]
1 71 704.852 -312 -628.188 -0.5 0 0.866 0 1 0 -0.866 0 -0.5 58123.dat
0 !LDCAD GROUP_NXT [ids=0] [nrs=-1]
1 71 972.1 -321.5 -814.7 0.5 0 -0.866 0 1 0 0.866 0 0.5 99499c01.dat
@@ -1,221 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="1000"
height="302"
viewBox="0 0 1000 302"
sodipodi:docname="sensor_color_lights.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1853"
inkscape:window-height="1145"
id="namedview4"
showgrid="false"
inkscape:zoom="0.76339286"
inkscape:cx="161.01621"
inkscape:cy="109.1048"
inkscape:window-x="67"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<rect
style="fill:#f4f4f4;fill-opacity:1;stroke:#1b2933;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect828"
width="150.00003"
height="147"
x="717.60785"
y="55.592186"
rx="4.3997755"
ry="4.3997755" />
<image
width="448"
height="302"
preserveAspectRatio="none"
xlink:href="../images/sensor_color.png"
id="image10"
x="0"
y="0"
sodipodi:absref="../images/sensor_color.png"
style="fill:#fcfcfc;fill-opacity:1;stroke:#fcfcfc;stroke-opacity:1" />
<rect
ry="23.066439"
rx="23.066439"
y="79.498627"
x="743.64288"
height="99.187141"
width="97.929855"
id="rect830"
style="fill:#1b2a34;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#e9e9e9;fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path832"
cx="792.60779"
cy="129.09219"
r="37.83313" />
<circle
style="fill:#1b2a34;fill-opacity:1;stroke:none;stroke-width:0.99999994;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle842"
cx="792.60779"
cy="129.09219"
r="0.26551938" />
<path
style="fill:none;stroke:#1b2a34;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 792.60149,129.04962 32.78644,18.92925"
id="path844"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
id="path846"
d="m 792.60149,129.04962 -32.78644,18.92925"
style="fill:none;stroke:#1b2a34;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;stroke:#1b2a34;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 792.60149,129.04962 V 91.191114"
id="path848"
inkscape:connector-curvature="0" />
<circle
r="27.129555"
cy="129.09219"
cx="792.60779"
id="circle834"
style="fill:#1b2a34;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#e9e9e9;fill-opacity:1;stroke:none;stroke-width:1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle836"
cx="792.60779"
cy="129.09219"
r="19.997108" />
<rect
style="fill:#fcc302;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect850"
width="15.630781"
height="7.8153906"
x="784.67413"
y="157.12068"
rx="0"
ry="0" />
<rect
ry="0"
rx="0"
y="714.78345"
x="277.33652"
height="7.8153906"
width="15.630781"
id="rect852"
style="fill:#fcc302;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="rotate(-60)" />
<rect
transform="matrix(-0.5,-0.8660254,-0.8660254,0.5,0,0)"
style="fill:#fcc302;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect854"
width="15.630781"
height="7.8153906"
x="-515.15295"
y="-657.84869"
rx="0"
ry="0" />
<path
inkscape:connector-curvature="0"
id="path903"
d="M 820.32215,111.88423 904.46121,62.706941"
style="fill:none;stroke:#6ab0de;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
r="19.024944"
cy="59.943871"
cx="908.17609"
id="circle897"
style="fill:#e7f2fa;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:28.75451088px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="900.87256"
y="69.039848"
id="text901"><tspan
sodipodi:role="line"
id="tspan899"
x="900.87256"
y="69.039848"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">2</tspan></text>
<path
style="fill:none;stroke:#6ab0de;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 764.02762,111.88423 679.88856,62.706941"
id="path909"
inkscape:connector-curvature="0" />
<circle
style="fill:#e7f2fa;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle911"
cx="-676.17365"
cy="59.943871"
r="19.024944"
transform="scale(-1,1)" />
<text
id="text915"
y="69.039848"
x="667.81085"
style="font-style:normal;font-weight:normal;font-size:28.75451088px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="69.039848"
x="667.81085"
id="tspan913"
sodipodi:role="line">0</tspan></text>
<path
style="fill:none;stroke:#6ab0de;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 794.47953,161.16366 v 72.04678"
id="path919"
inkscape:connector-curvature="0" />
<g
id="g924"
transform="translate(-1.9683207,-11.115222)">
<circle
r="19.024944"
cy="257.1044"
cx="796.21179"
id="circle4656"
style="fill:#e7f2fa;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:28.75451088px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="790.29767"
y="266.20038"
id="text4660"><tspan
sodipodi:role="line"
id="tspan4658"
x="790.29767"
y="266.20038"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">1</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 8.7 KiB

@@ -1,165 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="svg2"
width="1100"
height="287"
viewBox="0 0 1100 287"
sodipodi:docname="sensor_ultrasonic_lights.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)">
<metadata
id="metadata8">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs6" />
<sodipodi:namedview
pagecolor="#fcfcfc"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1853"
inkscape:window-height="1145"
id="namedview4"
showgrid="false"
inkscape:zoom="10.523077"
inkscape:cx="527.41549"
inkscape:cy="252.46821"
inkscape:window-x="67"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg2" />
<image
width="520"
height="287"
preserveAspectRatio="none"
xlink:href="../images/sensor_ultrasonic.png"
id="image10"
x="0"
y="0"
sodipodi:absref="../images/sensor_ultrasonic.png" />
<image
sodipodi:absref="../images/sensor_ultrasonic_front.png"
y="65.201767"
x="666.66376"
id="image941"
xlink:href="../images/sensor_ultrasonic_front.png"
preserveAspectRatio="none"
height="153.18715"
width="363.40701"
style="stroke-width:2.12158799" />
<path
inkscape:connector-curvature="0"
id="path1014"
d="M 741.37048,36.101381 V 108.14816"
style="fill:none;stroke:#6ab0de;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#e7f2fa;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle911"
cx="-741.81281"
cy="31.839216"
r="19.024944"
transform="scale(-1,1)" />
<text
id="text915"
y="40.935192"
x="733.45001"
style="font-style:normal;font-weight:normal;font-size:28.75451088px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="40.935192"
x="733.45001"
id="tspan913"
sodipodi:role="line">0</tspan></text>
<path
style="fill:none;stroke:#6ab0de;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 954.7844,36.101381 V 108.14816"
id="path1016"
inkscape:connector-curvature="0" />
<circle
transform="scale(-1,1)"
r="19.024944"
cy="31.839216"
cx="-955.22675"
id="circle1018"
style="fill:#e7f2fa;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:28.75451088px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="948.84326"
y="41.203976"
id="text1022"><tspan
sodipodi:role="line"
id="tspan1020"
x="948.84326"
y="41.203976"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">1</tspan></text>
<path
style="fill:none;stroke:#6ab0de;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 741.37048,249.09108 V 177.0443"
id="path1024"
inkscape:connector-curvature="0" />
<circle
transform="scale(-1)"
r="19.024944"
cy="-253.35324"
cx="-741.81281"
id="circle1026"
style="fill:#e7f2fa;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:28.75451088px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
x="733.45001"
y="261.74335"
id="text1030"><tspan
sodipodi:role="line"
id="tspan1028"
x="733.45001"
y="261.74335"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054">2</tspan></text>
<path
inkscape:connector-curvature="0"
id="path1032"
d="M 954.7844,249.09108 V 177.0443"
style="fill:none;stroke:#6ab0de;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<circle
style="fill:#e7f2fa;fill-opacity:1;stroke:#6ab0de;stroke-width:4;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="circle1034"
cx="-955.22675"
cy="-253.35324"
r="19.024944"
transform="scale(-1)" />
<text
id="text1038"
y="263.62482"
x="947.76813"
style="font-style:normal;font-weight:normal;font-size:28.75451088px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#404140;fill-opacity:1;stroke:none;stroke-width:0.60486054"
xml:space="preserve"><tspan
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'Roboto Slab';-inkscape-font-specification:'Roboto Slab';fill:#404140;fill-opacity:1;stroke-width:0.60486054"
y="263.62482"
x="947.76813"
id="tspan1036"
sodipodi:role="line">3</tspan></text>
</svg>

Before

Width:  |  Height:  |  Size: 6.6 KiB

+1 -1
View File
@@ -76,7 +76,7 @@
inkscape:current-layer="svg2"
showguides="false" />
<image
sodipodi:absref="terminal.png"
sodipodi:absref="/home/laurens/pybricks/git/pybricks-api/doc/api/diagram_source/terminal.png"
xlink:href="terminal.png"
width="967.99994"
height="402"

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

-5
View File
@@ -15,7 +15,6 @@ Motors
EV3-compatible motors. The arrows indicate the default positive direction.
.. autoclass:: pybricks.ev3devices.Motor
:noindex:
:no-members:
.. rubric:: Measuring
@@ -75,10 +74,6 @@ Color Sensor
Infrared Sensor and Beacon
^^^^^^^^^^^^^^^^^^^^^^^^^^
Each method of this class puts the sensor in a different *mode*. Switching
modes takes about one second on this sensor. To make sure that your program
runs quickly, use only of these methods in your program.
.. figure:: ../api/images/sensor_ev3_ir.png
:width: 60 %
+32
View File
@@ -0,0 +1,32 @@
Working with vectors
====================
Scalars and Vectors
~~~~~~~~~~~~~~~~~~~~~~~
.. _scalar:
scalar
--------------
TODO
.. _vector:
vector
--------------
TODO
Robot reference frame
~~~~~~~~~~~~~~~~~~~~~~~
.. _robotframe:
Robot reference frame
----------------------
TODO (explanation, diagram, etc)::
* X: To the right
* Y: forward
* Z: upward
+18
View File
@@ -0,0 +1,18 @@
:mod:`hubs <pybricks.hubs>` -- Programmable Hubs
================================================
.. module:: pybricks.hubs
.. _fig_hubs:
Select your programmable hub using the buttons below.
.. content-tabs::
.. tab-container:: ev3brick
:title: EV3 Brick
.. figure:: ../api/images/ev3brick.png
:height: 15 em
.. include:: hubs_ev3brick.inc
-51
View File
@@ -1,51 +0,0 @@
City Hub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/cityhub.png
:height: 15 em
.. autoclass:: pybricks.hubs.CityHub
:no-members:
.. rubric:: Using the hub status light
.. automethod:: pybricks.hubs::CityHub.light.on
.. automethod:: pybricks.hubs::CityHub.light.off
.. automethod:: pybricks.hubs::CityHub.light.blink
.. automethod:: pybricks.hubs::CityHub.light.animate
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::CityHub.battery.voltage
.. automethod:: pybricks.hubs::CityHub.battery.current
Status light examples
---------------------
Turning the light on and off
****************************
.. literalinclude::
../../../examples/pup/hub_cityhub/light_off.py
Changing brightness and using custom colors
*******************************************
.. literalinclude::
../../../examples/pup/hub_cityhub/light_hsv.py
Making the light blink
**********************
.. literalinclude::
../../../examples/pup/hub_cityhub/light_blink.py
Creating light animations
*************************
.. literalinclude::
../../../examples/pup/hub_cityhub/light_animate.py
-200
View File
@@ -1,200 +0,0 @@
MINDSTORMS EV3 Brick
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/ev3brick.png
:height: 15 em
.. autoclass:: pybricks.hubs.EV3Brick
:no-members:
.. rubric:: Using the buttons
.. automethod:: pybricks.hubs::EV3Brick.buttons.pressed
.. rubric:: Using the brick status light
.. automethod:: pybricks.hubs::EV3Brick.light.on
.. automethod:: pybricks.hubs::EV3Brick.light.off
.. rubric:: Using the speaker
.. automethod:: pybricks.hubs::EV3Brick.speaker.beep
.. automethod:: pybricks.hubs::EV3Brick.speaker.play_notes
.. automethod:: pybricks.hubs::EV3Brick.speaker.play_file
.. automethod:: pybricks.hubs::EV3Brick.speaker.say
.. automethod:: pybricks.hubs::EV3Brick.speaker.set_speech_options
.. automethod:: pybricks.hubs::EV3Brick.speaker.set_volume
.. rubric:: Using the screen
.. |this image| replace:: the screen
.. automethod:: pybricks.hubs::EV3Brick.screen.clear
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_text
.. automethod:: pybricks.hubs::EV3Brick.screen.print
.. automethod:: pybricks.hubs::EV3Brick.screen.set_font
.. automethod:: pybricks.hubs::EV3Brick.screen.load_image
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_image
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_pixel
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_line
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_box
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_circle
.. autoattribute:: pybricks.hubs::EV3Brick.screen.width
.. autoattribute:: pybricks.hubs::EV3Brick.screen.height
.. automethod:: pybricks.hubs::EV3Brick.screen.save
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::EV3Brick.battery.voltage
.. automethod:: pybricks.hubs::EV3Brick.battery.current
Status light examples
---------------------
Turn the light on and change the color
**************************************
.. literalinclude::
../../../examples/ev3/light_color/main.py
Screen examples
---------------------
Show an image on the screen
***************************
.. literalinclude::
../../../examples/ev3/screen_image/main.py
Drawing shapes on the screen
****************************
.. literalinclude::
../../../examples/ev3/screen_draw/main.py
Using different fonts
*********************
.. raw:: latex
\begin{CJK}{UTF8}{gbsn}
.. literalinclude::
../../../examples/ev3/screen_print/main.py
.. raw:: latex
\end{CJK}
.. rubric:: Available languages and voices for speech
.. [#espeak_lang]
You can choose the following languages:
- ``'af'``: Afrikaans
- ``'an'``: Aragonese
- ``'bg'``: Bulgarian
- ``'bs'``: Bosnian
- ``'ca'``: Catalan
- ``'cs'``: Czech
- ``'cy'``: Welsh
- ``'da'``: Danish
- ``'de'``: German
- ``'el'``: Greek
- ``'en'``: English (default)
- ``'en-gb'``: English (United Kingdom)
- ``'en-sc'``: English (Scotland)
- ``'en-uk-north'``: English (United Kingdom, Northern)
- ``'en-uk-rp'``: English (United Kingdom, Received Pronunciation)
- ``'en-uk-wmids'``: English (United Kingdom, West Midlands)
- ``'en-us'``: English (United States)
- ``'en-wi'``: English (West Indies)
- ``'eo'``: Esperanto
- ``'es'``: Spanish
- ``'es-la'``: Spanish (Latin America)
- ``'et'``: Estonian
- ``'fa'``: Persian
- ``'fa-pin'``: Persian
- ``'fi'``: Finnish
- ``'fr-be'``: French (Belgium)
- ``'fr-fr'``: French (France)
- ``'ga'``: Irish
- ``'grc'``: Greek
- ``'hi'``: Hindi
- ``'hr'``: Croatian
- ``'hu'``: Hungarian
- ``'hy'``: Armenian
- ``'hy-west'``: Armenian (Western)
- ``'id'``: Indonesian
- ``'is'``: Icelandic
- ``'it'``: Italian
- ``'jbo'``: Lojban
- ``'ka'``: Georgian
- ``'kn'``: Kannada
- ``'ku'``: Kurdish
- ``'la'``: Latin
- ``'lfn'``: Lingua Franca Nova
- ``'lt'``: Lithuanian
- ``'lv'``: Latvian
- ``'mk'``: Macedonian
- ``'ml'``: Malayalam
- ``'ms'``: Malay
- ``'ne'``: Nepali
- ``'nl'``: Dutch
- ``'no'``: Norwegian
- ``'pa'``: Punjabi
- ``'pl'``: Polish
- ``'pt-br'``: Portuguese (Brazil)
- ``'pt-pt'``: Portuguese (Portugal)
- ``'ro'``: Romanian
- ``'ru'``: Russian
- ``'sk'``: Slovak
- ``'sq'``: Albanian
- ``'sr'``: Serbian
- ``'sv'``: Swedish
- ``'sw'``: Swahili
- ``'ta'``: Tamil
- ``'tr'``: Turkish
- ``'vi'``: Vietnamese
- ``'vi-hue'``: Vietnamese (Hue)
- ``'vi-sgn'``: Vietnamese (Saigon)
- ``'zh'``: Mandarin Chinese
- ``'zh-yue'``: Cantonese Chinese
You can choose the following voices:
- ``'f1'``: female variant 1
- ``'f2'``: female variant 2
- ``'f3'``: female variant 3
- ``'f4'``: female variant 4
- ``'f5'``: female variant 5
- ``'m1'``: male variant 1
- ``'m2'``: male variant 2
- ``'m3'``: male variant 3
- ``'m4'``: male variant 4
- ``'m5'``: male variant 5
- ``'m6'``: male variant 6
- ``'m7'``: male variant 7
- ``'croak'``: croak
- ``'whisper'``: whisper
- ``'whisperf'``: female whisper
-38
View File
@@ -1,38 +0,0 @@
:mod:`hubs <pybricks.hubs>` -- Programmable Hubs
================================================
.. module:: pybricks.hubs
.. toctree::
:maxdepth: 1
:hidden:
movehub
cityhub
technichub
ev3brick
.. pybricks-classlink:: MoveHub
.. figure:: ../../api/images/movehub.png
:height: 10 em
:target: movehub.html
.. pybricks-classlink:: CityHub
.. figure:: ../../api/images/cityhub.png
:height: 10 em
:target: cityhub.html
.. pybricks-classlink:: TechnicHub
.. figure:: ../../api/images/technichub.png
:height: 10 em
:target: technichub.html
.. pybricks-classlink:: EV3Brick
.. figure:: ../../api/images/ev3brick.png
:height: 10 em
:target: ev3brick.html
-42
View File
@@ -1,42 +0,0 @@
Move Hub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. _fig_movehub:
.. figure:: ../../api/images/movehub_label.png
:height: 15 em
.. autoclass:: pybricks.hubs.MoveHub
:no-members:
.. rubric:: Using the hub status light
.. automethod:: pybricks.hubs::MoveHub.light.on
.. automethod:: pybricks.hubs::MoveHub.light.off
.. automethod:: pybricks.hubs::MoveHub.light.blink
.. automethod:: pybricks.hubs::MoveHub.light.animate
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::MoveHub.battery.voltage
.. automethod:: pybricks.hubs::MoveHub.battery.current
Status light examples
---------------------
Turning the light on and off
******************************
.. literalinclude::
../../../examples/pup/hub_movehub/light_off.py
Making the light blink
******************************
.. literalinclude::
../../../examples/pup/hub_movehub/light_blink.py
-50
View File
@@ -1,50 +0,0 @@
Technic Hub
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/technichub.png
:height: 15 em
.. class:: TechnicHub
.. rubric:: Using the hub status light
.. automethod:: pybricks.hubs::TechnicHub.light.on
.. automethod:: pybricks.hubs::TechnicHub.light.off
.. automethod:: pybricks.hubs::TechnicHub.light.blink
.. automethod:: pybricks.hubs::TechnicHub.light.animate
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::TechnicHub.battery.voltage
.. automethod:: pybricks.hubs::TechnicHub.battery.current
Status light examples
---------------------
Turning the light on and off
****************************
.. literalinclude::
../../../examples/pup/hub_technichub/light_off.py
Changing brightness and using custom colors
*******************************************
.. literalinclude::
../../../examples/pup/hub_technichub/light_hsv.py
Making the light blink
**********************
.. literalinclude::
../../../examples/pup/hub_technichub/light_blink.py
Creating light animations
*************************
.. literalinclude::
../../../examples/pup/hub_technichub/light_animate.py
+230
View File
@@ -0,0 +1,230 @@
.. autoclass:: pybricks.hubs.EV3Brick
:no-members:
.. rubric:: Using the buttons
.. automethod:: pybricks.hubs::EV3Brick.buttons.pressed
.. rubric:: Using the brick status light
.. automethod:: pybricks.hubs::EV3Brick.light.on
.. toggle-header::
:header: **Show/hide example**
**Example: Turn the light on and change the color.**
.. literalinclude::
../../pybricks-projects/snippets/ev3/light_color/main.py
.. automethod:: pybricks.hubs::EV3Brick.light.off
.. rubric:: Using the speaker
.. automethod:: pybricks.hubs::EV3Brick.speaker.beep
.. automethod:: pybricks.hubs::EV3Brick.speaker.play_notes
.. toggle-header::
:header: **Show/hide musical note format**
Each note is a string with the following format:
- The first character is the name of the note, ``A`` to ``G``
or ``R`` for a rest.
- Note names can also include an accidental ``#`` (sharp) or
``b`` (flat). ``B#``/``Cb`` and ``E#``/``Fb`` are not
allowed.
- The note name is followed by the octave number ``2``
to ``8``. For example ``C4`` is middle C. The octave changes
to the next number at the note C, for example, ``B3`` is the
note below middle C (``C4``).
- The octave is followed by ``/`` and a number that indicates
the size of the note. For example ``/4`` is a quarter note,
``/8`` is an eighth note and so on.
- This can optionally followed by a ``.`` to make a dotted
note. Dotted notes are 1-1/2 times as long as notes without a
dot.
- The note can optionally end with a ``_`` which is a tie or a
slur. This causes there to be no pause between this note and
the next note.
.. automethod:: pybricks.hubs::EV3Brick.speaker.play_file
.. automethod:: pybricks.hubs::EV3Brick.speaker.say
.. automethod:: pybricks.hubs::EV3Brick.speaker.set_speech_options
.. toggle-header::
:header: **Show/hide available languages and voices**
You can choose the following languages:
- ``'af'``: Afrikaans
- ``'an'``: Aragonese
- ``'bg'``: Bulgarian
- ``'bs'``: Bosnian
- ``'ca'``: Catalan
- ``'cs'``: Czech
- ``'cy'``: Welsh
- ``'da'``: Danish
- ``'de'``: German
- ``'el'``: Greek
- ``'en'``: English (default)
- ``'en-gb'``: English (United Kingdom)
- ``'en-sc'``: English (Scotland)
- ``'en-uk-north'``: English (United Kingdom, Northern)
- ``'en-uk-rp'``:
English (United Kingdom, Received Pronunciation)
- ``'en-uk-wmids'``: English (United Kingdom, West Midlands)
- ``'en-us'``: English (United States)
- ``'en-wi'``: English (West Indies)
- ``'eo'``: Esperanto
- ``'es'``: Spanish
- ``'es-la'``: Spanish (Latin America)
- ``'et'``: Estonian
- ``'fa'``: Persian
- ``'fa-pin'``: Persian
- ``'fi'``: Finnish
- ``'fr-be'``: French (Belgium)
- ``'fr-fr'``: French (France)
- ``'ga'``: Irish
- ``'grc'``: Greek
- ``'hi'``: Hindi
- ``'hr'``: Croatian
- ``'hu'``: Hungarian
- ``'hy'``: Armenian
- ``'hy-west'``: Armenian (Western)
- ``'id'``: Indonesian
- ``'is'``: Icelandic
- ``'it'``: Italian
- ``'jbo'``: Lojban
- ``'ka'``: Georgian
- ``'kn'``: Kannada
- ``'ku'``: Kurdish
- ``'la'``: Latin
- ``'lfn'``: Lingua Franca Nova
- ``'lt'``: Lithuanian
- ``'lv'``: Latvian
- ``'mk'``: Macedonian
- ``'ml'``: Malayalam
- ``'ms'``: Malay
- ``'ne'``: Nepali
- ``'nl'``: Dutch
- ``'no'``: Norwegian
- ``'pa'``: Punjabi
- ``'pl'``: Polish
- ``'pt-br'``: Portuguese (Brazil)
- ``'pt-pt'``: Portuguese (Portugal)
- ``'ro'``: Romanian
- ``'ru'``: Russian
- ``'sk'``: Slovak
- ``'sq'``: Albanian
- ``'sr'``: Serbian
- ``'sv'``: Swedish
- ``'sw'``: Swahili
- ``'ta'``: Tamil
- ``'tr'``: Turkish
- ``'vi'``: Vietnamese
- ``'vi-hue'``: Vietnamese (Hue)
- ``'vi-sgn'``: Vietnamese (Saigon)
- ``'zh'``: Mandarin Chinese
- ``'zh-yue'``: Cantonese Chinese
You can choose the following voices:
- ``'f1'``: female variant 1
- ``'f2'``: female variant 2
- ``'f3'``: female variant 3
- ``'f4'``: female variant 4
- ``'f5'``: female variant 5
- ``'m1'``: male variant 1
- ``'m2'``: male variant 2
- ``'m3'``: male variant 3
- ``'m4'``: male variant 4
- ``'m5'``: male variant 5
- ``'m6'``: male variant 6
- ``'m7'``: male variant 7
- ``'croak'``: croak
- ``'whisper'``: whisper
- ``'whisperf'``: female whisper
.. automethod:: pybricks.hubs::EV3Brick.speaker.set_volume
.. rubric:: Using the screen
.. |this image| replace:: the screen
.. automethod:: pybricks.hubs::EV3Brick.screen.clear
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_text
.. automethod:: pybricks.hubs::EV3Brick.screen.print
.. toggle-header::
:header: **Show/hide example**
**Example: Say hello... in several ways.**
.. raw:: latex
\begin{CJK}{UTF8}{gbsn}
.. literalinclude::
../../pybricks-projects/snippets/ev3/screen_print/main.py
.. raw:: latex
\end{CJK}
.. automethod:: pybricks.hubs::EV3Brick.screen.set_font
**Example:** See example in :meth:`print`.
.. automethod:: pybricks.hubs::EV3Brick.screen.load_image
.. toggle-header::
:header: **Show/hide example**
**Example: Show an image on the screen.**
.. literalinclude::
../../pybricks-projects/snippets/ev3/screen_image/main.py
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_image
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_pixel
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_line
.. toggle-header::
:header: **Show/hide example**
**Example: Draw some shapes on the screen.**
.. literalinclude::
../../pybricks-projects/snippets/ev3/screen_draw/main.py
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_box
**Example:** See example in :meth:`draw_line`.
.. automethod:: pybricks.hubs::EV3Brick.screen.draw_circle
**Example:** See example in :meth:`draw_line`.
.. autoattribute:: pybricks.hubs::EV3Brick.screen.width
.. autoattribute:: pybricks.hubs::EV3Brick.screen.height
.. automethod:: pybricks.hubs::EV3Brick.screen.save
.. rubric:: Using the battery
.. automethod:: pybricks.hubs::EV3Brick.battery.voltage
.. automethod:: pybricks.hubs::EV3Brick.battery.current

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 277 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 239 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 132 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1009 KiB

After

Width:  |  Height:  |  Size: 669 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

+17 -25
View File
@@ -1,4 +1,4 @@
Pybricks API Documentation
Welcome to Pybricks!
==================================================================
This documentation has everything you need to install Pybricks and
@@ -7,24 +7,7 @@ run your first scripts.
**Step 1: Install Pybricks**
Pybricks scripts are the same across all hubs. The only difference is in how
you install Pybricks and how you run scripts. To get started, click one of
the platforms below.
.. list-table::
* - **MINDSTORMS EV3**
- **Powered Up (Technic/City/BOOST)**
- **SPIKE / MINDSTORMS Inventor**
* - .. image:: ../api/images/ev3brick.png
:target: https://pybricks.com/install/mindstorms-ev3/installation
- .. figure:: ../api/images/powereduphubs.png
:target: https://pybricks.com/install/technic-boost-city/
- .. figure:: ../api/images/primeinventorhub.png
:target: https://pybricks.com/install/spike-mindstorms/
To get started, go to the :doc:`EV3 Quick Start <start_ev3>`.
**Step 2: Start coding!**
@@ -53,20 +36,29 @@ findings on our `support page`_ so we can make Pybricks even better.
:hidden:
Home Page <https://pybricks.com>
Installation <https://pybricks.com/install/>
Downloads <https://pybricks.com/downloads/>
Example Projects <https://github.com/pybricks/pybricks-projects>
Support <https://github.com/pybricks/support/issues/>
About Pybricks <https://pybricks.com/about/>
.. toctree::
:maxdepth: 1
:caption: Getting started
:hidden:
start_ev3
.. toctree::
:maxdepth: 1
:caption: Pybricks Modules
:hidden:
hubs/index
pupdevices/index
hubs
ev3devices
nxtdevices
iodevices/index
parameters/index
tools/index
iodevices
parameters
tools
robotics
media
messaging
+27
View File
@@ -0,0 +1,27 @@
:mod:`iodevices <pybricks.iodevices>` -- Generic I/O Devices
============================================================
.. automodule:: pybricks.iodevices
:no-members:
.. note::
This module provides classes to interact with unofficial motors, sensors,
and other custom electronics. You should only connect custom electronics
or unofficial devices if you know what you are doing. Proceed with caution.
LUMP Device
^^^^^^^^^^^^^
.. figure:: ../api/images/sensor_lump.png
:width: 80 %
.. autoclass:: pybricks.iodevices.LUMPDevice
.. raw:: html
<h1>EV3 Only</h1>
The classes listed below are **only available on the EV3**.
.. include:: iodevices_ev3.inc
-11
View File
@@ -1,11 +0,0 @@
EV3 Analog Sensor
^^^^^^^^^^^^^^^^^
.. note::
This class is only available on EV3.
.. figure:: ../../api/images/sensor_rj12_brown.png
:width: 25 %
.. autoclass:: pybricks.iodevices.AnalogSensor
-20
View File
@@ -1,20 +0,0 @@
EV3 DC Motor
^^^^^^^^^^^^^^^^^^
.. note::
This class is specifically for on EV3. For Powered Up DC Motors, just use
the :class:`DCMotor <pybricks.pupdevices.DCMotor>` class.
.. figure:: ../../api/images/rcxmotor.png
:width: 40 %
.. autoclass:: pybricks._common.DCMotor
:noindex:
:no-members:
.. automethod:: pybricks._common.DCMotor.dc
:noindex:
.. automethod:: pybricks._common.DCMotor.stop
:noindex:
-60
View File
@@ -1,60 +0,0 @@
Ev3dev sensors
^^^^^^^^^^^^^^^^^^
.. note::
This class is only available on EV3.
.. figure:: ../../api/images/sensor_ev3dev.png
:width: 70 %
EV3 MicroPython is built on top of ev3dev, which means that a sensor
may be supported even if it is not listed in this documentation. If so, you can
use it with the ``Ev3devSensor`` class. This is easier and faster than using
the custom device classes given above.
To check whether you can use the ``Ev3devSensor`` class:
* Plug the sensor into your EV3 Brick.
* Go to the main menu of the EV3 Brick.
* Select `Device Browser` and then `Sensors`.
* If your sensor shows up, you can use it.
Now select your sensor from the menu and choose `set mode`. This shows all
available modes for this sensor. You can use these mode names as the ``mode``
setting below.
To learn more about compatible devices and what each mode does,
visit the `ev3dev sensors`_ page.
.. autoclass:: pybricks.iodevices.Ev3devSensor
:no-members:
.. autoattribute:: pybricks.iodevices.Ev3devSensor.sensor_index
:annotation:
.. autoattribute:: pybricks.iodevices.Ev3devSensor.port_index
:annotation:
.. automethod:: pybricks.iodevices.Ev3devSensor.read
**Example: Reading values with the Ev3devSensor class**
In this example we use the LEGO MINDSTORMS EV3 Color Sensor with the raw
RGB mode. This gives uncalibrated red, green, and blue reflection values.
.. literalinclude::
../../../examples/ev3/ev3devsensor/main.py
**Example: Extending the Ev3devSensor class**
This example shows how to extend the ``Ev3devSensor`` class by accessing
additional features found in the Linux system folder for this device.
.. literalinclude::
../../../examples/ev3/ev3devsensor/class_example.py
.. _ev3dev sensors: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html
.. _Mode name: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensor_data.html
.. _lego-sensor: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#the-lego-sensor-subsytem
.. _lego-port: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/ports.html#the-lego-port-subsystem
-50
View File
@@ -1,50 +0,0 @@
Generic I2C Device
^^^^^^^^^^^^^^^^^^
.. note::
This class is **only supported on the EV3** at this time. It could be added
to Powered Up hubs in a future release. If you'd like to see this happen, be
sure to ask us on our `support page`_.
.. _support page: https://github.com/pybricks/support/issues/
.. figure:: ../../api/images/sensor_rj12_bluegreen.png
:width: 25 %
.. autoclass:: pybricks.iodevices.I2CDevice
**Example: Read and write to an I2C device**
.. literalinclude:: ../../../examples/ev3/i2c_basics/main.py
.. _i2caddress:
I2C Addresses
---------------
I2C addresses are 7-bit values. However, most vendors who make LEGO compatible
sensors provide an 8-bit address in their documentation.
To use those addresses, you must shift them by 1 bit.
For example, if the documented address is ``0xD2``, you can do
``address = 0xD2 >> 1``.
Advanced I2C Commands
---------------------
Some rudimentary I2C devices do not require a register argument or even any
data. You can achieve this behavior as shown in the examples below.
**Example: Advanced I2C read and write techniques**
.. literalinclude:: ../../../examples/ev3/i2c_extra/main.py
**Additional technical resources**
The ``I2CDevice`` class methods call functions from the Linux SMBus driver.
To find out which commands are called under the hood, check the
`Pybricks source code`_.
More details about using I2C without MicroPython can be found on
the `ev3dev I2C`_ page.
.. _ev3dev I2C: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/i2c.html
.. _Pybricks source code: https://github.com/pybricks/pybricks-micropython
-61
View File
@@ -1,61 +0,0 @@
:mod:`iodevices <pybricks.iodevices>` -- Generic I/O Devices
============================================================
.. automodule:: pybricks.iodevices
:no-members:
.. toctree::
:maxdepth: 1
:hidden:
pupdevice
i2cdevice
uartdevice
analogsensor
lumpdevice
dcmotor
ev3devsensor
.. pybricks-classlink:: PUPDevice
.. figure:: ../../api/images/sensor_pup.png
:width: 70 %
:target: pupdevice.html
This class is only available on Powered Up hubs.
.. pybricks-classlink:: I2CDevice
.. figure:: ../../api/images/sensor_rj12_bluegreen.png
:width: 25 %
:target: i2cdevice.html
.. pybricks-classlink:: UARTDevice
.. figure:: ../../api/images/sensor_rj12_gray.png
:width: 25 %
:target: uartdevice.html
.. pybricks-classlink:: AnalogSensor
.. figure:: ../../api/images/sensor_rj12_brown.png
:width: 25 %
:target: analogsensor.html
.. pybricks-classlink:: LUMPDevice
.. figure:: ../../api/images/sensor_rj12_green.png
:width: 25 %
:target: lumpdevice.html
.. pybricks-classlink:: DCMotor
.. figure:: ../../api/images/rcxmotor.png
:width: 40 %
:target: dcmotor.html
.. pybricks-classlink:: Ev3devSensor
.. figure:: ../../api/images/sensor_ev3dev.png
:width: 70 %
:target: ev3devsensor.html
-11
View File
@@ -1,11 +0,0 @@
EV3 UART Device
^^^^^^^^^^^^^^^^^
.. note::
This class is only available on EV3.
.. figure:: ../../api/images/sensor_rj12_green.png
:width: 25 %
.. autoclass:: pybricks.iodevices.LUMPDevice
-23
View File
@@ -1,23 +0,0 @@
Powered Up Device
^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/sensor_pup.png
:width: 70 %
.. autoclass:: pybricks.iodevices.PUPDevice
:no-members:
.. automethod:: pybricks.iodevices.PUPDevice.info
.. automethod:: pybricks.iodevices.PUPDevice.read
.. automethod:: pybricks.iodevices.PUPDevice.write
Examples
-------------------
Detecting devices
******************************
.. literalinclude::
../../../examples/pup/iodevices_pupdevice/port_info.py
-20
View File
@@ -1,20 +0,0 @@
Generic UART Device
^^^^^^^^^^^^^^^^^^^
.. note::
This class is **only supported on the EV3** at this time. It could be added
to Powered Up hubs in a future release. If you'd like to see this happen,
be sure to ask us on our `support page`_.
.. _support page: https://github.com/pybricks/support/issues/
.. figure:: ../../api/images/sensor_rj12_gray.png
:width: 25 %
.. autoclass:: pybricks.iodevices.UARTDevice
**Example: Read and write to a UART device**
.. literalinclude::
../../../examples/ev3/uart_basics/main.py
+151
View File
@@ -0,0 +1,151 @@
Analog Sensor
^^^^^^^^^^^^^
.. figure:: ../api/images/sensor_rj12_brown.png
:width: 25 %
.. autoclass:: pybricks.iodevices.AnalogSensor
I2C Device
^^^^^^^^^^^^^
.. figure:: ../api/images/sensor_rj12_bluegreen.png
:width: 25 %
.. autoclass:: pybricks.iodevices.I2CDevice
.. toggle-header::
:header: **Show/hide example**
**Example: Read and write to an I2C device.**
.. literalinclude:: ../../pybricks-projects/snippets/ev3/i2c_basics/main.py
.. _i2caddress:
I2C Addresses
---------------
I2C addresses are 7-bit values. However, most vendors who make LEGO compatible
sensors provide an 8-bit address in their documentation.
To use those addresses, you must shift them by 1 bit.
For example, if the documented address is ``0xD2``, you can do
``address = 0xD2 >> 1``.
Advanced I2C Commands
---------------------
Some rudimentary I2C devices do not require a register argument or even any
data. You can achieve this behavior as shown in the examples below.
.. toggle-header::
:header: **Show/hide example**
**Example: Advanced I2C read and write techniques.**
.. literalinclude:: ../../pybricks-projects/snippets/ev3/i2c_extra/main.py
**Additional technical resources**
The ``I2CDevice`` class methods call functions from the Linux SMBus driver.
To find out which commands are called under the hood, check the
`Pybricks source code`_.
More details about using I2C without MicroPython can be found on
the `ev3dev I2C`_ page.
.. _ev3dev I2C: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/i2c.html
.. _Pybricks source code: https://github.com/pybricks/pybricks-micropython
UART Device
^^^^^^^^^^^^^
.. figure:: ../api/images/sensor_rj12_gray.png
:width: 25 %
.. autoclass:: pybricks.iodevices.UARTDevice
.. toggle-header::
:header: **Show/hide example**
**Example: Read and write to a UART device.**
.. literalinclude::
../../pybricks-projects/snippets/ev3/uart_basics/main.py
DC Motor
^^^^^^^^^^^^
.. figure:: ../api/images/rcxmotor.png
:width: 40 %
.. autoclass:: pybricks._common.DCMotor
:noindex:
:no-members:
.. automethod:: pybricks._common.DCMotor.dc
:noindex:
.. automethod:: pybricks._common.DCMotor.stop
:noindex:
Ev3dev sensors
^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../api/images/sensor_ev3dev.png
:width: 70 %
EV3 MicroPython is built on top of ev3dev, which means that a sensor
may be supported even if it is not listed in this documentation. If so, you can
use it with the ``Ev3devSensor`` class. This is easier and faster than using
the custom device classes given above.
To check whether you can use the ``Ev3devSensor`` class:
* Plug the sensor into your EV3 Brick.
* Go to the main menu of the EV3 Brick.
* Select `Device Browser` and then `Sensors`.
* If your sensor shows up, you can use it.
Now select your sensor from the menu and choose `set mode`. This shows all
available modes for this sensor. You can use these mode names as the ``mode``
setting below.
To learn more about compatible devices and what each mode does,
visit the `ev3dev sensors`_ page.
.. autoclass:: pybricks.iodevices.Ev3devSensor
:no-members:
.. autoattribute:: pybricks.iodevices.Ev3devSensor.sensor_index
:annotation:
.. autoattribute:: pybricks.iodevices.Ev3devSensor.port_index
:annotation:
.. automethod:: pybricks.iodevices.Ev3devSensor.read
.. toggle-header::
:header: **Show/hide example: Reading values with the Ev3devSensor class**
**Example**
In this example we use the LEGO MINDSTORMS EV3 Color Sensor with the raw
RGB mode. This gives uncalibrated red, green, and blue reflection values.
.. literalinclude::
../../pybricks-projects/snippets/ev3/ev3devsensor/main.py
.. toggle-header::
:header: **Show/hide example: Extending the Ev3devSensor class**
**Example**
This example shows how to extend the ``Ev3devSensor`` class by accessing
additional features found in the Linux system folder for this device.
.. literalinclude::
../../pybricks-projects/snippets/ev3/ev3devsensor/class_example.py
.. _ev3dev sensors: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html
.. _Mode name: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensor_data.html
.. _lego-sensor: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/sensors.html#the-lego-sensor-subsytem
.. _lego-port: http://docs.ev3dev.org/projects/lego-linux-drivers/en/ev3dev-stretch/ports.html#the-lego-port-subsystem
+877 -1022
View File
File diff suppressed because it is too large Load Diff
+20 -18
View File
@@ -41,7 +41,7 @@ The connection will be made when you run your programs, as described below.
Pairing one EV3 Brick to another EV3 Brick.
When you scan for Bluetooth devices, you'll see a list of device names. By
default, all EV3 Bricks are named *ev3dev*. Click `here`_ to
default, all EV3 Bricks are named *ev3dev*. Click :ref:`here <hostname>` to
learn how to change that name. This makes it easy to tell them apart.
Repeat the steps in :numref:`fig_bluetooth_pair` if you want to pair more than
@@ -64,6 +64,25 @@ and the client can send a message to the server.
An example network with one server and one clients.
.. toggle-header::
:header: **Show/hide full server example**
**Example: EV3 Bluetooth Server.**
This is the full version of the excerpt shown in :numref:`fig_messaging`.
.. literalinclude:: ../../pybricks-projects/snippets/ev3/bluetooth_server/server.py
.. toggle-header::
:header: **Show/hide full client example**
**Example: EV3 Bluetooth Client.**
This is the full version of the excerpt shown in :numref:`fig_messaging`.
.. literalinclude:: ../../pybricks-projects/snippets/ev3/bluetooth_client/client.py
The only difference between the client and the server is which one initiates
the connection at the beginning of the program:
@@ -104,21 +123,6 @@ numbers, or text), you can choose one of the Mailboxes below.
.. autoclass:: TextMailbox
:no-members:
Examples
-----------------
**EV3 Bluetooth Server**
This is the full version of the excerpt shown in :numref:`fig_messaging`.
.. literalinclude:: ../../examples/ev3/bluetooth_server/server.py
**EV3 Bluetooth Client**
This is the full version of the excerpt shown in :numref:`fig_messaging`.
.. literalinclude:: ../../examples/ev3/bluetooth_client/client.py
Making bigger networks
----------------------
@@ -134,5 +138,3 @@ is shown in :numref:`fig_messaging_network`.
:align: center
An example network with one server and two clients.
.. _here: https://pybricks.com/install/mindstorms-ev3/beyond-micropython
-2
View File
@@ -126,8 +126,6 @@ the settings.
.. automethod:: pybricks._common.Control.stalled
.. automethod:: pybricks._common.Control.load
.. rubric:: Settings
.. automethod:: pybricks._common.Control.limits
+5 -2
View File
@@ -90,6 +90,9 @@ Vernier Adapter
^^^^^^^^^^^^^^^^^
.. autoclass:: pybricks.nxtdevices.VernierAdapter
**Example: Using the Surface Temperature Sensor.**
.. toggle-header::
:header: **Show/hide example**
.. literalinclude:: ../../examples/ev3/vernier_surface_temperature/main.py
**Example: Using the Surface Temperature Sensor.**
.. literalinclude:: ../../pybricks-projects/snippets/ev3/vernier_surface_temperature/main.py
@@ -1,22 +1,42 @@
Stop
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
:mod:`parameters <pybricks.parameters>` -- Parameters and Constants
===================================================================
.. class:: Stop
.. automodule:: pybricks.parameters
:no-members:
Action after the motor stops.
.. autoclass:: pybricks.parameters.Port
:no-members:
.. autoattribute:: pybricks.parameters.Stop.COAST
:annotation:
Motor ports:
.. autoattribute:: pybricks.parameters.Stop.BRAKE
:annotation:
.. data:: A
.. data:: B
.. data:: C
.. data:: D
.. autoattribute:: pybricks.parameters.Stop.HOLD
:annotation:
Sensor ports:
The following table shows how each stop type adds an extra level of
.. data:: S1
.. data:: S2
.. data:: S3
.. data:: S4
.. autoclass:: pybricks.parameters.Direction
:no-members:
In general, clockwise is defined by **looking at the motor shaft, just
like looking at a clock**.
Some motors have two shafts. If in doubt, refer to the following diagrams:
- Clockwise direction for :ref:`EV3/NXT motors <fig_ev3motors>`
.. autoclass:: pybricks.parameters.Stop
:no-members:
The following table show how each stop type adds an extra level of
resistance to motion. In these examples, ``m`` is a
:class:`Motor <pybricks.pupdevices.Motor>` and
:class:`Motor <pybricks.ev3devices.Motor>` and
and ``d`` is a :class:`DriveBase <pybricks.robotics.DriveBase>`. The
examples also show how running at zero speed compares to these stop types.
@@ -38,3 +58,9 @@ Stop
| | | | | | | ``d.straight(0)`` |
| | | | | | | ``d.straight(100)`` |
+--------+------------+--------+-------------+---------------+-----------------------------------------+
.. autoclass:: pybricks.parameters.Color
:no-members:
.. autoclass:: pybricks.parameters.Button
:no-members:
-48
View File
@@ -1,48 +0,0 @@
Button
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. class:: Button
Buttons on a hub or remote.
.. autoattribute:: pybricks.parameters.Button.LEFT_DOWN
:annotation:
.. autoattribute:: pybricks.parameters.Button.LEFT_MINUS
:annotation:
.. autoattribute:: pybricks.parameters.Button.DOWN
:annotation:
.. autoattribute:: pybricks.parameters.Button.RIGHT_DOWN
:annotation:
.. autoattribute:: pybricks.parameters.Button.RIGHT_MINUS
:annotation:
.. autoattribute:: pybricks.parameters.Button.LEFT
:annotation:
.. autoattribute:: pybricks.parameters.Button.CENTER
:annotation:
.. autoattribute:: pybricks.parameters.Button.RIGHT
:annotation:
.. autoattribute:: pybricks.parameters.Button.LEFT_UP
:annotation:
.. autoattribute:: pybricks.parameters.Button.LEFT_PLUS
:annotation:
.. autoattribute:: pybricks.parameters.Button.UP
:annotation:
.. autoattribute:: pybricks.parameters.Button.BEACON
:annotation:
.. autoattribute:: pybricks.parameters.Button.RIGHT_UP
:annotation:
.. autoattribute:: pybricks.parameters.Button.RIGHT_PLUS
:annotation:
-84
View File
@@ -1,84 +0,0 @@
Color
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. autoclass:: pybricks.parameters.Color
:no-members:
.. rubric:: Saturated colors
These colors have maximum saturation and brightness value.
They differ only in hue.
.. autoattribute:: RED
.. pybricks-color:: RED
.. autoattribute:: ORANGE
.. pybricks-color:: ORANGE
.. autoattribute:: YELLOW
.. pybricks-color:: YELLOW
.. autoattribute:: GREEN
.. pybricks-color:: GREEN
.. autoattribute:: CYAN
.. pybricks-color:: CYAN
.. autoattribute:: BLUE
.. pybricks-color:: BLUE
.. autoattribute:: VIOLET
.. pybricks-color:: VIOLET
.. autoattribute:: MAGENTA
.. pybricks-color:: MAGENTA
.. rubric:: Unsaturated colors
These colors have zero hue and saturation. They differ only in brightness
value.
When detecting these colors using sensors, their values depend a lot
on the distance to the object. If the distance between the sensor and the
object is not constant in your robot, it is better to use only one of these
colors in your programs.
.. autoattribute:: WHITE
.. pybricks-color:: WHITE
.. autoattribute:: GRAY
.. pybricks-color:: GRAY
.. autoattribute:: BLACK
This represents dark objects that still reflect
a very small amount of light.
.. pybricks-color:: BLACK
.. autoattribute:: NONE
This is total darkness, with no reflection or light at all.
.. pybricks-color:: NONE
.. rubric:: Making your own colors
This example shows the basics of color properties, and how to define new colors.
.. literalinclude::
../../../examples/pup/parameters/color_basics.py
This example shows more advanced use cases of the ``Color`` class.
.. literalinclude::
../../../examples/pup/parameters/color_advanced.py
-24
View File
@@ -1,24 +0,0 @@
Direction
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. class:: Direction
Rotational direction for positive speed or angle values.
.. autoattribute:: pybricks.parameters.Direction.CLOCKWISE
:annotation:
.. autoattribute:: pybricks.parameters.Direction.COUNTERCLOCKWISE
:annotation:
+--------------------------------+-------------------+-----------------+
| ``positive_direction =`` | Positive speed: | Negative speed: |
+================================+===================+=================+
| ``Direction.CLOCKWISE`` | clockwise | counterclockwise|
+--------------------------------+-------------------+-----------------+
| ``Direction.COUNTERCLOCKWISE`` | counterclockwise | clockwise |
+--------------------------------+-------------------+-----------------+
In general, clockwise is defined by **looking at the motor shaft, just
like looking at a clock**. Some motors have two shafts. If in doubt,
refer to the diagram in the ``Motor`` class documentation.
-26
View File
@@ -1,26 +0,0 @@
:mod:`parameters <pybricks.parameters>` -- Parameters and Constants
===================================================================
.. automodule:: pybricks.parameters
:no-members:
.. toctree::
:maxdepth: 1
:hidden:
button
color
direction
port
stop
.. pybricks-classlink:: Button
.. pybricks-classlink:: Color
.. pybricks-classlink:: Direction
.. pybricks-classlink:: Port
.. pybricks-classlink:: Stop
-38
View File
@@ -1,38 +0,0 @@
Port
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. class:: Port
Input and output ports:
.. autoattribute:: pybricks.parameters.Port.A
:annotation:
.. autoattribute:: pybricks.parameters.Port.B
:annotation:
.. autoattribute:: pybricks.parameters.Port.C
:annotation:
.. autoattribute:: pybricks.parameters.Port.D
:annotation:
.. autoattribute:: pybricks.parameters.Port.E
:annotation:
.. autoattribute:: pybricks.parameters.Port.F
:annotation:
EV3 Sensor ports:
.. autoattribute:: pybricks.parameters.Port.S1
:annotation:
.. autoattribute:: pybricks.parameters.Port.S2
:annotation:
.. autoattribute:: pybricks.parameters.Port.S3
:annotation:
.. autoattribute:: pybricks.parameters.Port.S4
:annotation:
@@ -1,79 +0,0 @@
Color and Distance Sensor
^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/sensor_colordistance.png
:width: 35 %
.. autoclass:: pybricks.pupdevices.ColorDistanceSensor
:no-members:
.. automethod:: pybricks.pupdevices.ColorDistanceSensor.color
.. automethod:: pybricks.pupdevices.ColorDistanceSensor.reflection
.. automethod:: pybricks.pupdevices.ColorDistanceSensor.ambient
.. automethod:: pybricks.pupdevices.ColorDistanceSensor.distance
.. automethod:: pybricks.pupdevices.ColorDistanceSensor.hsv
.. automethod:: pybricks.pupdevices.ColorDistanceSensor.detectable_colors
.. rubric:: Built-in light
This sensor has a built-in light. You can make it red, green, blue, or turn
it off. If you use the sensor to measure something afterwards, the light
automatically turns back on at the default color for that sensing method.
.. automethod:: pybricks.pupdevices::ColorDistanceSensor.light.on
.. automethod:: pybricks.pupdevices::ColorDistanceSensor.light.off
Examples
-------------------
Measuring color
***************
.. literalinclude::
../../../examples/pup/sensor_color_distance/color_print.py
Waiting for a color
*******************
.. literalinclude::
../../../examples/pup/sensor_color_distance/wait_for_color.py
Measuring distance
******************
.. literalinclude::
../../../examples/pup/sensor_color_distance/distance_blink.py
Blinking the built-in light
***************************
.. literalinclude::
../../../examples/pup/sensor_color_distance/distance_blink.py
Reading hue, saturation, value
**********************************
.. literalinclude::
../../../examples/pup/sensor_color_distance/hsv.py
Changing the detectable colors
******************************
By default, the sensor is configured to detect red, yellow, green,
blue, white, or no color, which suits many applications.
For better results in your application, you can measure your desired
colors in advance, and tell the sensor to look only for those colors.
Be sure to measure them at the **same distance and light conditions**
as in your final application. Then you'll get very accurate results
even for colors that are otherwise hard to detect.
.. literalinclude::
../../../examples/pup/sensor_color_distance/detectable_colors.py
-82
View File
@@ -1,82 +0,0 @@
Color Sensor
^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/sensor_color_lights_label.png
:width: 70 %
.. autoclass:: pybricks.pupdevices.ColorSensor
:no-members:
.. automethod:: pybricks.pupdevices.ColorSensor.color
.. automethod:: pybricks.pupdevices.ColorSensor.reflection
.. automethod:: pybricks.pupdevices.ColorSensor.ambient
.. rubric:: Advanced color sensing
.. automethod:: pybricks.pupdevices.ColorSensor.hsv
.. automethod:: pybricks.pupdevices.ColorSensor.detectable_colors
.. rubric:: Built-in lights
This sensor has 3 built-in lights. You can adjust the brightness of each
light. If you use the sensor to measure something, the lights will
be turned on or off as needed for the measurement.
.. automethod:: pybricks.pupdevices::ColorSensor.lights.on
.. automethod:: pybricks.pupdevices::ColorSensor.lights.off
Examples
-------------------
Measuring color and reflection
******************************
.. literalinclude::
../../../examples/pup/sensor_color/color_print.py
Waiting for a color
*******************
.. literalinclude::
../../../examples/pup/sensor_color/wait_for_color.py
Reading *reflected* hue, saturation, and value
************************************************
.. literalinclude::
../../../examples/pup/sensor_color/hsv.py
Changing the detectable colors
******************************
By default, the sensor is configured to detect red, yellow, green,
blue, white, or no color, which suits many applications.
For better results in your application, you can measure your desired
colors in advance, and tell the sensor to look only for those colors.
Be sure to measure them at the **same distance and light conditions**
as in your final application. Then you'll get very accurate results
even for colors that are otherwise hard to detect.
.. literalinclude::
../../../examples/pup/sensor_color/detectable_colors.py
Reading *ambient* hue, saturation, value, and color
***************************************************
.. literalinclude::
../../../examples/pup/sensor_color/color_ambient.py
Blinking the built-in lights
****************************
.. literalinclude::
../../../examples/pup/sensor_color/lights_blink.py
-51
View File
@@ -1,51 +0,0 @@
Motors without Rotation Sensors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. _fig_pupdcmotors:
.. figure:: ../../api/images/pupdcmotors_label.png
:width: 70 %
:alt: pupmotors
:align: center
Powered Up motors without rotation sensors. The arrows indicate the default
positive direction.
.. autoclass:: pybricks.pupdevices.DCMotor
:no-members:
.. automethod:: pybricks.pupdevices.DCMotor.dc
:noindex:
.. automethod:: pybricks.pupdevices.DCMotor.stop
:noindex:
.. automethod:: pybricks.pupdevices.DCMotor.brake
:noindex:
Examples
-------------------
Making a train drive forever
************************************
.. literalinclude::
../../../examples/pup/motor_dc/motor_dc_battery_box.py
Making the motor move back and forth
************************************
.. literalinclude::
../../../examples/pup/motor_dc/motor_dc_init_basic.py
Changing the positive direction
*******************************
.. literalinclude::
../../../examples/pup/motor_dc/motor_dc_init_direction.py
Starting and stopping
*********************
.. literalinclude::
../../../examples/pup/motor_dc/motor_dc_stop.py
-31
View File
@@ -1,31 +0,0 @@
Force Sensor
^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/sensor_force.png
:width: 35 %
.. autoclass:: pybricks.pupdevices.ForceSensor
:no-members:
.. automethod:: pybricks.pupdevices.ForceSensor.force
.. automethod:: pybricks.pupdevices.ForceSensor.distance
.. automethod:: pybricks.pupdevices.ForceSensor.pressed
.. automethod:: pybricks.pupdevices.ForceSensor.touched
Examples
-------------------
Measuring force and movement
****************************
.. literalinclude::
../../../examples/pup/sensor_force/basics.py
Measuring peak force
********************
.. literalinclude::
../../../examples/pup/sensor_force/peak.py
-80
View File
@@ -1,80 +0,0 @@
:mod:`pupdevices <pybricks.pupdevices>` -- Powered Up Devices
=============================================================
.. automodule:: pybricks.pupdevices
:no-members:
.. toctree::
:maxdepth: 1
:hidden:
dcmotor
motor
tiltsensor
infraredsensor
colordistancesensor
pfmotor
colorsensor
ultrasonicsensor
forcesensor
light
.. pybricks-classlink:: DCMotor
.. figure:: ../../api/images/pupdcmotors_label.png
:width: 70 %
:target: dcmotor.html
.. pybricks-classlink:: Motor
.. figure:: ../../api/images/pupmotors_label.png
:width: 100 %
:target: motor.html
.. pybricks-classlink:: TiltSensor
.. figure:: ../../api/images/sensor_tilt.png
:width: 35 %
:target: tiltsensor.html
.. pybricks-classlink:: InfraredSensor
.. figure:: ../../api/images/sensor_proximity.png
:width: 35 %
:target: infraredsensor.html
.. pybricks-classlink:: ColorDistanceSensor
.. figure:: ../../api/images/sensor_colordistance.png
:width: 32 %
:target: colordistancesensor.html
.. pybricks-classlink:: PFMotor
.. figure:: ../../api/images/pfmotor.png
:width: 95 %
:target: pfmotor.html
.. pybricks-classlink:: ColorSensor
.. figure:: ../../api/images/sensor_color.png
:width: 32 %
:target: colorsensor.html
.. pybricks-classlink:: UltrasonicSensor
.. figure:: ../../api/images/sensor_ultrasonic.png
:width: 37 %
:target: ultrasonicsensor.html
.. pybricks-classlink:: ForceSensor
.. figure:: ../../api/images/sensor_force.png
:width: 35 %
:target: forcesensor.html
.. pybricks-classlink:: Light
.. figure:: ../../api/images/light.png
:width: 90 %
:target: light.html
-23
View File
@@ -1,23 +0,0 @@
Infrared Sensor
^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/sensor_proximity.png
:width: 35 %
.. autoclass:: pybricks.pupdevices.InfraredSensor
:no-members:
.. automethod:: pybricks.pupdevices.InfraredSensor.distance
.. automethod:: pybricks.pupdevices.InfraredSensor.reflection
.. automethod:: pybricks.pupdevices.InfraredSensor.count
Examples
-------------------
Measuring distance, object count, and reflection
************************************************
.. literalinclude::
../../../examples/pup/sensor_infrared/basics.py
-27
View File
@@ -1,27 +0,0 @@
Light
^^^^^^^^^^^^^^^^^^^^^^^^^
.. figure:: ../../api/images/light.png
:width: 90 %
.. autoclass:: pybricks.pupdevices.Light
:no-members:
.. automethod:: pybricks.pupdevices.Light.on
.. automethod:: pybricks.pupdevices.Light.off
Examples
-------------------
Making the light blink
**********************
.. literalinclude::
../../../examples/pup/light/basics.py
Gradually change the brightness
*******************************
.. literalinclude::
../../../examples/pup/light/math.py
-152
View File
@@ -1,152 +0,0 @@
Motors with Rotation Sensors
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. _fig_pupmotors:
.. figure:: ../../api/images/pupmotors_label.png
:width: 100 %
:alt: pupmotors
Powered Up motors with rotation sensors. The arrows indicate the default
positive direction. See the :mod:`hubs <pybricks.hubs>` module for default
directions of built-in motors.
.. autoclass:: pybricks.pupdevices.Motor
:no-members:
.. rubric:: Measuring
.. automethod:: pybricks.pupdevices.Motor.speed
.. automethod:: pybricks.pupdevices.Motor.angle
.. automethod:: pybricks.pupdevices.Motor.reset_angle
.. rubric:: Stopping
.. automethod:: pybricks.pupdevices.Motor.stop
.. automethod:: pybricks.pupdevices.Motor.brake
.. automethod:: pybricks.pupdevices.Motor.hold
.. rubric:: Action
.. automethod:: pybricks.pupdevices.Motor.run
.. automethod:: pybricks.pupdevices.Motor.run_time
.. automethod:: pybricks.pupdevices.Motor.run_angle
.. automethod:: pybricks.pupdevices.Motor.run_target
.. automethod:: pybricks.pupdevices.Motor.run_until_stalled
.. automethod:: pybricks.pupdevices.Motor.dc
.. rubric:: Advanced motion control
.. automethod:: pybricks.pupdevices.Motor.track_target
.. autoattribute:: pybricks.ev3devices.Motor.control
:annotation:
:noindex:
.. FIXME: above should point to pupdevices but inherited class attributes
do not work yet (https://github.com/sphinx-doc/sphinx/issues/741).
Initialization Examples
-----------------------
Making the motor move back and forth
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_init_basic.py
Initializing multiple motors
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_init_multiple.py
Setting the positive direction as counterclockwise
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_init_direction.py
Using gears
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_init_gears.py
Measurement Examples
-----------------------
Measuring the angle and speed
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_measure.py
Resetting the measured angle
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_reset_angle.py
Movement Examples
-----------------------
Basic usage of all run methods
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_action_basic.py
Stopping ongoing movements in different ways
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_stop.py
Using the ``then`` argument to change how a run command stops
*************************************************************
.. literalinclude::
../../../examples/pup/motor/motor_action_then.py
Stall Examples
-----------------------
Running a motor until a mechanical endpoint
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_until_stalled.py
Centering a steering mechanism
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_until_stalled.py
Parallel Movement Examples
--------------------------
Using the ``wait`` argument to run motors in parallel
*********************************************************
.. literalinclude::
../../../examples/pup/motor/motor_action_wait.py
Waiting for two parallel actions to complete
*******************************************************
.. literalinclude::
../../../examples/pup/motor/motor_action_wait_advanced.py
-45
View File
@@ -1,45 +0,0 @@
Power Functions
^^^^^^^^^^^^^^^^^^^^^^^^^
The :class:`ColorDistanceSensor <pybricks.pupdevices.ColorDistanceSensor>` can
send infrared signals to control Power Functions infrared receivers. You can
use this technique to control medium, large, extra large, and train
motors. The infrared range is limited to about 30 cm, depending on the angle
and ambient conditions.
.. figure:: ../../api/images/pfmotor.png
:width: 95 %
Powered Up
:class:`ColorDistanceSensor <pybricks.pupdevices.ColorDistanceSensor>`
(left), Power Functions infrared receiver (middle), and a Power Functions
motor (right). Here, the receiver uses channel
1 with a motor on the red port.
.. autoclass:: pybricks.pupdevices.PFMotor
:noindex:
:no-members:
.. automethod:: pybricks.pupdevices.PFMotor.dc
:noindex:
.. automethod:: pybricks.pupdevices.PFMotor.stop
:noindex:
.. automethod:: pybricks.pupdevices.PFMotor.brake
:noindex:
Examples
-------------------
Control a Power Functions motor
*******************************
.. literalinclude::
../../../examples/pup/motor_pf/motor_pf_basics.py
Controlling multiple Power Functions motors
*******************************************
.. literalinclude::
../../../examples/pup/motor_pf/motor_pf_pwm.py

Some files were not shown because too many files have changed in this diff Show More