This commit is contained in:
chk
2026-04-29 15:17:43 +02:00
parent edd0ceb5f7
commit 42b83178a9
18 changed files with 9083 additions and 147 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 321 KiB

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 354 KiB

Binary file not shown.

BIN
docs/pic/robot_image_b.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 575 KiB

BIN
docs/pic/robot_image_c.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 747 KiB

BIN
docs/pic/robot_image_d.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

View File

@@ -24,11 +24,11 @@
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="2.2299458"
inkscape:cx="307.18235"
inkscape:cy="123.76982"
inkscape:cx="282.51808"
inkscape:cy="85.203865"
inkscape:window-width="1858"
inkscape:window-height="826"
inkscape:window-x="58"
inkscape:window-x="46"
inkscape:window-y="247"
inkscape:window-maximized="0"
inkscape:current-layer="layer-oc2"><inkscape:page
@@ -6017,7 +6017,7 @@
sodipodi:role="line"
id="tspan597"
x="2279.0859"
y="-197.22504">242</tspan></text><text
y="-197.22504">226</tspan></text><text
xml:space="preserve"
style="font-size:21.3333px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#000080;stroke:none;stroke-width:2.64567;stroke-linecap:round;stroke-linejoin:round"
x="2324.2964"
@@ -6066,7 +6066,17 @@
style="fill:#d4aa00;stroke:none;stroke-width:2.64567;stroke-linecap:round;stroke-linejoin:round"
d="m 2282.1394,291.14526 178.4796,30.04557 -4.4843,18.83454 z"
id="path589"
sodipodi:nodetypes="cccc" /></g><g
sodipodi:nodetypes="cccc" /><text
xml:space="preserve"
style="font-style:italic;font-size:26.6667px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, Italic';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;fill:#55d400;stroke-width:2.64567;stroke-linecap:round;stroke-linejoin:round"
x="2763.3169"
y="455.49902"
id="text1"><tspan
sodipodi:role="line"
id="tspan1"
x="2763.3169"
y="455.49902"
style="fill:#aa0000">P</tspan></text></g><g
id="layer-oc2-3"
inkscape:groupmode="layer"
inkscape:label="Visible"

Before

Width:  |  Height:  |  Size: 506 KiB

After

Width:  |  Height:  |  Size: 506 KiB

View File

@@ -24,9 +24,9 @@
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showguides="true"
inkscape:zoom="2.2299457"
inkscape:cx="581.18006"
inkscape:cy="186.3274"
inkscape:zoom="8.9197828"
inkscape:cx="432.40963"
inkscape:cy="44.003314"
inkscape:window-width="1920"
inkscape:window-height="1129"
inkscape:window-x="-8"
@@ -2472,7 +2472,39 @@
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
id="path1701-2-0-3" /></marker></defs><g
id="path1701-2-0-3" /></marker><marker
style="overflow:visible"
id="ArrowTriangleStylized-6-8-3-4"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Stylized triangle arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid"><path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
id="path1700-5-6-8-8" /></marker><marker
style="overflow:visible"
id="marker1701-0-5-9-8"
refX="0"
refY="0"
orient="auto-start-reverse"
inkscape:stockid="Stylized triangle arrow"
markerWidth="1"
markerHeight="1"
viewBox="0 0 1 1"
inkscape:isstock="true"
inkscape:collect="always"
preserveAspectRatio="xMidYMid"><path
transform="scale(0.5)"
style="fill:context-stroke;fill-rule:evenodd;stroke:context-stroke;stroke-width:1pt"
d="m 6,0 c -3,1 -7,3 -9,5 0,0 0,-4 2,-5 -2,-1 -2,-5 -2,-5 2,2 6,4 9,5 z"
id="path1701-2-0-3-2" /></marker></defs><g
inkscape:label="Ebene 1"
inkscape:groupmode="layer"
id="layer1"
@@ -7964,6 +7996,17 @@
y="-302.62827"
style="fill:#008000;stroke:none">250 mm</tspan></text><text
xml:space="preserve"
style="font-size:20px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:0.995585;fill:#ff0000;stroke:#000080;stroke-width:1.51181;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.82619"
x="869.02673"
y="-410.83902"
id="text1701-7-5"
transform="rotate(40.393075)"><tspan
sodipodi:role="line"
id="tspan1701-1-2"
x="869.02673"
y="-410.83902"
style="fill:#000080;stroke:none">90 mm</tspan></text><text
xml:space="preserve"
style="font-size:20px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:0.995585;fill:#aa0000;stroke:#000080;stroke-width:1.51181;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.82619"
x="-182.423"
y="826.9201"
@@ -8065,6 +8108,10 @@
style="opacity:0.995585;fill:#ff0000;stroke:#000080;stroke-width:2.07249;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.82619;marker-start:url(#ArrowTriangleStylized-6-8-3);marker-end:url(#marker1701-0-5-9)"
d="M 940.21143,313.67217 907.29185,350.0747"
id="path1647-0-0-6"
sodipodi:nodetypes="cc" /><path
style="opacity:0.995585;fill:#ff0000;stroke:#000080;stroke-width:2.04652;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:0.82619;marker-start:url(#ArrowTriangleStylized-6-8-3-4);marker-end:url(#marker1701-0-5-9-8)"
d="M 959.5291,282.01946 863.22201,197.28268"
id="path1647-0-0-6-5"
sodipodi:nodetypes="cc" /><text
xml:space="preserve"
style="font-size:20px;font-family:'Times New Roman';-inkscape-font-specification:'Times New Roman, ';text-align:center;writing-mode:lr-tb;direction:ltr;text-anchor:middle;opacity:0.995585;fill:#ff0000;stroke:#000080;stroke-width:1.51181;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0.82619"

Before

Width:  |  Height:  |  Size: 552 KiB

After

Width:  |  Height:  |  Size: 554 KiB

View File

@@ -1,11 +1,13 @@
\relax
\providecommand \babel@aux [2]{\global \let \babel@toc \@gobbletwo }
\@nameuse{bbl@beforestart}
\catcode `"\active
\babel@aux{ngerman}{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Intro}{1}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2}Angles}{1}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Bizeps {\bf \tt y}}{1}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Ellbow -- Rotation}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {1}Info}{1}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {2}Angles}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Bizeps {\bf \tt y}}{2}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Video Capture with recognized Aruco markers}}{2}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Ellbow -- Rotation}{3}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces Front view and sideview of the forearm with calculation variables.}}{3}{}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Forearm}{3}{}\protected@file@percent }
\gdef \@abspage@last{3}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Hand}{4}{}\protected@file@percent }
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces \small Hand with points to calculate the values for {\tt b, c, e}.}}{4}{}\protected@file@percent }
\@writefile{toc}{\contentsline {paragraph}{Limitations with the Hand:}{4}{}\protected@file@percent }
\@writefile{toc}{\contentsline {section}{\numberline {3}Program}{4}{}\protected@file@percent }
\gdef \@abspage@last{4}

View File

@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (MiKTeX 25.4) (preloaded format=pdflatex 2025.6.3) 28 APR 2026 21:32
This is pdfTeX, Version 3.141592653-2.6-1.40.27 (MiKTeX 25.4) (preloaded format=pdflatex 2025.6.3) 29 APR 2026 15:02
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -55,37 +55,6 @@ File: pdftex.def 2024/04/13 v1.2c Graphics/color driver for pdftex
\Gin@req@height=\dimen147
\Gin@req@width=\dimen148
)
(C:\Program Files\MiKTeX\tex/generic/babel\babel.sty
Package: babel 2025/05/14 v25.9 The multilingual framework for pdfLaTeX, LuaLaT
eX and XeLaTeX
\babel@savecnt=\count280
\U@D=\dimen149
\l@unhyphenated=\language79
(C:\Program Files\MiKTeX\tex/generic/babel\txtbabel.def)
\bbl@readstream=\read2
\bbl@dirlevel=\count281
*************************************
* Local config file bblopts.cfg used
*
(C:\Program Files\MiKTeX\tex/latex/arabi\bblopts.cfg
File: bblopts.cfg 2005/09/08 v0.1 add Arabic and Farsi to "declared" options of
babel
)
(C:\Program Files\MiKTeX\tex/latex/babel-german\ngerman.ldf
Language: ngerman 2024/12/10 v2.15 German support for babel (post-1996 orthogra
phy)
(C:\Program Files\MiKTeX\tex/generic/babel/locale/de\babel-ngerman.tex
Package babel Info: Importing font and identification data for ngerman
(babel) from babel-de.ini. Reported on input line 11.
)
(C:\Program Files\MiKTeX\tex/latex/babel-german\ngermanb.ldf
Language: ngermanb 2024/12/10 v2.15 German support for babel (post-1996 orthogr
aphy)
Package babel Info: Making " an active character on input line 122.
)))
(C:\Program Files\MiKTeX\tex/latex/lm\lmodern.sty
Package: lmodern 2015/05/01 v1.6.1 Latin Modern Fonts
LaTeX Font Info: Overwriting symbol font `operators' in version `normal'
@@ -129,12 +98,9 @@ File: t1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
)
(C:\Program Files\MiKTeX\tex/latex/l3backend\l3backend-pdftex.def
File: l3backend-pdftex.def 2025-04-14 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count282
)
(position.aux
Package babel Info: 'ngerman' activates 'ngerman' shorthands.
(babel) Reported on input line 5.
\l__color_backend_stack_int=\count280
)
(position.aux)
\openout1 = `position.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 20.
@@ -153,16 +119,16 @@ LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 20.
LaTeX Font Info: ... okay on input line 20.
(C:\Program Files\MiKTeX\tex/context/base/mkii\supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count283
\scratchdimen=\dimen150
\scratchcounter=\count281
\scratchdimen=\dimen149
\scratchbox=\box53
\nofMPsegments=\count284
\nofMParguments=\count285
\nofMPsegments=\count282
\nofMParguments=\count283
\everyMPshowfont=\toks20
\MPscratchCnt=\count286
\MPscratchDim=\dimen151
\MPnumerator=\count287
\makeMPintoPDFobject=\count288
\MPscratchCnt=\count284
\MPscratchDim=\dimen150
\MPnumerator=\count285
\makeMPintoPDFobject=\count286
\everyMPtoPDFconversion=\toks21
) (C:\Program Files\MiKTeX\tex/latex/epstopdf-pkg\epstopdf-base.sty
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
@@ -202,105 +168,125 @@ LaTeX Font Info: External font `lmex10' loaded for size
(Font) <8> on input line 22.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <6> on input line 22.
LaTeX Font Info: Trying to load font information for T1+lmtt on input line 3
4.
(C:\Program Files\MiKTeX\tex/latex/lm\t1lmtt.fd
File: t1lmtt.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
)
<pic/robot_image_a.png, id=1, 885.3075pt x 402.75468pt>
File: pic/robot_image_a.png Graphic file (type png)
<use pic/robot_image_a.png>
Package pdftex.def Info: pic/robot_image_a.png used on input line 43.
(pdftex.def) Requested size: 360.0pt x 163.77846pt.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <10.95> on input line 48.
LaTeX Font Info: Trying to load font information for TS1+lmr on input line 5
4.
(C:\Program Files\MiKTeX\tex/latex/lm\ts1lmr.fd
File: ts1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
)
Underfull \hbox (badness 2293) in paragraph at lines 55--57
\T1/lmr/m/n/10.95 (each po-si-ti-on on its
[]
<pic/robot_sideView_measurements.pdf, id=3, 595.22375pt x 429.605pt>
File: pic/robot_sideView_measurements.pdf Graphic file (type pdf)
<use pic/robot_sideView_measurements.pdf>
Package pdftex.def Info: pic/robot_sideView_measurements.pdf used on input lin
e 62.
(pdftex.def) Requested size: 216.0022pt x 155.8966pt.
(Font) <10.95> on input line 37.
[1
{C:/Users/kech/AppData/Local/MiKTeX/fonts/map/pdftex/pdftex.map}{C:/Program Fil
es/MiKTeX/fonts/enc/dvips/lm/lm-ec.enc}{C:/Program Files/MiKTeX/fonts/enc/dvips
/lm/lm-mathsy.enc} <./pic/robot_image_a.png>]
es/MiKTeX/fonts/enc/dvips/lm/lm-ec.enc}]
LaTeX Font Info: Trying to load font information for T1+lmtt on input line 4
6.
(C:\Program Files\MiKTeX\tex/latex/lm\t1lmtt.fd
File: t1lmtt.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
)
<pic/robot_image_a.png, id=9, 885.3075pt x 402.75468pt>
File: pic/robot_image_a.png Graphic file (type png)
<use pic/robot_image_a.png>
Package pdftex.def Info: pic/robot_image_a.png used on input line 56.
(pdftex.def) Requested size: 360.0pt x 163.77846pt.
LaTeX Font Info: Trying to load font information for TS1+lmr on input line 7
1.
(C:\Program Files\MiKTeX\tex/latex/lm\ts1lmr.fd
File: ts1lmr.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
)
Underfull \hbox (badness 2293) in paragraph at lines 72--74
\T1/lmr/m/n/10.95 (each po-si-tion on its
[]
<pic/robot_sideView_measurements.pdf, id=11, 595.22375pt x 429.605pt>
File: pic/robot_sideView_measurements.pdf Graphic file (type pdf)
<use pic/robot_sideView_measurements.pdf>
Package pdftex.def Info: pic/robot_sideView_measurements.pdf used on input lin
e 79.
(pdftex.def) Requested size: 216.0022pt x 155.8966pt.
[2{C:/Program Files/MiKTeX/fonts/enc/dvips/lm/lm-mathit.enc}{C:/Program Files/M
iKTeX/fonts/enc/dvips/lm/lm-rm.enc}{C:/Program Files/MiKTeX/fonts/enc/dvips/lm/
lm-mathsy.enc}{C:/Program Files/MiKTeX/fonts/enc/dvips/lm/lm-ts1.enc} <./pic/ro
bot_image_a.png> <./pic/robot_sideView_measurements.pdf>]
LaTeX Font Info: Trying to load font information for OT1+lmtt on input line
86.
103.
(C:\Program Files\MiKTeX\tex/latex/lm\ot1lmtt.fd
File: ot1lmtt.fd 2015/05/01 v1.6.1 Font defs for Latin Modern
)
<pic/robot_frontView_forearm.pdf, id=15, 249.93375pt x 203.76125pt>
<pic/robot_frontView_forearm.pdf, id=1406, 249.93375pt x 203.76125pt>
File: pic/robot_frontView_forearm.pdf Graphic file (type pdf)
<use pic/robot_frontView_forearm.pdf>
Package pdftex.def Info: pic/robot_frontView_forearm.pdf used on input line 99
.
Package pdftex.def Info: pic/robot_frontView_forearm.pdf used on input line 11
4.
(pdftex.def) Requested size: 132.4757pt x 108.0011pt.
<pic/robot_sideView_forearm.pdf, id=16, 492.84125pt x 216.81pt>
<pic/robot_sideView_forearm.pdf, id=1407, 492.84125pt x 216.81pt>
File: pic/robot_sideView_forearm.pdf Graphic file (type pdf)
<use pic/robot_sideView_forearm.pdf>
Package pdftex.def Info: pic/robot_sideView_forearm.pdf used on input line 100
Package pdftex.def Info: pic/robot_sideView_forearm.pdf used on input line 115
.
(pdftex.def) Requested size: 245.50255pt x 108.0011pt.
Overfull \hbox (28.94739pt too wide) in paragraph at lines 98--101
[] []
Overfull \hbox (27.11282pt too wide) in paragraph at lines 113--116
[]| [] []
[]
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <9> on input line 148.
LaTeX Font Info: External font `lmex10' loaded for size
(Font) <5> on input line 148.
[2{C:/Program Files/MiKTeX/fonts/enc/dvips/lm/lm-ts1.enc}{C:/Program Files/MiKT
eX/fonts/enc/dvips/lm/lm-rm.enc}{C:/Program Files/MiKTeX/fonts/enc/dvips/lm/lm-
mathit.enc}{C:/Program Files/MiKTeX/fonts/enc/dvips/lm/lm-rmtt.enc} <./pic/robo
t_sideView_measurements.pdf> <./pic/robot_frontView_forearm.pdf
pdfTeX warning: miktex-pdftex.exe (file ./pic/robot_frontView_forearm.pdf): PDF
inclusion: multiple pdfs with page group included in a single page
> <./pic/robot_sideView_forearm.pdf
[3{C:/Program Files/MiKTeX/fonts/enc/dvips/lm/lm-rmtt.enc} <./pic/robot_frontVi
ew_forearm.pdf> <./pic/robot_sideView_forearm.pdf
pdfTeX warning: miktex-pdftex.exe (file ./pic/robot_sideView_forearm.pdf): PDF
inclusion: multiple pdfs with page group included in a single page
>]
<pic/robot_hand_sideView.pdf, id=2048, 459.7175pt x 317.185pt>
File: pic/robot_hand_sideView.pdf Graphic file (type pdf)
<use pic/robot_hand_sideView.pdf>
Package pdftex.def Info: pic/robot_hand_sideView.pdf used on input line 155.
(pdftex.def) Requested size: 156.53336pt x 108.0011pt.
<pic/robot_hand_topView.pdf, id=2049, 337.26pt x 284.06125pt>
File: pic/robot_hand_topView.pdf Graphic file (type pdf)
<use pic/robot_hand_topView.pdf>
Package pdftex.def Info: pic/robot_hand_topView.pdf used on input line 157.
(pdftex.def) Requested size: 111.12631pt x 93.59802pt.
[3] (position.aux)
[4 <./pic/robot_hand_sideView.pdf> <./pic/robot_hand_topView.pdf
pdfTeX warning: miktex-pdftex.exe (file ./pic/robot_hand_topView.pdf): PDF incl
usion: multiple pdfs with page group included in a single page
>] (position.aux)
***********
LaTeX2e <2024-11-01> patch level 2
L3 programming layer <2025-04-29>
***********
)
Here is how much of TeX's memory you used:
2992 strings out of 469923
50836 string characters out of 5479241
436765 words of memory out of 5000000
29782 multiletter control sequences out of 15000+600000
662462 words of font info for 67 fonts, out of 8000000 for 9000
1877 strings out of 469923
30745 string characters out of 5479241
432319 words of memory out of 5000000
28679 multiletter control sequences out of 15000+600000
685554 words of font info for 81 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
57i,6n,65p,227b,236s stack positions out of 10000i,1000n,20000p,200000b,200000s
<C:/Program Files/MiKTeX/fonts/type1/public/lm/lmbx12.pfb><C:/Program Files/M
iKTeX/fonts/type1/public/lm/lmmi10.pfb><C:/Program Files/MiKTeX/fonts/type1/pub
lic/lm/lmmi8.pfb><C:/Program Files/MiKTeX/fonts/type1/public/lm/lmr10.pfb><C:/P
rogram Files/MiKTeX/fonts/type1/public/lm/lmr12.pfb><C:/Program Files/MiKTeX/fo
nts/type1/public/lm/lmr17.pfb><C:/Program Files/MiKTeX/fonts/type1/public/lm/lm
r8.pfb><C:/Program Files/MiKTeX/fonts/type1/public/lm/lmsy10.pfb><C:/Program Fi
les/MiKTeX/fonts/type1/public/lm/lmtt10.pfb><C:/Program Files/MiKTeX/fonts/type
1/public/lm/lmtt12.pfb>
Output written on position.pdf (3 pages, 1427690 bytes).
57i,8n,65p,227b,261s stack positions out of 10000i,1000n,20000p,200000b,200000s
<C:/Program Files/MiKTeX/fonts/type1/public/lm/lmbx10.pfb><C:/Program Files/M
iKTeX/fonts/type1/public/lm/lmbx12.pfb><C:/Program Files/MiKTeX/fonts/type1/pub
lic/lm/lmmi10.pfb><C:/Program Files/MiKTeX/fonts/type1/public/lm/lmmi8.pfb><C:/
Program Files/MiKTeX/fonts/type1/public/lm/lmr10.pfb><C:/Program Files/MiKTeX/f
onts/type1/public/lm/lmr12.pfb><C:/Program Files/MiKTeX/fonts/type1/public/lm/l
mr17.pfb><C:/Program Files/MiKTeX/fonts/type1/public/lm/lmr6.pfb><C:/Program Fi
les/MiKTeX/fonts/type1/public/lm/lmr8.pfb><C:/Program Files/MiKTeX/fonts/type1/
public/lm/lmr9.pfb><C:/Program Files/MiKTeX/fonts/type1/public/lm/lmsy10.pfb><C
:/Program Files/MiKTeX/fonts/type1/public/lm/lmtt10.pfb><C:/Program Files/MiKTe
X/fonts/type1/public/lm/lmtt12.pfb>
Output written on position.pdf (4 pages, 1766750 bytes).
PDF statistics:
2089 PDF objects out of 2487 (max. 8388607)
3090 PDF objects out of 3580 (max. 8388607)
0 named destinations out of 1000 (max. 500000)
21 words of extra memory for PDF output out of 10000 (max. 10000000)
31 words of extra memory for PDF output out of 10000 (max. 10000000)

Binary file not shown.

Binary file not shown.

View File

@@ -8,12 +8,12 @@
\usepackage{graphicx}
% Deutsche Sprache (Datum, Trennungen, etc.)
\usepackage[ngerman]{babel}
%\usepackage[ngerman]{babel}
% Optional: bessere Schrift
\usepackage{lmodern}
\title{How to get a robot position from video image}
\title{How to get a robot position from video images}
\author{Christoph Kendel}
\date{\today}
@@ -21,32 +21,49 @@
\maketitle
\section{Intro}
\begin{center}
\begin{minipage}{0.89\linewidth}
\section{Info}
My Robot-Arm does not have homing switches. I want to use WebCams and Aruco--Markers to get the position of each joint. This way
I can get the position as well as double--check the position while working under load.
My Robot-Arm does not have homing switches. I use WebCams to get the position of each joint. This way
I can get the initial position without movement as well as contiuously check the position while working under load.
I work with Arucos. With my low resolution WebCam I can get reliable positions (when using two cams). But the angle resolution is not usable.
So I have to calculate the angle of each element from the relative positions of the markers.
\vspace{2mm}
\hspace{5mm}
I work with Aruco markers. With budget low resolution WebCams I can get reliable positions (when using two cams). But the angular recognizion of the markers turned out
not to be reliable. Thus
I have to calculate the angle of each element from the relative positions of the markers. Here I explain how I these calculations are done.
\end{minipage}
\end{center}
\pagebreak
\section{Angles}
The linear $x$ Position is easy to get: the markers 201, 204, 200, 198, 229, 243 have all a fixed relative $x$ position. Thus the average
can be taken, wich is saved as $x_{242}$ the x-position of the hand-rotation-joint.
All the other values are the angles {\tt y, z, a, b, c} and {\tt e}. % (e for the opening-of the hand).
\subsection{Bizeps {\bf \tt y}}
To find the angle of the bizeps (upper arm) there are different options, depending on the angle-of-view and which
ArUcos are visable.
\vspace{2mm}
\noindent
\begin{figure}[h!]
\includegraphics[width=\linewidth]{pic/robot_image_a.png}
\caption{Video Capture with recognized Aruco markers}
\end{figure}
\vspace{2mm}
\noindent
The calculation is based on two approaches: Position of the Markers 243 etc on the one hand, and relative position 198 $\leftrightarrow$ 229 on the other hand.
\vspace{2mm}
\noindent
\begin{minipage}{0.39\linewidth}
Several ways to calculate {\tt y}:
@@ -79,11 +96,11 @@ At the ellbow there is a motor that turns the forearm arround. Depending on whic
%
the
{\tt y} and {\tt z} position of 223 etc can't be used, as it depends on the angle of the forearm and the angle of the bizeps. Thus is it less reliable. (Although it would be a nice
thing to use as a double--check). With the $x_{223}$ compared to the $x_{242}$ i can calculate the ellbow turning {\tt a} value:
thing to use as a double--check). With the $x_{223}$ compared to the $x_{226}$ i can calculate the ellbow turning {\tt a} value:
$$
\sin({\tt a} + \alpha_{\rm }) = \frac{\Delta x}{35\,\rm mm} = \frac{x_{223} - x_{242}}{35\,\rm mm}
\sin({\tt a} + \alpha_{\rm }) = \frac{\Delta x}{35\,\rm mm} = \frac{x_{223} - x_{226}}{35\,\rm mm}
$$
@@ -92,14 +109,12 @@ as I know the angle $\alpha$ (yellow triangle) from the printed geometry of the
sled and bizeps, as their markers are fixed in $x$ position. This $\alpha$ is calculated for all markers of the forearm.
\vspace{2mm}
\noindent
\includegraphics[height=0.3\linewidth]{pic/robot_frontView_forearm.pdf}\hspace{3mm}
\begin{figure}[h!]
\hspace*{-4.5mm}
\includegraphics[height=0.3\linewidth]{pic/robot_frontView_forearm.pdf}\hspace{6mm}
\includegraphics[height=0.3\linewidth]{pic/robot_sideView_forearm.pdf}
\vspace{2mm}
\caption{Front view and sideview of the forearm with calculation variables.}
\end{figure}
\noindent
As the rotation {\tt a} may change for different markers, the median is taken.
@@ -107,10 +122,57 @@ As the rotation {\tt a} may change for different markers, the median is taken.
\subsection{Forearm}
With the
The position of the forearm motor (controlling motor in the bizeps) can be calculated from the difference between the bizeps
position $y$ and the angle of the forearm. Thus we need the forearm--angle. That can be calculated in two ways
%
%
\begin{itemize}
\item relative position of two markers on the forearm, that are on one line.
\item relative $y, z$ position of one marker on the forearm and one marker on the ellbow, e.g. 242 or 222.
\end{itemize}
%
Again:
As I might get different results, I have to find a median value.
\vspace{2mm}
\hfill $\Rightarrow$ Hand-Joint $P$ is known.
\subsection{Hand}
To get the hand position, the easiest way I see is to calculate the middle position between both finger-markers%
\footnote{The
other way to calculate the hand position without the markers orientation would be: calculate the middle-hand-plane from
the forearm rotation, with the distance of the finger-point to that plane, you'd also get the finger-opening and the projectet position of the finger-marker
to that plane, you'd get the angle.}
($F_1$, $F_2$ here shown in green).
The direction $P \to M$ in combination with the forearm-direction results in the angle {\tt b}.
\begin{figure}[h!]
\hfill
\includegraphics[height=0.3\linewidth]{pic/robot_hand_sideView.pdf}
\hfill
\includegraphics[height=0.26\linewidth]{pic/robot_hand_topView.pdf}
\hfill {}
\caption{\small Hand with points to calculate the values for {\tt b, c, e}.}
\end{figure}
\noindent
The Distance between the hand markers is a result of the opening of the fingers {\tt e}.
So I can calculate {\tt e} from that distance.
Furthermore the direction of the distance between the grippers gives me the rotation of the hand {\tt c}.
\paragraph{Limitations with the Hand:} The results depend heavily on the accuracy of $P$ and $M$. Both are never measured directly. So have to
double check if they make sense. Only if the distance $\overline {PM}$ checks up to be the mechanical correct, that can be used to evaluate the correctnes of $P$ and $M$.
And only if the point $M$ lies in the plane of the rotation {\tt a} arround the forearm.
\section{Program}
The NodeJS Program calculates the angles and checks, if they are the ones at the moment represented by the system.
\end{document}