doc
BIN
docs/pic/robot_hand_sideView.pdf
Normal file
4177
docs/pic/robot_hand_sideView.svg
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
docs/pic/robot_hand_sideView_0.pdf
Normal file
BIN
docs/pic/robot_hand_topView.pdf
Normal file
4652
docs/pic/robot_hand_topView.svg
Normal file
|
After Width: | Height: | Size: 354 KiB |
BIN
docs/pic/robot_hand_topView_0.pdf
Normal file
BIN
docs/pic/robot_image_b.png
Normal file
|
After Width: | Height: | Size: 575 KiB |
BIN
docs/pic/robot_image_c.png
Normal file
|
After Width: | Height: | Size: 747 KiB |
BIN
docs/pic/robot_image_d.png
Normal file
|
After Width: | Height: | Size: 626 KiB |
@@ -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 |
@@ -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 |
@@ -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}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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}
|
||||