2265 lines
480 KiB
HTML
2265 lines
480 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
<title>TeXtidote analysis</title>
|
|
<style type="text/css">
|
|
body {
|
|
font-family: sans-serif;
|
|
}
|
|
.highlight, .highlight-sh, .highlight-spelling {
|
|
padding: 2pt;
|
|
border-radius: 4pt;
|
|
cursor: help;
|
|
opacity: 0.7;
|
|
border: dashed 1px;
|
|
}
|
|
.highlight {
|
|
background-color: orange;
|
|
color: black;
|
|
}
|
|
.highlight-sh {
|
|
background-color: yellow;
|
|
color: black;
|
|
}
|
|
.highlight-spelling {
|
|
background-color: red;
|
|
color: white;
|
|
}
|
|
div.original-file {
|
|
font-family: monospace;
|
|
font-size: 11pt;
|
|
background-color: #f8f8ff;
|
|
padding: 20pt;
|
|
border-radius: 6pt;
|
|
}
|
|
.textidote {
|
|
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgICB4bWxuczpzb2RpcG9kaT0iaHR0cDovL3NvZGlwb2RpLnNvdXJjZWZvcmdlLm5ldC9EVEQvc29kaXBvZGktMC5kdGQiICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiICAgd2lkdGg9IjEwMC4wOTEwNW1tIiAgIGhlaWdodD0iMTguMjA5MDk5bW0iICAgdmlld0JveD0iMCAwIDEwMC4wOTEwNSAxOC4yMDkwOTkiICAgdmVyc2lvbj0iMS4xIiAgIGlkPSJzdmc4IiAgIGlua3NjYXBlOnZlcnNpb249IjAuOTEgcjEzNzI1IiAgIHNvZGlwb2RpOmRvY25hbWU9InRleHRpZG90ZS5zdmciPiAgPGRlZnMgICAgIGlkPSJkZWZzMiIgLz4gIDxzb2RpcG9kaTpuYW1lZHZpZXcgICAgIGlkPSJiYXNlIiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIiAgICAgYm9yZGVyY29sb3I9IiM2NjY2NjYiICAgICBib3JkZXJvcGFjaXR5PSIxLjAiICAgICBpbmtzY2FwZTpwYWdlb3BhY2l0eT0iMC4wIiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIgICAgIGlua3NjYXBlOnpvb209IjEiICAgICBpbmtzY2FwZTpjeD0iLTI1NC4yNTMwOSIgICAgIGlua3NjYXBlOmN5PSItMjc4LjM3NTkxIiAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9Im1tIiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ibGF5ZXIxIiAgICAgc2hvd2dyaWQ9ImZhbHNlIiAgICAgZml0LW1hcmdpbi10b3A9IjAiICAgICBmaXQtbWFyZ2luLWxlZnQ9IjAiICAgICBmaXQtbWFyZ2luLXJpZ2h0PSIwIiAgICAgZml0LW1hcmdpbi1ib3R0b209IjAiICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjE5MjAiICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSIxMDIxIiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiICAgICBpbmtzY2FwZTp3aW5kb3cteT0iMjY1IiAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIgLz4gIDxtZXRhZGF0YSAgICAgaWQ9Im1ldGFkYXRhNSI+ICAgIDxyZGY6UkRGPiAgICAgIDxjYzpXb3JrICAgICAgICAgcmRmOmFib3V0PSIiPiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+ICAgICAgICA8ZGM6dHlwZSAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4gICAgICAgIDxkYzp0aXRsZSAvPiAgICAgIDwvY2M6V29yaz4gICAgPC9yZGY6UkRGPiAgPC9tZXRhZGF0YT4gIDxnICAgICBpbmtzY2FwZTpsYWJlbD0iTGF5ZXIgMSIgICAgIGlua3NjYXBlOmdyb3VwbW9kZT0ibGF5ZXIiICAgICBpZD0ibGF5ZXIxIiAgICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTI5LjczODA5NSwtNzAuNTc3NzUxKSI+ICAgIDxnICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zaXplOjIwLjkyODk0NTU0cHg7bGluZS1oZWlnaHQ6MS4yNTtmb250LWZhbWlseTpzYW5zLXNlcmlmO2xldHRlci1zcGFjaW5nOjBweDt3b3JkLXNwYWNpbmc6MHB4O2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS45Nzc1MzgyMztzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIgICAgICAgaWQ9InRleHQ4MzYiPiAgICAgIDxwYXRoICAgICAgICAgZD0ibSAzMC43MjY4NjQsNzEuNTY2NTIgNS4yMzIyMzYsMCAwLDQuMjA5MDQ0IDUuODEzNTk2LDAgMCwzLjYwNDQyOSAtNS44MTM1OTYsMCAwLDQuODEzNjU4IDUuODEzNTk2LDAgMCwzLjYwNDQyOSAtMTEuMDQ1ODMyLDAgMCwtMTYuMjMxNTYgeiIgICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTpUdXRvcjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlR1dG9yO2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS45Nzc1MzgyMztzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIgICAgICAgICBpZD0icGF0aDMzODYiIC8+ICAgICAgPHBhdGggICAgICAgICBkPSJtIDQyLjMzNTg4OCw3NS43NzU1NjQgMTEuMDQ1ODMyLDAgMCw3LjgxMzQ3MyAtNS44MTM1OTYsMCAwLDAuNjA0NjE0IDUuODEzNTk2LDAgMCwzLjYwNDQyOSAtMTEuMDQ1ODMyLDAgMCwtMTIuMDIyNTE2IHogbSA1LjIzMjIzNiw0LjIwOTA0MyAwLjU4MTM2LDAgMCwtMC42MDQ2MTQgLTAuNTgxMzYsMCAwLDAuNjA0NjE0IHoiICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6VHV0b3I7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpUdXRvcjtmaWxsOiNmZmZmZmY7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuOTc3NTM4MjM7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiICAgICAgICAgaWQ9InBhdGgzMzg4IiAvPiAgICAgIDxwYXRoICAgICAgICAgZD0ibSA1My45NDQ5MTIsNzUuNzc1NTY0IDUuMjMyMjM2LDAgMCwzLjYwNDQyOSAtNS4yMzIyMzYsMCAwLC0zLjYwNDQyOSB6IG0gNS44MTM1OTYsMCA1LjIzMjIzNiwwIDAsMy42MDQ0MjkgLTUuMjMyMjM2LDAgMCwtMy42MDQ0MjkgeiBtIC01LjgxMzU5Niw4LjQxODA4NyA1LjIzMjIzNiwwIDAsMy42MDQ0MjkgLTUuMjMyMjM2LDAgMCwtMy42MDQ0MjkgeiBtIDUuODEzNTk2LDAgNS4yMzIyMzYsMCAwLDMuNjA0NDI5IC01LjIzMjIzNiwwIDAsLTMuNjA0NDI5IHoiICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6VHV0b3I7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpUdXRvcjtmaWxsOiNmZmZmZmY7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuOTc3NTM4MjM7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiICAgICAgICAgaWQ9InBhdGgzMzkwIiAvPiAgICAgIDxwYXRoICAgICAgICAgZD0ibSA2NS41NTM5MzYsNzEuNTY2NTIgNS4yMzIyMzYsMCAwLDQuMjA5MDQ0IDUuODEzNTk2LDAgMCwzLjYwNDQyOSAtNS44MTM1OTYsMCAwLDQuODEzNjU4IDUuODEzNTk2LDAgMCwzLjYwNDQyOSAtMTEuMDQ1ODMyLDAgMCwtMTYuMjMxNTYgeiIgICAgICAgICBzdHlsZT0iZm9udC1zdHlsZTpub3JtYWw7Zm9udC12YXJpYW50Om5vcm1hbDtmb250LXdlaWdodDpub3JtYWw7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTpUdXRvcjstaW5rc2NhcGUtZm9udC1zcGVjaWZpY2F0aW9uOlR1dG9yO2ZpbGw6I2ZmZmZmZjtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MS45Nzc1MzgyMztzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZSIgICAgICAgICBpZD0icGF0aDMzOTIiIC8+ICAgICAgPHBhdGggICAgICAgICBkPSJtIDc3LjE2Mjk2LDc1Ljc3NTU2NCA1LjIzMjIzNiwwIDAsMTIuMDIyNTE2IC01LjIzMjIzNiwwIDAsLTEyLjAyMjUxNiB6IG0gMCwtNC4yMDkwNDQgNS4yMzIyMzYsMCAwLDMuNjA0NDMgLTUuMjMyMjM2LDAgMCwtMy42MDQ0MyB6IiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OlR1dG9yOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VHV0b3I7ZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjk3NzUzODIzO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAgICAgICAgIGlkPSJwYXRoMzM5NCIgLz4gICAgICA8cGF0aCAgICAgICAgIGQ9Im0gODIuOTY3NDcyLDc1Ljc3NTU2NCA1LjgxMzU5NiwwIDAsLTQuMjA5MDQ0IDUuMjMyMjM2LDAgMCwxNi4yMzE1NiAtMTEuMDQ1ODMyLDAgMCwtMTIuMDIyNTE2IHogbSA1LjIzMjIzNiw4LjQxODA4NyAwLjU4MTM2LDAgMCwtNC44MTM2NTggLTAuNTgxMzYsMCAwLDQuODEzNjU4IHoiICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6bm9ybWFsO2ZvbnQtc3RyZXRjaDpub3JtYWw7Zm9udC1mYW1pbHk6VHV0b3I7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpUdXRvcjtmaWxsOiNmZmZmZmY7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjEuOTc3NTM4MjM7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmUiICAgICAgICAgaWQ9InBhdGgzMzk2IiAvPiAgICAgIDxwYXRoICAgICAgICAgZD0ibSA5NC41NzY0OTYsNzUuNzc1NTY0IDExLjA0NTgzNCwwIDAsMTIuMDIyNTE2IC0xMS4wNDU4MzQsMCAwLC0xMi4wMjI1MTYgeiBtIDUuMjMyMjM3LDguNDE4MDg3IDAuNTgxMzU3LDAgMCwtNC44MTM2NTggLTAuNTgxMzU3LDAgMCw0LjgxMzY1OCB6IiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OlR1dG9yOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VHV0b3I7ZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjk3NzUzODIzO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAgICAgICAgIGlkPSJwYXRoMzM5OCIgLz4gICAgICA8cGF0aCAgICAgICAgIGQ9Im0gMTA2LjE4NTUyLDcxLjU2NjUyIDUuMjMyMjQsMCAwLDQuMjA5MDQ0IDUuODEzNTksMCAwLDMuNjA0NDI5IC01LjgxMzU5LDAgMCw0LjgxMzY1OCA1LjgxMzU5LDAgMCwzLjYwNDQyOSAtMTEuMDQ1ODMsMCAwLC0xNi4yMzE1NiB6IiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OlR1dG9yOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VHV0b3I7ZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjk3NzUzODIzO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAgICAgICAgIGlkPSJwYXRoMzQwMCIgLz4gICAgICA8cGF0aCAgICAgICAgIGQ9Im0gMTE3Ljc5NDU0LDc1Ljc3NTU2NCAxMS4wNDU4NCwwIDAsNy44MTM0NzMgLTUuODEzNiwwIDAsMC42MDQ2MTQgNS44MTM2LDAgMCwzLjYwNDQyOSAtMTEuMDQ1ODQsMCAwLC0xMi4wMjI1MTYgeiBtIDUuMjMyMjQsNC4yMDkwNDMgMC41ODEzNiwwIDAsLTAuNjA0NjE0IC0wLjU4MTM2LDAgMCwwLjYwNDYxNCB6IiAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0Om5vcm1hbDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OlR1dG9yOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246VHV0b3I7ZmlsbDojZmZmZmZmO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxLjk3NzUzODIzO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lIiAgICAgICAgIGlkPSJwYXRoMzQwMiIgLz4gICAgPC9nPiAgPC9nPjwvc3ZnPg==);
|
|
}
|
|
h2.filename {
|
|
font-family: monospace;
|
|
}
|
|
h1.textidote {
|
|
width: 378px;
|
|
height: 68px;
|
|
display: block;
|
|
}
|
|
.keyword1 {
|
|
font-weight: bold;
|
|
color: green;
|
|
}
|
|
.keyword2 {
|
|
font-weight: bold;
|
|
color: darkblue;
|
|
}
|
|
.comment, .comment * {
|
|
color: darkred;
|
|
font-weight: normal;
|
|
}
|
|
.linenb {
|
|
font-style: italic;
|
|
color: lightgrey;
|
|
width: 30pt;
|
|
float: left;
|
|
margin-top: 1pt;
|
|
margin-bottom: 1pt;
|
|
-webkit-touch-callout: none;
|
|
-webkit-user-select: none;
|
|
-khtml-user-select: none;
|
|
-moz-user-select: none;
|
|
-ms-user-select: none;
|
|
user-select: none;
|
|
}
|
|
.codeline {
|
|
margin-left: -30pt;
|
|
padding-left: 60pt;
|
|
margin-top: 1pt;
|
|
margin-bottom: 1pt;
|
|
}
|
|
.no-text {
|
|
display: none;
|
|
}
|
|
.clear {
|
|
clear: both;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<a href="https://sylvainhalle.github.io/textidote"><h1 class="textidote"><span class="no-text">Results of TeXtidote analysis</span></h1></a>
|
|
<p>Here is the result of analyzing your file(s) with TeXtidote. Hover the mouse over highlighted portions of the document to read a tooltip that gives you some writing advice.</p>
|
|
<h2 class="filename">tex/4_Umsetzung.tex</h2>
|
|
|
|
<p>Found 376 warning(s)</p>
|
|
<div class="original-file">
|
|
<div class="linenb"> 1</div><div class="codeline"><span class="highlight-sh" title="If a section has sub-sections, it should have more than one such sub-section. [sh:nsubdiv]"></span>\chapter{Umsetzung}</div><div class="clear"></div>
|
|
<div class="linenb"> 2</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 3</div><div class="codeline">Bei der Umsetzung des geplanten Systemaufbaus waren Anpassungen nötig, die den geplanten Systemaufbau, sowie dessen Komplexität, negativ beeinflussen.</div><div class="clear"></div>
|
|
<div class="linenb"> 4</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 5</div><div class="codeline">Die Kommunikation zwischen dem Actormodell und dem Behavior Tree musste in mehrere Komponenten aufgeteilt werden, um Konflikte innerhalb der Simulationssoftware zu vermeiden.</div><div class="clear"></div>
|
|
<div class="linenb"> 6</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 7</div><div class="codeline">Zudem ist die Bewegungsplanung mit MoveIt2 deutlich komplexer als vorerst angenommen.</div><div class="clear"></div>
|
|
<div class="linenb"> 8</div><div class="codeline">Diese Komplexität entsteht aus der Interaktion mehrerer Komponenten, die das Gesamtsystem zur Ausführung benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 9</div><div class="codeline">Alle Einzelsysteme mussten hierfür konfiguriert werden, um die Kommunikation dieser zu ermöglichen.</div><div class="clear"></div>
|
|
<div class="linenb"> 10</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 11</div><div class="codeline">Mit den genannten Änderungen ergibt sich die in Abbildung \ref{umsetzung_overview} gezeigte Übersicht des Systems.</div><div class="clear"></div>
|
|
<div class="linenb"> 12</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 13</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 14</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Umsetzung-Übersicht}</div><div class="clear"></div>
|
|
<div class="linenb"> 15</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 16</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Visualisierung des überarbeiteten Konzepts</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 17</div><div class="codeline"><span class="keyword1">\label</span>{umsetzung_overview}</div><div class="clear"></div>
|
|
<div class="linenb"> 18</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 19</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 20</div><div class="codeline"><span class="keyword1">\section</span>{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Docker-Pompöse, Docker-Combos, Docker-Pompösen, Docker-Combo, Docker-Kompost] (735) [lt:de:GERMAN_SPELLER_RULE]"></span>Docker-Compose}</div><div class="clear"></div>
|
|
<div class="linenb"> 21</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [um] (750) [lt:de:DE_CASE]">Um</span> Docker für die Verwaltung einer ROS-Installation verwenden zu können, müssen einige Anpassungen vorgenommen werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 22</div><div class="codeline">Da viele Anwendungen, unter anderem auch die Simulationsumgebung, eine Desktopumgebung benötigen, musste der Zugriff auf eine solche Umgebung berücksichtigt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 23</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 24</div><div class="codeline">Diese Probleme können nicht durch Docker allein gelöst werden, da die Virtualisierungsumgebung eine Trennung der Systeme vorsieht.</div><div class="clear"></div>
|
|
<div class="linenb"> 25</div><div class="codeline">Die Isolation des Containers von der Benutzeroberfläche des Systems kann durch eine Kombination aus zwei Komponenten aufgehoben werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 26</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 27</div><div class="codeline">Um diese Modifikationen trotzdem reproduzierbar zu machen, wurde ein Shellscript geschrieben, dass zum Starten des Containers verwendet wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 28</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 29</div><div class="codeline">Dieses Skript erstellt zuerst die benötigten Verzeichnisse für den Container, falls diese noch nicht existieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 30</div><div class="codeline">Danach werden die SSH-Keys des Hosts in den Container kopiert, um eine SSH-Verbindung zu ermöglichen.</div><div class="clear"></div>
|
|
<div class="linenb"> 31</div><div class="codeline">Dieser Umweg über SSH ist nötig, da die benötigten Umgebungsvariablen für ROS sonst nicht in allen Fällen gesetzt werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 32</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 33</div><div class="codeline">Außerdem werden die benötigten Zugriffe auf den lokalen X-Server durch den Container mittels Hostname erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb"> 34</div><div class="codeline">Diese Änderung gestattet es dem Container, Fenster auf dem Desktop anzuzeigen, solange die benötigten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Süßes-Dateien, Gysis-Dateien] (2004) [lt:de:GERMAN_SPELLER_RULE]">SysFS-Dateien</span> hereingereicht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 35</div><div class="codeline">Dies geschieht durch Einträge in der<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> <span class="highlight" title="Möglicher Tippfehler gefunden. (2078) [lt:de:GERMAN_SPELLER_RULE]">compose.ym</span>l-Datei</span>, die diese als ``bind <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Mount, rund, Bund, Fund, Hund, Mund, out, bunt, kund, wund, munde, Bunt, Lund, Rund, Sound, Sund, Wund, mounte, muht] (2118) [lt:de:GERMAN_SPELLER_RULE]">mount</span>'' in den Container hereinreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 36</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 37</div><div class="codeline">Um Zugriff auf die Grafikbeschleunigung des Systems zu erhalten, muss deren Repräsentation im <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Süßes, Gysis] (2252) [lt:de:GERMAN_SPELLER_RULE]">SysFS</span> unter \code{/<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [DEV, Dev, der, den, des, dem, de, div, dtv, die, auf, das, er, bei, es, oder, da, drei, dies, je] (2265) [lt:de:GERMAN_SPELLER_RULE]">dev</span>/<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [drei, dir, Sri, Uri, drin, dpi, sri, der, die, den, des, das, dem, er, bei, da, de, dort, Mai, sei] (2269) [lt:de:GERMAN_SPELLER_RULE]">dri}</span> hineingereicht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 38</div><div class="codeline">Der Zugriff auf die Desktopumgebung, der im vorherigen Schritt entsperrt wurde, wird durch das mounten von<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{/<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [top, dm, der, die, den, des, im, das, dem, am, um, da, de, gab, km, Amt, GmbH, cm, dar, du] (2404) [lt:de:GERMAN_SPELLER_RULE]">tmp</span>/.<span class="highlight" title="Fügen Sie zwischen Sätzen ein Leerzeichen ein. Suggestions: [ X11-unix] (2409) [lt:de:DE_SENTENCE_WHITESPACE]">X1</span>1-unix}</span> erreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 39</div><div class="codeline">Dabei handelt es sich um den Unix-Socket des X11 Displayservers.</div><div class="clear"></div>
|
|
<div class="linenb"> 40</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 41</div><div class="codeline">Zum Starten des Containers wird das Script<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{start.sh}</span> im Verzeichnis der Containerinstallation ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 42</div><div class="codeline">Das Script führt die obengenannten Schritte aus und startet den Container.</div><div class="clear"></div>
|
|
<div class="linenb"> 43</div><div class="codeline">Eine Verbindung zum Container ist möglich, nachdem die Meldung \code{ros_1 | <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Rede, Reale, Rest, Seat, Reste, Real, Regte, Betty, Rente, Freddy, Teddy, Reede, Red, Rhea, Regt, Rheydt, Hedy, Riad, Rette, Reit] (2745) [lt:de:GERMAN_SPELLER_RULE]">Ready</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [von, so, vom, vor, da, de, wo, zog, Sohn, Tod, du, hohe, wohl, John, Rom, bot, sog, tun, Hof, Tor] (2751) [lt:de:GERMAN_SPELLER_RULE]">to</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [könnend, könnest, könnende, können, könne, korrekt, könnt, Konfekt, kontert, könntest, donnert, gönnend, kennend, konnex, konnexe, konntest, konntet, könntet, zoniert, körnend] (2754) [lt:de:GERMAN_SPELLER_RULE]">connect</span>.} <span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [In] (2763) [lt:de:UPPERCASE_SENTENCE_START]">in</span> der Konsole erscheint.</div><div class="clear"></div>
|
|
<div class="linenb"> 44</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 45</div><div class="codeline">Dafür wird ein SSH-Client eingesetzt, der eine Verbindung zu der lokalen Netzadresse des Systems mit dem Benutzer \code{ros} aufbaut.</div><div class="clear"></div>
|
|
<div class="linenb"> 46</div><div class="codeline">Der Port des SSH-Servers wird dabei durch die Deklaration im<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> docker-compose.ya</span>ml an das Hostsystem durchgereicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 47</div><div class="codeline">Hierbei ist zu beachten, dass der SSH-Server im Container vom Host aus über Port 2222 erreichbar ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 48</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 49</div><div class="codeline">Nach der Verbindung wird automatisch die ROS2-Umgebung eingerichtet.</div><div class="clear"></div>
|
|
<div class="linenb"> 50</div><div class="codeline">Diese kann ohne weitere Befehle nach dem Verbindungsaufbau genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 51</div><div class="codeline">Um die erstellten Pakete zu kompilieren, wurde das Skript<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{build.sh}</span> (Abbildung \ref{buildscript}) im \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Workspace-Verzeichnis, Workspaces-Verzeichnis] (3362) [lt:de:GERMAN_SPELLER_RULE]">workspace}-Verzeichnis</span> erstellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 52</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 53</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 54</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 55</div><div class="codeline"><span class="keyword2">\begin{minted}</span>[breaklines,frame=single]{bash}</div><div class="clear"></div>
|
|
<div class="linenb"> 56</div><div class="codeline">#!/bin/bash</div><div class="clear"></div>
|
|
<div class="linenb"> 57</div><div class="codeline">pushd "$(dirname "$0")" || exit</div><div class="clear"></div>
|
|
<div class="linenb"> 58</div><div class="codeline">colcon build --event-handlers console_cohesion+ --cmake-args -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -G Ninja</div><div class="clear"></div>
|
|
<div class="linenb"> 59</div><div class="codeline">popd || exit</div><div class="clear"></div>
|
|
<div class="linenb"> 60</div><div class="codeline"><span class="keyword2">\end{minted}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 61</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{build.sh Shellskript</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 62</div><div class="codeline"><span class="keyword1">\label</span>{buildscript}</div><div class="clear"></div>
|
|
<div class="linenb"> 63</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 64</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 65</div><div class="codeline">Dieses Skript nutzt \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Wolken, Balkon, Solon, zollen, coolen, collin, kotzen, holzen, kalken, Bolzen, Golzow, Holzohr, Holzton, Holzöl, Kolken, Kolon, Molken, klon, molken, zocke] (3417) [lt:de:GERMAN_SPELLER_RULE]">colcon}</span>, um alle Pakete in \code{~/<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Workspace-Verzeichnis, Workspaces-Verzeichnis] (3445) [lt:de:GERMAN_SPELLER_RULE]">workspace}-Verzeichnis</span> zu erstellen.</div><div class="clear"></div>
|
|
<div class="linenb"> 66</div><div class="codeline">Dabei wird auch eine<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [komplex, Compiler, Dombild, Zombie, bombige, koppele, kopple, zoophile] (3502) [lt:de:GERMAN_SPELLER_RULE]">compile</span>_<span class="highlight" title="Möglicher Tippfehler gefunden. (3510) [lt:de:GERMAN_SPELLER_RULE]">commands.js</span>on}-Datei</span> im \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Build-Unterordner, Bild-Unterordner, Wild-Unterordner, blind-Unterordner, peil-Unterordner, wild-Unterordner] (3533) [lt:de:GERMAN_SPELLER_RULE]">build}-Unterordner</span> erstellt, die von Entwicklungsumgebungen zur <span class="highlight" title="Möglicher Tippfehler gefunden. (3596) [lt:de:GERMAN_SPELLER_RULE]">Syntaxvervollständigung</span> genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 67</div><div class="codeline">Um eine Nutzung in allen Entwicklungsumgebungen zu erlauben, wurde diese zusätzlich in das Hauptverzeichnis des Workspaces gelinkt.</div><div class="clear"></div>
|
|
<div class="linenb"> 68</div><div class="codeline">Dies ist notwendig, da einige Entwicklungsumgebungen nur dort nach dieser Datei suchen.</div><div class="clear"></div>
|
|
<div class="linenb"> 69</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 70</div><div class="codeline">Da der Kompiliervorgang parallel abläuft, erscheinen Informationen zu allen Paketen gleichzeitig, was die Zuordnung von Fehlern erschwert.</div><div class="clear"></div>
|
|
<div class="linenb"> 71</div><div class="codeline">Um trotzdem alle wichtigen Informationen zu erhalten, kommt der <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Event-Händler, Event-Händlern, Event-Handle, Event-Händlers, Event-Wandler] (4060) [lt:de:GERMAN_SPELLER_RULE]">Event-Handler</span> \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Konsole, Konsolen, coole, Konzile, Mongole, Holzöle, Jodsole, Rohrsohle, Wohnsäle, Wohnzone, kanzele, kanzle, konzise, zonale] (4074) [lt:de:GERMAN_SPELLER_RULE]">console</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Kohäsion, Adhäsion, Moesien, Torsion, kohäsiv, kohäsive, kohäsiven] (4082) [lt:de:GERMAN_SPELLER_RULE]">cohesion}</span> zum Einsatz, der die Ausgaben neu formatiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 72</div><div class="codeline">Durch diesen werden die Ausgaben gruppiert, und erst nach einen vollständigen Kompiliervorgang eines Pakets nacheinander ausgegeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 73</div><div class="codeline">Dies ermöglicht es, aufgetretene Fehler einfacher auf ein bestimmtes Paket zurückführen zu können, ohne das gesamte Log zu durchsuchen.</div><div class="clear"></div>
|
|
<div class="linenb"> 74</div><div class="codeline">Hierbei ist es hilfreich, dass die verbleibenden <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Dombildervorgänge] (4455) [lt:de:GERMAN_SPELLER_RULE]">Kompiliervorgänge</span> abgebrochen werden, falls der Kompiliervorgang eines Pakets fehlschlägt.</div><div class="clear"></div>
|
|
<div class="linenb"> 75</div><div class="codeline">Dadurch befindet sich der Fehler immer im letzten Paket der Ausgabe, da alle anderen Prozesse abgebrochen und nicht ausgegeben werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 76</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 77</div><div class="codeline"><span class="keyword1">\section</span>{Entwicklungsumgebung}</div><div class="clear"></div>
|
|
<div class="linenb"> 78</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 79</div><div class="codeline">Ein Texteditor ist für das Schreiben von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [OS-Pancakes, OS-Bukkake, OS-Packauges, OS-Packwagen, OS-Packadels] (4745) [lt:de:GERMAN_SPELLER_RULE]">ROS-Packages</span> ausreichend und bietet bei der Arbeit mit Containern sogar einen großen Vorteil.</div><div class="clear"></div>
|
|
<div class="linenb"> 80</div><div class="codeline">Das Editieren von Dateien ist mit einem Texteditor auch von außerhalb des Containers möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 81</div><div class="codeline">Jedoch besitzt ein Texteditor nur wenige Funktionen einer vollständigen Entwicklungsumgebung, die den Prozess der Softwareentwicklung beschleunigen.</div><div class="clear"></div>
|
|
<div class="linenb"> 82</div><div class="codeline">Um diese Funktionen bieten zu können, analysieren Entwicklungsumgebungen den geschriebenen Code.</div><div class="clear"></div>
|
|
<div class="linenb"> 83</div><div class="codeline">Dies geschieht meist auf eine von zwei unterschiedlichen Weisen.</div><div class="clear"></div>
|
|
<div class="linenb"> 84</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 85</div><div class="codeline">Die Entwicklungsumgebung kann eine interne Repräsentation des geschriebenen Codes generieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 86</div><div class="codeline">Diese Repräsentation kann genutzt werden, um die implementierten Funktionen der Entwicklungsumgebung bereitzustellen.</div><div class="clear"></div>
|
|
<div class="linenb"> 87</div><div class="codeline">Um dies zu erreichen, muss für jede unterstützte Sprache Code geschrieben werden, der in die Entwicklungsumgebung integriert wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 88</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 89</div><div class="codeline">Als Alternative existiert das ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Langtage, Langmache, Langlage, Längsachse, Langsame, Hanglage, Langsache, Landtage, Banktage, Langrache, Languste, Danktage, Langwagen, Klanglage, Langbäche, Langgage, Danksage, Langsage, Landgänge, Langlege] (5621) [lt:de:GERMAN_SPELLER_RULE]">Language</span> Server <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Protokoll, Protozoon, Protokolle, Protokolls, Protozoen, Protozoons] (5637) [lt:de:GERMAN_SPELLER_RULE]">Protocol</span>'', kurz LSP \cite{lsp}, dass eine Schnittstelle in Form eines <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [JSON-PC, JSON-RFC, JSON-RPG, JSON-RPM, JSON-RTC] (5701) [lt:de:GERMAN_SPELLER_RULE]">JSON-RPC</span> Protokolls zur Verfügung stellt, um Informationen über den Code an die Entwicklungsumgebung zu übergeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 90</div><div class="codeline">Dies erlaubt einer Entwicklungsumgebung, nur noch den benötigten Server der Sprache zu starten, um Informationen über den Code in einem standardisierten Protokoll zu erhalten.</div><div class="clear"></div>
|
|
<div class="linenb"> 91</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 92</div><div class="codeline">Der große Vorteil des LSP ist, dass eine Entwicklungsumgebung alle Funktionen der Programmiersprache vollständig unterstützt, solange das Protokoll vollständig implementiert wurde und ein entsprechender Server für die Sprache existiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 93</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 94</div><div class="codeline">Bestimmte Funktionen, die beim Design des LSP nicht bedacht wurden, können einfacher in einer internen Implementation umgesetzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 95</div><div class="codeline">Deswegen besitzen Entwicklungsumgebungen mit interner Coderepräsentation häufig mehr Funktionen, spezialisieren sich jedoch auf bestimmte Sprachen.</div><div class="clear"></div>
|
|
<div class="linenb"> 96</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 97</div><div class="codeline">In diesem Projekt wurden mehrere Entwicklungsumgebungen mit den jeweils unterschiedlichen Verfahren eingesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 98</div><div class="codeline">Um diese mit dem Docker-Container verwenden zu können, müssen diese Umgebungen die Entwicklung auf entfernten Systemen unterstützten, da der Container vom ausführenden System getrennt ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 99</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 100</div><div class="codeline">Um dies zu ermöglichen, wird ein Teil der Entwicklungsumgebung im Container ausgeführt, um mit dem inneren Kontext der Maschine arbeiten zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 101</div><div class="codeline">Dazu wird beim Start einer Verbindung zu einem entfernten System dieser Server auf das Zielsystem übertragen und gestartet.</div><div class="clear"></div>
|
|
<div class="linenb"> 102</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 103</div><div class="codeline">Die anfängliche Entwicklung wurde mit <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Zugarm] (7129) [lt:de:GERMAN_SPELLER_RULE]">PyCharm</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Union, Klon, Lyon, Kein, Leon, Klein, Ceylon, Orion, Albion, Spion, Zion, Rayon, Anion, Alison, Camion, Canon, Clean, Chiton, Knien, Codon] (7141) [lt:de:GERMAN_SPELLER_RULE]">CLion</span> durchgeführt, da diese durch ihre interne Codeanalyse die ROS-Umgebung ohne Konfiguration nutzen konnten.</div><div class="clear"></div>
|
|
<div class="linenb"> 104</div><div class="codeline">Jedoch sind diese Umgebungen sehr ressourcenintensiv, was die gleichzeitige Ausführung erheblich verlangsamt.</div><div class="clear"></div>
|
|
<div class="linenb"> 105</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 106</div><div class="codeline">Daher wurde später eine Entwicklungsumgebung mit <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [LÖSS-Unterstützung] (7413) [lt:de:GERMAN_SPELLER_RULE]">LSP-Unterstützung</span>, in diesem Fall <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Lanze, Labe, Lacke, Lable, Lübke, Labre, Lanke, Labte, Lappe, Lage, Lange, Ganze, Habe, Länge, Lebte, Marke, Linke, Cape, Lande, Lobte] (7447) [lt:de:GERMAN_SPELLER_RULE]">Lapce</span> (siehe Abbildung \ref{lapce}), verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 107</div><div class="codeline">Der dafür notwendige <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [LSD-Server, DSP-Server, LSV-Server, ISP-Server, LSI-Server] (7506) [lt:de:GERMAN_SPELLER_RULE]">LSP-Server</span> wird durch eine Veränderung des <span class="highlight" title="Möglicher Tippfehler gefunden. (7549) [lt:de:GERMAN_SPELLER_RULE]">Buildscripts</span> automatisch im Container installiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 108</div><div class="codeline">Unter Verwendung dieser neuen Server kann <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Lanze, Labe, Lacke, Lable, Lübke, Labre, Lanke, Labte, Lappe, Lage, Lange, Ganze, Habe, Länge, Lebte, Marke, Linke, Cape, Lande, Lobte] (7642) [lt:de:GERMAN_SPELLER_RULE]">Lapce</span> die Codevervollständigung und Codeanalyse wie <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Zugarm] (7694) [lt:de:GERMAN_SPELLER_RULE]">PyCharm</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Union, Klon, Lyon, Kein, Leon, Klein, Ceylon, Orion, Albion, Spion, Zion, Rayon, Anion, Alison, Camion, Canon, Clean, Chiton, Knien, Codon] (7706) [lt:de:GERMAN_SPELLER_RULE]">CLion</span> durchführen.</div><div class="clear"></div>
|
|
<div class="linenb"> 109</div><div class="codeline">Gleichzeitig wird der Ressourcenverbrauch gesenkt, da nur ein einziger Editor benötigt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 110</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 111</div><div class="codeline"><span class="keyword2">\begin{figure}</span>[ht]</div><div class="clear"></div>
|
|
<div class="linenb"> 112</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Umsetzung-Lapce}</div><div class="clear"></div>
|
|
<div class="linenb"> 113</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 114</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Entwicklungsumgebung Lapce</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 115</div><div class="codeline"><span class="keyword1">\label</span>{lapce}</div><div class="clear"></div>
|
|
<div class="linenb"> 116</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 117</div><div class="codeline"><span class="highlight-sh" title="If you are writing a research paper, do not force page breaks. [sh:nonp]"></span>\newpage</div><div class="clear"></div>
|
|
<div class="linenb"> 118</div><div class="codeline"><span class="keyword1">\section</span>{Verwendete Datentypen}<span class="keyword1">\label</span>{datatypes}</div><div class="clear"></div>
|
|
<div class="linenb"> 119</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [in] (7842) [lt:de:DE_CASE]">In</span> diesem Projekt werden viele unterschiedliche Datentypen sowohl für den Datenaustausch zwischen Nodes, als auch in der internen Implementation der Nodes verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 120</div><div class="codeline">Diese Datentypen sind größtenteils aus der Programmiersprache C++ bekannt, jedoch werden auch weitere Typen aus eigenem Code oder eingebundenen Bibliotheken verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 121</div><div class="codeline">Um die Verständlichkeit der Dokumentation zu erleichtern, sind die in der Implementation verwendeten Datentypen hier zusammengefasst und beschrieben.</div><div class="clear"></div>
|
|
<div class="linenb"> 122</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (8326) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 123</div><div class="codeline"> <span class="keyword1">\item</span>[Pose]</div><div class="clear"></div>
|
|
<div class="linenb"> 124</div><div class="codeline"> ist einer der häufigsten Datentypen im Umgang mit Gazebo.</div><div class="clear"></div>
|
|
<div class="linenb"> 125</div><div class="codeline"> Der Pose-Datentyp enthält die Information über die Lage und Rotation eines Objekts im Raum.</div><div class="clear"></div>
|
|
<div class="linenb"> 126</div><div class="codeline"> Die Daten werden als relative Werte in Bezug auf das übergeordnete Objekt gespeichert.</div><div class="clear"></div>
|
|
<div class="linenb"> 127</div><div class="codeline"> Objekte wie der Mensch liegen in der Hierarchie der Simulation direkt unter der Welt, deren Pose sich direkt im Nullpunkt und ohne Rotation befindet.</div><div class="clear"></div>
|
|
<div class="linenb"> 128</div><div class="codeline"> Durch diesen Umstand sind die Koordinaten des Menschen absolut, da sie nicht durch die Welt verschoben und rotiert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 129</div><div class="codeline"> <span class="keyword1">\item</span>[Area]</div><div class="clear"></div>
|
|
<div class="linenb"> 130</div><div class="codeline"> ist eine Datenstruktur mit einem Vektor an Positionen, die eine Zone im zweidimensionalen Raum definieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 131</div><div class="codeline"> Jede Position ist eine einfache Datenstruktur aus 2 Gleitkommazahlen, die den X- und Y-Koordinaten der Position entsprechen.</div><div class="clear"></div>
|
|
<div class="linenb"> 132</div><div class="codeline"> Der Verwendungszweck dieser Struktur ist die einfache Definition von Zonen, die für Positionsgenerierungen und Positionsabfragen genutzt werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 133</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (9269) [lt:de:GERMAN_SPELLER_RULE]">ActorPluginState</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 134</div><div class="codeline"> definiert 4 Zustände, die das ActorPlugin annehmen kann. Diese 4 Werte sind SETUP, IDLE, MOVEMENT und ANIMATION.</div><div class="clear"></div>
|
|
<div class="linenb"> 135</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Feedback Message] (9405) [lt:de:GERMAN_SPELLER_RULE]">FeedbackMessage</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 136</div><div class="codeline"> beschreibt die erste der beiden MessageQueue-Nachrichten, die vom ActorPlugin an den ActorServer gesendet wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 137</div><div class="codeline"> In dieser Struktur befindet sich der aktuelle Plugin-Zustand als \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [statt, späte, stete, starte, staute, satte, skate, Stade, stabe, stabte, statte, staue, stakte, hatte, Stadt, später, setzte, stand, starb, stark] (9603) [lt:de:GERMAN_SPELLER_RULE]">state}</span> Parameter vom Typ <span class="highlight" title="Möglicher Tippfehler gefunden. (9627) [lt:de:GERMAN_SPELLER_RULE]"></span>ActorPluginState</div><div class="clear"></div>
|
|
<div class="linenb"> 138</div><div class="codeline"> und außerdem ein \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Progress, progressiv, Eurogress, Progresse] (9663) [lt:de:GERMAN_SPELLER_RULE]">progress}</span> Parameter in Form einer Gleitkommazahl, die den Fortschritt der aktuellen Aktion angibt.</div><div class="clear"></div>
|
|
<div class="linenb"> 139</div><div class="codeline"> Um bei Bewegungen die aktuelle Position des Menschen zu erhalten, ist zusätzlich die aktuelle Pose des Modells im Parameter \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [kurrent, zurrend, gurrend, karrend, kurrente, kurvend, kürzend, murrend, surrend, zerrend, zurren, zurrende, zürnend, kurzen, zurzeit, korrekt, führend, kürzen, dürren, küren] (9887) [lt:de:GERMAN_SPELLER_RULE]">current}</span> enthalten.</div><div class="clear"></div>
|
|
<div class="linenb"> 140</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Action Message, Aktionärssage, Aktionssage] (9909) [lt:de:GERMAN_SPELLER_RULE]">ActionMessage</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 141</div><div class="codeline"> ist die zweite Nachricht, die über die zweite MessageQueue vom ActorServer an das ActorPlugin gesendet wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 142</div><div class="codeline"> Wie in der <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Feedback Message] (10048) [lt:de:GERMAN_SPELLER_RULE]">FeedbackMessage</span> ist ein \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [statt, späte, stete, starte, staute, satte, skate, Stade, stabe, stabte, statte, staue, stakte, hatte, Stadt, später, setzte, stand, starb, stark] (10072) [lt:de:GERMAN_SPELLER_RULE]">state}</span> Parameter vom selben Typ enthalten, jedoch dient dieser hier als Vorgabe für den nächsten State.</div><div class="clear"></div>
|
|
<div class="linenb"> 143</div><div class="codeline"> Ein \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (10181) [lt:de:GERMAN_SPELLER_RULE]">animationName}</span> Parameter wird als <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [gar-Array, gab-Array, zwar-Array, klar-Array, Schar-Array] (10214) [lt:de:GERMAN_SPELLER_RULE]">char-Array</span> mit einer maximalen Länge von 255 Zeichen übergeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 144</div><div class="codeline"> Dieser bestimmt später die Animation, die je nach <span class="highlight" title="Möglicher Tippfehler gefunden. (10330) [lt:de:GERMAN_SPELLER_RULE]">ActorPluginState</span> während einer Bewegung oder Animation ausgeführt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 145</div><div class="codeline"> Der \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (10408) [lt:de:GERMAN_SPELLER_RULE]">animationSpeed}</span> Parameter beschreibt entweder die Abspielgeschwindigkeit der Animation, oder die zurückgelegte Distanz pro Animationsdurchlauf.</div><div class="clear"></div>
|
|
<div class="linenb"> 146</div><div class="codeline"> <span class="highlight" title="Dieses Wort kommt in einem nahe gelegenen vorherigen Satz bereits vor. Verwenden Sie ein Synonym, um Ihren Text abwechslungsreicher zu gestalten, außer die Wiederholung ist beabsichtigt.. Suggestions: [Zudem, Obendrein, Überdies, Zusätzlich, Ebenso] (10553) [lt:de:DE_REPEATEDWORDS]">Außerdem</span> wird im Falle einer Bewegung der Parameter \code{target} vom Typ Pose verwendet, um die Endposition und Rotation des Actors zu bestimmen.</div><div class="clear"></div>
|
|
<div class="linenb"> 147</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (10693) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 148</div><div class="codeline"><span class="keyword1">\section</span>{Simulationswelt}</div><div class="clear"></div>
|
|
<div class="linenb"> 149</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (10721) [lt:de:DE_CASE]">Die</span> Definition aller Simulationselemente erfolgt im Paket \code{ign_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [World, wollt, wollte, vorl., vorlag, vorlud, wird, vorlas, vor, vorlade, wohl, vorlog, wirkt, vorlädt, womit, vorlüde, sorgt, vorm, voll, volle, Worlds, voran, vorne, Bord, Ford, Horst, Lord, Mord] (10783) [lt:de:GERMAN_SPELLER_RULE]">world}</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 150</div><div class="codeline">In diesem Paket sind sowohl die Geometrien der Welt, aber auch die benötigten Dateien zum Starten der Simulation enthalten.</div><div class="clear"></div>
|
|
<div class="linenb"> 151</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 152</div><div class="codeline">Diese Dateien enthalten zum Beispiel die Definition des virtuellen Raumes, in dem die Simulation der Mensch-Roboter-Interaktion abläuft.</div><div class="clear"></div>
|
|
<div class="linenb"> 153</div><div class="codeline">Für diesen Raum wurde ein Raumplan erstellt, der alle benötigten Bereiche für die Szenarien besitzt (Abbildung \ref{room-plan}).</div><div class="clear"></div>
|
|
<div class="linenb"> 154</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 155</div><div class="codeline">Zuerst wird ein Stellplatz für den Roboter benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 156</div><div class="codeline">Dieser sollte an einer Ecke des Raumes positioniert werden, was zu höheren <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Verfahr Geschwindigkeiten, Vorführgeschwindigkeiten] (11296) [lt:de:GERMAN_SPELLER_RULE]">Verfahrgeschwindigkeiten</span> führt.</div><div class="clear"></div>
|
|
<div class="linenb"> 157</div><div class="codeline">Das ist durch die dynamische Verfahrgeschwindigkeit bedingt, die bei geringerer Distanz zum Menschen abnimmt.</div><div class="clear"></div>
|
|
<div class="linenb"> 158</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 159</div><div class="codeline">Des Weiteren werden eine Arbeits- und Lagerstätte für den Menschen benötigt, die in den Szenarien genutzt werden sollen.</div><div class="clear"></div>
|
|
<div class="linenb"> 160</div><div class="codeline">Im Koexistenzszenario soll der Mensch nur an diesen Stellen seine Arbeit verrichten, sich jedoch seltener dem Roboter nähern, um dessen Fortschritt zu begutachten.</div><div class="clear"></div>
|
|
<div class="linenb"> 161</div><div class="codeline">Die Lagerstätte soll im Kooperationsszenario neben der Arbeit des Menschen auch für die fehlerhaften Teile verwendet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 162</div><div class="codeline">Diese Teile werden durch den Roboter aussortiert und durch den Menschen in das Lager verbracht.</div><div class="clear"></div>
|
|
<div class="linenb"> 163</div><div class="codeline">Eine Nutzung der Arbeits- und Lagerstätte im Kollaborationsszenario ist nicht geplant, da der Mensch den Roboter überwachen und dessen Fehler korrigieren soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 164</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 165</div><div class="codeline">Der so geplante Raum wurde in Blender modelliert und als Datei im<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [.pdf-Format, Ast-Format, Asyl-Format, Ost-Format] (12172) [lt:de:GERMAN_SPELLER_RULE]">.s</span>t</span>l-Format</span> exportiert, um sie in die Welt einbinden zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 166</div><div class="codeline">Das Resultat des Exports ist in Abbildung \ref{room-finished} dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 167</div><div class="codeline">Für das Kooperationsszenario wurde ein Förderband erstellt, das nur in diesem Szenario dem Raum hinzugefügt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 168</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 169</div><div class="codeline">Der so erstellte Raum wird in einer<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Ast-Datei, Ost-Datei] (12444) [lt:de:GERMAN_SPELLER_RULE]">.s</span>d</span>f-Datei</span> als Modell referenziert, um diesen später in die Simulation einbinden zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 170</div><div class="codeline">Das Förderband erhält ein eigenes Modell in einer weiteren Datei, die zur Laufzeit in die Simulation geladen wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 171</div><div class="codeline">Für beide wird, wie später auch für den Roboter selbst, das Paket \code{ros_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [es, gab, km, gut, gar, kW, kg, gen, kHz, Hz, kJ, kN, aß, geh, gib, IgG, chi, kt, chic, gäb] (12721) [lt:de:GERMAN_SPELLER_RULE]">gz</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [SIM, im, sie, zum, Jim, Kim, Tim, Wim, zig, die, in, ist, mit, dem, ein, sich, zu, am, bis, sind] (12724) [lt:de:GERMAN_SPELLER_RULE]">sim}</span> verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 172</div><div class="codeline">Dieses veranlasst mit dem \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [kreide-Programm, Geräte-Programm, Kreide-Programm, Kräfte-Programm] (12765) [lt:de:GERMAN_SPELLER_RULE]">create}-Programm</span> das Erstellen der übergebenen Datenstruktur in Gazebo.</div><div class="clear"></div>
|
|
<div class="linenb"> 173</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 174</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 175</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 176</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Umsetzung-Welt-Plan.drawio}</div><div class="clear"></div>
|
|
<div class="linenb"> 177</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 178</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Geplanter Raum</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 179</div><div class="codeline"><span class="keyword1">\label</span>{room-plan}</div><div class="clear"></div>
|
|
<div class="linenb"> 180</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 181</div><div class="codeline">\hspace{.09\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 182</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 183</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Umsetzung-Welt-Blender}</div><div class="clear"></div>
|
|
<div class="linenb"> 184</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 185</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Umsetzung in Blender</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 186</div><div class="codeline"><span class="keyword1">\label</span>{room-finished}</div><div class="clear"></div>
|
|
<div class="linenb"> 187</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 188</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 189</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 190</div><div class="codeline"><span class="keyword1">\section</span>{Mensch}</div><div class="clear"></div>
|
|
<div class="linenb"> 191</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 192</div><div class="codeline">Der Mensch soll in der Simulation verschiedene Aufgaben ausführen, die durch Behavior Trees definiert sind.</div><div class="clear"></div>
|
|
<div class="linenb"> 193</div><div class="codeline">Um diese Aufgaben visuell darzustellen, werden verschiedene Animationen für ein Modell des Menschen benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 194</div><div class="codeline">Ein Modell eines Menschen ist bereits in Gazebo integriert, welches als sogenannter ``Actor'' durch vorher definierte Pfade bewegt werden kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 195</div><div class="codeline">Die für das Modell existierenden Animationen müssen um die gewünschten Animationen erweitert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 196</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 197</div><div class="codeline">Um diese Animationen eines Modells in Bewegungen und Verhalten umzuwandeln, muss das Verhalten während der Simulation gesteuert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 198</div><div class="codeline">Dies erfolgt über das ActorPlugin, welches in Gazebo ausgeführt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 199</div><div class="codeline">Mit diesem Plugin kann der Mensch in der Simulation gesteuert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 200</div><div class="codeline">Da eine Anbindung an ROS in Gazebo nicht möglich ist, kommuniziert das ActorPlugin mit dem ActorServer über <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Message Queues] (13694) [lt:de:GERMAN_SPELLER_RULE]">MessageQueues</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 201</div><div class="codeline">Dieser ActorServer übersetzt Nachrichten und Anfragen zwischen ROS und der MessageQueue des ActorPlugins.</div><div class="clear"></div>
|
|
<div class="linenb"> 202</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 203</div><div class="codeline"><span class="keyword1">\subsection</span>{Modellierung}</div><div class="clear"></div>
|
|
<div class="linenb"> 204</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [um] (13829) [lt:de:DE_CASE]">Um</span> neue Animationen für den Menschen in der Simulation erstellen zu können, muss ein Modell für diesen erstellt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 205</div><div class="codeline">Dafür wurde eine der bereits modellierten Laufanimationen von Gazebo in Blender geöffnet und bearbeitet.</div><div class="clear"></div>
|
|
<div class="linenb"> 206</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 207</div><div class="codeline">Eine Kopie des Menschenmodells aus der Laufanimation dient als Grundlage für das neue Modell.</div><div class="clear"></div>
|
|
<div class="linenb"> 208</div><div class="codeline">Dieses Modell ist durch die interne Geometrie, zum Beispiel zwischen Körper und Pullover der Person, nur schlecht für Animationen geeignet.</div><div class="clear"></div>
|
|
<div class="linenb"> 209</div><div class="codeline">Die interne Geometrie bildet ``Falten'' im Modell, die während der Animation hervortreten können, was zu unerwarteten Artefakten führen kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 210</div><div class="codeline">Solche Artefakte entstehen durch unterschiedliche Verschiebung der Strukturen, die aus dem inneren des ursprünglichen Modells hervortreten, wenn es bewegt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 211</div><div class="codeline">Beim kopierten Modell kam es häufig zum Hervortreten der Haut unter dem Rollkragen und der Hose.</div><div class="clear"></div>
|
|
<div class="linenb"> 212</div><div class="codeline">Diese Artefakte wurden durch die Vereinfachung des Modells an den entsprechenden Stellen behoben.</div><div class="clear"></div>
|
|
<div class="linenb"> 213</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 214</div><div class="codeline">An diesem Punkt könnte die Animation des Modells mit dem importierten Skelett beginnen, jedoch fehlen diesem viele Knochen, wie zum Beispiel für Finger und Zehen, aber auch Rotationsknochen für Arme und Beine.</div><div class="clear"></div>
|
|
<div class="linenb"> 215</div><div class="codeline">Diese fehlenden Knochen werden für einige der gewünschten Animationen benötigt und müssten hinzugefügt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 216</div><div class="codeline">Da das importierte Skelett noch andere Fehler aufwies, wurde es verworfen.</div><div class="clear"></div>
|
|
<div class="linenb"> 217</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 218</div><div class="codeline">Um ein neues, passendes Skelett zu erstellen, wurde mit dem ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Rigi, Rigide, Rigips, Rigid] (15247) [lt:de:GERMAN_SPELLER_RULE]">Rigify</span>'' \cite{rigify}-Plugin ein standardisiertes Menschenskelett generiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 219</div><div class="codeline">Dieses neue Skelett kann an das bereits vorhandene Modell angepasst werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 220</div><div class="codeline">Um eine bessere Übersicht zu ermöglichen, sollten zuerst alle nicht benötigten Skelettteile, wie zum Beispiel für Gesichtsanimationen, entfernt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 221</div><div class="codeline">Danach müssen die Knochen durch Verschiebung und Skalierung an die richtigen Positionen im Modell gebracht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 222</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 223</div><div class="codeline">Dabei muss auf die Ausrichtung der Knochen zueinander geachtet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 224</div><div class="codeline">Das Kreuzprodukt der Vektoren beider Knochensegmente bestimmt die Richtung der Beugeachse, die sich im Verbindungspunkt beider Knochen befindet.</div><div class="clear"></div>
|
|
<div class="linenb"> 225</div><div class="codeline">Ist diese nicht richtig ausgerichtet, zum Beispiel wenn beide Knochen auf einer Gerade liegen, bewegen sich Gelenke bei der Verwendung von inverser Kinematik zur Positionsvorgabe falsch.</div><div class="clear"></div>
|
|
<div class="linenb"> 226</div><div class="codeline">Der Grund dafür ist das Kreuzprodukt, dass im oben genannten Fall ein Nullvektor ist, wodurch keine Beugeachse bestimmt werden kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 227</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 228</div><div class="codeline">Deshalb muss bei der Platzierung darauf geachtet werden, dass der Startpunkt A des ersten und der Endpunkt C des zweiten Knochens auf einer Gerade liegen.</div><div class="clear"></div>
|
|
<div class="linenb"> 229</div><div class="codeline">Der Verbindungspunkt B der beiden Knochen wird vorerst auf dieser Gerade platziert.</div><div class="clear"></div>
|
|
<div class="linenb"> 230</div><div class="codeline">Dieser muss senkrecht zu dieser Gerade und der gewünschten Beugeachse verschoben werden, wie in Abbildung \ref{bend} gezeigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 231</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 232</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 233</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 234</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Umsetzung-Person-Bones}</div><div class="clear"></div>
|
|
<div class="linenb"> 235</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 236</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Knochen des Modells</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 237</div><div class="codeline"><span class="keyword1">\label</span>{person-bones}</div><div class="clear"></div>
|
|
<div class="linenb"> 238</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 239</div><div class="codeline">\hspace{.09\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 240</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 241</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Umsetzung-Person-Armature}</div><div class="clear"></div>
|
|
<div class="linenb"> 242</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 243</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Armaturen des Modells</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 244</div><div class="codeline"><span class="keyword1">\label</span>{person-armature}</div><div class="clear"></div>
|
|
<div class="linenb"> 245</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 246</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 247</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 248</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 249</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=.5\textwidth]{img/MA-bend-axis}</div><div class="clear"></div>
|
|
<div class="linenb"> 250</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 251</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Visualisierung der generierten Beugeachse</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 252</div><div class="codeline"><span class="keyword1">\label</span>{bend}</div><div class="clear"></div>
|
|
<div class="linenb"> 253</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 254</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 255</div><div class="codeline">Das neu erstellte Skelett ist in Abbildung \ref{person-bones} visualisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 256</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 257</div><div class="codeline">Um eine bessere Verformung bei der Bewegung von Knochen zu erreichen, wird das sogenannte ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [weicht, weiht, weichst, zeigt, leicht, weist, weit, reicht, wirkt, weichen, wiegt, zweigt, neigt, weich, weiche, weigert, weihte, weckt, weht, weicher] (16707) [lt:de:GERMAN_SPELLER_RULE]">weight</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Feindin, Feinzink, Beinling, Beinring, Raisting, Weintank, beinig, reinging, reinhing, beibring, reindenk, reintunk, reinwink] (16714) [lt:de:GERMAN_SPELLER_RULE]">painting</span>'' eingesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 258</div><div class="codeline">Hierfür werden für jeden Knochen entweder automatisch oder manuell Teile des <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bestes, Messe, Messen, Messer, Festes, Moses, Meines, Jähes, Meeres, Hesses, Mäzen, Käses, Nestes, Mähen, Mäßiges, Mastes, Zähes, Messers, Mästen, Mieses] (16814) [lt:de:GERMAN_SPELLER_RULE]">Meshes</span> mit Gewichten versehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 259</div><div class="codeline">Je höher die Wichtung, desto stärker ist die Verformung an dieser Stelle, wenn der Knochen bewegt oder skaliert wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 260</div><div class="codeline">Die so erstellten Knochen werden auch als deformierende Knochen bezeichnet, da deren Bewegung das Modell beeinflusst.</div><div class="clear"></div>
|
|
<div class="linenb"> 261</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 262</div><div class="codeline">Da das Animieren aller Knochen einzeln sehr zeitaufwändig ist, werden diese in Gruppen zusammengefasst.</div><div class="clear"></div>
|
|
<div class="linenb"> 263</div><div class="codeline">Hierfür werden in Blender sogenannte <span class="highlight" title="Möglicher Tippfehler gefunden. (17223) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> eingesetzt, die Knochen automatisch durch eingestellte Bedingungen positionieren können.</div><div class="clear"></div>
|
|
<div class="linenb"> 264</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 265</div><div class="codeline">Durch das Verwenden von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Rigi, Rigide, Rigips, Rigid] (17349) [lt:de:GERMAN_SPELLER_RULE]">Rigify</span> und einem standardisierten Skelett ist die automatische Generierung der <span class="highlight" title="Möglicher Tippfehler gefunden. (17428) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 266</div><div class="codeline">Hierfür können die in dem Skelett enthaltenen Informationen vom Plugin genutzt werden, um alle häufig genutzten <span class="highlight" title="Möglicher Tippfehler gefunden. (17561) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> automatisch zu generieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 267</div><div class="codeline">In diesem Schritt werden auch neue Knochen eingefügt, die das Skelett durch <span class="highlight" title="Möglicher Tippfehler gefunden. (17676) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> beeinflussen.</div><div class="clear"></div>
|
|
<div class="linenb"> 268</div><div class="codeline">Das neue Animationsmodell, visualisiert in Abbildung \ref{person-armature}, kann jetzt für Animationen genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 269</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 270</div><div class="codeline">Hierfür stehen mehrere Knochengruppen zur Verfügung, die typische Animationsmethoden abdecken.</div><div class="clear"></div>
|
|
<div class="linenb"> 271</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 272</div><div class="codeline">In der Farbe Rot sind im Modell (siehe Abbildung \ref{person-armature}) Knochen markiert, die für inverse Kinematik genutzt werden, in diesem Fall Arme und Beine.</div><div class="clear"></div>
|
|
<div class="linenb"> 273</div><div class="codeline">Die Knochen geben die gewünschte Ausrichtung und die Zielposition des untersten Knochens vor.</div><div class="clear"></div>
|
|
<div class="linenb"> 274</div><div class="codeline">Aus diesen Angaben wird die wirkliche Position der Knochen berechnet, die durch die <span class="highlight" title="Möglicher Tippfehler gefunden. (18219) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> automatisch auf die entsprechenden Knochen übertragen wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 275</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 276</div><div class="codeline">Orange gefärbte Knochen werden für generelle Einstellungen von Fingern, Handfläche und Zehen genutzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 277</div><div class="codeline">Die Handfläche kann so gekrümmt werden, wodurch sich alle Finger mit der Krümmung mitbewegen.</div><div class="clear"></div>
|
|
<div class="linenb"> 278</div><div class="codeline">Ein Abknicken aller Zehen kann durch die Rotation des Hilfsknochens an den Zehen erreicht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 279</div><div class="codeline">Die Finger können auch einzeln rotiert und eingeknickt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 280</div><div class="codeline">Hierbei wird der Grad des Einknickens nicht durch eine Rotation des Knochens ausgedrückt, da diese bereits durch die Rotation des Fingers selbst benutzt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 281</div><div class="codeline">Anstatt der Rotation wird die Skalierung des Knochens eingesetzt, wobei ein kleinerer Knochen eine stärkere Knickung aller Fingerglieder bewirkt.</div><div class="clear"></div>
|
|
<div class="linenb"> 282</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 283</div><div class="codeline">Die gelben Knochen beeinflussen die generelle Pose des Modells.</div><div class="clear"></div>
|
|
<div class="linenb"> 284</div><div class="codeline">Der Quader in der Hüfte gibt die gewünschte Höhe des Modells vor, die auch für die inverse Kinematik benutzt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 285</div><div class="codeline">Die anderen Knochen beeinflussen die Rotation des Beckens, der Wirbelsäule, der Schultern und des Kopfes.</div><div class="clear"></div>
|
|
<div class="linenb"> 286</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 287</div><div class="codeline">Das hier erstellte, verbesserte <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Rigi-Skelett, Rigide-Skelett, Rigips-Skelett, Rigid-Skelett] (19273) [lt:de:GERMAN_SPELLER_RULE]">Rigify-Skelett</span> kann durch den Einsatz der neuen <span class="highlight" title="Möglicher Tippfehler gefunden. (19321) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> einfacher animiert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 288</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 289</div><div class="codeline"><span class="keyword1">\subsection</span>{Erstellen von Animationen}</div><div class="clear"></div>
|
|
<div class="linenb"> 290</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 291</div><div class="codeline">Animationen werden in Blender über sogenannte Keyframes erstellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 292</div><div class="codeline">Ein Keyframe stellt dabei einen spezifischen Zeitpunkt in der Animation dar.</div><div class="clear"></div>
|
|
<div class="linenb"> 293</div><div class="codeline">Jedem Keyframe kann eine beliebige Anzahl von Knochenpositionen zugeordnet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 294</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 295</div><div class="codeline">Eine Animation entsteht, sobald mehrere Keyframes auf der Zeitachse existieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 296</div><div class="codeline">Alle zugeordneten Positionen werden zwischen beiden Keyframes durch auswählbare Kurven interpoliert.</div><div class="clear"></div>
|
|
<div class="linenb"> 297</div><div class="codeline">In Abbildung \ref{actorinterpolate} wird dieser Prozess am Beispiel der ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [los, Dow, log, Löw, wow, luv, Flow, von, so, vom, vor, wo, zog, New, Sohn, Tod, hohe, lag, ob, wohl] (19849) [lt:de:GERMAN_SPELLER_RULE]">low</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [von, so, vom, vor, da, de, wo, zog, Sohn, Tod, du, hohe, wohl, John, Rom, bot, sog, tun, Hof, Tor] (19853) [lt:de:GERMAN_SPELLER_RULE]">to</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Standing, Titanding, ständig, Uranding, ständisch, Etatding, standen, Kranding, ständige, ständische, sandig, ständen, Branding, Standring, Standding, stündig] (19856) [lt:de:GERMAN_SPELLER_RULE]">standing</span>''-Animation dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 298</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 299</div><div class="codeline">Für die neuen Animationen werden die erstellten Steuerknochen verwendet, welche die später in Gazebo sichtbaren Knochen über <span class="highlight" title="Möglicher Tippfehler gefunden. (20016) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> beeinflussen.</div><div class="clear"></div>
|
|
<div class="linenb"> 300</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 301</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 302</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 303</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.25\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 304</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Animation-Human-Start}</div><div class="clear"></div>
|
|
<div class="linenb"> 305</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 306</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.25\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 307</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Animation-Human-Interpolated}</div><div class="clear"></div>
|
|
<div class="linenb"> 308</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 309</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.25\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 310</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Animation-Human-End}</div><div class="clear"></div>
|
|
<div class="linenb"> 311</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 312</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Erste und letzte Keyframes einer Animation mit interpoliertem Zwischenbild</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 313</div><div class="codeline"><span class="keyword1">\label</span>{actorinterpolate}</div><div class="clear"></div>
|
|
<div class="linenb"> 314</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 315</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 316</div><div class="codeline"><span class="keyword1">\subsection</span>{Export der Modellanimationen}</div><div class="clear"></div>
|
|
<div class="linenb"> 317</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 318</div><div class="codeline">Die Verwendung des hier erstellten, verbesserten und animierten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Riga, Riss, Ries, Rings, Gigs, Rigg, Ritz, Brigs, Riggs, Eichs, Rigi, Wyks, Rigas, Piks, Wichs, Sich, Bis, Rios, Nicht, Ins] (20138) [lt:de:GERMAN_SPELLER_RULE]">Rigs</span> ist in vielen <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Grafikeigenes] (20157) [lt:de:GERMAN_SPELLER_RULE]">Grafikengines</span>, darunter auch Gazebo, noch nicht möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 319</div><div class="codeline">Es bedarf einer zusätzlichen Anpassung des Skeletts, bei der die neu erstellte Knochenstruktur aufgelöst wird, da Gazebo keine <span class="highlight" title="Möglicher Tippfehler gefunden. (20341) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> unterstützt.</div><div class="clear"></div>
|
|
<div class="linenb"> 320</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 321</div><div class="codeline">Um aus einem existierenden, vollständig verbundenen Skelett ein Skelett ohne verbundene Knochen zu extrahieren, existiert ein weiteres Plugin mit dem Namen ``Game_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Sich, Mich, Rio, Dich, Reg, Riga, Wich, Roch, Rigg, Eich, Rigi, Pik, Aich, Brig, Gig, Ring, Ruch, Wyk, Urig, Zig] (20530) [lt:de:GERMAN_SPELLER_RULE]">Rig</span>_Tools'' \cite{gamerig}.</div><div class="clear"></div>
|
|
<div class="linenb"> 322</div><div class="codeline">Dieses separiert die neuen Steuerknochen wieder vom ursprünglichen Modell, damit in diesem nur noch die deformierenden Knochen enthalten sind.</div><div class="clear"></div>
|
|
<div class="linenb"> 323</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 324</div><div class="codeline">Alle erstellten Animationen der Steuerknochen müssen in direkte Bewegungen der deformierenden Knochen des Modells umgewandelt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 325</div><div class="codeline">Um dies zu erreichen wird der in Abbildung \ref{export-prepare} visualisierte Arbeitsablauf verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 326</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 327</div><div class="codeline">Im ersten Schritt wird das zu exportierende Skelett ausgewählt, um diesem später die neue Animation zuweisen zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 328</div><div class="codeline">Dann muss im zweiten Schritt die gewünschte Animation der Liste der bekannten Animationen hinzugefügt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 329</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 330</div><div class="codeline">Danach muss die durch die <span class="highlight" title="Möglicher Tippfehler gefunden. (21167) [lt:de:GERMAN_SPELLER_RULE]">Constraints</span> abgebildete Animation auf das ausgewählte Skelett übertragen werden, was mit dem ``Bake Action <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Becker, Bäcker, Bäckers, Bäckern, Beckers, Hockey, Bayern, Lager, Bauern, Jäger, Zucker, Bauer, Lagern, Becken, Locker, Bayer, Kickers, Lagers, Dicker] (21274) [lt:de:GERMAN_SPELLER_RULE]">Bakery</span>''-Knopf ausgelöst wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 331</div><div class="codeline">Dabei wird die Position aller deformierenden Knochen zu jedem Zeitpunkt der Animation bestimmt, und in einer neuen Animation mit modifiziertem Namen abgespeichert.</div><div class="clear"></div>
|
|
<div class="linenb"> 332</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 333</div><div class="codeline">Diese neu erstellte Animation kann im vierten Schritt dem ausgewählten Skelett zugewiesen werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 334</div><div class="codeline">Nach dieser Veränderung kann die Animation im <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Kolkata-Format, Collage-Format, Fallada-Format, Zollst-Format, Colgate-Format] (21614) [lt:de:GERMAN_SPELLER_RULE]">Collada-Format</span> exportiert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 335</div><div class="codeline">Dazu muss das visuelle Modell der Selektion hinzugefügt werden, da Gazebo dieses für jede Animation benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 336</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 337</div><div class="codeline">Jetzt kann der Export über die in Blender integrierte Exportoption ausgelöst werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 338</div><div class="codeline">Hierfür müssen die in Abbildung \ref{export-settings} gezeigten Exporteinstellungen verwendet werden, damit Gazebo die exportierte Animation nutzen kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 339</div><div class="codeline">Alle in der Blender-Version 3.5 nicht standardmäßigen Einstellungen wurden dabei durch Punkte hervorgehoben.</div><div class="clear"></div>
|
|
<div class="linenb"> 340</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 341</div><div class="codeline">Zuerst müssen im Reiter ``Main'' die globalen Exporteinstellungen angepasst werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 342</div><div class="codeline">Der markierte Punkt 2. bewirkt, dass nur die vorher ausgewählten Modellteile exportiert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 343</div><div class="codeline">Dies verkleinert das Modell, da alle Steuerknochen von Gazebo nicht verwendet werden können, was die Ladezeit der Simulation verbessert.</div><div class="clear"></div>
|
|
<div class="linenb"> 344</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 345</div><div class="codeline">Die Punkte 3. und 4. bewirken, dass das exportierte Modell die in Gazebo verwendete <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Vorwärts Achse, Vorvertrages, Vorwärtsmache, Vorvertrags, Vorwärtsmachst, Vorverträge, Vorwärtsmachte] (22490) [lt:de:GERMAN_SPELLER_RULE]">Vorwärtsachse</span> erhält.</div><div class="clear"></div>
|
|
<div class="linenb"> 346</div><div class="codeline">In Blender ist Y als <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Vorwärts Achse, Vorvertrages, Vorwärtsmache, Vorvertrags, Vorwärtsmachst, Vorverträge, Vorwärtsmachte] (22533) [lt:de:GERMAN_SPELLER_RULE]">Vorwärtsachse</span> üblich, jedoch verwendet Gazebo die <span class="highlight" title="Bei der Bezeichnung von Achsen des Koordinatensystems wird entgegen sonstigen Regeln der erste Buchstabe kleingeschrieben.. Suggestions: [x-Achse] (22583) [lt:de:SONDERFAELLE]">X-Achse</span> für diesen Zweck.</div><div class="clear"></div>
|
|
<div class="linenb"> 347</div><div class="codeline">Wird diese Modifikation nicht vorgenommen, sind die Modelle um 90 Grad verdreht.</div><div class="clear"></div>
|
|
<div class="linenb"> 348</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 349</div><div class="codeline">Zuletzt muss im mit 5 markierten Animations-Reiter noch eine weitere Einstellung vorgenommen werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 350</div><div class="codeline">Die mit 6 markierte Einstellung bewirkt, dass alle Bewegungen der exportierten Knochen mit gespeichert werden, auch wenn diese sich nicht bewegen.</div><div class="clear"></div>
|
|
<div class="linenb"> 351</div><div class="codeline">Da sich einige Knochen in der Animation in einer konstanten Pose befinden, exportiert Blender diese nicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 352</div><div class="codeline">Dies führt zu Fehlern, falls die Knochen von der Standardposition abweichen.</div><div class="clear"></div>
|
|
<div class="linenb"> 353</div><div class="codeline">Ein solcher Fehler äußert sich in Gazebo durch verdrehte Knochen während der Animation.</div><div class="clear"></div>
|
|
<div class="linenb"> 354</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 355</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 356</div><div class="codeline"><span class="keyword2">\begin{subfigure}</span>[b]{\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 357</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=.5\textwidth]{img/MA-Umsetzung-Animation-Prepare}<span class="comment">%</span></div><div class="clear"></div>
|
|
<div class="linenb"> 358</div><div class="codeline">\hfill</div><div class="clear"></div>
|
|
<div class="linenb"> 359</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=.5\textwidth]{img/MA-Umsetzung-Animation-Prepare2}</div><div class="clear"></div>
|
|
<div class="linenb"> 360</div><div class="codeline"><span class="keyword2">\end{subfigure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 361</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Vorbereitung zum Export mit Game_Rig_Tools</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 362</div><div class="codeline"><span class="keyword1">\label</span>{export-prepare}</div><div class="clear"></div>
|
|
<div class="linenb"> 363</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 364</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 365</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 366</div><div class="codeline"><span class="keyword2">\begin{subfigure}</span>[b]{\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 367</div><div class="codeline"><span class="keyword1">\includegraphics</span>[height=.50\linewidth]{img/MA-Umsetzung-Animation-Save}<span class="comment">%</span></div><div class="clear"></div>
|
|
<div class="linenb"> 368</div><div class="codeline">\hfill</div><div class="clear"></div>
|
|
<div class="linenb"> 369</div><div class="codeline"><span class="keyword1">\includegraphics</span>[height=.50\linewidth]{img/MA-Umsetzung-Animation-Save2}</div><div class="clear"></div>
|
|
<div class="linenb"> 370</div><div class="codeline"><span class="keyword2">\end{subfigure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 371</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Benötigte Exporteinstellungen in Blender</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 372</div><div class="codeline"><span class="keyword1">\label</span>{export-settings}</div><div class="clear"></div>
|
|
<div class="linenb"> 373</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 374</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 375</div><div class="codeline"><span class="keyword1">\subsection</span>{Programmierung}</div><div class="clear"></div>
|
|
<div class="linenb"> 376</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 377</div><div class="codeline">Die von Gazebo verwendete <span class="highlight" title="Möglicher Tippfehler gefunden. (23256) [lt:de:GERMAN_SPELLER_RULE]">Plugininfrastruktur</span> ist ideal, um schnell neue Funktionen in Gazebo zu entwickeln.</div><div class="clear"></div>
|
|
<div class="linenb"> 378</div><div class="codeline">Um dies zu ermöglichen werden beim Start der Simulation zusätzliche Programme in diese eingebunden.</div><div class="clear"></div>
|
|
<div class="linenb"> 379</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 380</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Message Queue}</div><div class="clear"></div>
|
|
<div class="linenb"> 381</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 382</div><div class="codeline">Nach der ersten Implementation des ActorPlugins kam es zu Kollisionen mit \code{ros_control}, die beide \code{rclcpp} zur Kommunikation benutzen.</div><div class="clear"></div>
|
|
<div class="linenb"> 383</div><div class="codeline">Diese Kollisionen führt zu einem Crash, wenn beide Plugins in der Simulation geladen werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 384</div><div class="codeline">Der Crash geschieht, da beide Plugins rclcpp, eine Bibliothek zur Kommunikation mit ROS-Topics, verwenden.</div><div class="clear"></div>
|
|
<div class="linenb"> 385</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 386</div><div class="codeline">In dieser Bibliothek wird eine globale Instanz angelegt, die den Zustand des Kommunikationsprotokolls abbildet.</div><div class="clear"></div>
|
|
<div class="linenb"> 387</div><div class="codeline">Da jedoch von beiden Plugins auf diesen Zustand zugegriffen wird, kommt es zu Problemen, da kein Synchronisationsmechanismus existiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 388</div><div class="codeline">Die dadurch entstehenden gleichzeitigen Zugriffe auf dieselben Ressourcen führen zur Terminierung des Programms.</div><div class="clear"></div>
|
|
<div class="linenb"> 389</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 390</div><div class="codeline">Nachdem die Fehlerursache ermittelt war, stellte sich heraus, das der Konflikt allein durch Modifikation des ActorPlugins nicht aufzulösen ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 391</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 392</div><div class="codeline">Eine Anpassung beider Plugins auf die gemeinsame Nutzung der Bibliothek ist möglich, erfordert aber potenziell weitreichende Neuimplementationen, die zeitlich im Rahmen dieser Arbeit nicht umsetzbar waren.</div><div class="clear"></div>
|
|
<div class="linenb"> 393</div><div class="codeline">Die Nutzung eines separaten Nachrichtendienstes, der keinen globalen Kontext benötigt, ist die sicherste und schnellste Lösung des Problems.</div><div class="clear"></div>
|
|
<div class="linenb"> 394</div><div class="codeline">Eine solche Implementation erfordert jedoch zusätzliche Logik, um die beiden Dienste ineinander übersetzen zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 395</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 396</div><div class="codeline">Die Auswahl eines Dienstes wurde dabei aus einer Reihe an unterschiedlichen Möglichkeiten getroffen.</div><div class="clear"></div>
|
|
<div class="linenb"> 397</div><div class="codeline">Webdienste, wie zum Beispiel <span class="highlight" title="Meinten Sie 'REST-APIs' oder 'REST-API'? Normalerweise wird im Deutschen vor einem Plural-s kein Apostroph gesetzt.. Suggestions: [REST-APIs, REST-API] (24891) [lt:de:PLURAL_APOSTROPH]">REST-API's</span> und Websockets werden von vielen Sprachen nativ unterstützt, was diese universell einsetzbar macht.</div><div class="clear"></div>
|
|
<div class="linenb"> 398</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 399</div><div class="codeline">Eine REST-API hat den Vorteil, dass sie durch fast jede Programmiersprache genutzt werden kann, die das ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Huber, Haben, Heber, Hier, Hype, Habe, Hypes, Her, Hoher, Per, Höher, Oper, Heer, Typen, Weber, Hubert, Leber, Zypern, Heben, Hebel] (25109) [lt:de:GERMAN_SPELLER_RULE]">Hyper</span> Text Transfer <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Protokoll, Protozoon, Protokolle, Protokolls, Protozoen, Protozoons] (25129) [lt:de:GERMAN_SPELLER_RULE]">Protocol</span>'', auch HTTP genannt, unterstützt.</div><div class="clear"></div>
|
|
<div class="linenb"> 400</div><div class="codeline">Das HTTP besitzt jedoch keinen einheitlichen Feedbackmechanismus.</div><div class="clear"></div>
|
|
<div class="linenb"> 401</div><div class="codeline">Dieser müsste entweder durch kontinuierliche Abfragen des aktuellen Status, auch ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Polling, Solling, rolling, Rohling, pling, Kölling, völlig, Holding, billig, wollig, Helling, Höfling, Wollin, Zögling, collin, Bowling, Döbling, Kolping, Sollings, Spooling] (25322) [lt:de:GERMAN_SPELLER_RULE]">polling</span>'' genannt, oder eine lang anhaltende Request realisiert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 402</div><div class="codeline">Eine Verwendung von kontinuierlichen Abfragen ist zwar mit fast jeder Programmiersprache möglich, jedoch ist die Reaktionszeit des Systems an die Antwortzeit des Servers gebunden.</div><div class="clear"></div>
|
|
<div class="linenb"> 403</div><div class="codeline">Der Einsatz einer lang anhaltenden Request umgeht dieses Problem, jedoch müssen der eingesetzte Webserver und der Client diese Funktion unterstützen.</div><div class="clear"></div>
|
|
<div class="linenb"> 404</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 405</div><div class="codeline">Das neuere Websocket-Protokoll \cite{websocket} bieten die Möglichkeit, bidirektional Daten zu übertragen.</div><div class="clear"></div>
|
|
<div class="linenb"> 406</div><div class="codeline">Dadurch können Aktionsanfragen und Feedback auf dem gleichen Kanal übertragen werden, was das Protokoll übersichtlicher macht.</div><div class="clear"></div>
|
|
<div class="linenb"> 407</div><div class="codeline">Beide Technologien basieren auf einem Webserver, der auf einem bestimmten Port des Systems ausgeführt werden muss, was Kollisionen mit anderen Services ermöglicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 408</div><div class="codeline">Die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Postnummer, Wortnummer, Importnummer, Postnummern, Wortnummern, Lotnummer] (26114) [lt:de:GERMAN_SPELLER_RULE]">Portnummer</span> kann zwar geändert werden, ist jedoch nicht einfach mit einer Komponente assoziierbar, was sie zu einer ``magischen Zahl'' macht.</div><div class="clear"></div>
|
|
<div class="linenb"> 409</div><div class="codeline">Dies sorgt für schlechte Lesbarkeit in einem wichtigen Teil des Kontrollflusses.</div><div class="clear"></div>
|
|
<div class="linenb"> 410</div><div class="codeline">Außerdem besitzen beide Technologien durch TCP oder UDP und HTTP relativ großen <span class="highlight" title="Möglicher Tippfehler gefunden. (26416) [lt:de:GERMAN_SPELLER_RULE]">Protokolloverhead</span>, der bei den hohen <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Update raten, Updatebaren] (26453) [lt:de:GERMAN_SPELLER_RULE]">Updateraten</span> der Gazebo-Simulation zu Problemen führen könnte.</div><div class="clear"></div>
|
|
<div class="linenb"> 411</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 412</div><div class="codeline">Eine andere Möglichkeit ist die Nutzung von ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [share, sharen, sparen, scharte, stärkt, scharen, schart, starrt, spare, Chalet, Shares, schare, scharend, skatet, sparend, sparst, starbt, zerred, Khaled, Share] (26562) [lt:de:GERMAN_SPELLER_RULE]">shared</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Memory, Femora] (26569) [lt:de:GERMAN_SPELLER_RULE]">memory</span>'', einem geteilten Speicherbereich zwischen beiden Programmen \cite{shmem}.</div><div class="clear"></div>
|
|
<div class="linenb"> 413</div><div class="codeline">Dieser kann zur bidirektionalen Kommunikation genutzt werden, da beide Programme auf den gleichen Speicherbereich zugreifen können.</div><div class="clear"></div>
|
|
<div class="linenb"> 414</div><div class="codeline">Alle Zugriffe auf den Bereich sind extrem schnell, da sie den Arbeitsspeicher des Systems nie verlassen, was diese Technik ideal zur Datenübertragung zwischen Prozessen macht.</div><div class="clear"></div>
|
|
<div class="linenb"> 415</div><div class="codeline">Durch das Erlauben gleichzeitiger Zugriffe kann es vorkommen, dass beide Programme gleichzeitig versuchen, Änderungen am Speicher vorzunehmen.</div><div class="clear"></div>
|
|
<div class="linenb"> 416</div><div class="codeline">Diese gleichzeitige Modifikation, auch ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [raue, rate, rare, Bake, Gaze, rage, hake, Bäke, Fake, Grace, Lake, Sake, rase, räche, räkel, räkle, Cake, Jake, Pace, Take] (27135) [lt:de:GERMAN_SPELLER_RULE]">race</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Kondition, Dentition, konditional] (27140) [lt:de:GERMAN_SPELLER_RULE]">condition</span>'' genannt, kann zu Fehlern führen, wenn die Zugriffe auf den Bereich nicht kontrolliert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 417</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 418</div><div class="codeline">Die letzte betrachtete Methode ist die Verwendung einer Message Queue.</div><div class="clear"></div>
|
|
<div class="linenb"> 419</div><div class="codeline">Hier wird im Betriebssystem ein Speicherbereich mit bestimmter Größe für den Datenaustausch reserviert.</div><div class="clear"></div>
|
|
<div class="linenb"> 420</div><div class="codeline">Dieser Bereich besitzt ein Identifikationsmerkmal, dass es Anwendungen erlaubt, Zugriff auf diesen zu erlangen.</div><div class="clear"></div>
|
|
<div class="linenb"> 421</div><div class="codeline">Ein Programm kann in diesem Bereich Daten ablegen, die durch andere Programme gelesen und geschrieben werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 422</div><div class="codeline">Die Koordinierung der Zugriffe erfolgt dabei durch das Betriebssystem, was gleichzeitige Zugriffe, wie bei <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [share, sharen, sparen, scharte, stärkt, scharen, schart, starrt, spare, Chalet, Shares, schare, scharend, skatet, sparend, sparst, starbt, zerred, Khaled, Share] (27758) [lt:de:GERMAN_SPELLER_RULE]">shared</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Memory, Femora] (27765) [lt:de:GERMAN_SPELLER_RULE]">memory</span>, ausschließt.</div><div class="clear"></div>
|
|
<div class="linenb"> 423</div><div class="codeline">Durch diesen Umstand kommt es zu einer Reduktion des Nachrichtendurchsatzes.</div><div class="clear"></div>
|
|
<div class="linenb"> 424</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 425</div><div class="codeline">Die Angaben zu den <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Durchs ätzen, Durchs Ätzen, Durch Sätzen, Durchsetzen, Durchsetzens, Durchsetzten, Durchwetzen, Durchsetze, Durchsetzung, Durchsetzend, Durchlässen, Durchsetzt, Durchbeißen, Durchsetzte, Durchmessen, Durchstoßen, Durchnässen, Durchsetzende, Durchreisen, Durchsetzter] (27883) [lt:de:GERMAN_SPELLER_RULE]">Durchsätzen</span> der verschiedenen Datenübertragungsmechanismen wurden mit \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [pik-peng, pik-Deng, pik-bang, pik-häng, pik-ging] (27953) [lt:de:GERMAN_SPELLER_RULE]">ipc-bench}</span> \cite{ipcBench} auf dem Entwicklungssystem ermittelt.</div><div class="clear"></div>
|
|
<div class="linenb"> 426</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 427</div><div class="codeline">Als Nachrichtendienst wurde die MessageQueue ausgewählt, da die integrierten Funktionen die Entwicklung erleichtern und die Geschwindigkeit ausreichend für das Einsatzszenario ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 428</div><div class="codeline">Jedoch existieren unter Linux 2 unabhängige Implementationen von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Message Queues] (28252) [lt:de:GERMAN_SPELLER_RULE]">MessageQueues</span> mit unterschiedlichen Funktionen.</div><div class="clear"></div>
|
|
<div class="linenb"> 429</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 430</div><div class="codeline">Die erste Implementation ist die System V MessageQueue \cite{mqSystemV} und verwendet zur Identifikation einfache Ganzzahlen.</div><div class="clear"></div>
|
|
<div class="linenb"> 431</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 432</div><div class="codeline">Die neuere Implementation der MessageQueue ist die POSIX-MessageQueue \cite{mqPosix}.</div><div class="clear"></div>
|
|
<div class="linenb"> 433</div><div class="codeline">Sie bietet einige weitere Funktionen, wie zum Beispiel asynchrone Benachrichtigungen bei neuen Nachrichten, Quality of Service und nutzt bis zu 256 Zeichen lange Zeichenketten zur Identifikation.</div><div class="clear"></div>
|
|
<div class="linenb"> 434</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 435</div><div class="codeline">Die ausgewählte Implementation ist die neuere POSIX-Implementation einer Message Queue, da diese basierend auf den Erfahrungen mit der System V Implementation entwickelt wurde.</div><div class="clear"></div>
|
|
<div class="linenb"> 436</div><div class="codeline"><span class="keyword1">\subsubsection</span>{ROS-Nachrichten}</div><div class="clear"></div>
|
|
<div class="linenb"> 437</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (28880) [lt:de:DE_CASE]">Die</span> verwendeten Nachrichten für den <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Action Server, Aktionsarmer] (28916) [lt:de:GERMAN_SPELLER_RULE]">ActionServer</span>, als auch für die Message Queue sind in den entsprechenden Paketen \code{ros_actor_action_server_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Eschs, muss, macht, mag, mich, mg, mache, möge, Asche, Loks, Esche, Ischl, Isis, tags, Gigs, Uschi, Wegs, mach, machst, Keks] (29020) [lt:de:GERMAN_SPELLER_RULE]">msgs}</span> und \code{ros_actor_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Message, mäßige, Aussage, mäßig, mäßigem, mäßigen, massige, messbare, mäßiger, Massage, mäßiges, lässige, missachte, säße, Eissäge, Messachse, Messtage, Passage, Pessach, Pessare] (29039) [lt:de:GERMAN_SPELLER_RULE]">message</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Queue, quere, bläue, dräue, quäke, quäle, neue, quer, quert, treue, Reue, queren, querte, quälen, quält, Gräuel, freue, quälte, Bräute, Knäuel] (29047) [lt:de:GERMAN_SPELLER_RULE]">queue</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Eschs, muss, macht, mag, mich, mg, mache, möge, Asche, Loks, Esche, Ischl, Isis, tags, Gigs, Uschi, Wegs, mach, machst, Keks] (29053) [lt:de:GERMAN_SPELLER_RULE]">msgs}</span> organisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 438</div><div class="codeline">Sie sind absichtlich nicht in den nutzenden Paketen untergebracht, da sie durch ein externes Programm in den benötigten Code umgewandelt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 439</div><div class="codeline">Dieser Schritt muss vor dem Kompiliervorgang der nutzenden Pakete geschehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 440</div><div class="codeline">Dazu werden diese Nachrichtenpakete als <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Dependenz, Dependance, Dependenzen, Dépendance] (29333) [lt:de:GERMAN_SPELLER_RULE]">Dependency</span> der nutzenden Pakete angegeben, was eine automatische Anpassung der <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Kombinationsreihenfolge] (29412) [lt:de:GERMAN_SPELLER_RULE]">Kompilationsreihenfolge</span> bewirkt.</div><div class="clear"></div>
|
|
<div class="linenb"> 441</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 442</div><div class="codeline">Eine Action des \code{ros_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Action-Pakets, Aktion-Pakets, aktiv-Pakets, aktiven-Pakets, aktive-Pakets, Aktien-Pakets, Option-Pakets, Bastion-Pakets, Kaution-Pakets, Kation-Pakets, Aktin-Pakets, Aktions-Pakets, Lacton-Pakets, Lotion-Pakets, Medion-Pakets, Motion-Pakets, Nation-Pakets, Notion-Pakets] (29466) [lt:de:GERMAN_SPELLER_RULE]">action}-Pakets</span> besteht immer aus 3 einzelnen Nachrichten, deren Inhalt frei definiert werden kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 443</div><div class="codeline"><span class="keyword2">\begin{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 444</div><div class="codeline"> <span class="keyword1">\item</span>{Zum Start der Action wird die erste Nachricht vom Client an den Server gesendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 445</div><div class="codeline">In dieser Startnachricht befinden sich alle Informationen, die zur Ausführung der Action benötigt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 446</div><div class="codeline">Nach dieser Nachricht kann der Server später entscheiden, ob die Aktion ausgeführt werden soll und sie gegebenenfalls abbrechen.}</div><div class="clear"></div>
|
|
<div class="linenb"> 447</div><div class="codeline"> <span class="keyword1">\item</span>{Nach dem Beginn der Action werden vom Server eine oder mehrere Feedbacknachrichten an den Client gesendet, die den Fortschritt der Action beschreiben.</div><div class="clear"></div>
|
|
<div class="linenb"> 448</div><div class="codeline">Dabei ist es die Aufgabe des Programmierers, diese an signifikanten Punkten des Ablaufs zu senden.}</div><div class="clear"></div>
|
|
<div class="linenb"> 449</div><div class="codeline"> <span class="keyword1">\item</span>{Am Ende der Action wird die Endnachricht an den Client gesendet, die weitere Rückgabewerte liefern kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 450</div><div class="codeline">Die Endnachricht enthält standardmäßig eine Erfolgsangabe, weshalb diese nicht angegeben werden muss.}</div><div class="clear"></div>
|
|
<div class="linenb"> 451</div><div class="codeline"><span class="keyword2">\end{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 452</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 453</div><div class="codeline">Ein <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Action Server, Aktionsarmer] (30347) [lt:de:GERMAN_SPELLER_RULE]">ActionServer</span> innerhalb eines Programmes definiert 3 Funktionen, welche die Handhabung einer Aktion definieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 454</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 455</div><div class="codeline"><span class="keyword2">\begin{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 456</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb"> 457</div><div class="codeline"> Die erste Funktion übergibt den Wert der Startnachricht, die mit einer Antwort quittiert werden muss.</div><div class="clear"></div>
|
|
<div class="linenb"> 458</div><div class="codeline"> Hierbei sind die Antworten <span class="highlight" title="Möglicher Tippfehler gefunden. (30595) [lt:de:GERMAN_SPELLER_RULE]">ACCEPT</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [ARD, AMD, ANC, BND, AfD, AvD, ASD, AUD, AWD, AG, AMT, ART, SPD, CD, DVD, KPD, ABT, ALI, DNA, HD] (30602) [lt:de:GERMAN_SPELLER_RULE]">AND</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [DEV, CEFR, DEFA, DEVK, DEVKs] (30606) [lt:de:GERMAN_SPELLER_RULE]">DEFER</span>, <span class="highlight" title="Möglicher Tippfehler gefunden. (30613) [lt:de:GERMAN_SPELLER_RULE]">ACCEPT</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [ARD, AMD, ANC, BND, AfD, AvD, ASD, AUD, AWD, AG, AMT, ART, SPD, CD, DVD, KPD, ABT, ALI, DNA, HD] (30620) [lt:de:GERMAN_SPELLER_RULE]">AND</span>_<span class="highlight" title="Möglicher Tippfehler gefunden. (30624) [lt:de:GERMAN_SPELLER_RULE]">EXECUTE</span> und <span class="highlight" title="Möglicher Tippfehler gefunden. (30636) [lt:de:GERMAN_SPELLER_RULE]">REJECT</span> möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 459</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 460</div><div class="codeline"> Die erste mögliche Antwort <span class="highlight" title="Möglicher Tippfehler gefunden. (30682) [lt:de:GERMAN_SPELLER_RULE]">ACCEPT</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [ARD, AMD, ANC, BND, AfD, AvD, ASD, AUD, AWD, AG, AMT, ART, SPD, CD, DVD, KPD, ABT, ALI, DNA, HD] (30689) [lt:de:GERMAN_SPELLER_RULE]">AND</span>_<span class="highlight" title="Möglicher Tippfehler gefunden. (30693) [lt:de:GERMAN_SPELLER_RULE]">EXECUTE</span> signalisiert die sofortige Ausführung des gewünschten Befehls.</div><div class="clear"></div>
|
|
<div class="linenb"> 461</div><div class="codeline"> Als Alternative existiert die Antwort <span class="highlight" title="Möglicher Tippfehler gefunden. (30804) [lt:de:GERMAN_SPELLER_RULE]">ACCEPT</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [ARD, AMD, ANC, BND, AfD, AvD, ASD, AUD, AWD, AG, AMT, ART, SPD, CD, DVD, KPD, ABT, ALI, DNA, HD] (30811) [lt:de:GERMAN_SPELLER_RULE]">AND</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [DEV, CEFR, DEFA, DEVK, DEVKs] (30815) [lt:de:GERMAN_SPELLER_RULE]">DEFER</span>, die für eine verspätete Ausführung der gewünschten Aktion steht.</div><div class="clear"></div>
|
|
<div class="linenb"> 462</div><div class="codeline"> Die <span class="highlight" title="Möglicher Tippfehler gefunden. (30893) [lt:de:GERMAN_SPELLER_RULE]">REJECT-Antwort</span> weist die Ausführung der Aktion vorzeitig ab.</div><div class="clear"></div>
|
|
<div class="linenb"> 463</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb"> 464</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb"> 465</div><div class="codeline"> Die zweite Funktion übergibt Abbruchanfragen an den Server, falls die Aktion durch den Client abgebrochen werden soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 466</div><div class="codeline"> Auch diese Anfrage kann entweder mit <span class="highlight" title="Möglicher Tippfehler gefunden. (31118) [lt:de:GERMAN_SPELLER_RULE]">ACCEPT</span> akzeptiert werden, oder mit <span class="highlight" title="Möglicher Tippfehler gefunden. (31153) [lt:de:GERMAN_SPELLER_RULE]">REJECT</span> zurückgewiesen werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 467</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb"> 468</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb"> 469</div><div class="codeline"> Um Feedback während der Ausführung der Aktion geben zu können, existiert die dritte Funktion.</div><div class="clear"></div>
|
|
<div class="linenb"> 470</div><div class="codeline"> Diese erhält als Parameter ein Objekt, mit dem <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Feed back-, Feedback, Fee-pack-, Feedbacks, Fee-bach-, Fee-bank-, Fee-bock-, Festbacke, Fee-lack-, Festbackt, Fee-park-] (31332) [lt:de:GERMAN_SPELLER_RULE]">Feedback-</span> und Endnachrichten an den Client gesendet werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 471</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb"> 472</div><div class="codeline"><span class="keyword2">\end{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 473</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 474</div><div class="codeline">Die gesamte Kommunikation einer Anfrage verläuft wie in Abbildung \ref{plugin_sequence} dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 475</div><div class="codeline">Zuerst wird durch den Client eine Zielvorgabe an den Server gesendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 476</div><div class="codeline">Sollte der Server diese abweisen, wird die Kommunikation beendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 477</div><div class="codeline">Dies geschieht, falls bereits eine Aktion ausgeführt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 478</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 479</div><div class="codeline">Falls keine Aktion ausgeführt wird, beginnt die Kommunikation mit dem ActorPlugin.</div><div class="clear"></div>
|
|
<div class="linenb"> 480</div><div class="codeline">Das Plugin erhält die Zielinformationen und seinen neuen Status aus der Zielvorgabe des Clients über die MessageQueue.</div><div class="clear"></div>
|
|
<div class="linenb"> 481</div><div class="codeline">Der Server wartet den Zustandswechsel des Plugins ab und bestätigt dem Client die Ausführung der Zielanfrage.</div><div class="clear"></div>
|
|
<div class="linenb"> 482</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 483</div><div class="codeline">Ab diesem Zeitpunkt ist eine Terminierung der Anfrage durch den Client möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 484</div><div class="codeline">Dies geschieht durch eine Abbruchanfrage, welche sofort bearbeitet wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 485</div><div class="codeline">Für den Abbruch wird der Status des Plugins über die MessageQueue auf IDLE gesetzt, was alle laufenden Aktionen sofort beendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 486</div><div class="codeline">Der Zustandswechsel des Plugins wird abgewartet, um bei Erreichen des IDLE-Zustands die Abbruchanfrage zu bestätigen.</div><div class="clear"></div>
|
|
<div class="linenb"> 487</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 488</div><div class="codeline">Solange die Aktion läuft, werden periodisch Feedbacknachrichten über die MessageQueue an den Server gesendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 489</div><div class="codeline">Der Server bringt diese in ein neues Format und leitet sie an den Client weiter.</div><div class="clear"></div>
|
|
<div class="linenb"> 490</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 491</div><div class="codeline">Wenn das Ziel erreicht wird, wechselt das Plugin eigenständig in den IDLE-Zustand, was vom Server durch eine <span class="highlight" title="Möglicher Tippfehler gefunden. (32694) [lt:de:GERMAN_SPELLER_RULE]">Feedbacknachricht</span> erkannt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 492</div><div class="codeline">Dieser Zustandswechsel löst die Meldung einer vollständigen Ausführung des gewünschten Befehls an den Client aus.</div><div class="clear"></div>
|
|
<div class="linenb"> 493</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 494</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{uml/out/plugin_connectivity.eps}</div><div class="clear"></div>
|
|
<div class="linenb"> 495</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Kommunikation des ActorPlugins</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 496</div><div class="codeline"><span class="keyword1">\label</span>{plugin_sequence}</div><div class="clear"></div>
|
|
<div class="linenb"> 497</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 498</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 499</div><div class="codeline"><span class="keyword1">\subsubsection</span>{ActorPlugin}</div><div class="clear"></div>
|
|
<div class="linenb"> 500</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [das] (32853) [lt:de:DE_CASE]">Das</span> ActorPlugin steuert den Menschen in der Simulationsumgebung anhand von empfangenen Nachrichten aus der eingehenden Message Queue.</div><div class="clear"></div>
|
|
<div class="linenb"> 501</div><div class="codeline">Der Code des Plugins ist dabei im Paket \code{ign_actor_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Plugin, beugen, blutig, blühen, Flügen, brüchig, klugen, Plugins, Zeugin, bauchig, bluten, plagen, blanken, blinken, blumig, fluchen, Flüchen, blechen, pauken, Algin] (33037) [lt:de:GERMAN_SPELLER_RULE]">plugin}</span> organisiert, dass im Gazebo-Modell der Welt referenziert werden muss, um das Plugin zu laden.</div><div class="clear"></div>
|
|
<div class="linenb"> 502</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 503</div><div class="codeline">Das Plugin wird durch den Startvorgang und später von den empfangenen Nachrichten in folgende Zustände versetzt werden:</div><div class="clear"></div>
|
|
<div class="linenb"> 504</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Deskription, deskriptiv, deskriptive, deskriptiven, Inskription] (33259) [lt:de:GERMAN_SPELLER_RULE]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 505</div><div class="codeline"> <span class="keyword1">\item</span>[Setup]</div><div class="clear"></div>
|
|
<div class="linenb"> 506</div><div class="codeline"> wird ausschließlich zu Simulationsbeginn verwendet, um alle benötigten Referenzen aus der Simulationsumgebung im Plugin zu <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [hin erlegen, hinterlegen, Binärlegen, hinverlegen, hinlegen, widerlegen, Kinderlegen, hiergegen, herlegen, hinterlegten, hineinlegen, hinzulegen, Winterlegen, Eierlegen, Hinterlegen, Tierlegen, Minenlegen, Widerlegen, Bierlegen, Fingerlegen] (33405) [lt:de:GERMAN_SPELLER_RULE]">hinerlegen</span>, <span class="highlight" title="Empfehlung: Möchten Sie die Schreibweise 'sodass' verwenden?. Suggestions: [sodass] (33417) [lt:de:EMPFOHLENE_ZUSAMMENSCHREIBUNG]">so dass</span> diese in den anderen Zuständen genutzt werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 507</div><div class="codeline"> <span class="keyword1">\item</span>[Idle]</div><div class="clear"></div>
|
|
<div class="linenb"> 508</div><div class="codeline"> definiert den Zustand, der nach erfolgreicher Ausführung eines Befehls angenommen wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 509</div><div class="codeline"> <span class="keyword1">\item</span>[Movement]</div><div class="clear"></div>
|
|
<div class="linenb"> 510</div><div class="codeline"> bedeutet die Ausführung einer Bewegung in potenziell mehreren Schritten.</div><div class="clear"></div>
|
|
<div class="linenb"> 511</div><div class="codeline"> <span class="keyword1">\item</span>[Animation]</div><div class="clear"></div>
|
|
<div class="linenb"> 512</div><div class="codeline"> entspricht der Ausführung einer Animation an der aktuellen Position des Actors.</div><div class="clear"></div>
|
|
<div class="linenb"> 513</div><div class="codeline"> Diese kann durch einen Skalierungsfaktor beschleunigt oder verlangsamt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 514</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (33840) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 515</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 516</div><div class="codeline">In diesen Zuständen muss das ActorPlugin die Simulationsumgebung beeinflussen, in der die simulierte Person bewegt und animiert wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 517</div><div class="codeline">Dies erfordert den Zugriff auf <span class="highlight" title="Möglicher Tippfehler gefunden. (34018) [lt:de:GERMAN_SPELLER_RULE]">simulationsinterne</span> Daten, die durch das Plugin gelesen und verändert werden sollen.</div><div class="clear"></div>
|
|
<div class="linenb"> 518</div><div class="codeline">Der Zugriff auf diese Daten wird durch ein <span class="highlight" title="Möglicher Tippfehler gefunden. (34145) [lt:de:GERMAN_SPELLER_RULE]">EntityComponentManager-Objekt</span> ermöglicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 519</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 520</div><div class="codeline">Durch den <span class="highlight" title="Möglicher Tippfehler gefunden. (34198) [lt:de:GERMAN_SPELLER_RULE]">EntityComponentManager</span> kann auf das sogenannte ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Entität, Endet, Antityp, Endete, Unity, Endige, Endigt, Endigte] (34247) [lt:de:GERMAN_SPELLER_RULE]">Entity</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, Komponiert, Kompetent, Komponentig] (34254) [lt:de:GERMAN_SPELLER_RULE]">Component</span> System'' zugegriffen werden, in dem alle Simulationsobjekte organisiert sind.</div><div class="clear"></div>
|
|
<div class="linenb"> 521</div><div class="codeline">Ein <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Entität, Endet, Antityp, Endete, Unity, Endige, Endigt, Endigte] (34346) [lt:de:GERMAN_SPELLER_RULE]">Entity</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, Komponiert, Kompetent, Komponentig] (34353) [lt:de:GERMAN_SPELLER_RULE]">Component</span> System besteht aus einer oder mehr <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Antityps, Entstieg, Endivie, Endivien] (34398) [lt:de:GERMAN_SPELLER_RULE]">Entities</span>, die Objekte innerhalb der Simulation abbilden.</div><div class="clear"></div>
|
|
<div class="linenb"> 522</div><div class="codeline">Objekte können beliebig viele <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, Komponentig] (34485) [lt:de:GERMAN_SPELLER_RULE]">Components</span> besitzen, bei denen es sich um zusätzliche Eigenschaften und Erweiterungen der Funktionen des betroffenen Objekts handelt.</div><div class="clear"></div>
|
|
<div class="linenb"> 523</div><div class="codeline">Die wichtigsten Komponenten für die Funktion des Plugins sind dabei:</div><div class="clear"></div>
|
|
<div class="linenb"> 524</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 525</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (34689) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 526</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, komponentig] (34703) [lt:de:GERMAN_SPELLER_RULE]">components</span><span class="highlight" title="Hinter einem ':' sollte ein Leerzeichen stehen.. Suggestions: [: :] (34713) [lt:de:LEERZEICHEN_HINTER_DOPPELPUNKT]">::</span>Actor]</div><div class="clear"></div>
|
|
<div class="linenb"> 527</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [dieses] (34724) [lt:de:DE_CASE]">Dieses</span> Objekt beschreibt die simulierte Person mit allen weiteren Daten, wie zum Beispiel deren Animationen.</div><div class="clear"></div>
|
|
<div class="linenb"> 528</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, komponentig] (34835) [lt:de:GERMAN_SPELLER_RULE]">components</span><span class="highlight" title="Hinter einem ':' sollte ein Leerzeichen stehen.. Suggestions: [: :] (34845) [lt:de:LEERZEICHEN_HINTER_DOPPELPUNKT]">::</span><span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Animation Name] (34847) [lt:de:GERMAN_SPELLER_RULE]">AnimationName</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 529</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [in] (34864) [lt:de:DE_CASE]">In</span> dieser Komponente wird der aktuell verwendete Animationsname abgelegt, der von Gazebo zur Auswahl der aktuell laufenden Animation verwendet wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 530</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, komponentig] (35015) [lt:de:GERMAN_SPELLER_RULE]">components</span><span class="highlight" title="Hinter einem ':' sollte ein Leerzeichen stehen.. Suggestions: [: :] (35025) [lt:de:LEERZEICHEN_HINTER_DOPPELPUNKT]">::</span><span class="highlight" title="Möglicher Tippfehler gefunden. (35027) [lt:de:GERMAN_SPELLER_RULE]">AnimationTime</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 531</div><div class="codeline"> enthält den aktuellen Zeitpunkt innerhalb der Animation, um die richtigen Positionsdaten aus dieser auswählen zu können. Dabei wird zwischen einzelnen Positionen linear interpoliert, falls der Zeitpunkt zwischen diesen liegt.</div><div class="clear"></div>
|
|
<div class="linenb"> 532</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, komponentig] (35272) [lt:de:GERMAN_SPELLER_RULE]">components</span><span class="highlight" title="Hinter einem ':' sollte ein Leerzeichen stehen.. Suggestions: [: :] (35282) [lt:de:LEERZEICHEN_HINTER_DOPPELPUNKT]">::</span>Pose]</div><div class="clear"></div>
|
|
<div class="linenb"> 533</div><div class="codeline"> entspricht der bereits beschriebenen Pose aus Abschnitt \ref{datatypes}, jedoch verwendet Gazebo dafür diesen eigenen Datentyp.</div><div class="clear"></div>
|
|
<div class="linenb"> 534</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, komponentig] (35408) [lt:de:GERMAN_SPELLER_RULE]">components</span><span class="highlight" title="Hinter einem ':' sollte ein Leerzeichen stehen.. Suggestions: [: :] (35418) [lt:de:LEERZEICHEN_HINTER_DOPPELPUNKT]">::</span><span class="highlight" title="Möglicher Tippfehler gefunden. (35420) [lt:de:GERMAN_SPELLER_RULE]">TrajectoryPose</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 535</div><div class="codeline"> beschreibt eine Pose während einer Bewegung. Ist diese nicht gesetzt, werden keine Animationen abgespielt.</div><div class="clear"></div>
|
|
<div class="linenb"> 536</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (35545) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 537</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 538</div><div class="codeline">Durch das Verändern dieser Komponenten kann die gewünschte Funktionalität des Plugins erreicht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 539</div><div class="codeline">Diese Veränderungen müssen zu jedem Simulationsschritt erneut vorgenommen werden, um einen flüssigen Ablauf zu gewährleisten.</div><div class="clear"></div>
|
|
<div class="linenb"> 540</div><div class="codeline">Um dies zu erreichen, können im Plugin bestimmte Interfaces mit entsprechenden Funktionen implementiert werden \cite{ignPlugin}.</div><div class="clear"></div>
|
|
<div class="linenb"> 541</div><div class="codeline">Diese Funktionen werden später in der Simulation aufgerufen.</div><div class="clear"></div>
|
|
<div class="linenb"> 542</div><div class="codeline">Folgende Funktionen werden von Gazebo unterstützt:</div><div class="clear"></div>
|
|
<div class="linenb"> 543</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Deskription, deskriptiv, deskriptive, deskriptiven, Inskription] (36015) [lt:de:GERMAN_SPELLER_RULE]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 544</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Konfitüre, Tonfiguren, Tonfigur, Confiseure] (36029) [lt:de:GERMAN_SPELLER_RULE]">Configure</span>] wird aufgerufen, sobald das Plugin geladen wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 545</div><div class="codeline"> Alle benötigten Informationen über dessen Umgebung werden als Parameter übergeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 546</div><div class="codeline"> Als ersten Parameter wird die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Entität, Endet, Antityp, Endete, Unity, Endige, Endigt, Endigte] (36204) [lt:de:GERMAN_SPELLER_RULE]">Entity</span> übergeben, an welcher das Plugin als <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, Komponiert, Kompetent, Komponentig] (36248) [lt:de:GERMAN_SPELLER_RULE]">Component</span> hinzugefügt wurde.</div><div class="clear"></div>
|
|
<div class="linenb"> 547</div><div class="codeline"> Außerdem wird eine Referenz auf die Konfiguration des Plugins in der geladenen Welt übergeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 548</div><div class="codeline"> Für den Zugriff auf die Simulationsumgebung werden zuletzt noch eine aktuelle Instanz des <span class="highlight" title="Möglicher Tippfehler gefunden. (36464) [lt:de:GERMAN_SPELLER_RULE]">EntityComponentManagers</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Eventmanagers, Event Managers, Eventmanager, Eventmanagern] (36492) [lt:de:GERMAN_SPELLER_RULE]">EventManagers</span> von Gazebo übergeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 549</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (36530) [lt:de:GERMAN_SPELLER_RULE]">PreUpdate</span>] wird verwendet, um den nächsten Update-Schritt vorzubereiten.</div><div class="clear"></div>
|
|
<div class="linenb"> 550</div><div class="codeline"> Diese Funktion erlaubt die Modifikation von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Antityps, Entstieg, Endivie, Endivien] (36648) [lt:de:GERMAN_SPELLER_RULE]">Entities</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, Komponentig] (36661) [lt:de:GERMAN_SPELLER_RULE]">Components</span> und wird vor der eigentlichen Physiksimulation aufgerufen.</div><div class="clear"></div>
|
|
<div class="linenb"> 551</div><div class="codeline"> <span class="keyword1">\item</span>[Update] wird genutzt, um die in der Simulation abgelaufene Zeit zu simulieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 552</div><div class="codeline"> Auch hier ist die Modifikation von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Antityps, Entstieg, Endivie, Endivien] (36848) [lt:de:GERMAN_SPELLER_RULE]">Entities</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, Komponentig] (36861) [lt:de:GERMAN_SPELLER_RULE]">Components</span> möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 553</div><div class="codeline"> In dieser Funktion wird beispielsweise die Physiksimulation der Objekte durchgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 554</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Post Update, Post update] (36970) [lt:de:GERMAN_SPELLER_RULE]">PostUpdate</span>] bietet die Möglichkeit, die Ergebnisse der Simulation vor dem nächsten Simulationsschritt auszulesen.</div><div class="clear"></div>
|
|
<div class="linenb"> 555</div><div class="codeline"> Dies wird zum Beispiel für die simulierten Sensoren in Gazebo genutzt, die hier ihren Status prüfen.</div><div class="clear"></div>
|
|
<div class="linenb"> 556</div><div class="codeline"> In dieser Funktion kann nur lesend auf <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Antityps, Entstieg, Endivie, Endivien] (37226) [lt:de:GERMAN_SPELLER_RULE]">Entities</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Komponente, Komponentig] (37239) [lt:de:GERMAN_SPELLER_RULE]">Components</span> zugegriffen werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 557</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (37270) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 558</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [jede] (37282) [lt:de:DE_CASE]">Jede</span> dieser Funktionen ist in einem Interface mit dem Präfix \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [System, Systeme, Systems, SI-System, Systema, Biosystem, π-System, Umsystem, Irrstem] (37343) [lt:de:GERMAN_SPELLER_RULE]">ISystem}</span> definiert, die vom Plugin genutzt werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 559</div><div class="codeline">Für Gazebo muss das Plugin noch registriert werden, was mit dem \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (37464) [lt:de:GERMAN_SPELLER_RULE]">IGNITION</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [ARD, AMD, ADV, ADC, ADS, HDD, AfD, AvD, IDD, ADH, ADM, ADP, ADR, ASD, AUD, AWD, DD, AG, AMT, ART] (37473) [lt:de:GERMAN_SPELLER_RULE]">ADD</span>_PLUGIN}-Makro geschieht.</div><div class="clear"></div>
|
|
<div class="linenb"> 560</div><div class="codeline">Mit diesen Vorbereitungsschritten wird das Plugin von Gazebo verwendbar gemacht.</div><div class="clear"></div>
|
|
<div class="linenb"> 561</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 562</div><div class="codeline">Das ActorPlugin benötigt für seine Funktion das übergeordnete Simulationsobjekt, dass durch das Plugin beeinflusst werden soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 563</div><div class="codeline">Dies erfordert die Implementation des \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (37749) [lt:de:GERMAN_SPELLER_RULE]">ISystemConfigure}-Interfaces</span> für das ActorPlugin.</div><div class="clear"></div>
|
|
<div class="linenb"> 564</div><div class="codeline">Außerdem soll die simulierte Person bewegt werden. Da dieser Vorgang während der Simulationszeit ablaufen soll, muss hierfür das \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (37927) [lt:de:GERMAN_SPELLER_RULE]">ISystemUpdate}-Interface</span> genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 565</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 566</div><div class="codeline">Als Erstes wird durch das Laden des Plugins die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Konfitüre-Funktion, Tonfiguren-Funktion, Tonfigur-Funktion, Confiseure-Funktion] (38016) [lt:de:GERMAN_SPELLER_RULE]">Configure-Funktion</span> aufgerufen.</div><div class="clear"></div>
|
|
<div class="linenb"> 567</div><div class="codeline">Da das Plugin erst durch Gazebo geladen werden muss, kann davon ausgegangen werden, dass alle benötigten Message Queues bereits durch den ActorServer erstellt wurden.</div><div class="clear"></div>
|
|
<div class="linenb"> 568</div><div class="codeline">Trotz dieses Umstandes wartet das Plugin auf deren Erstellung, um bei Konfigurationsfehlern auffälliges Verhalten zu zeigen.</div><div class="clear"></div>
|
|
<div class="linenb"> 569</div><div class="codeline">Im Log wird diese Aktion vermerkt, um das Debugging zu erleichtern.</div><div class="clear"></div>
|
|
<div class="linenb"> 570</div><div class="codeline">Nach dem erfolgreichen Aufbau der Verbindung wird ein Thread gestartet, der die eingehenden Nachrichten verarbeitet.</div><div class="clear"></div>
|
|
<div class="linenb"> 571</div><div class="codeline">Dabei wird zuerst eine Sperre gesetzt, um parallele Zugriffe durch die Update-Funktion zu verhindern.</div><div class="clear"></div>
|
|
<div class="linenb"> 572</div><div class="codeline">Alle in der Anfrage gespeicherten Daten werden übernommen und der gewünschte State gesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 573</div><div class="codeline">Nach dem Entfernen der Sperre wird im nächsten Simulationsschritt die gewünschte Aktion durchgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 574</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 575</div><div class="codeline">Das Setzen aller obigen Zustände ist dabei möglich, jedoch werden nur Idle, Animation und Movement genutzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 576</div><div class="codeline">Der Idle-Zustand kann zum Beenden eines anderen Zustands eingesetzt werden, falls dieser abgebrochen werden soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 577</div><div class="codeline">Die Zustände Animation und Movement werden gesendet, falls neue Ziele gesetzt werden sollen.</div><div class="clear"></div>
|
|
<div class="linenb"> 578</div><div class="codeline">Da beide Zustände Animationen verwenden, wird bei deren erster Ausführung in der Update-Funktion die gewünschte Animation gesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 579</div><div class="codeline">Um dies zu ermöglichen, werden alle in der Actor-Komponente gespeicherten Animationen durchsucht.</div><div class="clear"></div>
|
|
<div class="linenb"> 580</div><div class="codeline">Sollte die Animation nicht gefunden werden, wird versucht, diese anhand ihres Namens zu laden.</div><div class="clear"></div>
|
|
<div class="linenb"> 581</div><div class="codeline">Wurde eine Animation gefunden, wird deren Länge gespeichert, um diese später für das Feedback nutzen zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 582</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 583</div><div class="codeline">Ab diesem Zeitpunkt unterscheiden sich die Implementation von Animation und Movement.</div><div class="clear"></div>
|
|
<div class="linenb"> 584</div><div class="codeline">Im Zustand der Animation wird die Komponente <span class="highlight" title="Möglicher Tippfehler gefunden. (39704) [lt:de:GERMAN_SPELLER_RULE]">AnimationTime</span> bei jedem Update aktualisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 585</div><div class="codeline">Um die Ausführungsgeschwindigkeit einer Animation anpassen zu können, wird ein Skalierungsfaktor genutzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 586</div><div class="codeline">Dieser optionale Faktor kann mit der abgelaufenen Zeit multipliziert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 587</div><div class="codeline">Dies verursacht eine Beschleunigung oder Verlangsamung der Ausführung.</div><div class="clear"></div>
|
|
<div class="linenb"> 588</div><div class="codeline">Nach jedem Update-Schritt wird eine <span class="highlight" title="Uneinheitliche Verwendung von Bindestrichen. Der Text enthält sowohl 'Feedback-Nachricht' als auch 'Feedbacknachricht'.. Suggestions: [Feedbacknachricht] (40039) [lt:de:DE_COMPOUND_COHERENCY]">Feedback-Nachricht</span> gesendet, die den aktuellen Fortschritt der Animation enthält.</div><div class="clear"></div>
|
|
<div class="linenb"> 589</div><div class="codeline">Wurde die Animation vollständig durchlaufen, wird der Zustand des ActorPlugins auf Idle gesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 590</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 591</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 592</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{uml/out/plugin_states.eps}</div><div class="clear"></div>
|
|
<div class="linenb"> 593</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Zustandsübergänge im ActorPlugin</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 594</div><div class="codeline"><span class="keyword1">\label</span>{plugin_states}</div><div class="clear"></div>
|
|
<div class="linenb"> 595</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 596</div><div class="codeline">Alle Zustandsübergänge sind in Abbildung \ref{plugin_states} zusammengefasst.</div><div class="clear"></div>
|
|
<div class="linenb"> 597</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 598</div><div class="codeline">Soll über den Movement-Zustand eine Bewegung abgespielt werden, müssen noch weitere Parameter der Bewegung berechnet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 599</div><div class="codeline">Dies geschieht nach dem Setzen der Animation während des ersten Update-Aufrufs.</div><div class="clear"></div>
|
|
<div class="linenb"> 600</div><div class="codeline">Zuerst wird ein Vektor zur Zielposition berechnet, der später zur Bewegung genutzt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 601</div><div class="codeline">Sollte dieser über einer gewissen Mindestlänge liegen, wird eine Rotation des Menschen in Bewegungsrichtung ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 602</div><div class="codeline">Nach dieser Rotation wird die Bewegung an die Zielposition umgesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 603</div><div class="codeline">Dabei wird die Bewegungsanimation abgespielt, die durch einen Faktor an die zurückgelegte Distanz angepasst wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 604</div><div class="codeline">Dies vermeidet, dass die Beine der Person über den Boden gleiten.</div><div class="clear"></div>
|
|
<div class="linenb"> 605</div><div class="codeline">Wurde eine Endrotation angegeben, die nicht dem Nullvektor entspricht, wird nach der Bewegung noch eine Rotation in diese Richtung ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 606</div><div class="codeline">Dabei werden auch die Beine wieder in die Ausgangslage bewegt.</div><div class="clear"></div>
|
|
<div class="linenb"> 607</div><div class="codeline">Wenn sowohl die Zielrotation ausgeführt wurde und die Beine wieder in Ausgangslage sind, wird der Zustand auf Idle gesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 608</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 609</div><div class="codeline">Das ActorPlugin besitzt kein Konzept eines <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [OS-Action Servers, OS-Aktionenvers, RS-Action Servers, RS-Aktionenvers, RTS-Action Servers] (41318) [lt:de:GERMAN_SPELLER_RULE]">ROS-ActionServers</span> und verlässt sich auf den ActorServer, der die Feedbacknachrichten in das richtige Format bringt.</div><div class="clear"></div>
|
|
<div class="linenb"> 610</div><div class="codeline">Um Zustandsübergänge erkennen zu können, werden diese als Feedback über die zweite Message Queue an den ActorServer gesendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 611</div><div class="codeline">Weitere Feedbacknachrichten werden in den Zuständen Movement und Animation zu jedem Simulationsschritt gesendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 612</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 613</div><div class="codeline">In diesen zusätzlichen Nachrichten werden die aktuelle Position des Menschen und der Fortschritt der laufenden Aktion aktualisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 614</div><div class="codeline">Der Fortschritt einer Aktion wird aus der Animationszeit oder der berechneten Bewegungszeit und der bereits vergangenen Simulationszeit berechnet.</div><div class="clear"></div>
|
|
<div class="linenb"> 615</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 616</div><div class="codeline"><span class="keyword1">\subsubsection</span>{ActorServer}</div><div class="clear"></div>
|
|
<div class="linenb"> 617</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [der] (41966) [lt:de:DE_CASE]">Der</span> ActorServer ist die Brücke zwischen ROS und dem ActorPlugin.</div><div class="clear"></div>
|
|
<div class="linenb"> 618</div><div class="codeline">Er ist als das Programm \code{ros_actor_action_server} im gleichnamigen Paket enthalten.</div><div class="clear"></div>
|
|
<div class="linenb"> 619</div><div class="codeline">Dieser weitere Dienst bindet das ActorPlugin an ROS an.</div><div class="clear"></div>
|
|
<div class="linenb"> 620</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 621</div><div class="codeline">Nach dem Start des <span class="highlight" title="Möglicher Tippfehler gefunden. (42189) [lt:de:GERMAN_SPELLER_RULE]">ActorServers</span> werden zwei <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [OS-Action Server, OS-Aktionsarmer, RS-Action Server, RS-Aktionsarmer, RTS-Action Server] (42214) [lt:de:GERMAN_SPELLER_RULE]">ROS-ActionServer</span> gestartet.</div><div class="clear"></div>
|
|
<div class="linenb"> 622</div><div class="codeline">Diese können jeweils zum Abspielen von Animationen oder zum Starten von Bewegungen des simulierten Menschen genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 623</div><div class="codeline">Wenn ein Client eine dieser Aktionen startet, überträgt er die Zieldaten an den entsprechenden <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Action Server, Aktionsarmer] (42461) [lt:de:GERMAN_SPELLER_RULE]">ActionServer</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 624</div><div class="codeline">Beide <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Action Server, Aktionsarmer] (42481) [lt:de:GERMAN_SPELLER_RULE]">ActionServer</span> prüfen nach dem Empfang eines neuen Ziels als erstes, ob bereits eine andere Aktion ausgeführt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 625</div><div class="codeline">Wird bereits eine andere Aktion ausgeführt, kommt es zur Ablehnung der aktuellen Anfrage.</div><div class="clear"></div>
|
|
<div class="linenb"> 626</div><div class="codeline">Im anderen Fall wird die Anfrage akzeptiert und in das MessageQueue-Format übersetzt und an das ActorPlugin gesandt.</div><div class="clear"></div>
|
|
<div class="linenb"> 627</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 628</div><div class="codeline">Um das Starten mehrerer gleichzeitiger Aktionen zu unterbinden, muss der Empfang einer neuen Anfrage bestätigt werden, bevor weitere Befehle über den <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [OS-Action Server, OS-Aktionsarmer, RS-Action Server, RS-Aktionsarmer, RTS-Action Server] (42953) [lt:de:GERMAN_SPELLER_RULE]">ROS-ActionServer</span> <span class="highlight" title="Falls Sie eine Form des Verbs 'entgegennehmen' meinten, wird diese zusammengeschrieben.. Suggestions: [entgegengenommen] (42970) [lt:de:ZUSAMMENGESETZTE_VERBEN]">entgegen genommen</span> werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 629</div><div class="codeline">Hierzu wird ein Mutex verwendet, der die Auswertung neuer Nachrichten verhindert, solange der aktuelle Befehl noch nicht durch das Plugin bestätigt wurde.</div><div class="clear"></div>
|
|
<div class="linenb"> 630</div><div class="codeline">Parallel werden alle eingehenden <span class="highlight" title="Uneinheitliche Verwendung von Bindestrichen. Der Text enthält sowohl 'Feedback-Nachrichten' als auch 'Feedbacknachricht'. (43191) [lt:de:DE_COMPOUND_COHERENCY]">Feedback-Nachrichten</span> der Message Queue des ActorPlugins in Feedback für die aktuell laufende Action umgewandelt.</div><div class="clear"></div>
|
|
<div class="linenb"> 631</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 632</div><div class="codeline">Im Falle des <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bewegung-Action Servers, Bewegung-Aktionenvers, Bewegungen-Action Servers] (43318) [lt:de:GERMAN_SPELLER_RULE]">Bewegungs-ActionServers</span> werden mehrere Parameter benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 633</div><div class="codeline">Zuerst werden Animationsname und -distanz benötigt, um die richtige Animation auszuwählen und die Bewegung mit der Animation zu synchronisieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 634</div><div class="codeline">Als <span class="highlight" title="Möglicher Tippfehler gefunden. (43526) [lt:de:GERMAN_SPELLER_RULE]">Feedbacknachricht</span> erhält der Client die aktuelle Pose des Actors im Simulationsraum.</div><div class="clear"></div>
|
|
<div class="linenb"> 635</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 636</div><div class="codeline">Soll eine Animation über den <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Action Server, Aktionsarmer] (43641) [lt:de:GERMAN_SPELLER_RULE]">ActionServer</span> abgespielt werden, wird neben dem Animationsnamen noch die Animationsgeschwindigkeit als Parameter benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 637</div><div class="codeline">Die <span class="highlight" title="Möglicher Tippfehler gefunden. (43767) [lt:de:GERMAN_SPELLER_RULE]">Feedbacknachricht</span> enthält den Fortschritt der Animation als Gleitkommazahl von null bis eins.</div><div class="clear"></div>
|
|
<div class="linenb"> 638</div><div class="codeline"><span class="keyword1">\section</span>{Roboter}</div><div class="clear"></div>
|
|
<div class="linenb"> 639</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [der] (43869) [lt:de:DE_CASE]">Der</span> Roboter besteht aus mehreren interagierenden Systemen, die in ihrer Gesamtheit das vollständige Robotermodell in der Simulation verwendbar machen.</div><div class="clear"></div>
|
|
<div class="linenb"> 640</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 641</div><div class="codeline">Zuerst muss ein Modell des Roboters erstellt werden, dass in Gazebo geladen werden kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 642</div><div class="codeline">Dieses Modell muss dann für die Bewegungsplanung mit MoveIt erweitert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 643</div><div class="codeline">Hierbei werden Controller von ros_control mit dem Modell verbunden, um den aktuellen Zustand der Achsen zu überwachen und diese steuern zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 644</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 645</div><div class="codeline">Um diese Vielfalt an Daten standardisiert für andere Nodes in ROS weitergeben zu können, wird eine <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Move Group] (44435) [lt:de:GERMAN_SPELLER_RULE]">MoveGroup</span> in ROS gestartet, welche die Planung von Bewegungen durch andere Programme zulässt.</div><div class="clear"></div>
|
|
<div class="linenb"> 646</div><div class="codeline"><span class="keyword1">\subsection</span>{Modellierung}</div><div class="clear"></div>
|
|
<div class="linenb"> 647</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [für] (44542) [lt:de:DE_CASE]">Für</span> den Kuka LBR iisy ist kein Simulationsmodell für Gazebo und ROS verfügbar.</div><div class="clear"></div>
|
|
<div class="linenb"> 648</div><div class="codeline">Daher wurde das für die Simulation benötigte Modell aus einer<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [ist, Ost, Esel, Äste, Asyl, Lidl, Ösel, Ast, Este, Esthal, Gst, Isel, Tsd., Wastl, aßt, zzt.] (44683) [lt:de:GERMAN_SPELLER_RULE]">.s</span>t</span>l</span> Datei des Herstellers generiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 649</div><div class="codeline">Diese Datei enthält eine geometrische Beschreibung des Roboters, zu sehen in Abbildung \ref{robot_raw}, welche nicht direkt im Simulator nutzbar ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 650</div><div class="codeline">Aus dieser Datei wurden mit <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [FreeBSD, Freihat, Freikam, Freenet] (44885) [lt:de:GERMAN_SPELLER_RULE]">FreeCAD</span> \cite{freecad} alle Glieder des Roboters als separate <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Kolkata-Dateien, Collage-Dateien, Fallada-Dateien, Zollst-Dateien, Colgate-Dateien] (44936) [lt:de:GERMAN_SPELLER_RULE]">Collada-Dateien</span> exportiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 651</div><div class="codeline">Dabei muss darauf geachtet werden, dass die exportierten Daten eine ausreichende Meshgröße haben.</div><div class="clear"></div>
|
|
<div class="linenb"> 652</div><div class="codeline">Diese kann vor dem Export in <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [FreeBSD, Freihat, Freikam, Freenet] (45091) [lt:de:GERMAN_SPELLER_RULE]">FreeCAD</span> eingestellt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 653</div><div class="codeline">Durch diese Einstellung bleiben feine Strukturen erhalten, die später in Blender wieder reduziert werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 654</div><div class="codeline">Ein solches Vorgehen erlaubt es Blender, bessere Entscheidungen über die Reduktion von Strukturen zu treffen.</div><div class="clear"></div>
|
|
<div class="linenb"> 655</div><div class="codeline">Das Resultat ist ein <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [exakter es, exakter, exaktes, exaktestes] (45363) [lt:de:GERMAN_SPELLER_RULE]">exakteres</span> Endmodell des Roboters.</div><div class="clear"></div>
|
|
<div class="linenb"> 656</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 657</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 658</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth/2]{img/MA-Roboter-Rohdaten}</div><div class="clear"></div>
|
|
<div class="linenb"> 659</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 660</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Rohdaten aus .stl-Datei</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 661</div><div class="codeline"><span class="keyword1">\label</span>{robot_raw}</div><div class="clear"></div>
|
|
<div class="linenb"> 662</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 663</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 664</div><div class="codeline">Diese Dateien können dann in Blender bearbeitet werden, um sie für die Simulation tauglich zu machen.</div><div class="clear"></div>
|
|
<div class="linenb"> 665</div><div class="codeline">Hierfür wurde die hohe Auflösung der Modelle reduziert, was sich positiv auf die Dateigröße, die Startzeit der Simulation und die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Rudergeschwindigkeit, Sendegeschwindigkeit, Ländergeschwindigkeit, Wandergeschwindigkeit, Reitergeschwindigkeit, Wettergeschwindigkeit, Bändergeschwindigkeit, Rentnergeschwindigkeit, Rentengeschwindigkeit, Weitergeschwindigkeit, Kindergeschwindigkeit, Hintergeschwindigkeit, Leitergeschwindigkeit, Männergeschwindigkeit, Rittergeschwindigkeit, Wintergeschwindigkeit, Redegeschwindigkeit, Federgeschwindigkeit, Händlergeschwindigkeit, Wundergeschwindigkeit] (45631) [lt:de:GERMAN_SPELLER_RULE]">Rendergeschwindigkeit</span> auswirkt.</div><div class="clear"></div>
|
|
<div class="linenb"> 666</div><div class="codeline">Außerdem wurden die Glieder so ausgerichtet, dass sich der Verbindungspunkt zum vorherigen Glied im Nullpunkt des Koordinatensystems befindet.</div><div class="clear"></div>
|
|
<div class="linenb"> 667</div><div class="codeline">Das vollständige visuelle Modell ist in Abbildung \ref{robot_visual} zu sehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 668</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 669</div><div class="codeline">Um die Simulation weiter zu beschleunigen, wurden die Kollisionsboxen des Arms noch weiter vereinfacht, was die Kollisionsüberprüfung deutlich beschleunigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 670</div><div class="codeline">Dabei werden stark simplifizierte Formen verwendet, die das hochqualitative visuelle Modell mit einfachen Formen umfassen.</div><div class="clear"></div>
|
|
<div class="linenb"> 671</div><div class="codeline">Das resultierende Modell, in Abbildung \ref{robot_collision} dargestellt, wird später zur Kollisionserkennung verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 672</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 673</div><div class="codeline">Diese Herangehensweise ist nötig, da die Kollisionserkennung auf der CPU durchgeführt und durch komplexe Formen stark verlangsamt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 674</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 675</div><div class="codeline">Um aus den generierten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Gleitermodellen, Geistermodellen, Liefermodellen, Gleitermodelle, Fliegermodellen, Kleidermodellen] (46411) [lt:de:GERMAN_SPELLER_RULE]">Gliedermodellen</span> ein komplettes Robotermodell erstellen zu können, wurde eine<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Gurt-Datei, Wurf-Datei] (46488) [lt:de:GERMAN_SPELLER_RULE]">.u</span>r</span>df-Datei</span> erstellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 676</div><div class="codeline">In dieser werden die verwendeten Gelenktypen zwischen den einzelnen Gliedern, aber auch deren Masse, maximale Geschwindigkeit, maximale Motorkraft, Reibung und Dämpfung hinterlegt.</div><div class="clear"></div>
|
|
<div class="linenb"> 677</div><div class="codeline">Diese Daten können später zur Simulation der Motoren genutzt werden, die den Arm bewegen.</div><div class="clear"></div>
|
|
<div class="linenb"> 678</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 679</div><div class="codeline">Die Gelenkpositionen sind dabei relative Angaben, die sich auf das Glied beziehen, an dem ein weiteres Glied über das Gelenk verbunden werden soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 680</div><div class="codeline">Alle kontrollierbaren Gelenke benötigen auch eine Gelenkachse, die je nach Gelenktyp die mögliche Beweglichkeit bestimmt.</div><div class="clear"></div>
|
|
<div class="linenb"> 681</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 682</div><div class="codeline">Alle hier erstellten Dateien wurden im Paket \code{iisy_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [zopfig, König, künftig, Honig, kantig, konvex, zornig, Konvikt, kundig, sonnig, zottig, knotig, konfus, körnig, zünftig, konzis, korkig, kotzig, kurvig, tonig] (47103) [lt:de:GERMAN_SPELLER_RULE]">config}</span> zusammengefasst, um diese einfacher wieder auffinden zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 683</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 684</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.49\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 685</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Roboter-Visuell}</div><div class="clear"></div>
|
|
<div class="linenb"> 686</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 687</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Visuelles Modell</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 688</div><div class="codeline"><span class="keyword1">\label</span>{robot_visual}</div><div class="clear"></div>
|
|
<div class="linenb"> 689</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 690</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.49\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb"> 691</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Roboter-Kollision}</div><div class="clear"></div>
|
|
<div class="linenb"> 692</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 693</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Kollisionsmodell</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 694</div><div class="codeline"><span class="keyword1">\label</span>{robot_collision}</div><div class="clear"></div>
|
|
<div class="linenb"> 695</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 696</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 697</div><div class="codeline"><span class="keyword1">\subsection</span>{MoveIt 2 Konfiguration}</div><div class="clear"></div>
|
|
<div class="linenb"> 698</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [das] (47197) [lt:de:DE_CASE]">Das</span> im Abschnitt Modellierung erstellte Paket mit dem Roboter-Modell kann mit dem neu implementierten MoveIt <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Konfigurator, Konfigurators, Konfigurativ] (47306) [lt:de:GERMAN_SPELLER_RULE]">Configurator</span> um die benötigten Kontrollstrukturen erweitert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 699</div><div class="codeline">Dazu wurde der <span class="highlight" title="Möglicher Tippfehler gefunden. (47389) [lt:de:GERMAN_SPELLER_RULE]">Setupassistent</span> von MoveIt2 verwendet, der das Modell für MoveIt anpasst.</div><div class="clear"></div>
|
|
<div class="linenb"> 700</div><div class="codeline">Dabei wird das Modell mit weiteren Parametern versehen, die durch MoveIt genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 701</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 702</div><div class="codeline">Die Erstellung des erweiterten Modells mit dem Assistenten funktionierte komplett fehlerfrei, jedoch ließen sich die generierten Dateien nicht direkt nutzen.</div><div class="clear"></div>
|
|
<div class="linenb"> 703</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 704</div><div class="codeline">Um die generierten Dateien nutzen zu können, mussten diese weiter angepasst werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 705</div><div class="codeline">Dies beinhaltete die korrekte Integration der Roboterdefinitionen im Paket, aber auch zahlreiche Pfadreferenzen auf verwendete Dateien, die nicht korrekt generiert wurden.</div><div class="clear"></div>
|
|
<div class="linenb"> 706</div><div class="codeline">Diese können standardmäßig nicht in Gazebo, <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Reis, Reiß, Reiz, Avis, RVGs, Evis, Roys, Weiß, Ivys, Reise, Rein, Rhein, Rio, Reich, DVDs, Reist, Eric, Via, Ross, Heiß] (48011) [lt:de:GERMAN_SPELLER_RULE]">RViz</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Move Group] (48020) [lt:de:GERMAN_SPELLER_RULE]">MoveGroup</span> gleichzeitig geladen werden, da diese Programme unterschiedliche Pfadangaben verlangen, was die Nutzung verhindert.</div><div class="clear"></div>
|
|
<div class="linenb"> 707</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 708</div><div class="codeline">Eine Möglichkeit zur Lösung des Problems ist die Verwendung von \code{file://}-URIs, die von allen dieser Programme gelesen werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 709</div><div class="codeline">Der <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Moovit, Soweit, Hoheit, Moment, Gefeit, Rohheit, Monet, Mögest, Mosaik, Doofheit, Moabit, Rohfett, Covert, Modelt, Mohair, Modert, Mokett, Mogelt, Monoid, Morbid] (48283) [lt:de:GERMAN_SPELLER_RULE]">Moveit</span> Setup Assistent kann diese <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Uris, URLs, Iris, UCI, Eris, UFOs, Urig, URL, Bis, Urs, Kurz, Uhus, Groß, Ulms, Kurze, Udos, Kreis, Utas, Paris, APIs] (48317) [lt:de:GERMAN_SPELLER_RULE]">URIs</span> nicht lesen, was zu Fehlern bei einer Rekonfiguration führen kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 710</div><div class="codeline">Falls eine Neukonfiguration des Roboters mit dem Assistenten durchgeführt werden soll, muss diese Umwandlung temporär rückgängig gemacht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 711</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 712</div><div class="codeline">Das so erstellte Modell kann über den Aufruf von \code{ros2 <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Launch, launche, launcht, auch, Bauch, Rauch, Tausch, Übung, Ranch, Rausch, klang, manch, Bausch, Hauch, lauscht, Lauch, launisch, lasch, Ölung, lach] (48589) [lt:de:GERMAN_SPELLER_RULE]">launch</span> iisy_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [zopfig, König, künftig, Honig, kantig, konvex, zornig, Konvikt, kundig, sonnig, zottig, knotig, konfus, körnig, zünftig, konzis, korkig, kotzig, kurvig, tonig] (48601) [lt:de:GERMAN_SPELLER_RULE]">config<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"></span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Demo, dem, demo-, Memo, der, Dämon, den, devot, des, de, Demo-, teil, Demos, denn, Leo, dto, dato, dämm-, desto, dämme, dein, dämmt, käme, gem, time, tempo-, wem, tägl, Hemd, Lemgo] (48608) [lt:de:GERMAN_SPELLER_RULE]">demo</span>.la</span>unch.py} in <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Reis, Reiß, Reiz, Avis, RVGs, Evis, Roys, Weiß, Ivys, Reise, Rein, Rhein, Rio, Reich, DVDs, Reist, Eric, Via, Ross, Heiß] (48626) [lt:de:GERMAN_SPELLER_RULE]">RViz</span> getestet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 713</div><div class="codeline">Hierfür erscheint das Robotermodell mit mehreren Markern und Planungsoptionen, die genutzt werden können, um beliebige Bewegungen zu planen und auszuführen.</div><div class="clear"></div>
|
|
<div class="linenb"> 714</div><div class="codeline">\<span class="highlight-sh" title="This subsection is very short (about 121 words). You should consider merging it with another section or make it longer. [sh:seclen]">subsection</span>{Integration mit Gazebo}</div><div class="clear"></div>
|
|
<div class="linenb"> 715</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [das] (48828) [lt:de:DE_CASE]">Das</span> so erweiterte Modell kann zur Laufzeit in Gazebo geladen werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 716</div><div class="codeline">Dafür wird das Paket \code{ros_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [es, gab, km, gut, gar, kW, kg, gen, kHz, Hz, kJ, kN, aß, geh, gib, IgG, chi, kt, chic, gäb] (48922) [lt:de:GERMAN_SPELLER_RULE]">gz</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [SIM, im, sie, zum, Jim, Kim, Tim, Wim, zig, die, in, ist, mit, dem, ein, sich, zu, am, bis, sind] (48925) [lt:de:GERMAN_SPELLER_RULE]">sim}</span> verwendet, dass das \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [kreide-Programm, Geräte-Programm, Kreide-Programm, Kräfte-Programm] (48949) [lt:de:GERMAN_SPELLER_RULE]">create}-Programm</span> beinhaltet.</div><div class="clear"></div>
|
|
<div class="linenb"> 717</div><div class="codeline">Mit diesem Werkzeug wird ein Modell unter einem bestimmten Namen anhand einer Datei oder eines übergebenen Strings in Gazebo importiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 718</div><div class="codeline">Das Modell kann dabei über Argumente im Raum verschoben und rotiert werden, falls diese Funktionalität benötigt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 719</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 720</div><div class="codeline">In diesem Fall wird das Modell als String geladen, der durch \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Makro, facto, Kairo, Marco, Kakao, Macao, Harro, Karo, Macho, Macron, Makros, Mikro, Sacrow, Sakko, Tacho, Taro, Caro, Faro] (49294) [lt:de:GERMAN_SPELLER_RULE]">xacro}</span> erstellt wurde.</div><div class="clear"></div>
|
|
<div class="linenb"> 721</div><div class="codeline">Dies ist nötig, um Informationen aus anderen Dateien in das generierte XML übernehmen zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 722</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 723</div><div class="codeline">Im Modell sind auch die verwendeten Gazebo-Plugins deklariert, die für die Integration mit \code{ros_control} verantwortlich sind.</div><div class="clear"></div>
|
|
<div class="linenb"> 724</div><div class="codeline">Das Gazebo-Plugin lädt dabei die verwendeten Controller und versorgt diese mit Informationen über den Roboter.</div><div class="clear"></div>
|
|
<div class="linenb"> 725</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 726</div><div class="codeline"><span class="keyword1">\section</span>{Behavior Trees}</div><div class="clear"></div>
|
|
<div class="linenb"> 727</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [alle] (49665) [lt:de:DE_CASE]">Alle</span> Behavior Trees wurden im Paket \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Idee, treu, berät, Spree, treue, pure, purem, puren, purer, strebe, trete, bare, baren, bares, bereue, pures, Püree, barer, bürge, bürde] (49701) [lt:de:GERMAN_SPELLER_RULE]">btree}</span> organisiert, das die Bäume im XML-Format und die Implementation der Nodes und umliegenden Infrastruktur in C++ enthält.</div><div class="clear"></div>
|
|
<div class="linenb"> 728</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 729</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 730</div><div class="codeline">Für die Umsetzung des Szenarios wurden neue Nodes für den Behavior Tree erstellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 731</div><div class="codeline">Diese lassen sich nach Nutzung in verschiedene Gruppen einordnen.</div><div class="clear"></div>
|
|
<div class="linenb"> 732</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 733</div><div class="codeline">\<span class="highlight-sh" title="A heading of level n should not be followed by a heading of level n+2 or more. [sh:secskip]">subsubsection</span>{Allgemein nutzbare Nodes}</div><div class="clear"></div>
|
|
<div class="linenb"> 734</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Deskription, deskriptiv, deskriptive, deskriptiven, Inskription] (50003) [lt:de:GERMAN_SPELLER_RULE]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 735</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (50018) [lt:de:GERMAN_SPELLER_RULE]">GenerateXYPose</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 736</div><div class="codeline"> generiert eine Pose in einem durch den \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Area, Urea, areal, aber, waren, drei, frei, Maria, armen, treu, Areal, Gera, Korea, Zaren, arm, arme, real, reg, Ära, Kreta] (50075) [lt:de:GERMAN_SPELLER_RULE]">area}</span> Parameter angegebenen Bereich.</div><div class="clear"></div>
|
|
<div class="linenb"> 737</div><div class="codeline"> Um dies zu ermöglichen, wird zuerst die Fläche aller Dreiecke berechnet, die den Bereich definieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 738</div><div class="codeline"> Diese werden durch den Gesamtinhalt geteilt, um eine Wichtung der Dreiecke zum Gesamtinhalt zu erreichen.</div><div class="clear"></div>
|
|
<div class="linenb"> 739</div><div class="codeline"> Darauf wird eine Zufallszahl zwischen 0 und 1 gebildet.</div><div class="clear"></div>
|
|
<div class="linenb"> 740</div><div class="codeline"> Von dieser werden die Wichtungen der Dreiecke abgezogen, bis diese Zufallszahl im nächsten abzuziehenden Dreieck liegt.</div><div class="clear"></div>
|
|
<div class="linenb"> 741</div><div class="codeline"> Als letzter Schritt wird in diesem Dreieck eine zufällige Position ermittelt, die über den Ausgabeparameter \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Pose, böse, bösen, lose, Bose, Hose, Lohse, Moose, böser, post, böses, böte, Soße, löse, bösem, rosé, bös, poste, Dose, José] (50612) [lt:de:GERMAN_SPELLER_RULE]">pose}</span> ausgegeben wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 742</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (50637) [lt:de:GERMAN_SPELLER_RULE]">InAreaTest</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 743</div><div class="codeline"> prüft, ob eine Pose, vorgegeben durch den \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Pose, böse, bösen, lose, Bose, Hose, Lohse, Moose, böser, post, böses, böte, Soße, löse, bösem, rosé, bös, poste, Dose, José] (50693) [lt:de:GERMAN_SPELLER_RULE]">pose}</span> Parameter, in einer durch den \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Area, Urea, areal, aber, waren, drei, frei, Maria, armen, treu, Areal, Gera, Korea, Zaren, arm, arme, real, reg, Ära, Kreta] (50728) [lt:de:GERMAN_SPELLER_RULE]">area}</span> Parameter definierten Zone liegt.</div><div class="clear"></div>
|
|
<div class="linenb"> 744</div><div class="codeline"> Hierfür wird überprüft, ob die X und Y-Werte der Pose in einem der Dreiecke liegen, welche die Area definieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 745</div><div class="codeline"> Der Rückgabewert ist das Ergebnis dieser Überprüfung, wobei SUCCESS bedeutet, dass sich die Pose in der Area befindet.</div><div class="clear"></div>
|
|
<div class="linenb"> 746</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Offset Pose] (51005) [lt:de:GERMAN_SPELLER_RULE]">OffsetPose</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 747</div><div class="codeline"> wird genutzt, um eine Pose im Raum zu bewegen und/oder deren Orientierung zu verändern.</div><div class="clear"></div>
|
|
<div class="linenb"> 748</div><div class="codeline"> Falls der \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Offset, öffnet, offen, Hoffest, Effet, Offsets, Topfset, hoffst, hofftet, soffest, soffst, äffst, äfftet, öffne, öffnen, öffnest, öffnete] (51119) [lt:de:GERMAN_SPELLER_RULE]">offset}</span> Parameter gesetzt ist, wird dieser mit dem \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Input, Debüt, anbot, Knut, Unmut, Anmut, Disput, anbaut, Inbus, Inputs, antut, einübt, hintut, impft, inert, intus, nippt, unbunt, ungut, anbuk] (51169) [lt:de:GERMAN_SPELLER_RULE]">input}</span> Parameter summiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 749</div><div class="codeline"> Außerdem wird die Orientierung der Pose auf den \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (51245) [lt:de:GERMAN_SPELLER_RULE]">orientation}</span> Parameter gesetzt, falls dieser vorhanden ist, was den ursprünglichen Wert überschreibt.</div><div class="clear"></div>
|
|
<div class="linenb"> 750</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (51349) [lt:de:GERMAN_SPELLER_RULE]">InterruptableSequence</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 751</div><div class="codeline"> stellt eine Sequence dar, die auch nach ihrem Abbruch ihre Position behält.</div><div class="clear"></div>
|
|
<div class="linenb"> 752</div><div class="codeline"> Dies ist notwendig, wenn ein bestimmtes Verhalten unterbrechbar ist, aber zu einem späteren Zeitpunkt fortgesetzt werden soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 753</div><div class="codeline"> Hierzu wird der Iterator der unterlegenden Sequenz nur erhöht, wenn die untergeordnete Node SUCCESS zurückmeldet.</div><div class="clear"></div>
|
|
<div class="linenb"> 754</div><div class="codeline"> <span class="highlight" title="Dieses Wort kommt in einem nahe gelegenen vorherigen Satz bereits vor. Verwenden Sie ein Synonym, um Ihren Text abwechslungsreicher zu gestalten, außer die Wiederholung ist beabsichtigt.. Suggestions: [Zudem, Obendrein, Überdies, Zusätzlich, Ebenso] (51697) [lt:de:DE_REPEATEDWORDS]">Außerdem</span> wird der Iterator nicht zurückgesetzt, wenn die Ausführung dieser modifizierten Sequenz abgebrochen wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 755</div><div class="codeline"> <span class="keyword1">\item</span>[WeightedRandom]</div><div class="clear"></div>
|
|
<div class="linenb"> 756</div><div class="codeline"> ist eine <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Steuerungscode, Steuerungnade, Steuerungsakte, Steuerangstode, Steuerungscodes, Steuerungsnota, Steuerungsnetz, Steuerungsorte, Steuerungseide, Steuerungspott, Steuerungsende, Steuerungslot, Steuerungspate, Steuerungspore, Steuerungstore, Steuerungsnöte, Steuerungsnote, Steuerungstode, Steuerungsboote, Steuerungstote] (51842) [lt:de:GERMAN_SPELLER_RULE]">Steuerungsnode</span>, die mehrere untergeordnete Nodes besitzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 757</div><div class="codeline"> Dabei werden diese nicht, wie bei anderen <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Steuerungscodes, Steuerungsendes, Steuerungscode, Steuerungspottes, Steuerungsmodus, Steuerungsnordens, Steuerungsnetzes, Steuerungsbodens, Steuerungstodes, Steuerungstötens, Steuerungshotels, Steuerungsrotems, Steuerungsbootes, Steuerungsnotars, Steuerungshodens, Steuerungspodests, Steuerungsrodens, Steuerungsköders, Steuerungsmotels, Steuerungsrodeos] (51944) [lt:de:GERMAN_SPELLER_RULE]">Steuerungsnodes</span> üblich, sequentiell ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 758</div><div class="codeline"> Anhand einer vorgegebenen Wichtung im \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [weicht, weihte, weiches, weiht, Fights, weichst, weichste, weichstes, weichte, weihst] (52032) [lt:de:GERMAN_SPELLER_RULE]">weights}</span> Parameter wird eine der untergeordneten Nodes zufällig ausgewählt.</div><div class="clear"></div>
|
|
<div class="linenb"> 759</div><div class="codeline"> Diese Node wird als einzige Node ausgeführt, bis diese den SUCCESS-Status zurückgibt.</div><div class="clear"></div>
|
|
<div class="linenb"> 760</div><div class="codeline"> Nachdem dieser Status erreicht wurde, wird bei dem nächsten Durchlauf eine neue Node ausgewählt.</div><div class="clear"></div>
|
|
<div class="linenb"> 761</div><div class="codeline"> Der Rückgabewert ist der Rückgabewert der ausgewählten untergeordneten Node.</div><div class="clear"></div>
|
|
<div class="linenb"> 762</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (52376) [lt:de:GERMAN_SPELLER_RULE]">IsCalled</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 763</div><div class="codeline"> fragt den aktuellen <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Ballett-Status, Gallen-Status, Hallen-Status, Allee-Status] (52408) [lt:de:GERMAN_SPELLER_RULE]">Called-Status</span> des Actors ab, der in einigen Szenarien vom Roboter verwendet wird, um den simulierten Menschen zu rufen.</div><div class="clear"></div>
|
|
<div class="linenb"> 764</div><div class="codeline"> Der Rückgabewert der Node ist dabei SUCCESS, falls der Mensch gerufen wird, oder FAILURE, wenn kein RUF durchgeführt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 765</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (52656) [lt:de:GERMAN_SPELLER_RULE]">SetCalledTo</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 766</div><div class="codeline"> setzt den aktuellen <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Ballett-Status, Gallen-Status, Hallen-Status, Allee-Status] (52691) [lt:de:GERMAN_SPELLER_RULE]">Called-Status</span> auf den Wert des übergebenen \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [statt, späte, stete, starte, staute, satte, skate, Stade, stabe, stabte, statte, staue, stakte, hatte, Stadt, später, setzte, stand, starb, stark] (52734) [lt:de:GERMAN_SPELLER_RULE]">state}</span> Parameters.</div><div class="clear"></div>
|
|
<div class="linenb"> 767</div><div class="codeline"> Da diese Aktion nicht fehlschlagen kann, liefert diese Node immer SUCCESS als Rückgabewert.</div><div class="clear"></div>
|
|
<div class="linenb"> 768</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (52849) [lt:de:GERMAN_SPELLER_RULE]">RandomFailure</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 769</div><div class="codeline"> generiert eine Zufallszahl von 0 bis 1, die mit dem \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [familiäre, faire, feinere, feilte, feile, fahlere, fairere, faulere, feiere, feigere, filtre, geilere, heilere] (52918) [lt:de:GERMAN_SPELLER_RULE]">failure</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Chance, ganze, ganz, ganzen, ganzes, ganzer, kranke, ganzem, kränke, Chancen, gäbe, krank, kranken, Flanke, Franke, Schanze, ginge, Schande, Trance, gang] (52926) [lt:de:GERMAN_SPELLER_RULE]">chance}</span> Parameter verglichen wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 770</div><div class="codeline"> Der Rückgabewert ist das Ergebnis des Vergleichs, FAILURE, wenn die Zufallszahl kleiner als der \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [familiäre, faire, feinere, feilte, feile, fahlere, fairere, faulere, feiere, feigere, filtre, geilere, heilere] (53058) [lt:de:GERMAN_SPELLER_RULE]">failure</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Chance, ganze, ganz, ganzen, ganzes, ganzer, kranke, ganzem, kränke, Chancen, gäbe, krank, kranken, Flanke, Franke, Schanze, ginge, Schande, Trance, gang] (53066) [lt:de:GERMAN_SPELLER_RULE]">chance}</span> Parameter ist, oder im anderen Falle SUCCESS.</div><div class="clear"></div>
|
|
<div class="linenb"> 771</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (53119) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 772</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 773</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Menschenspezifische Nodes}</div><div class="clear"></div>
|
|
<div class="linenb"> 774</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Deskription, deskriptiv, deskriptive, deskriptiven, Inskription] (53158) [lt:de:GERMAN_SPELLER_RULE]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 775</div><div class="codeline"> <span class="keyword1">\item</span>[ActorAnimation]</div><div class="clear"></div>
|
|
<div class="linenb"> 776</div><div class="codeline"> wird verwendet, um dem simulierten Menschen eine auszuführende Animation zu senden.</div><div class="clear"></div>
|
|
<div class="linenb"> 777</div><div class="codeline"> Die Node benötigt zur Ausführung einen Animationsnamen, der im \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Animation, Reanimation] (53340) [lt:de:GERMAN_SPELLER_RULE]">animation</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Name, nahe, käme, Häme, nähme, nage, Lamé, Dame, Game, Same, lamé, nähe, Fame, am, nach, kam, neue, Namen, kamen, nahm] (53350) [lt:de:GERMAN_SPELLER_RULE]">name}</span> Parameter angegeben wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 778</div><div class="codeline"> Ein optionaler \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Animation, Reanimation] (53398) [lt:de:GERMAN_SPELLER_RULE]">animation</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Speed, speit, spiet, späht, später, steht, sieht, späten, zieht, spät, späte, zielt, Ebert, Speer, spürt, ziert, zweit, seid, siegt, spart] (53408) [lt:de:GERMAN_SPELLER_RULE]">speed}</span> Parameter gibt die Ausführungsgeschwindigkeit vor.</div><div class="clear"></div>
|
|
<div class="linenb"> 779</div><div class="codeline"> Der Rückgabewert ist SUCCESS, wenn die komplette Ausführung gelang, oder FAILURE, falls diese abgebrochen oder abgelehnt wurde.</div><div class="clear"></div>
|
|
<div class="linenb"> 780</div><div class="codeline"> <span class="keyword1">\item</span>[ActorMovement]</div><div class="clear"></div>
|
|
<div class="linenb"> 781</div><div class="codeline"> funktioniert wie eine ActorAnimation, sendet jedoch eine Bewegungsanfrage.</div><div class="clear"></div>
|
|
<div class="linenb"> 782</div><div class="codeline"> Auch für diese wird ein Animationsname benötigt, der im \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Animation, Reanimation] (53748) [lt:de:GERMAN_SPELLER_RULE]">animation</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Name, nahe, käme, Häme, nähme, nage, Lamé, Dame, Game, Same, lamé, nähe, Fame, am, nach, kam, neue, Namen, kamen, nahm] (53758) [lt:de:GERMAN_SPELLER_RULE]">name}</span> Parameter definiert wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 783</div><div class="codeline"> Jedoch wird für die Synchronisation zur Bewegung ein Distanzwert benötigt, der in einem Animationsdurchlauf zurückgelegt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 784</div><div class="codeline"> Dieser wird im \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Animation, Reanimation] (53935) [lt:de:GERMAN_SPELLER_RULE]">animation</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Eistänze, Distanz, Distanzen, distale, Eistanzen, Eistanz, Eistänzer, Eistank, Eistanzes, Eistänzen, Gestanke, Misthacke, dastände, distanzier, distinkt, distinkte, mittanze, abstänke] (53945) [lt:de:GERMAN_SPELLER_RULE]">distance}</span> Parameter übergeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 785</div><div class="codeline"> Eine Zielpose wird im \code{target} Parameter gesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 786</div><div class="codeline"> Eine Besonderheit dieses Parameters ist die Verwendung des <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Null-Quaternion, Null-Quaternionen] (54086) [lt:de:GERMAN_SPELLER_RULE]">Null-Quaternions</span> als Richtungsangabe, was die Endrotation auf die Laufrichtung setzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 787</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (54172) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 788</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 789</div><div class="codeline">\<span class="highlight-sh" title="This subsubsection is very short (about 130 words). You should consider merging it with another section or make it longer. [sh:seclen]">subsubsection</span>{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Roboter spezifische, Roboterspezi fische, Robotersteckfische, Roboterspeerfische, Roboterstechfische] (54185) [lt:de:GERMAN_SPELLER_RULE]">Roboterspezifische</span> Nodes}</div><div class="clear"></div>
|
|
<div class="linenb"> 790</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Deskription, deskriptiv, deskriptive, deskriptiven, Inskription] (54210) [lt:de:GERMAN_SPELLER_RULE]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 791</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (54225) [lt:de:GERMAN_SPELLER_RULE]">RobotMove</span>] gibt dem Roboter eine neue Zielposition über den \code{target} Parameter vor.</div><div class="clear"></div>
|
|
<div class="linenb"> 792</div><div class="codeline"> Bei dieser Node handelt es sich um eine asynchrone Node, die nur bei der erfolgreichen Ausführung der Bewegung mit dem SUCCESS-Status beendet wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 793</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (54460) [lt:de:GERMAN_SPELLER_RULE]">SetRobotVelocity</span>] setzt eine neue maximale Geschwindigkeit des Roboters, vorgegeben durch den \code{velocity} Parameter.</div><div class="clear"></div>
|
|
<div class="linenb"> 794</div><div class="codeline"> Der Rückgabewert ist immer SUCCESS.</div><div class="clear"></div>
|
|
<div class="linenb"> 795</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (54612) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 796</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [diese] (54624) [lt:de:DE_CASE]">Diese</span> beiden <span class="highlight" title="Möglicher Tippfehler gefunden. (54637) [lt:de:GERMAN_SPELLER_RULE]">roboterspezifischen</span> Nodes beeinflussen im Hintergrund das gleiche System, da Bewegungen bei Geschwindigkeitsänderungen neu geplant und ausgeführt werden müssen.</div><div class="clear"></div>
|
|
<div class="linenb"> 797</div><div class="codeline">Dazu wird das letzte Ziel bis zu dessen Erreichen vorgehalten, um die Ausführung neu zu starten, falls eine Geschwindigkeitsänderung durchgeführt werden muss.</div><div class="clear"></div>
|
|
<div class="linenb"> 798</div><div class="codeline">Um die <span class="highlight" title="Möglicher Tippfehler gefunden. (54964) [lt:de:GERMAN_SPELLER_RULE]">RobotMove-Node</span> nicht zu unterbrechen, wird diese nur über einen Callback über den Erfolg oder Misserfolg der gesamten Bewegung und nicht über den Erfolg einzelner Teilbewegungen informiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 799</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 800</div><div class="codeline">\<span class="highlight-sh" title="The first heading of a document should be the one with the highest level. For example, if a document contains sections, the first section cannot be preceded by a sub-section. [sh:secorder]">subsection</span>{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Separees, Subtiles, Subteen, Superbes, Séparées, Süperbes] (55155) [lt:de:GERMAN_SPELLER_RULE]"></span>Subtrees}</div><div class="clear"></div>
|
|
<div class="linenb"> 801</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [um] (55164) [lt:de:DE_CASE]">Um</span> die Wiederverwendung von bestimmten Abläufen zu erleichtern, wurden diese in <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Separees, Subtiles, Subteen, Superbes, Séparées, Süperbes] (55244) [lt:de:GERMAN_SPELLER_RULE]">Subtrees</span> ausgelagert.</div><div class="clear"></div>
|
|
<div class="linenb"> 802</div><div class="codeline">In diesem Fall wurden die Aktionen ``Arbeiten an der Werkbank'' und ``Ablegen eines Objekts im Lagerregal'' des Menschen ausgelagert, da diese in mehreren Fällen verwendet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 803</div><div class="codeline">Diese Abstraktion erhöht die Lesbarkeit der Bäume und vereinfacht die Verwendung gleicher Aktionen in mehreren Bäumen.</div><div class="clear"></div>
|
|
<div class="linenb"> 804</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 805</div><div class="codeline">Für das Arbeiten an der Werkbank ist eine Bewegung des Menschen hin zu dieser erforderlich.</div><div class="clear"></div>
|
|
<div class="linenb"> 806</div><div class="codeline">Außerdem muss sich der Mensch zur Werkbank ausrichten, um die späteren Animationen korrekt auszuführen.</div><div class="clear"></div>
|
|
<div class="linenb"> 807</div><div class="codeline">Dazu wird eine Bewegung zu einem Punkt vor der Werkbank mit vorgegebener Zielrichtung genutzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 808</div><div class="codeline">Nach dieser Bewegung soll ein Arbeitsprozess simuliert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 809</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 810</div><div class="codeline">Da dieser Prozess weit vom Roboter entfernt ist, ist eine genaue Animation nicht erforderlich.</div><div class="clear"></div>
|
|
<div class="linenb"> 811</div><div class="codeline">In diesem Fall wird die Arbeit durch ausstrecken und zurücknehmen der Hand in Richtung der Werkbank simuliert.</div><div class="clear"></div>
|
|
<div class="linenb"> 812</div><div class="codeline">Dies wird durch zwei <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Animations-Bodens, Animations-Bootes, Animations-Codes, Animations-Codecs, Animations-Hodens, Animations-Hotels, Animations-Kodes, Animations-Köders, Animations-Köters, Animations-Lotes, Animations-Lötens, Animations-Models, Animations-Modems, Animations-Moders, Animations-Motels, Animations-Odems, Animations-Podests, Animations-Rodels] (56148) [lt:de:GERMAN_SPELLER_RULE]">Animations-Nodes</span> mit entsprechenden Parametern gesteuert.</div><div class="clear"></div>
|
|
<div class="linenb"> 813</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 814</div><div class="codeline">Die Ausführung der Nodes dieser Gesamtaktion soll sequenziell erfolgen, weshalb die Nodes unterhalb einer Sequence-Node gruppiert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 815</div><div class="codeline">Der vollständige resultierende Baum ist in Abbildung \ref{subtree_work} visualisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 816</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 817</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 818</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-subtree-work}</div><div class="clear"></div>
|
|
<div class="linenb"> 819</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 820</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Behavior Tree für das Arbeiten an der Werkbank</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 821</div><div class="codeline"><span class="keyword1">\label</span>{subtree_work}</div><div class="clear"></div>
|
|
<div class="linenb"> 822</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 823</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 824</div><div class="codeline">Das Ablegen von Objekten in einem Schrank ist ein komplizierterer Prozess, da der Schrank in mehreren Ebenen befüllt werden kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 825</div><div class="codeline"><span class="highlight" title="Dieses Wort kommt in einem nahe gelegenen vorherigen Satz bereits vor. Verwenden Sie ein Synonym, um Ihren Text abwechslungsreicher zu gestalten, außer die Wiederholung ist beabsichtigt.. Suggestions: [Zudem, Obendrein, Überdies, Zusätzlich, Ebenso] (56546) [lt:de:DE_REPEATEDWORDS]">Außerdem</span> sind mehrere Fächer verfügbar, die genutzt werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 826</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 827</div><div class="codeline">Wie bereits bei der Werkbank wird zuerst eine Bewegung hin zum Schrank ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 828</div><div class="codeline">Diese hat eines der drei im Schrank vorhandenen Schrankteile zum Ziel.</div><div class="clear"></div>
|
|
<div class="linenb"> 829</div><div class="codeline">Die Auswahl des Ziels erfolgt zufällig durch eine WeightedRandom-Node, die eine der drei <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bewegungs-Bodens, Bewegungs-Bootes, Bewegungs-Codes, Bewegungs-Codecs, Bewegungs-Hodens, Bewegungs-Hotels, Bewegungs-Kodes, Bewegungs-Köders, Bewegungs-Köters, Bewegungs-Lotes, Bewegungs-Lötens, Bewegungs-Models, Bewegungs-Modems, Bewegungs-Moders, Bewegungs-Motels, Bewegungs-Odems, Bewegungs-Podests, Bewegungs-Rodels] (56857) [lt:de:GERMAN_SPELLER_RULE]">Bewegungs-Nodes</span> ausführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 830</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 831</div><div class="codeline">Danach erfolgt eine weitere zufällige Auswahl die entscheidet, ob das obere oder das untere Fach des betreffenden Schranks genutzt werden soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 832</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 833</div><div class="codeline">Im Falle eines oberen Faches werden nur zwei Animationen benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 834</div><div class="codeline">Die Hand wird zu einem oberen Fach ausgestreckt und zurückgezogen.</div><div class="clear"></div>
|
|
<div class="linenb"> 835</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 836</div><div class="codeline">Für den Fall eines unteren Fachs werden vier Animationen genutzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 837</div><div class="codeline">Zuerst kniet die Person auf den Boden nieder, um das untere Fach erreichen zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 838</div><div class="codeline">Danach wird ein Objekt durch Inspizieren und Ablegen in das Fach gelegt.</div><div class="clear"></div>
|
|
<div class="linenb"> 839</div><div class="codeline">Jetzt kann die Person wieder aufstehen, was die Person in die gleiche Position wie am Anfang der Aktion bringt.</div><div class="clear"></div>
|
|
<div class="linenb"> 840</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 841</div><div class="codeline">Für die beiden Fälle werden auch Sequenz-Nodes genutzt, da die Aktionen nacheinander ausgeführt werden sollen.</div><div class="clear"></div>
|
|
<div class="linenb"> 842</div><div class="codeline">Die beiden zufälligen Auswahlverfahren werden durch eine Sequenz verbunden.</div><div class="clear"></div>
|
|
<div class="linenb"> 843</div><div class="codeline">Der resultierende Ablauf wurde als Baum in Abbildung \ref{subtree_deposit} visualisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 844</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 845</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 846</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-subtree-deposit}</div><div class="clear"></div>
|
|
<div class="linenb"> 847</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 848</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Behavior Tree für das Ablegen von Objekten im Schrank</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 849</div><div class="codeline"><span class="keyword1">\label</span>{subtree_deposit}</div><div class="clear"></div>
|
|
<div class="linenb"> 850</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 851</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 852</div><div class="codeline"><span class="keyword1">\subsection</span>{Verhalten des Roboters}</div><div class="clear"></div>
|
|
<div class="linenb"> 853</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [das] (57783) [lt:de:DE_CASE]">Das</span> grundlegende Verhalten des Roboters ist in jedem Anwendungsfall gleich.</div><div class="clear"></div>
|
|
<div class="linenb"> 854</div><div class="codeline">Dies hängt mit der automatischen Geschwindigkeitsanpassung zusammen.</div><div class="clear"></div>
|
|
<div class="linenb"> 855</div><div class="codeline">Der Roboter soll bei annäherndem Mensch zuerst seine Geschwindigkeit reduzieren, wenn dieser eine Warnzone betritt.</div><div class="clear"></div>
|
|
<div class="linenb"> 856</div><div class="codeline">Falls sich der Mensch weiter bis in die Sicherheitszone begibt, ist ein temporärer Stopp des Roboters vorgesehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 857</div><div class="codeline">Dieser Stopp soll nach dem Entfernen des Menschen aus der Sicherheitszone wieder aufgehoben werden, um die Arbeit fortzusetzen.</div><div class="clear"></div>
|
|
<div class="linenb"> 858</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 859</div><div class="codeline">Um diese Funktionen zu erlauben, ist eine Reaktion auf Statusänderungen von vorherigen Nodes nötig.</div><div class="clear"></div>
|
|
<div class="linenb"> 860</div><div class="codeline">Dies wird durch eine übergeordnete ReactiveSequence erreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 861</div><div class="codeline">Eine solche Node verhält sich ähnlich einer normalen Sequence, jedoch prüft sie zu jedem Ausführungsschritt noch einmal alle vorherigen Nodes.</div><div class="clear"></div>
|
|
<div class="linenb"> 862</div><div class="codeline">Dies geschieht auch, wenn eine andauernde Aktion sich noch im Status <span class="highlight" title="Möglicher Tippfehler gefunden. (58661) [lt:de:GERMAN_SPELLER_RULE]">RUNNING</span> befindet.</div><div class="clear"></div>
|
|
<div class="linenb"> 863</div><div class="codeline">Wenn eine vorherige Node einen Fehler zurückgibt, wird die aktuell laufende spätere Node abgebrochen.</div><div class="clear"></div>
|
|
<div class="linenb"> 864</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 865</div><div class="codeline">Als erste Node in der ReactiveSequence wird getestet, ob sich der Mensch in der Sicherheitszone aufhält.</div><div class="clear"></div>
|
|
<div class="linenb"> 866</div><div class="codeline">Wenn dies nicht der Fall ist, kann die Ausführung weiter fortgesetzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 867</div><div class="codeline">Dies wird durch eine über dem Test angeordnete Inverter-Node erreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 868</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 869</div><div class="codeline">Nach diesem Schritt kann die Geschwindigkeitsanpassung vorgenommen werden, falls diese nötig ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 870</div><div class="codeline">Dies wird durch eine <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Oft-Ehen-Else, Oft-Den-Else, Oft-Tee-Else, Oft-Tun-Else, Oft-Theo-Else] (59155) [lt:de:GERMAN_SPELLER_RULE]">If-Then-Else</span> Node erreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 871</div><div class="codeline">Als Bedingung wird ein Test auf den Aufenthalt des Menschen in der Warnzone verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 872</div><div class="codeline">Wenn der Mensch sich in dieser befindet, wird die Geschwindigkeit auf 10\% gesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 873</div><div class="codeline">Sonst wird die Geschwindigkeit wieder auf 100\% erhöht.</div><div class="clear"></div>
|
|
<div class="linenb"> 874</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 875</div><div class="codeline">Nach dieser Sequenz kann der spezifische Teil für die gewünschte Applikation hinzugefügt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 876</div><div class="codeline">In Abbildung \ref{tree_base_robot} wurde dies durch eine Wolke repräsentiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 877</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 878</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 879</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-base-robot}</div><div class="clear"></div>
|
|
<div class="linenb"> 880</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 881</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Grundlegender Behavior Tree des Roboters</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 882</div><div class="codeline"><span class="keyword1">\label</span>{tree_base_robot}</div><div class="clear"></div>
|
|
<div class="linenb"> 883</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 884</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 885</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Koexistenz}</div><div class="clear"></div>
|
|
<div class="linenb"> 886</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 887</div><div class="codeline">Im ersten Szenario, der Koexistenz zwischen Mensch und Roboter, soll eine Arbeitsaufgabe durch den Roboter allein simuliert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 888</div><div class="codeline">Hierfür soll der Roboter Objekte von der rechten auf die linke Tischseite transportieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 889</div><div class="codeline">Alle Nodes werden einer ReactiveSequence untergeordnet, um bei Unterbrechungen durch den Mensch den Fortschritt der Aktion behalten zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 890</div><div class="codeline">Mit einer <span class="highlight" title="Möglicher Tippfehler gefunden. (59955) [lt:de:GERMAN_SPELLER_RULE]">GenerateXYPose-Node</span> wird zuerst ein Ziel auf der linken Tischseite generiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 891</div><div class="codeline">Dieses Ziel befindet sich auf dem Boden, und muss auf die Tischebene angehoben werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 892</div><div class="codeline">Das Anheben wird durch eine <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Offset Pose-Nöte, Offset Pose-Tode, Offset Pose-Note, Offset Pose-Rote, Offset Pose-Boote] (60148) [lt:de:GERMAN_SPELLER_RULE]">OffsetPose-Node</span> realisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 893</div><div class="codeline">Mit einer <span class="highlight" title="Möglicher Tippfehler gefunden. (60186) [lt:de:GERMAN_SPELLER_RULE]">RobotMove-Node</span> wird die Bewegung zum generierten Zielpunkt ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 894</div><div class="codeline">Dies geschieht auf gleichem Weg für die rechte Tischseite.</div><div class="clear"></div>
|
|
<div class="linenb"> 895</div><div class="codeline">Der vollständige Baum ist in Abbildung \ref{tree_robot_coex} zu sehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 896</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 897</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 898</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-robot-coex}</div><div class="clear"></div>
|
|
<div class="linenb"> 899</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 900</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Erweiterter Behavior Tree des Roboters bei Koexistenz </span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 901</div><div class="codeline"><span class="keyword1">\label</span>{tree_robot_coex}</div><div class="clear"></div>
|
|
<div class="linenb"> 902</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 903</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 904</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Kooperation}</div><div class="clear"></div>
|
|
<div class="linenb"> 905</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 906</div><div class="codeline">Im Kooperationsszenario wird der Ablauf des ersten Szenarios modifiziert.</div><div class="clear"></div>
|
|
<div class="linenb"> 907</div><div class="codeline">Nach der Bewegung zu einem Objekt auf der linken Tischseite wird eine zufällige Entscheidung getroffen.</div><div class="clear"></div>
|
|
<div class="linenb"> 908</div><div class="codeline">Mit einer Chance von 90\% ist das Objekt den Anforderungen gerecht, und kann durch den Roboter auf ein Förderband gelegt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 909</div><div class="codeline">Im anderen Fall soll das Objekt auf den rechten Tisch gelegt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 910</div><div class="codeline">Von dort aus soll der Mensch dieses Objekt abholen, um den Ausschuss im Regal zu verstauen.</div><div class="clear"></div>
|
|
<div class="linenb"> 911</div><div class="codeline">Es wird dafür die gleiche Operationsabfolge aus dem ersten Szenario verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 912</div><div class="codeline">Am Ende der übernommenen Sequenz wird eine <span class="highlight" title="Möglicher Tippfehler gefunden. (60972) [lt:de:GERMAN_SPELLER_RULE]">SetCalledTo-Node</span> ergänzt, die den Menschen ruft.</div><div class="clear"></div>
|
|
<div class="linenb"> 913</div><div class="codeline">Eine Visualisierung des modifizierten Baums wird in Abbildung \ref{tree_robot_coop} gezeigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 914</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 915</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 916</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-robot-coop}</div><div class="clear"></div>
|
|
<div class="linenb"> 917</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 918</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Erweiterter Behavior Tree des Roboters bei Kooperation</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 919</div><div class="codeline"><span class="keyword1">\label</span>{tree_robot_coop}</div><div class="clear"></div>
|
|
<div class="linenb"> 920</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 921</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 922</div><div class="codeline">\<span class="highlight-sh" title="This subsubsection is very short (about 128 words). You should consider merging it with another section or make it longer. [sh:seclen]">subsubsection</span>{Kollaboration}</div><div class="clear"></div>
|
|
<div class="linenb"> 923</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 924</div><div class="codeline">Für das dritte Szenario soll der Roboter mit dem Menschen kollaborieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 925</div><div class="codeline">Um dieses Szenario umzusetzen, wird wiederum das erste Szenario modifiziert.</div><div class="clear"></div>
|
|
<div class="linenb"> 926</div><div class="codeline">Hier soll der Roboter eine Palette ausladen, wobei es durch die Beschaffenheit der Objekte zu Fehlern kommen kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 927</div><div class="codeline">Dies wird durch das Hinzufügen mehrerer <span class="highlight" title="Möglicher Tippfehler gefunden. (61416) [lt:de:GERMAN_SPELLER_RULE]">RandomFailure-Nodes</span> erreicht, welche die Sequenz abbrechen können.</div><div class="clear"></div>
|
|
<div class="linenb"> 928</div><div class="codeline">Da diese Probleme durch den Menschen behoben werden sollen, muss ein Mechanismus geschaffen werden, um diesen zu rufen.</div><div class="clear"></div>
|
|
<div class="linenb"> 929</div><div class="codeline">Hierfür wird eine Fallback-Node über der <span class="highlight" title="Möglicher Tippfehler gefunden. (61644) [lt:de:GERMAN_SPELLER_RULE]">InterruptableSequence</span> angeordnet.</div><div class="clear"></div>
|
|
<div class="linenb"> 930</div><div class="codeline">Diese Fallback-Node führt im Fall eines Fehlers in der <span class="highlight" title="Möglicher Tippfehler gefunden. (61733) [lt:de:GERMAN_SPELLER_RULE]">InterruptableSequence</span> die nächste Node aus.</div><div class="clear"></div>
|
|
<div class="linenb"> 931</div><div class="codeline">Bei dieser handelt es sich um eine <span class="highlight" title="Möglicher Tippfehler gefunden. (61812) [lt:de:GERMAN_SPELLER_RULE]">SetCalledTo-Node</span>, welche den Menschen ruft.</div><div class="clear"></div>
|
|
<div class="linenb"> 932</div><div class="codeline">Der Aufbau des Baumes wird in Abbildung \ref{tree_base_colab} dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 933</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 934</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 935</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-robot-colab}</div><div class="clear"></div>
|
|
<div class="linenb"> 936</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 937</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Erweiterter Behavior Tree des Roboters bei Kollaboration</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 938</div><div class="codeline"><span class="keyword1">\label</span>{tree_base_colab}</div><div class="clear"></div>
|
|
<div class="linenb"> 939</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 940</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 941</div><div class="codeline"><span class="keyword1">\subsection</span>{Verhalten des Menschen}</div><div class="clear"></div>
|
|
<div class="linenb"> 942</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 943</div><div class="codeline">\<span class="highlight-sh" title="Avoid stacked headings, i.e. consecutive headings without text in between. [sh:stacked]">subsubsection</span>{Koexistenz}</div><div class="clear"></div>
|
|
<div class="linenb"> 944</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 945</div><div class="codeline">Im ersten Szenario soll der Mensch nur neben dem Roboter arbeiten.</div><div class="clear"></div>
|
|
<div class="linenb"> 946</div><div class="codeline">Um das Verhalten des Roboters trotzdem zu prüfen, soll der Mensch selten die Sicherheitszone betreten, um den Roboter zu überwachen.</div><div class="clear"></div>
|
|
<div class="linenb"> 947</div><div class="codeline">Dies wird durch eine WeightedRandom-Node erreicht, die mit 95 prozentiger Wahrscheinlichkeit den normalen Arbeitsvorgang ausführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 948</div><div class="codeline">Im anderen Zweig wird mit einer Wahrscheinlichkeit von 5\% eine Bewegung in die Sicherheitszone ausgelöst.</div><div class="clear"></div>
|
|
<div class="linenb"> 949</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 950</div><div class="codeline">Der normale Arbeitsvorgang ist ein linearer Ablauf und wird von einer Sequence-Node repräsentiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 951</div><div class="codeline">In dieser werden nacheinander die beiden <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Separees, Subtiles, Subteen, Superbes, Séparées, Süperbes] (62528) [lt:de:GERMAN_SPELLER_RULE]">Subtrees</span> ``<span class="highlight" title="Möglicher Tippfehler gefunden. (62539) [lt:de:GERMAN_SPELLER_RULE]">WorkOnBench</span>'' und ``<span class="highlight" title="Möglicher Tippfehler gefunden. (62559) [lt:de:GERMAN_SPELLER_RULE]">DepositToShelf</span>'' ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 952</div><div class="codeline">Das Bewegen in die Sicherheitszone wird auch durch eine Sequence-Node erreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 953</div><div class="codeline">Diese enthält eine <span class="highlight" title="Möglicher Tippfehler gefunden. (62687) [lt:de:GERMAN_SPELLER_RULE]">GenerateXYPose-Node</span>, um ein Ziel in der Sicherheitszone auszuwählen und eine ActorMovement-Node, um die Bewegung auszulösen.</div><div class="clear"></div>
|
|
<div class="linenb"> 954</div><div class="codeline">Der Baum für diese Interaktion wird in Abbildung \ref{tree_actor_coex} dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 955</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 956</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 957</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-actor-coex}</div><div class="clear"></div>
|
|
<div class="linenb"> 958</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 959</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Behavior Tree des Menschen bei Koexistenz </span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 960</div><div class="codeline"><span class="keyword1">\label</span>{tree_actor_coex}</div><div class="clear"></div>
|
|
<div class="linenb"> 961</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 962</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 963</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Kooperation}</div><div class="clear"></div>
|
|
<div class="linenb"> 964</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 965</div><div class="codeline">Für das Kooperationsszenario wird diese Abfolge durch eine weitere, übergeordnete Sequence-Node ergänzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 966</div><div class="codeline">Diese wurde ausgewählt, da ein Ruf durch den Roboter in diesem Szenario nicht zeitkritisch ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 967</div><div class="codeline">Eine solche Implementation erlaubt das vollständige Ausführen der vorgehenden Aufgabe.</div><div class="clear"></div>
|
|
<div class="linenb"> 968</div><div class="codeline">In dieser hinzugefügten Sequence-Node wird die nötige Funktionalität für das Abholen der aussortierten Objekte implementiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 969</div><div class="codeline">Dies erfolgt nach einer <span class="highlight" title="Möglicher Tippfehler gefunden. (63329) [lt:de:GERMAN_SPELLER_RULE]">AmICalled-Node</span>, welche die Sequence vorzeitig beendet, falls der Mensch nicht gerufen wurde.</div><div class="clear"></div>
|
|
<div class="linenb"> 970</div><div class="codeline">Das vorzeitige Beenden führt zu einer erneuten Auswahl zwischen Arbeit und Inspektion.</div><div class="clear"></div>
|
|
<div class="linenb"> 971</div><div class="codeline">Sollte der Mensch jedoch durch den Roboter gerufen werden, wird die Sequence weiter ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 972</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 973</div><div class="codeline">In diesem Fall soll der Mensch das Objekt vom rechten Tisch abholen und in das Regal legen.</div><div class="clear"></div>
|
|
<div class="linenb"> 974</div><div class="codeline">Dies erfolgt durch eine ActorMovement-Node, welche den Mensch zum rechten Tisch bewegt.</div><div class="clear"></div>
|
|
<div class="linenb"> 975</div><div class="codeline">Nach dieser werden zwei ActorAnimation-Nodes ausgeführt, welche die Animationen ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Standing, Titanding, ständig, Uranding, ständisch, Etatding, standen, Kranding, ständige, ständische, sandig, ständen, Branding, Standring, Standding, stündig] (63868) [lt:de:GERMAN_SPELLER_RULE]">standing</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [endend, erdend, textend, ächtend, ächzend, ächzten, ächztest, enthält, sechsten, Texten, enden, externe, echten, geltend, extern, wütend, existent, endende, ertönt, latent] (63877) [lt:de:GERMAN_SPELLER_RULE]">extend</span>_arm'' und ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Standing, Titanding, ständig, Uranding, ständisch, Etatding, standen, Kranding, ständige, ständische, sandig, ständen, Branding, Standring, Standding, stündig] (63896) [lt:de:GERMAN_SPELLER_RULE]">standing</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [beträgt, betraut, betrat, Betracht, erträgt, getraut, Extrakt, Tretakt, Tretrad, betraft, betragt, ertragt, getränt, getrackt] (63905) [lt:de:GERMAN_SPELLER_RULE]">retract</span>_arm'' durchführen.</div><div class="clear"></div>
|
|
<div class="linenb"> 976</div><div class="codeline">Dies simuliert den Griff auf den Tisch, um das Objekt aufzuheben.</div><div class="clear"></div>
|
|
<div class="linenb"> 977</div><div class="codeline">Um das Objekt im Schrank zu verstauen, wird der bereits definierte <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bürde, Subtile, Separee, Subteen, Soupiere, Subtype, Superbe, Séparée, Süperbe, Supreme, Zuparke, Zustrebe, Zutrete] (64065) [lt:de:GERMAN_SPELLER_RULE]">Subtree</span> ``<span class="highlight" title="Möglicher Tippfehler gefunden. (64075) [lt:de:GERMAN_SPELLER_RULE]">DepositToShelf</span>'' genutzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 978</div><div class="codeline">Der Behavior Tree für die Kooperation des Menschen ist in Abbildung \ref{tree_actor_coop} dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 979</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 980</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 981</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-actor-coop}</div><div class="clear"></div>
|
|
<div class="linenb"> 982</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 983</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Behavior Tree des Menschen bei Kooperation </span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 984</div><div class="codeline"><span class="keyword1">\label</span>{tree_actor_coop}</div><div class="clear"></div>
|
|
<div class="linenb"> 985</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 986</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 987</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Kollaboration}</div><div class="clear"></div>
|
|
<div class="linenb"> 988</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 989</div><div class="codeline">Für das letzte Szenario soll der Mensch dem Roboter beim Entladen einer Palette assistieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 990</div><div class="codeline">Falls der Mensch nicht vom Roboter gerufen wird, soll dieser im Raum herumwandern.</div><div class="clear"></div>
|
|
<div class="linenb"> 991</div><div class="codeline">Für die Festlegung einer Baumstruktur ist es wichtig, ob der Mensch sofort, oder erst nach dem Vollenden seiner Arbeit dem Roboter zu Hilfe kommt.</div><div class="clear"></div>
|
|
<div class="linenb"> 992</div><div class="codeline">In diesem Fall soll er seine Arbeit unterbrechen, um auch diese Möglichkeit zu demonstrieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 993</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 994</div><div class="codeline">Ein solches Verhalten lässt sich mithilfe einer Fallback- mit untergeordneter ReactiveSequence-Node modellieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 995</div><div class="codeline">In der ReactiveSequence wird zuerst überprüft, ob der Mensch gerufen wurde.</div><div class="clear"></div>
|
|
<div class="linenb"> 996</div><div class="codeline">Da dieser Zustand die ReactiveSequence abbrechen soll, wird die verantwortliche <span class="highlight" title="Möglicher Tippfehler gefunden. (64888) [lt:de:GERMAN_SPELLER_RULE]">AmICalled-Node</span> mit einer Inverter-Node versehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 997</div><div class="codeline">In der ReactiveSequence kann eine weitere Sequence nach der Inverter-Node angeordnet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 998</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 999</div><div class="codeline">Diese Sequence-Node enthält den Teil des Baumes, der ausgeführt werden soll, solange der Mensch nicht gerufen wird.</div><div class="clear"></div>
|
|
<div class="linenb">1000</div><div class="codeline">In diesem Fall wird mit einer WeightedRandom-Node eine von drei <span class="highlight" title="Möglicher Tippfehler gefunden. (65211) [lt:de:GERMAN_SPELLER_RULE]">GenerateXYPose-Nodes</span> ausgewählt.</div><div class="clear"></div>
|
|
<div class="linenb">1001</div><div class="codeline">Diese geben jeweils Ziele in der sicheren Zone, Warnzone und Sicherheitszone zurück.</div><div class="clear"></div>
|
|
<div class="linenb">1002</div><div class="codeline">Nach der WeightedRandom-Node wird eine ActorMovement-Node genutzt, welche den Mensch zu dem ausgewählten Ziel bewegt.</div><div class="clear"></div>
|
|
<div class="linenb">1003</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">1004</div><div class="codeline">Neben der ReactiveSequence unter der Fallback-Node wird eine weitere Sequence angeordnet.</div><div class="clear"></div>
|
|
<div class="linenb">1005</div><div class="codeline">Hier wird die gewünschte Aktionsfolge bei Ruf durch den Roboter definiert.</div><div class="clear"></div>
|
|
<div class="linenb">1006</div><div class="codeline">In diesem Fall soll das Aufheben eines heruntergefallenen Objekts durchgeführt werden.</div><div class="clear"></div>
|
|
<div class="linenb">1007</div><div class="codeline">Dazu wird zuerst ein Ziel in der Warnzone unter Zuhilfenahme einer <span class="highlight" title="Möglicher Tippfehler gefunden. (65767) [lt:de:GERMAN_SPELLER_RULE]">GenerateXYPose-Node</span> generiert.</div><div class="clear"></div>
|
|
<div class="linenb">1008</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">1009</div><div class="codeline">Nach einer Bewegung zu diesem Ziel durch eine ActorMovement-Node wird ein Objekt aufgehoben.</div><div class="clear"></div>
|
|
<div class="linenb">1010</div><div class="codeline">Dies geschieht durch vier ActorAnimation-Nodes, welche jeweils die Animationen ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Standing, Titanding, ständig, Uranding, ständisch, Etatding, standen, Kranding, ständige, ständische, sandig, ständen, Branding, Standring, Standding, stündig] (65973) [lt:de:GERMAN_SPELLER_RULE]">standing</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [von, so, vom, vor, da, de, wo, zog, Sohn, Tod, du, hohe, wohl, John, Rom, bot, sog, tun, Hof, Tor] (65982) [lt:de:GERMAN_SPELLER_RULE]">to</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [los, Dow, log, Löw, wow, luv, Flow, von, so, vom, vor, wo, zog, New, Sohn, Tod, hohe, lag, ob, wohl] (65985) [lt:de:GERMAN_SPELLER_RULE]">low</span>'', ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [los, Dow, log, Löw, wow, luv, Flow, von, so, vom, vor, wo, zog, New, Sohn, Tod, hohe, lag, ob, wohl] (65994) [lt:de:GERMAN_SPELLER_RULE]">low</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Respekt, suspekt, anspeit, insbes.] (65998) [lt:de:GERMAN_SPELLER_RULE]">inspect</span>'', ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [los, Dow, log, Löw, wow, luv, Flow, von, so, vom, vor, wo, zog, New, Sohn, Tod, hohe, lag, ob, wohl] (66011) [lt:de:GERMAN_SPELLER_RULE]">low</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Grab, gab, grau, grob, grub, gräbt, Trab, gram, grabe, Wrap, grabt, ab, kam, trat, Frau, groß, knapp, Graf, gar] (66015) [lt:de:GERMAN_SPELLER_RULE]">grab</span>'' und ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [los, Dow, log, Löw, wow, luv, Flow, von, so, vom, vor, wo, zog, New, Sohn, Tod, hohe, lag, ob, wohl] (66028) [lt:de:GERMAN_SPELLER_RULE]">low</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [von, so, vom, vor, da, de, wo, zog, Sohn, Tod, du, hohe, wohl, John, Rom, bot, sog, tun, Hof, Tor] (66032) [lt:de:GERMAN_SPELLER_RULE]">to</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Standing, Titanding, ständig, Uranding, ständisch, Etatding, standen, Kranding, ständige, ständische, sandig, ständen, Branding, Standring, Standding, stündig] (66035) [lt:de:GERMAN_SPELLER_RULE]">standing</span>'' ausführen.</div><div class="clear"></div>
|
|
<div class="linenb">1011</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">1012</div><div class="codeline">Um das Objekt wieder abzulegen, wird eine Bewegung zum rechten Tisch des Roboters durch eine ActorMovement-Node ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb">1013</div><div class="codeline">Auch hier wird zum Ablegen eine weitere Animationsfolge aus zwei ActorAnimation-Nodes genutzt.</div><div class="clear"></div>
|
|
<div class="linenb">1014</div><div class="codeline">Dabei wird zuerst ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Standing, Titanding, ständig, Uranding, ständisch, Etatding, standen, Kranding, ständige, ständische, sandig, ständen, Branding, Standring, Standding, stündig] (66297) [lt:de:GERMAN_SPELLER_RULE]">standing</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [endend, erdend, textend, ächtend, ächzend, ächzten, ächztest, enthält, sechsten, Texten, enden, externe, echten, geltend, extern, wütend, existent, endende, ertönt, latent] (66306) [lt:de:GERMAN_SPELLER_RULE]">extend</span>_arm'' abgespielt, gefolgt von ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Standing, Titanding, ständig, Uranding, ständisch, Etatding, standen, Kranding, ständige, ständische, sandig, ständen, Branding, Standring, Standding, stündig] (66345) [lt:de:GERMAN_SPELLER_RULE]">standing</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [beträgt, betraut, betrat, Betracht, erträgt, getraut, Extrakt, Tretakt, Tretrad, betraft, betragt, ertragt, getränt, getrackt] (66354) [lt:de:GERMAN_SPELLER_RULE]">retract</span>_arm''.</div><div class="clear"></div>
|
|
<div class="linenb">1015</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">1016</div><div class="codeline">Als letzte Aktion wird der Ruf nach dem Menschen durch eine <span class="highlight" title="Möglicher Tippfehler gefunden. (66430) [lt:de:GERMAN_SPELLER_RULE]">SetCalledTo-Node</span> auf <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [falze, Salze, Walze, falle, Hälse, fasse, falbe, falte, halse, Falze, Halse, balze, falzen, falzt, falzte, fasle, filze, fälle, salze, walze] (66451) [lt:de:GERMAN_SPELLER_RULE]">false</span> zurückgesetzt.</div><div class="clear"></div>
|
|
<div class="linenb">1017</div><div class="codeline">Dieser Behavior Tree ist in Abbildung \ref{tree_actor_colab} dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb">1018</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">1019</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">1020</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-actor-colab}</div><div class="clear"></div>
|
|
<div class="linenb">1021</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">1022</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Behavior Tree des Menschen bei Kollaboration </span>}</div><div class="clear"></div>
|
|
<div class="linenb">1023</div><div class="codeline"><span class="keyword1">\label</span>{tree_actor_colab}</div><div class="clear"></div>
|
|
<div class="linenb">1024</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
</div>
|
|
<h2 class="filename">tex/3_Auswahl.tex</h2>
|
|
|
|
<p>Found 196 warning(s)</p>
|
|
<div class="original-file">
|
|
<div class="linenb"> 1</div><div class="codeline">\<span class="highlight-sh" title="This section is very short (about 73 words). You should consider merging it with another section or make it longer. [sh:seclen]">chapter</span>{Komponenten-/Softwareauswahl}</div><div class="clear"></div>
|
|
<div class="linenb"> 2</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (29) [lt:de:DE_CASE]">Die</span> Auswahl der verwendeten Softwarekomponenten beeinflusst den späteren Entwicklungsprozess nachhaltig.</div><div class="clear"></div>
|
|
<div class="linenb"> 3</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 4</div><div class="codeline">Alle Komponenten sollen später in der entwickelten Softwareumgebung ihre jeweiligen Teilbereiche abdecken.</div><div class="clear"></div>
|
|
<div class="linenb"> 5</div><div class="codeline">Alle diese Teilbereiche können dann zu einer Simulation verbunden werden, die das gesamte Problemfeld abdeckt.</div><div class="clear"></div>
|
|
<div class="linenb"> 6</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 7</div><div class="codeline">Wie bereits in Abbildung \ref{concept_overview} dargestellt, ist für die Erfüllung der Aufgaben eine Dienst- und eine Simulationsumgebung erforderlich.</div><div class="clear"></div>
|
|
<div class="linenb"> 8</div><div class="codeline">Dieses Kapitel beschreibt die Auswahl der Umgebungen und alle in den Umgebungen laufenden Prozesse.</div><div class="clear"></div>
|
|
<div class="linenb"> 9</div><div class="codeline"><span class="keyword1">\section</span>{Dienstumgebung}</div><div class="clear"></div>
|
|
<div class="linenb"> 10</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (600) [lt:de:DE_CASE]">Die</span> Dienstumgebung bestimmt maßgeblich, wie Software im Entwicklungsprozess geschrieben wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 11</div><div class="codeline">Durch sie werden häufig benötigte Funktionen bereitgestellt, die Programme innerhalb der Umgebung nutzen können.</div><div class="clear"></div>
|
|
<div class="linenb"> 12</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 13</div><div class="codeline">Bei einer Dienstumgebung für Roboter gehört die Nachrichtenübergabe zwischen den einzelnen Programmen zu den grundlegenden Aspekten.</div><div class="clear"></div>
|
|
<div class="linenb"> 14</div><div class="codeline">Diese wird genutzt, um eine gemeinsame Basis für ein erweiterbares System zu schaffen.</div><div class="clear"></div>
|
|
<div class="linenb"> 15</div><div class="codeline">Außerdem sind Werkzeuge zur Parameterübergabe an Teilsysteme sinnvoll, um die Einstellungen an einer Stelle gesammelt anpassen zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 16</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 17</div><div class="codeline"><span class="keyword1">\subsection</span>{Auswahl}</div><div class="clear"></div>
|
|
<div class="linenb"> 18</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [es] (1175) [lt:de:DE_CASE]">Es</span> existieren mehrere Systeme, die als Dienstumgebung für Roboter infrage kommen, wenn man lediglich die Nachrichtenübergabe zwischen Programmen betrachtet.</div><div class="clear"></div>
|
|
<div class="linenb"> 19</div><div class="codeline">Jede Dienstumgebung, die Nachrichten zwischen Prozessen austauschen kann, ist potenziell als ein <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Roboterframeword] (1429) [lt:de:GERMAN_SPELLER_RULE]">Roboterframework</span> einsetzbar.</div><div class="clear"></div>
|
|
<div class="linenb"> 20</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 21</div><div class="codeline">Wichtige Aspekte sind dabei die Geschwindigkeit der Anbindung und die Definition der Nachrichten, die über das System ausgetauscht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 22</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 23</div><div class="codeline">Nutzbare, bereits als Interprozesskommunikation integrierte Systeme sind zum Beispiel Pipes, die Daten zwischen Prozessen über Buffer austauschen.</div><div class="clear"></div>
|
|
<div class="linenb"> 24</div><div class="codeline">Auch die Nutzung von Message Queues oder <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Shares, Share, Sharen, Sekret, Sparen, Suharto, Scharte, Sparer, Stärkt, Staren, Scharen, Schart, Chalet, Starrt, Sarde, Spare, Shader, Shake, Shakes, Schare] (1787) [lt:de:GERMAN_SPELLER_RULE]">Shared</span> Memory ist für diesen Einsatzzweck möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 25</div><div class="codeline">Diese Systeme sind performant, jedoch schwerer zu verwalten.</div><div class="clear"></div>
|
|
<div class="linenb"> 26</div><div class="codeline">Ein Problem dieser Methoden ist die direkte Kommunikation mehrerer Komponenten, da die Art der Kommunikation keine Modifikation von Nachrichten zur Anpassung an andere Szenarien vorsieht.</div><div class="clear"></div>
|
|
<div class="linenb"> 27</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 28</div><div class="codeline">Eine Alternative stellen Sockets dar, die Daten zwischen mehreren Programmen austauschen können.</div><div class="clear"></div>
|
|
<div class="linenb"> 29</div><div class="codeline">Dabei dient ein Programm als Server, der Anfragen von anderen Programmen, auch Clients genannt, entgegen nimmt.</div><div class="clear"></div>
|
|
<div class="linenb"> 30</div><div class="codeline">Die Kommunikation zwischen Client und Server ist bidirektional möglich, was kompliziertere Protokolle ermöglicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 31</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 32</div><div class="codeline">Alle diese Lösungen besitzen einen gemeinsamen Nachteil in deren Nachrichtendefinition.</div><div class="clear"></div>
|
|
<div class="linenb"> 33</div><div class="codeline">Dieser Nachteil besteht in der potenziellen Variabilität dieser Kommunikationsmechanismen.</div><div class="clear"></div>
|
|
<div class="linenb"> 34</div><div class="codeline">Bei einem ausreichend großen Projekt treten so unweigerlich Unterschiede in der Handhabung von Nachrichten auf, die es zu berücksichtigen gilt.</div><div class="clear"></div>
|
|
<div class="linenb"> 35</div><div class="codeline">Durch solche Unterschiede kann es zu Inkompatibilitäten zwischen Programmen kommen, was sich auf die universelle Nutzbarkeit der Programme negativ auswirkt.</div><div class="clear"></div>
|
|
<div class="linenb"> 36</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 37</div><div class="codeline">Im Bereich der Robotik ist ROS \cite{doi:10.1126/scirobotics.abm6074}, bei dem es sich um ein quelloffenes System handelt, als Dienstumgebung etabliert.</div><div class="clear"></div>
|
|
<div class="linenb"> 38</div><div class="codeline">Der oben genannte Nachteil einzelner Systeme wird in ROS durch mehrere standardisierte und erweiterbare Nachrichtendefinitionen gelöst, die von den Programmen in der Umgebung genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 39</div><div class="codeline">Um diese Nachrichten senden und empfangen zu können, liefert ROS bereits eine eigene Implementation des Protokolls für mehrere Programmiersprachen mit.</div><div class="clear"></div>
|
|
<div class="linenb"> 40</div><div class="codeline">Zum Beispiel existieren für Python \cite{python}, C und C++ \cite{cpp} entsprechende Implementationen in Form der Pakete \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [rosa, Bobby, Dolby, Grosny, rosig, rosé, roste, Hobby, Lobby, resp., robbe, robbt, röste, Copy] (3458) [lt:de:GERMAN_SPELLER_RULE]">rospy}</span>, \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Holz, Volk, Salz, rückt, Kalk, Pilz, Balz, Falk, Milz, Sulz, Tölz, Malz, Pelz, Sülz, Walz, roll, walk, Kolk, rank, reckt] (3465) [lt:de:GERMAN_SPELLER_RULE]">rclc}</span> und \code{rclcpp}.</div><div class="clear"></div>
|
|
<div class="linenb"> 41</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 42</div><div class="codeline">Die neuste Version ROS2 bietet mehrere Verbesserungen im Vergleich zu früheren Version ROS1 \cite{changesRosII}.</div><div class="clear"></div>
|
|
<div class="linenb"> 43</div><div class="codeline">Ein neues Nachrichtenformat mit Quality of Service kann beispielsweise Nachrichten zwischenspeichern und über sowohl TCP, als auch UDP kommunizieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 44</div><div class="codeline">Außerdem werden neben CMake \cite{cmake} auch andere <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bildsysteme, Bildsystem, Wildsysteme, Bildsystemen, Bildsystems] (3774) [lt:de:GERMAN_SPELLER_RULE]">Buildsysteme</span> unterstützt, was die Verwendung von Python erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb"> 45</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 46</div><div class="codeline">Generell existieren im Feld der Roboter-Dienstumgebungen keine freien Alternativen mit ähnlichem Funktionsumfang und gleicher Reichweite.</div><div class="clear"></div>
|
|
<div class="linenb"> 47</div><div class="codeline">Vor allem die Vielzahl von ROS-Bibliotheken, die von Nutzern des Systems über die Jahre erstellt wurden, machen das System so populär \cite{rospackages}.</div><div class="clear"></div>
|
|
<div class="linenb"> 48</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 49</div><div class="codeline">ROS kann sowohl für simulierte Umgebungen als auch für echte Roboter eingesetzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 50</div><div class="codeline">Diese beiden Anwendungsfälle werden durch unterschiedliche Controller realisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 51</div><div class="codeline">Für simulierte Umgebungen leitet der Controller die Steuerdaten an die Simulationsumgebung weiter.</div><div class="clear"></div>
|
|
<div class="linenb"> 52</div><div class="codeline">Bei dem Einsatz echter Hardware werden die Zielpositionen durch den Controller an die Roboterhardware weitergeleitet.</div><div class="clear"></div>
|
|
<div class="linenb"> 53</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 54</div><div class="codeline"><span class="comment"><span class="comment">%-Alternative Ökosysteme mit gleichem Umfang wie ROS existieren nicht.</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 55</div><div class="codeline"><span class="comment"><span class="comment">%-ROS2</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 56</div><div class="codeline"><span class="comment"><span class="comment">%-Andere (nur) Messagingsysteme</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 57</div><div class="codeline"><span class="comment"><span class="comment">%-LCM</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 58</div><div class="codeline"><span class="comment"><span class="comment">%-ZeroMQ</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 59</div><div class="codeline"><span class="keyword1">\subsection</span>{Beschreibung}</div><div class="clear"></div>
|
|
<div class="linenb"> 60</div><div class="codeline">ROS2 \cite{doi:10.1126/scirobotics.abm6074}, im weiteren Verlauf nur ROS genannt, beschreibt sich selbst als ``a <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Meta, beta, zeta, mega, Feta, Veda, Weda, med., mit, etwa, mehr, jede, Jena, Netz, Rede, getan, mein, Bett, Gera, Gotha] (4597) [lt:de:GERMAN_SPELLER_RULE]">meta</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [operative, Teerating, operativ, Moderating, Toprating, Spreading] (4602) [lt:de:GERMAN_SPELLER_RULE]">operating</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [System, Systeme, erstem, festem, bestem, Zysten, süßem, Zyste, spätem, stetem, zartem, Systems, Umsystem, Zystom, sattem, softem, süßestem, süßte] (4612) [lt:de:GERMAN_SPELLER_RULE]">system</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [vor, von, für, vom, fort, Tor, vorn, Moor, Rohr, vorm, Mohr, Bohr, Lohr, fror, hör, Bor, Gör, Hör, Ifor, Kfor] (4619) [lt:de:GERMAN_SPELLER_RULE]">for</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Robots, Cobots, robust, Depots, Herodots, Mopeds, Boots, Gebots, Nobody, Nobodys, Popos, Robot, Rohputz, Topos, robbst, robbt, robbte, Cobot, Lobos, Reboots] (4623) [lt:de:GERMAN_SPELLER_RULE]">robots</span>'' \cite{ros-git}.</div><div class="clear"></div>
|
|
<div class="linenb"> 61</div><div class="codeline">Hierbei ist ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [operative, Teerating, operativ, Moderating, Toprating, Spreading] (4651) [lt:de:GERMAN_SPELLER_RULE]">operating</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [System, Systeme, erstem, festem, bestem, Zysten, süßem, Zyste, spätem, stetem, zartem, Systems, Umsystem, Zystom, sattem, softem, süßestem, süßte] (4661) [lt:de:GERMAN_SPELLER_RULE]">system</span>'' nicht in seiner herkömmlichen Bedeutung eines vollständigen Betriebssystems zu verstehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 62</div><div class="codeline">Es handelt sich dabei um eine gemeinsame Grundlage für Programme und Daten, die durch ROS bereitgestellt wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 63</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 64</div><div class="codeline">Einzelne Bestandteile in der Umgebung sind dabei in Pakete gegliedert, wobei jedes Paket beliebig viele Daten und Programme beinhalten kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 65</div><div class="codeline">Programme, die mit anderen Programmen in der Umgebung über die ROS internen Schnittstellen kommunizieren, werden in ROS ``Nodes'' genannt.</div><div class="clear"></div>
|
|
<div class="linenb"> 66</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 67</div><div class="codeline">Zu den Aufgaben von ROS zählen folgende Teilbereiche:</div><div class="clear"></div>
|
|
<div class="linenb"> 68</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Deskription, deskriptiv, deskriptive, deskriptiven, Inskription] (5207) [lt:de:GERMAN_SPELLER_RULE]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 69</div><div class="codeline"> <span class="keyword1">\item</span>[Organisation]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (5235) [lt:de:GERMAN_SPELLER_RULE]">hfill</span> <span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb"> 70</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [um] (5244) [lt:de:DE_CASE]">Um</span> die einzelnen Teile einer Roboterumgebung zu separieren, werden diese in ROS auf unterschiedliche Pakete aufgeteilt.</div><div class="clear"></div>
|
|
<div class="linenb"> 71</div><div class="codeline"> Jedes Paket enthält dabei eine<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (5397) [lt:de:GERMAN_SPELLER_RULE]">package.xm</span>l}-Datei</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 72</div><div class="codeline"> In dieser befindet sich eine in XML verfasste Definition des Paketinhalts, die verschiedene Aspekte des Pakets beschreibt.</div><div class="clear"></div>
|
|
<div class="linenb"> 73</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 74</div><div class="codeline"> Darunter fallen Informationen über das Paket selbst, wie dessen Name, Beschreibung und Version.</div><div class="clear"></div>
|
|
<div class="linenb"> 75</div><div class="codeline"> Außerdem sind Name und Mailadresse des Autors, sowie die gewählte Lizenz des Codes vermerkt.</div><div class="clear"></div>
|
|
<div class="linenb"> 76</div><div class="codeline"> Um das Paket später korrekt ausführen zu können, werden benötigte Pakete für den Kompiliervorgang und die Ausführung in die<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> <span class="highlight" title="Möglicher Tippfehler gefunden. (5861) [lt:de:GERMAN_SPELLER_RULE]">package.xm</span>l-Datei</span> eingetragen.</div><div class="clear"></div>
|
|
<div class="linenb"> 77</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 78</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden. (5895) [lt:de:GERMAN_SPELLER_RULE]">Buildumgebung</span>]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (5910) [lt:de:GERMAN_SPELLER_RULE]">hfill</span> <span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb"> 79</div><div class="codeline"> ROS nutzt die eigene <span class="highlight" title="Möglicher Tippfehler gefunden. (5940) [lt:de:GERMAN_SPELLER_RULE]">Buildumgebung</span> \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Wolken, Balkon, Solon, zollen, coolen, collin, kotzen, holzen, kalken, Bolzen, Golzow, Holzohr, Holzton, Holzöl, Kolken, Kolon, Molken, klon, molken, zocke] (5954) [lt:de:GERMAN_SPELLER_RULE]">colcon}</span> \cite{colcon}, um Pakete in den Workspaces reproduzierbar zu erstellen.</div><div class="clear"></div>
|
|
<div class="linenb"> 80</div><div class="codeline"> Zu deren Konfiguration wird eine<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (6058) [lt:de:GERMAN_SPELLER_RULE]">CMakeLists.tx</span>t}-Datei</span> erstellt, die den <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bildprozess, Bildprozesse] (6097) [lt:de:GERMAN_SPELLER_RULE]">Buildprozess</span> beschreibt.</div><div class="clear"></div>
|
|
<div class="linenb"> 81</div><div class="codeline"> In dieser sind die <span class="highlight" title="Möglicher Tippfehler gefunden. (6143) [lt:de:GERMAN_SPELLER_RULE]">Buildinstruktionen</span> für den Compiler enthalten, mit welchen die im Paket befindlichen Programme kompiliert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 82</div><div class="codeline"> Der Aufruf des \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [amen, äsend, Namen, kamen, dient, namens, Samen, armen, meint, Damen, Kent, Moment, Talent, abends, Gent, Gmünd, ahnt, Tarent, Zement, atmen] (6274) [lt:de:GERMAN_SPELLER_RULE]">ament</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [CMake-Makros, klage-Makros, Fräcke-Makros, Image-Makros, checke-Makros] (6280) [lt:de:GERMAN_SPELLER_RULE]">cmake}-Makros</span> in dieser ergänzt den Kompiliervorgang um weitere Parameter aus der<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (6361) [lt:de:GERMAN_SPELLER_RULE]">package.xm</span>l}-Datei</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 83</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 84</div><div class="codeline"> Nach diesen Vorbereitungsschritten kann CMake das Paket kompilieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 85</div><div class="codeline"> Hierbei werden alle in der<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (6481) [lt:de:GERMAN_SPELLER_RULE]">CMakeLists.tx</span>t}-Datei</span> angegebenen Programmteile kompiliert.</div><div class="clear"></div>
|
|
<div class="linenb"> 86</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 87</div><div class="codeline"> Es ist <span class="highlight" title="Dieses Wort kommt in einem nahe gelegenen vorherigen Satz bereits vor. Verwenden Sie ein Synonym, um Ihren Text abwechslungsreicher zu gestalten, außer die Wiederholung ist beabsichtigt.. Suggestions: [zudem, obendrein, überdies, zusätzlich, ebenso] (6550) [lt:de:DE_REPEATEDWORDS]">außerdem</span> möglich, bestimmte Pfade des Pakets nach dem <span class="highlight" title="Möglicher Tippfehler gefunden. (6604) [lt:de:GERMAN_SPELLER_RULE]">Buildvorgang</span> zu exportieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 88</div><div class="codeline"> Diese sind dann später im erstellten Workspace für die Nutzung durch andere Programme verfügbar.</div><div class="clear"></div>
|
|
<div class="linenb"> 89</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 90</div><div class="codeline"> <span class="keyword1">\item</span>[Workspaceverwaltung]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (6756) [lt:de:GERMAN_SPELLER_RULE]">hfill</span> <span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb"> 91</div><div class="codeline"> Gruppen von Paketen werden zur einfacheren Handhabung in sogenannten ``Workspaces'' zusammengefasst.</div><div class="clear"></div>
|
|
<div class="linenb"> 92</div><div class="codeline"> Diese vereinfachen das Auffinden der enthaltenen Pakete durch Skripte, die diese im System registrieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 93</div><div class="codeline"> Die Erstellung der Skripte erfolgt anhand der bereits beschriebenen<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (7043) [lt:de:GERMAN_SPELLER_RULE]">CMakeLists.tx</span>t}-Datei</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 94</div><div class="codeline"> Das Programm \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Wolken, Balkon, Solon, zollen, coolen, collin, kotzen, holzen, kalken, Bolzen, Golzow, Holzohr, Holzton, Holzöl, Kolken, Kolon, Molken, klon, molken, zocke] (7080) [lt:de:GERMAN_SPELLER_RULE]">colcon}</span> analysiert diese und generiert die Skripte.</div><div class="clear"></div>
|
|
<div class="linenb"> 95</div><div class="codeline"> Um das Paket im System zu registrieren, muss der Nutzer die generierten Skripte ausführen, was die benötigten Umgebungsvariablen setzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 96</div><div class="codeline"> Hierfür wird meist ein weiteres Skript verwendet, was alle im Workspace befindlichen Pakete nacheinander der Umgebung hinzufügt.</div><div class="clear"></div>
|
|
<div class="linenb"> 97</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 98</div><div class="codeline"> Dieser Vorgang erlaubt zum Beispiel das Auffinden von Paketen anhand deren Namen im Dateisystem.</div><div class="clear"></div>
|
|
<div class="linenb"> 99</div><div class="codeline"> Das erleichtert die Verwaltung durch die Unabhängigkeit von spezifischen Pfaden im entwickelten System.</div><div class="clear"></div>
|
|
<div class="linenb">100</div><div class="codeline"> Außerdem wird die Laufzeitumgebung für alle Programme konfiguriert, was definierte Bibliotheken für diese verfügbar macht.</div><div class="clear"></div>
|
|
<div class="linenb">101</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">102</div><div class="codeline"> <span class="keyword1">\item</span>[Abhängigkeitsverwaltung]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (7759) [lt:de:GERMAN_SPELLER_RULE]">hfill</span> <span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb">103</div><div class="codeline"> ROS kann durch die in den Paketen deklarierten Abhängigkeiten prüfen, ob diese in der aktuellen Umgebung ausführbar sind.</div><div class="clear"></div>
|
|
<div class="linenb">104</div><div class="codeline"> Die generierten Warnungen bei fehlenden Paketen helfen dem Anwender, Abstürze und undefiniertes Verhalten bei der Ausführung von Nodes zu vermeiden, die diese Pakete benötigen.</div><div class="clear"></div>
|
|
<div class="linenb">105</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">106</div><div class="codeline"> <span class="keyword1">\item</span>[Datenübertragung]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (8090) [lt:de:GERMAN_SPELLER_RULE]">hfill</span> <span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb">107</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [um] (8099) [lt:de:DE_CASE]">Um</span> Daten zwischen Nodes austauschen zu können, müssen die Nodes miteinander auf einem festgelegten Weg kommunizieren können.</div><div class="clear"></div>
|
|
<div class="linenb">108</div><div class="codeline"> Ein solcher Aufbau erlaubt den Austausch von Daten in vorher nicht durch die Entwickler bedachten Anwendungsfällen.</div><div class="clear"></div>
|
|
<div class="linenb">109</div><div class="codeline"> Die von ROS gebotene Schnittstelle zur Datenübertragung wird in Form mehrerer Bibliotheken für unterschiedliche Programmiersprachen bereitgestellt.</div><div class="clear"></div>
|
|
<div class="linenb">110</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">111</div><div class="codeline"> Der Datenaustausch geschieht in sogenannten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Tobias, Comics, Topik, Tobis, Möbius, Tobys, Robins, Topisch, Dubios, Tonika, Aspiks, Tipis, Böbigs, Tokios, Tabaks, Utopias, Topas, Biopics, Topfes, Copys] (8539) [lt:de:GERMAN_SPELLER_RULE]">Topics</span>, die Nachrichtenkanäle zwischen den Nodes darstellen.</div><div class="clear"></div>
|
|
<div class="linenb">112</div><div class="codeline"> Eine Node kann entweder als Server ein <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Topik, Tobak, Kopie, Tobi, Logik, Tobis, Robin, Toby, Gotik, Tobys, Mobil, Tonic, Komik, Tokio, Notiz, Utopie, Tobte, Top, Gobi, Tabak] (8641) [lt:de:GERMAN_SPELLER_RULE]">Topic</span> anbieten, was durch andere Nodes gelesen wird, oder als Client auf solche bereitgestellten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Tobias, Comics, Topik, Tobis, Möbius, Tobys, Robins, Topisch, Dubios, Tonika, Aspiks, Tipis, Böbigs, Tokios, Tabaks, Utopias, Topas, Biopics, Topfes, Copys] (8738) [lt:de:GERMAN_SPELLER_RULE]">Topics</span> zugreifen.</div><div class="clear"></div>
|
|
<div class="linenb">113</div><div class="codeline"> Durch die Kombination mehrerer <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Tobias, Comics, Topik, Tobis, Möbius, Tobys, Robins, Topisch, Dubios, Tonika, Aspiks, Tipis, Böbigs, Tokios, Tabaks, Utopias, Topas, Biopics, Topfes, Copys] (8789) [lt:de:GERMAN_SPELLER_RULE]">Topics</span> ist eine komplexere Interaktion abbildbar, die zum Beispiel Rückgabewerte zum aktuell ausgeführten Steuerbefehl liefert.</div><div class="clear"></div>
|
|
<div class="linenb">114</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">115</div><div class="codeline"> <span class="keyword1">\item</span>[Parameterübergabe]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (8939) [lt:de:GERMAN_SPELLER_RULE]">hfill</span> <span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb">116</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [um] (8948) [lt:de:DE_CASE]">Um</span> Nodes auf neue Anwendungsfälle anpassen zu können, wird ein Konfigurationsmechanismus benötigt.</div><div class="clear"></div>
|
|
<div class="linenb">117</div><div class="codeline"> In ROS geschieht dies durch die Übergabe sogenannter Parameter, die durch die Node gelesen werden können.</div><div class="clear"></div>
|
|
<div class="linenb">118</div><div class="codeline"> Diese eignen sich zur Übergabe von Informationen, wie zum Beispiel Daten über ein verwendetes Robotermodell.</div><div class="clear"></div>
|
|
<div class="linenb">119</div><div class="codeline"> Um neue Konfigurationen zu unterstützen, kann das Umbenennen von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Tobias, Comics, Topik, Tobis, Möbius, Tobys, Robins, Topisch, Dubios, Tonika, Aspiks, Tipis, Böbigs, Tokios, Tabaks, Utopias, Topas, Biopics, Topfes, Copys] (9333) [lt:de:GERMAN_SPELLER_RULE]">Topics</span> einer Node notwendig werden, was auch mit einem Parameter erfolgen kann.</div><div class="clear"></div>
|
|
<div class="linenb">120</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">121</div><div class="codeline"> <span class="keyword1">\item</span>[Startverwaltung]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (9433) [lt:de:GERMAN_SPELLER_RULE]">hfill</span> <span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb">122</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [in] (9442) [lt:de:DE_CASE]">In</span> sogenannten ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Launch, launche, launcht, auch, Bauch, Rauch, Tausch, Übung, Ranch, Rausch, klang, manch, Bausch, Hauch, lauscht, Lauch, launisch, lasch, Ölung, lach] (9459) [lt:de:GERMAN_SPELLER_RULE]">launch</span>''-Files können verschiedene Nodes und andere ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Launch, launche, launcht, auch, Bauch, Rauch, Tausch, Übung, Ranch, Rausch, klang, manch, Bausch, Hauch, lauscht, Lauch, launisch, lasch, Ölung, lach] (9513) [lt:de:GERMAN_SPELLER_RULE]">launch</span>''-Files zu komplexen Startvorgängen zusammengefasst werden.</div><div class="clear"></div>
|
|
<div class="linenb">123</div><div class="codeline"> Das Einstellen von bestimmten Parametern erlaubt die Anpassung der Funktionen an den gewünschten Anwendungsfall.</div><div class="clear"></div>
|
|
<div class="linenb">124</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">125</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (9696) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb">126</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">127</div><div class="codeline">Eine solche Umgebung erlaubt die Zerlegung der geplanten Simulation in mehrere Komponenten.</div><div class="clear"></div>
|
|
<div class="linenb">128</div><div class="codeline">Die daraus erfolgte Abgrenzung erhöht die Übersichtlichkeit der einzelnen Bestandteile.</div><div class="clear"></div>
|
|
<div class="linenb">129</div><div class="codeline">Dies vereinfacht die spätere Wartung des Projekts.</div><div class="clear"></div>
|
|
<div class="linenb">130</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">131</div><div class="codeline"><span class="keyword1">\section</span>{Simulationsumgebung}</div><div class="clear"></div>
|
|
<div class="linenb">132</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">133</div><div class="codeline">\<span class="highlight-sh" title="Avoid stacked headings, i.e. consecutive headings without text in between. [sh:stacked]">subsection</span>{Auswahl}</div><div class="clear"></div>
|
|
<div class="linenb">134</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [als] (9970) [lt:de:DE_CASE]">Als</span> Simulationsumgebung eignen sich verschiedenen Programme, die sich hinsichtlich ihres Funktionsumfangs stark unterscheiden.</div><div class="clear"></div>
|
|
<div class="linenb">135</div><div class="codeline">Hierfür kommen beispielsweise dedizierte Werkzeuge zur Robotersimulation, aber auch universell einsetzbare <span class="highlight" title="Möglicher Tippfehler gefunden. (10204) [lt:de:GERMAN_SPELLER_RULE]">Gameengines</span> <span class="highlight" title="Empfehlung: Möchten Sie die Schreibweise 'infrage' verwenden?. Suggestions: [infrage] (10216) [lt:de:EMPFOHLENE_ZUSAMMENSCHREIBUNG]">in Frage</span>.</div><div class="clear"></div>
|
|
<div class="linenb">136</div><div class="codeline">Ein Vergleich dieser Werkzeuge ist hierbei sinnvoll, da sich der gebotene Funktionsumfang der Softwares stark unterscheidet.</div><div class="clear"></div>
|
|
<div class="linenb">137</div><div class="codeline">Auch andere Aspekte, wie Lizenzen oder die schwer bewertbare Nutzerfreundlichkeit, sind hierbei zu betrachten.</div><div class="clear"></div>
|
|
<div class="linenb">138</div><div class="codeline">Eine Auswahl der als Simulationsumgebung <span class="highlight" title="Empfehlung: Möchten Sie die Schreibweise 'infrage' verwenden?. Suggestions: [infrage] (10503) [lt:de:EMPFOHLENE_ZUSAMMENSCHREIBUNG]">in Frage</span> kommenden Programme wird hier vorgestellt.</div><div class="clear"></div>
|
|
<div class="linenb">139</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">140</div><div class="codeline"><span class="highlight" title="Möglicher Tippfehler gefunden. (10556) [lt:de:GERMAN_SPELLER_RULE]">CoppeliaSim</span> \cite{coppelia}, früher auch <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [V-ERP, V-CEP, V-REM, V-EP, V-RDP] (10585) [lt:de:GERMAN_SPELLER_RULE]">V-REP</span> genannt, ist eine Robotersimulationsumgebung mit integriertem Editor und ROS-Unterstützung.</div><div class="clear"></div>
|
|
<div class="linenb">141</div><div class="codeline">Es unterstützt viele Sprachen (C/C++, Python, Java, Lua, Matlab oder <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Oktave, Oktaven, Aktive, Oktav, Schafe, Oktava, Sklave, Ozeane, Osthafen, Oktamer, Oktan, Oktant, Octavia, Oktavia] (10752) [lt:de:GERMAN_SPELLER_RULE]">Octave</span>) zur Entwicklung von Erweiterungen des Simulators.</div><div class="clear"></div>
|
|
<div class="linenb">142</div><div class="codeline">Der Simulator selbst unterstützt menschliche Aktoren, diese können aber nur Animationen allein oder in Kombination mit einer Bewegung abspielen.</div><div class="clear"></div>
|
|
<div class="linenb">143</div><div class="codeline"><span class="highlight" title="Möglicher Tippfehler gefunden. (10955) [lt:de:GERMAN_SPELLER_RULE]">CoppeliaSim</span> existiert in 3 Versionen, die sich hinsichtlich Funktionsumfang und Lizenz unterscheiden.</div><div class="clear"></div>
|
|
<div class="linenb">144</div><div class="codeline">Jedoch besitzt nur die professionelle Version Zugriff auf alle Funktionen und Verwendungsszenarien.</div><div class="clear"></div>
|
|
<div class="linenb">145</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">146</div><div class="codeline">Gazebo <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Munition, Kognition] (11165) [lt:de:GERMAN_SPELLER_RULE]">Ignition</span> \cite{gazebo} ist wie <span class="highlight" title="Möglicher Tippfehler gefunden. (11186) [lt:de:GERMAN_SPELLER_RULE]">CoppeliaSim</span> eine Robotersimulationsumgebung, besitzt aber keinen integrierten Editor und direkte ROS-Unterstützung.</div><div class="clear"></div>
|
|
<div class="linenb">147</div><div class="codeline">Gazebo setzt wie <span class="highlight" title="Möglicher Tippfehler gefunden. (11319) [lt:de:GERMAN_SPELLER_RULE]">CoppeliaSim</span> auf Erweiterungen, um zusätzliche Funktionen einbinden zu können.</div><div class="clear"></div>
|
|
<div class="linenb">148</div><div class="codeline">So existiert zum Beispiel auch eine ROS-Brücke, die die Anbindung an ROS ermöglicht.</div><div class="clear"></div>
|
|
<div class="linenb">149</div><div class="codeline">Auch hier unterstützt der Simulator nur Animationen für menschliche Aktoren.</div><div class="clear"></div>
|
|
<div class="linenb">150</div><div class="codeline">Das Projekt ist Open Source, unter der <span class="highlight" title="Dieses Wort wird mit Bindestrich geschrieben.. Suggestions: [Apache-Lizenz] (11598) [lt:de:DE_COMPOUNDS]">Apache Lizenz</span> (Version 2.0), was die Verwendung in jeglichen Szenarien erleichtert.</div><div class="clear"></div>
|
|
<div class="linenb">151</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">152</div><div class="codeline">Unity \cite{unity} hingegen ist primär eine <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Grafikengen] (11718) [lt:de:GERMAN_SPELLER_RULE]">Grafikengine</span> für die Nutzung in Computerspielen.</div><div class="clear"></div>
|
|
<div class="linenb">153</div><div class="codeline">Es existieren mehrere Systeme zur Anbindung der Engine an ROS, vor allem das offizielle ``<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Robotik, Roboters, Nobodys, Robotisch, Robots] (11857) [lt:de:GERMAN_SPELLER_RULE]">Robotics</span> Simulation''-Paket und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Serösem, Kerosin, Dersim, Erosiv, Serös, Seröse, Serösen, Seröser, Seröses] (11889) [lt:de:GERMAN_SPELLER_RULE]">ZeroSim</span>.</div><div class="clear"></div>
|
|
<div class="linenb">154</div><div class="codeline">Beide Systeme erlauben die Erweiterung der <span class="highlight" title="Möglicher Tippfehler gefunden. (11941) [lt:de:GERMAN_SPELLER_RULE]">Gameengine</span> um die Simulation von Robotern.</div><div class="clear"></div>
|
|
<div class="linenb">155</div><div class="codeline">Unity besitzt eine gute Dokumentation, die vor allem auf die Nutzung im Einsteigerbereich zurückzuführen ist.</div><div class="clear"></div>
|
|
<div class="linenb">156</div><div class="codeline">Auch die Optionen zur Menschensimulation sind umfangreich, da diese häufig in Spielen verwendet werden.</div><div class="clear"></div>
|
|
<div class="linenb">157</div><div class="codeline">Ein großer Nachteil hingegen ist die Lizenz, die nur für Einzelpersonen kostenfrei ist.</div><div class="clear"></div>
|
|
<div class="linenb">158</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">159</div><div class="codeline">Die Unreal Engine \cite{unreal} ist wie Unity eine <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Grafikengen] (12328) [lt:de:GERMAN_SPELLER_RULE]">Grafikengine</span> aus dem <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Spieleber eich, Spielbereich, Spieleberesche, Siedebereich, Spielbereiche, Spieloberteich, Spielbereichs, Spieledelreich, Spieleisbereich, Spielendbereich, Spielessbereich, Spieloberdeich, Spielseereich, Spielspätreich, Spielgeberreich, Spielhebelreich] (12349) [lt:de:GERMAN_SPELLER_RULE]">Spielebereich</span>.</div><div class="clear"></div>
|
|
<div class="linenb">160</div><div class="codeline">Auch hier ist die Menschensimulation aufgrund oben genannter Gründe gut möglich.</div><div class="clear"></div>
|
|
<div class="linenb">161</div><div class="codeline">Jedoch existiert für Unreal Engine keine offizielle Lösung zur Anbindung an ROS2.</div><div class="clear"></div>
|
|
<div class="linenb">162</div><div class="codeline">Die Programmierung der Engine erfolgt in C++, was die Erstellung eines Plugins zur ROS-Anbindung der Unreal Engine ermöglichte, die von Nutzern gewartet wird.</div><div class="clear"></div>
|
|
<div class="linenb">163</div><div class="codeline">Die Lizenz der Unreal Engine erlaubt die kostenfreie Nutzung bis zu einem gewissen Umsatz mit der erstellten Software.</div><div class="clear"></div>
|
|
<div class="linenb">164</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">165</div><div class="codeline">Eine weitere Möglichkeit zur Simulation stellt die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Grafikengen] (12857) [lt:de:GERMAN_SPELLER_RULE]">Grafikengine</span> Godot \cite{godot} dar.</div><div class="clear"></div>
|
|
<div class="linenb">166</div><div class="codeline">Im Vergleich zu Unity und Unreal Engine ist Godot quelloffene Software unter der MIT-Lizenz.</div><div class="clear"></div>
|
|
<div class="linenb">167</div><div class="codeline">Auch hier stellt die Simulation von menschlichen Aktoren eine Standardaufgabe dar, jedoch befinden sich Teile des dafür verwendeten Systems derzeit in Überarbeitung.</div><div class="clear"></div>
|
|
<div class="linenb">168</div><div class="codeline"><span class="highlight" title="Zwei aufeinanderfolgende Sätze beginnen mit dem gleichen Adverb. Evtl. können Sie den Satz umformulieren, zum Beispiel, indem Sie ein Synonym nutzen. (13144) [lt:de:GERMAN_WORD_REPEAT_BEGINNING_RULE]">Auch</span> für diese Engine existiert eine ROS2-Anbindung, jedoch ist diese nicht offiziell.</div><div class="clear"></div>
|
|
<div class="linenb">169</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">170</div><div class="codeline">Alle vorgestellten Softwares besitzen ein integriertes Physiksystem, dass die Simulation von starren Körpern und Gelenken erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb">171</div><div class="codeline">Diese Funktionen erlauben den Aufbau eines Roboterarms, der durch eine ROS-Brücke gesteuert wird.</div><div class="clear"></div>
|
|
<div class="linenb">172</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">173</div><div class="codeline">Um den Fokus dieser Arbeit auf die gestellte Aufgabe zu ermöglichen, ist die Auswahl einer Umgebung mit bereits existierender ROS-Unterstützung sinnvoll.</div><div class="clear"></div>
|
|
<div class="linenb">174</div><div class="codeline">Durch diese Einschränkung scheiden sowohl Unreal Engine aber auch Godot aus.</div><div class="clear"></div>
|
|
<div class="linenb">175</div><div class="codeline">Sie bieten zwar diese Funktionalität, jedoch werden sie nur durch Nutzer gewartet und sind demzufolge nicht offiziell unterstützt.</div><div class="clear"></div>
|
|
<div class="linenb">176</div><div class="codeline">Für einen späteren Einsatz ist eine offene Lizenz von Vorteil, da diese einen Einsatz unter nahezu allen Umständen erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb">177</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">178</div><div class="codeline">Die Wahl der hier zu verwendenden Simulationsumgebung fiel deshalb auf Gazebo <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Munition, Kognition] (14027) [lt:de:GERMAN_SPELLER_RULE]">Ignition</span>, welche gleichzeitig bereits im ROS-Ökosystem etabliert ist.</div><div class="clear"></div>
|
|
<div class="linenb">179</div><div class="codeline">Dabei erlauben die offizielle ROS-Anbindung und die offene Lizenz eine zuverlässige Verwendung in unterschiedlichsten Szenarien.</div><div class="clear"></div>
|
|
<div class="linenb">180</div><div class="codeline"><span class="keyword1">\subsection</span>{Welt- und Modellbeschreibung}</div><div class="clear"></div>
|
|
<div class="linenb">181</div><div class="codeline">Gazebo nutzt das<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Ast-Dateiformat, Ost-Dateiformat] (14272) [lt:de:GERMAN_SPELLER_RULE]">.s</span>d</span>f-Dateiformat</span>, um die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Simulationsumgebung, Simulationsumgehung, Simulationsumbettung, Simulationsumlegung, Simulationsumbauung, Simulationsumpolung] (14297) [lt:de:GERMAN_SPELLER_RULE]">Simulationsumbebung</span> zu beschreiben \cite{sdf-format}.</div><div class="clear"></div>
|
|
<div class="linenb">182</div><div class="codeline">Dieses Format basiert auf XML und wird zur Definition gesamter Welten, aber auch einzelner Objekte innerhalb dieser Welten benutzt.</div><div class="clear"></div>
|
|
<div class="linenb">183</div><div class="codeline">Eine Welt ist in Gazebo eine Umgebung aus mehreren Objekten, welche simuliert werden sollen.</div><div class="clear"></div>
|
|
<div class="linenb">184</div><div class="codeline">Die Welt beschreibt außerdem die simulierte Physikumgebung und deren Konstanten, wie zum Beispiel die Gravitation.</div><div class="clear"></div>
|
|
<div class="linenb">185</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">186</div><div class="codeline">Um verschiedene Versionen des Formats zu unterstützen, enthält das einzige <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [zapf-Element, zupf-Element, Hof-Element, Huf-Element, Ruf-Element, ruf-Element, steh-Element, stoß-Element, straf-Element, süß-Element] (14753) [lt:de:GERMAN_SPELLER_RULE]">sdf-Element</span> die gewünschte Versionsnummer.</div><div class="clear"></div>
|
|
<div class="linenb">187</div><div class="codeline">Eine solche Datei kann, wie bereits oben beschrieben, unterschiedliche Daten enthalten.</div><div class="clear"></div>
|
|
<div class="linenb">188</div><div class="codeline">Im Falle eines Objekts ist dies eine einzige Instanz von entweder einem Modell, Actor oder Licht.</div><div class="clear"></div>
|
|
<div class="linenb">189</div><div class="codeline">Andernfalls können in der Datei eine oder mehrere Welten definiert werden.</div><div class="clear"></div>
|
|
<div class="linenb">190</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">191</div><div class="codeline">Eine Welt definiert in Gazebo den kompletten Aufbau des Simulators.</div><div class="clear"></div>
|
|
<div class="linenb">192</div><div class="codeline">Zuerst enthält ein Welt-Element die Daten über die physikalischen Konstanten der Simulationsumgebung.</div><div class="clear"></div>
|
|
<div class="linenb">193</div><div class="codeline">Zudem werden alle benötigten Teile der Nutzeroberfläche deklariert, die im ausgeführten Simulator verfügbar sein sollen.</div><div class="clear"></div>
|
|
<div class="linenb">194</div><div class="codeline">Letztendlich ist die Definition mehrerer Modelle, Aktoren und Lichter in der Welt möglich.</div><div class="clear"></div>
|
|
<div class="linenb">195</div><div class="codeline">Diese können auch aus anderen <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Uris, URLs, Iris, UCI, Eris, UFOs, Urig, URL, Bis, Urs, Kurz, Uhus, Groß, Ulms, Kurze, Udos, Kreis, Utas, Paris, APIs] (15470) [lt:de:GERMAN_SPELLER_RULE]">URIs</span> stammen, die in der Welt deklariert wurden.</div><div class="clear"></div>
|
|
<div class="linenb">196</div><div class="codeline">Dies erlaubt zum Beispiel das Laden von vorher definierten Objekten oder Objekten aus der offiziellen Bibliothek \cite{gazebo-app}.</div><div class="clear"></div>
|
|
<div class="linenb">197</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">198</div><div class="codeline">Ein Modell enthält einen Roboter oder ein anderes physikalisches Objekt in der Simulation.</div><div class="clear"></div>
|
|
<div class="linenb">199</div><div class="codeline">Die Deklaration eines weiteren Untermodells ist möglich, um komplexere Strukturen abbilden zu können.</div><div class="clear"></div>
|
|
<div class="linenb">200</div><div class="codeline">Über ein <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [einlüde-Element, entlüde-Element, unkluge-Element, ankaute-Element] (15840) [lt:de:GERMAN_SPELLER_RULE]">include-Element</span> können auch andere<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Ast-Dateien, Ost-Dateien] (15875) [lt:de:GERMAN_SPELLER_RULE]">.s</span>d</span>f-Dateien</span>, die nur ein einzelnes Modell enthalten, zu einem Modell hinzugefügt werden.</div><div class="clear"></div>
|
|
<div class="linenb">201</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">202</div><div class="codeline">Jedes Modell wird über eine Translation und Rotation im Simulationsraum verankert.</div><div class="clear"></div>
|
|
<div class="linenb">203</div><div class="codeline">Dies geschieht immer relativ zum Referenzsystem des überliegenden Modells.</div><div class="clear"></div>
|
|
<div class="linenb">204</div><div class="codeline">Außerdem können im Modell Einstellungen für dessen Physiksimulation vorgenommen werden.</div><div class="clear"></div>
|
|
<div class="linenb">205</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">206</div><div class="codeline">Ein Modell enthält meist mindestens ein Link-Element, dass zur Darstellung von dessen Geometrie verwendet wird.</div><div class="clear"></div>
|
|
<div class="linenb">207</div><div class="codeline">Mehrere Link-Elemente können dabei mit der Welt oder anderen Link-Elementen über Joint-Elemente verbunden werden.</div><div class="clear"></div>
|
|
<div class="linenb">208</div><div class="codeline">Diese Joint-Elemente können jedoch nicht von außerhalb gesteuert werden, was das Dateiformat ungeeignet für Roboterdefinitionen macht.</div><div class="clear"></div>
|
|
<div class="linenb">209</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">210</div><div class="codeline">Lichter besitzen einen Lichttyp, der die Ausbreitung des Lichtes im Raum bestimmt.</div><div class="clear"></div>
|
|
<div class="linenb">211</div><div class="codeline">Die erste Art ist direktionales Licht, dass parallel zur gewünschten Achse auftrifft.</div><div class="clear"></div>
|
|
<div class="linenb">212</div><div class="codeline">Solche Lichter werden vor allem zur grundlegenden Raumausleuchtung genutzt.</div><div class="clear"></div>
|
|
<div class="linenb">213</div><div class="codeline">Weiterhin sind Punktlichtquellen verfügbar, deren Licht von einer Position im Raum ausgeht.</div><div class="clear"></div>
|
|
<div class="linenb">214</div><div class="codeline">Neben den <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Punktlichtquellen, Junglichtquellen, Punktlichtquelle, Rücklichtquellen, Parklichtquellen] (16922) [lt:de:GERMAN_SPELLER_RULE]">Punklichtquellen</span> existieren auch noch Spots, die nur einen gewissen Winkel ausleuchten.</div><div class="clear"></div>
|
|
<div class="linenb">215</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">216</div><div class="codeline">Die Actor-Komponente wird für animierte Modelle in der Simulation eingesetzt.</div><div class="clear"></div>
|
|
<div class="linenb">217</div><div class="codeline">Sie besteht aus einem Namen für das Modell, <span class="highlight" title="Möglicherweise fehlende grammatische Übereinstimmung des Kasus (Fall: Wer/Was, Wessen, Wem, Wen/Was - Beispiel: 'das Fahrrads' statt 'des Fahrrads') und Genus (männlich, weiblich, sächlich - Beispiel: 'der Fahrrad' statt 'das Fahrrad') und Numerus (Einzahl, Mehrzahl - Beispiel: 'das Fahrräder' statt 'die Fahrräder'). (17133) [lt:de:DE_AGREEMENT]">einer Skin</span>, welche das Aussehen des Modells definiert und mehreren Animationen.</div><div class="clear"></div>
|
|
<div class="linenb">218</div><div class="codeline">Diese können durch in einem Skript definierte <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Trajektorie, Trajektorien] (17259) [lt:de:GERMAN_SPELLER_RULE]">Trajectories</span> ausgeführt werden, was eine einfache, aber statische, Simulation des Menschen erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb">219</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">220</div><div class="codeline">Eine solche Befehlsfolge kann nicht von außerhalb der Simulation zur Laufzeit angepasst werden.</div><div class="clear"></div>
|
|
<div class="linenb">221</div><div class="codeline">Diese Funktionalität wurde im Rahmen der Arbeit hinzugefügt.</div><div class="clear"></div>
|
|
<div class="linenb">222</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">223</div><div class="codeline"><span class="keyword1">\subsection</span>{Robotersimulation}</div><div class="clear"></div>
|
|
<div class="linenb">224</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [für] (17536) [lt:de:DE_CASE]">Für</span> die Robotersimulation wird ein Modell des Roboters benötigt, in dem dieser für die Simulationsumgebung beschrieben wird.</div><div class="clear"></div>
|
|
<div class="linenb">225</div><div class="codeline">Gazebo und ROS nutzen hierfür<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Gurt-Dateien, Wurf-Dateien] (17691) [lt:de:GERMAN_SPELLER_RULE]">.u</span>r</span>df-Dateien</span> \cite{urdf-format}, die auf XML basieren.</div><div class="clear"></div>
|
|
<div class="linenb">226</div><div class="codeline">In diesen werden die einzelnen Glieder des Roboterarms und die verbindenden Gelenke beschrieben.</div><div class="clear"></div>
|
|
<div class="linenb">227</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">228</div><div class="codeline">Jedes Glied des Modells besitzt eine Masse, einen Masseschwerpunkt und eine <span class="highlight" title="Möglicher Tippfehler gefunden. (17906) [lt:de:GERMAN_SPELLER_RULE]">Trägheitsmatrix</span> für die Physiksimulation in Gazebo.</div><div class="clear"></div>
|
|
<div class="linenb">229</div><div class="codeline">Außerdem werden Modelle für die visuelle Repräsentation des Roboters in Gazebo und die Kollisionserkennung in der Physiksimulation hinterlegt.</div><div class="clear"></div>
|
|
<div class="linenb">230</div><div class="codeline">Für beide existieren einfache Modelle wie Zylinder, Boxen und Kugeln.</div><div class="clear"></div>
|
|
<div class="linenb">231</div><div class="codeline">Da diese Formen nicht jeden Anwendungsfall abdecken und in der visuellen Repräsentation nicht ausreichen, können auch eigene Modelle hinterlegt werden.</div><div class="clear"></div>
|
|
<div class="linenb">232</div><div class="codeline">Hierbei werden die Modelle für die Physiksimulation und das Aussehen des Roboters unterschieden.</div><div class="clear"></div>
|
|
<div class="linenb">233</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">234</div><div class="codeline">Gelenke werden separat von den Gliedern definiert und verbinden jeweils zwei Glieder miteinander.</div><div class="clear"></div>
|
|
<div class="linenb">235</div><div class="codeline">Durch das Aneinanderreihen von mehreren Gliedern und Gelenken ist die Beschreibung eines beliebigen Roboteraufbaus möglich.</div><div class="clear"></div>
|
|
<div class="linenb">236</div><div class="codeline">Jedes Gelenk besitzt eine Position und Rotation im Raum.</div><div class="clear"></div>
|
|
<div class="linenb">237</div><div class="codeline">Diese werden für die Berechnung der Effekte genutzt, die vom spezifischen Gelenktyp abhängen.</div><div class="clear"></div>
|
|
<div class="linenb">238</div><div class="codeline">Aspekte wie Reibung und Dämpfung können auch hier für die Nutzung in der Physiksimulation beschrieben werden.</div><div class="clear"></div>
|
|
<div class="linenb">239</div><div class="codeline">Folgende Typen von Gelenken können in <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Art-Dateien, Erd-Dateien, Orts-Dateien, Prüf-Dateien, Wurf-Dateien, rot-Dateien, ruf-Dateien] (18942) [lt:de:GERMAN_SPELLER_RULE]">urdf-Dateien</span> genutzt werden:</div><div class="clear"></div>
|
|
<div class="linenb">240</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Deskription, deskriptiv, deskriptive, deskriptiven, Inskription] (18971) [lt:de:GERMAN_SPELLER_RULE]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb">241</div><div class="codeline"> <span class="keyword1">\item</span>[freie Gelenke]</div><div class="clear"></div>
|
|
<div class="linenb">242</div><div class="codeline"> ermöglichen vollständige Bewegung in allen 6 Freiheitsgraden (Rotation und Translation). Sie stellen den normalen Zustand der Glieder zueinander dar.</div><div class="clear"></div>
|
|
<div class="linenb">243</div><div class="codeline"> <span class="keyword1">\item</span>[planare Gelenke]</div><div class="clear"></div>
|
|
<div class="linenb">244</div><div class="codeline"> erlauben Bewegungen senkrecht zur Achse des Gelenks. Sie werden zum Beispiel für Oberflächen eingesetzt, auf welchen Objekte gleiten sollen.</div><div class="clear"></div>
|
|
<div class="linenb">245</div><div class="codeline"> <span class="keyword1">\item</span>[feste Gelenke]</div><div class="clear"></div>
|
|
<div class="linenb">246</div><div class="codeline"> sperren alle 6 Freiheitsgrade und werden häufig zur Fixierung von Objekten in einer Szene genutzt.</div><div class="clear"></div>
|
|
<div class="linenb">247</div><div class="codeline"> <span class="keyword1">\item</span>[kontinuierliche Gelenke]</div><div class="clear"></div>
|
|
<div class="linenb">248</div><div class="codeline"> erlauben die beliebige Rotation um die Achse des Gelenks. Sie sind nur selten in rotierenden Gelenken mit Schleifkontakten oder anderen frei <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [codierbaren, rot-erbauen, kodierbaren, notierbaren, radierbaren, datierbaren, addierbaren, codierbare, codierbarem, codierbarer, codierbares, dosierbaren, kodierbare, kodierbarem, kodierbarer, kodierbares, kopierbaren, montierbaren, notierbare, notierbarem] (19602) [lt:de:GERMAN_SPELLER_RULE]">rotierbaren</span> Übertragungsmechanismen zu finden.</div><div class="clear"></div>
|
|
<div class="linenb">249</div><div class="codeline"> <span class="keyword1">\item</span>[drehbare Gelenke]</div><div class="clear"></div>
|
|
<div class="linenb">250</div><div class="codeline"> verhalten sich wie kontinuierliche Gelenke, haben jedoch minimale und maximale Auslenkungen. Sie sind die häufigste Art von Gelenken in Roboterarmen.</div><div class="clear"></div>
|
|
<div class="linenb">251</div><div class="codeline"> <span class="keyword1">\item</span>[prismatische Gelenke]</div><div class="clear"></div>
|
|
<div class="linenb">252</div><div class="codeline"> ermöglichen die lineare Bewegung entlang der Achse des Gelenks. Sie werden zur Umsetzung von <span class="highlight" title="Möglicher Tippfehler gefunden. (19940) [lt:de:GERMAN_SPELLER_RULE]">Linearaktuatoren</span> in der Simulation verwendet.</div><div class="clear"></div>
|
|
<div class="linenb">253</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (19986) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb">254</div><div class="codeline"><span class="keyword1">\subsection</span>{Menschensimulation}</div><div class="clear"></div>
|
|
<div class="linenb">255</div><div class="codeline">Gazebo besitzt bereits ein simples Animationssystem für bewegliche Aktoren, dass auch für Menschen nutzbar ist.</div><div class="clear"></div>
|
|
<div class="linenb">256</div><div class="codeline">Für diesen existiert bereits ein Modell mit mehreren Animationen, die allein abgespielt, oder an Bewegungen gekoppelt werden können.</div><div class="clear"></div>
|
|
<div class="linenb">257</div><div class="codeline">Dadurch ist zum Beispiel eine Laufanimation realisierbar, die synchronisiert zu einer Bewegung abgespielt wird.</div><div class="clear"></div>
|
|
<div class="linenb">258</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">259</div><div class="codeline">Dies setzt jedoch voraus, dass der gesamte Bewegungsablauf zum Simulationsstart bekannt ist.</div><div class="clear"></div>
|
|
<div class="linenb">260</div><div class="codeline">Der Grund dafür ist auf die Definition der Pfade zurückzuführen, die Aktionen wie Bewegungen und Animationen auslösen.</div><div class="clear"></div>
|
|
<div class="linenb">261</div><div class="codeline">Diese können nur als dem Actor untergeordnetes Element in der<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Ast-Datei, Ost-Datei] (20649) [lt:de:GERMAN_SPELLER_RULE]">.s</span>d</span>f-Datei</span> definiert werden, was Veränderungen zur Laufzeit ausschließt.</div><div class="clear"></div>
|
|
<div class="linenb">262</div><div class="codeline">Durch diesen Umstand ist der damit realisierbare Simulationsumfang nicht ausreichend, um die gewünschten Szenarien abzubilden.</div><div class="clear"></div>
|
|
<div class="linenb">263</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">264</div><div class="codeline">Um diese Einschränkung zu beheben, ist die Entwicklung eines eigenen Systems zum Bewegen und Animieren des Menschen unausweichlich.</div><div class="clear"></div>
|
|
<div class="linenb">265</div><div class="codeline">Dieses System muss, wie im Konzept beschrieben, Steuerbefehle von außen empfangen, umsetzen und Feedback liefern können.</div><div class="clear"></div>
|
|
<div class="linenb">266</div><div class="codeline">Dafür soll ein ROS Action-Server verwendet werden, der die Befehle entgegennimmt, unter konstantem Feedback ausführt und nach erfolgreicher Ausführung den Empfang des nächsten Befehls zulässt.</div><div class="clear"></div>
|
|
<div class="linenb">267</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">268</div><div class="codeline">Ein solches System soll als Gazebo-Plugin <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Beinbindebar] (21339) [lt:de:GERMAN_SPELLER_RULE]">einbindbar</span> sein, um Modifikationen an der Simulationsumgebung selbst auszuschließen, die konstant weiter entwickelt wird.</div><div class="clear"></div>
|
|
<div class="linenb">269</div><div class="codeline">Dies vereinfacht die Wartung, da bei Updates der Simulationsumgebung nicht die Menschensimulation an den neuen Code angepasst werden muss.</div><div class="clear"></div>
|
|
<div class="linenb">270</div><div class="codeline"><span class="keyword1">\section</span>{Roboterumgebung}</div><div class="clear"></div>
|
|
<div class="linenb">271</div><div class="codeline">MoveIt2 \cite{moveit-docs} ist das meist genutzte ROS2 Paket für die Bewegungsplanung von Robotern.</div><div class="clear"></div>
|
|
<div class="linenb">272</div><div class="codeline">Deshalb existiert eine umfangreiche Dokumentation für die zahlreichen Komponenten, was die Entwicklung neuer Komponenten erleichtert.</div><div class="clear"></div>
|
|
<div class="linenb">273</div><div class="codeline">Außerdem sind zahlreiche direkte Integrationen mit anderen ROS-Paketen verfügbar, was die Nutzung dieser zusammen mit MoveIt erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb">274</div><div class="codeline">Aufgrund dieser Eigenschaften ist MoveIt eine vorteilhafte Bewegungsplanungsumgebung für dieses Projekt.</div><div class="clear"></div>
|
|
<div class="linenb">275</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">276</div><div class="codeline">MoveIt besteht aus mehreren Komponenten, die in ihrer Gesamtheit den Bereich der Bewegungsplanung abdecken.</div><div class="clear"></div>
|
|
<div class="linenb">277</div><div class="codeline">Der Nutzer kann mit MoveIt auf verschiedenen Wegen Steuerbefehle für den Roboter absenden, die durch die Software umgesetzt werden.</div><div class="clear"></div>
|
|
<div class="linenb">278</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">279</div><div class="codeline">Die erste Inbetriebnahme ist über das mitgelieferte <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Reis-Plugin, Reiß-Plugin, Reiz-Plugin, Avis-Plugin, RVGs-Plugin] (22368) [lt:de:GERMAN_SPELLER_RULE]">RViz-Plugin</span> und die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Demo-Launch-Files, dem-Launch-Files, Memo-Launch-Files, der-Launch-Files, den-Launch-Files, des-Launch-Files, de-Launch-Files, teil-Launch-Files, denn-Launch-Files, Leo-Launch-Files, dato-Launch-Files, desto-Launch-Files, dein-Launch-Files, käme-Launch-Files, time-Launch-Files, wem-Launch-Files, Dämon-Launch-Files, Hemd-Launch-Files, Lemgo-Launch-Files] (22388) [lt:de:GERMAN_SPELLER_RULE]">demo-Launch-Files</span> möglich.</div><div class="clear"></div>
|
|
<div class="linenb">280</div><div class="codeline">Diese wurden mit dem mitgelieferten <span class="highlight" title="Möglicher Tippfehler gefunden. (22451) [lt:de:GERMAN_SPELLER_RULE]">Setupassistenten</span> für den Roboter generiert.</div><div class="clear"></div>
|
|
<div class="linenb">281</div><div class="codeline">Durch die Ausführung dieser Demo startet <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Reis, Reiß, Reiz, Avis, RVGs, Evis, Roys, Weiß, Ivys, Reise, Rein, Rhein, Rio, Reich, DVDs, Reist, Eric, Via, Ross, Heiß] (22536) [lt:de:GERMAN_SPELLER_RULE]">RViz</span>, eine Test- und <span class="highlight" title="Möglicher Tippfehler gefunden. (22557) [lt:de:GERMAN_SPELLER_RULE]">Visualisierungsumgebung</span> für ROS.</div><div class="clear"></div>
|
|
<div class="linenb">282</div><div class="codeline">In der Demo können Roboterbewegungen unter Zuhilfenahme von Markierungen in <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Reis, Reiß, Reiz, Avis, RVGs, Evis, Roys, Weiß, Ivys, Reise, Rein, Rhein, Rio, Reich, DVDs, Reist, Eric, Via, Ross, Heiß] (22666) [lt:de:GERMAN_SPELLER_RULE]">RViz</span> geplant und ausgeführt werden.</div><div class="clear"></div>
|
|
<div class="linenb">283</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">284</div><div class="codeline">Da sich eine Bewegungsplanung in einer Nutzeroberfläche nur beschränkt zur Automatisierung durch Software eignet, müssen die der Demo zugrundeliegenden Schnittstellen genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb">285</div><div class="codeline">Für die Sprache Python existierte für die Vorgängerversion von MoveIt das <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [soweit, Hoheit, gefeit, Rohheit, mögest, Doofheit, Moovit, Rohfett, covert, modelt, modert, mogelt, morbid, mosert, mögend, möget, Kohfeldt] (22960) [lt:de:GERMAN_SPELLER_RULE]">moveit</span>_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [kommender, kommenden, Kommandeur, kommende, kommandiert, kompakter, kommendes, kommandiere, kommendem, kommoder, kämmender, zoomender] (22967) [lt:de:GERMAN_SPELLER_RULE]">commander</span> Paket, welches den Zugriff auf MoveIt in Python erlaubt, aber für MoveIt2 noch nicht portiert wurde \cite{moveitpython}.</div><div class="clear"></div>
|
|
<div class="linenb">286</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">287</div><div class="codeline">Die direkte Nutzung der C++-API ist aktuell die einzige offizielle Möglichkeit, mit MoveIt2 direkt zu interagieren.</div><div class="clear"></div>
|
|
<div class="linenb">288</div><div class="codeline">Dabei können sowohl die Planung und die Ausführung von Bewegungen ausgelöst aber auch <span class="highlight" title="Möglicher Tippfehler gefunden. (23285) [lt:de:GERMAN_SPELLER_RULE]">Exklusionszonen</span> eingerichtet werden.</div><div class="clear"></div>
|
|
<div class="linenb">289</div><div class="codeline">Außerdem können Objekte virtuell mit dem Roboter verbunden werden, wodurch sich diese in <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Reis, Reiß, Reiz, Avis, RVGs, Evis, Roys, Weiß, Ivys, Reise, Rein, Rhein, Rio, Reich, DVDs, Reist, Eric, Via, Ross, Heiß] (23411) [lt:de:GERMAN_SPELLER_RULE]">RViz</span> mit dem Roboter bewegen.</div><div class="clear"></div>
|
|
<div class="linenb">290</div><div class="codeline">Natürlich können die Befehle auch direkt an die entsprechenden <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Tobias, Comics, Topik, Tobis, Möbius, Tobys, Robins, Topisch, Dubios, Tonika, Aspiks, Tipis, Böbigs, Tokios, Tabaks, Utopias, Topas, Biopics, Topfes, Copys] (23504) [lt:de:GERMAN_SPELLER_RULE]">Topics</span> gesendet werden, um einzelne Bereiche des Systems zu testen.</div><div class="clear"></div>
|
|
<div class="linenb">291</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">292</div><div class="codeline">Um die durch den <span class="highlight" title="Möglicher Tippfehler gefunden. (23590) [lt:de:GERMAN_SPELLER_RULE]">Setupassistenten</span> generierten Informationen an MoveIt zu übergeben, wird intern ein <span class="highlight" title="Möglicher Tippfehler gefunden. (23673) [lt:de:GERMAN_SPELLER_RULE]">RobotStatePublisher</span> verwendet.</div><div class="clear"></div>
|
|
<div class="linenb">293</div><div class="codeline">Dieser lädt alle Daten des Robotermodells und übergibt sie an andere Programme, die Roboterparameter zur Laufzeit anfordern, unter diesen auch MoveIt selbst.</div><div class="clear"></div>
|
|
<div class="linenb">294</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">295</div><div class="codeline">Durch die vorher erwähnte C++-API erhält die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Move Group] (23908) [lt:de:GERMAN_SPELLER_RULE]">MoveGroup</span> die Informationen über die gewünschte Bewegung.</div><div class="clear"></div>
|
|
<div class="linenb">296</div><div class="codeline">Dabei können auch bestimmte Einschränkungen des Arbeitsraums, spezielle Trajektorien oder Limitierungen der Gelenke in der Planung berücksichtigt werden.</div><div class="clear"></div>
|
|
<div class="linenb">297</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">298</div><div class="codeline">Diese Daten können durch eine <span class="highlight" title="Möglicher Tippfehler gefunden. (24151) [lt:de:GERMAN_SPELLER_RULE]">OccupancyMap</span> ergänzt werden, welche die Bereiche beschreibt, die sich um den Roboter befinden.</div><div class="clear"></div>
|
|
<div class="linenb">299</div><div class="codeline">Eine solche Erweiterung erlaubt die automatische Nutzung von Kollisionsvermeidung mit Objekten im Planungsbereich.</div><div class="clear"></div>
|
|
<div class="linenb">300</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">301</div><div class="codeline">Die Planung der Bewegung wird durch einen der in MoveIt implementierten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Golfer, Söller, Sollen, Sommer, Solcher, Kölner, Voller, Selber, Dörfer, Solle, Völker, Server, Volker, Folter, Helfer, Holger, Möller, Pulver, Rover, Söldner] (24434) [lt:de:GERMAN_SPELLER_RULE]">Solver</span> realisiert, der durch die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Move Group] (24467) [lt:de:GERMAN_SPELLER_RULE]">MoveGroup</span> aufgerufen wird.</div><div class="clear"></div>
|
|
<div class="linenb">302</div><div class="codeline">Um die generierte Bewegung umzusetzen, werden die gewünschten Gelenkpositionen als Abfolge an die \code{ros_control} Controller des Roboters weitergegeben.</div><div class="clear"></div>
|
|
<div class="linenb">303</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">304</div><div class="codeline">Diese Abstraktion erlaubt die Nutzung von sowohl simulierten, aber auch echten Robotern.</div><div class="clear"></div>
|
|
<div class="linenb">305</div><div class="codeline">Dazu werden für echte und simulierte Roboter unterschiedliche ros_control Controller verwendet.</div><div class="clear"></div>
|
|
<div class="linenb">306</div><div class="codeline">Der Erfolg der gesamten Pipeline kann dabei durch einen Feedbackmechanismus überwacht werden.</div><div class="clear"></div>
|
|
<div class="linenb">307</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">308</div><div class="codeline">Im Falle von Gazebo wird \code{ign_ros_control} genutzt, dass die benötigten \code{ros_control} Controller in die Simulation einbindet.</div><div class="clear"></div>
|
|
<div class="linenb">309</div><div class="codeline">Diese können dann wie normale Controller von \code{ros_control} genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb">310</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">311</div><div class="codeline">Der Ablauf der Bewegungsplanungspipeline von MoveIt ist im Anhang unter Abbildung \ref{moveitpipeline} visualisiert.</div><div class="clear"></div>
|
|
<div class="linenb">312</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">313</div><div class="codeline"><span class="keyword1">\section</span>{Programmiersprache}</div><div class="clear"></div>
|
|
<div class="linenb">314</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [als] (25238) [lt:de:DE_CASE]">Als</span> Programmiersprache kommen in ROS standardmäßig Python \cite{python} und C++ \cite{cpp} zum Einsatz.</div><div class="clear"></div>
|
|
<div class="linenb">315</div><div class="codeline">Beide Sprachen sind in der Softwareentwicklung beliebt, unterscheiden sich jedoch stark im Funktionsumfang und im Entwicklungsprozess.</div><div class="clear"></div>
|
|
<div class="linenb">316</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">317</div><div class="codeline">Python ist eine interpretierte Skriptsprache, die zu den hohen Programmiersprachen zählt.</div><div class="clear"></div>
|
|
<div class="linenb">318</div><div class="codeline">Sie wird in ROS zum Beispiel in<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (25583) [lt:de:GERMAN_SPELLER_RULE]">.l</span>a</span>unch.py}-Dateien</span> eingesetzt, die den Start von Diensten in der Umgebung verwalten.</div><div class="clear"></div>
|
|
<div class="linenb">319</div><div class="codeline">Die Sprache kann aber auch für die Programmierung von Nodes innerhalb des ROS-Systems verwendet werden.</div><div class="clear"></div>
|
|
<div class="linenb">320</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">321</div><div class="codeline">C++ hingegen ist eine kompilierte, statisch typisierte, maschinennahe Programmiersprache.</div><div class="clear"></div>
|
|
<div class="linenb">322</div><div class="codeline">In ROS wird C++ für Code verwendet, der entweder häufig oder in zeitkritischen Szenarien ausgeführt wird.</div><div class="clear"></div>
|
|
<div class="linenb">323</div><div class="codeline">Aus diesem Grund wird C++ in Nodes verwendet, die schnell auf große Datenmengen reagieren müssen.</div><div class="clear"></div>
|
|
<div class="linenb">324</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">325</div><div class="codeline">Die Nutzung eines Kompilierers beschleunigt C++ deutlich im Vergleich zu Python, ist jedoch weniger geeignet für häufige Modifikation.</div><div class="clear"></div>
|
|
<div class="linenb">326</div><div class="codeline">Dies ist vor allem in häufig geänderten Programmen ein Nachteil, die nach einer Änderung erneut kompiliert werden müssen.</div><div class="clear"></div>
|
|
<div class="linenb">327</div><div class="codeline">Aus diesem Grund wird Python vor allem in<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden. (26367) [lt:de:GERMAN_SPELLER_RULE]">.l</span>a</span>unch.py-Dateien</span> verwendet, welche die Interaktion der anderen Programme in der Umgebung verwalten.</div><div class="clear"></div>
|
|
<div class="linenb">328</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">329</div><div class="codeline">Um die gewünschten Funktionen für die Simulation umzusetzen ist die Verwendung der Programmiersprache C++ nahezu unumgänglich.</div><div class="clear"></div>
|
|
<div class="linenb">330</div><div class="codeline">Zum Beispiel sind Gazebo-Plugins in C++ erstellt, was die Nutzung anderer Sprachen stark einschränkt.</div><div class="clear"></div>
|
|
<div class="linenb">331</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">332</div><div class="codeline">Ein weiterer Grund für die Nutzung von C++ ist die hohe Geschwindigkeit, die bei einer hohen Anzahl von Simulationsschritten pro Sekunde benötigt wird.</div><div class="clear"></div>
|
|
<div class="linenb">333</div><div class="codeline">Außerdem kann MoveIt2 derzeit nur mit C++ direkt gesteuert werden.</div><div class="clear"></div>
|
|
<div class="linenb">334</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">335</div><div class="codeline">Die Verwendung von C++ für die zu entwickelnden Nodes erscheint deshalb aus oben genannten Gründen naheliegend.</div><div class="clear"></div>
|
|
<div class="linenb">336</div><div class="codeline">In den Launch-Skripten wird jedoch Python verwendet werden, da hier die Vorteile einer Skriptsprache überwiegen.</div><div class="clear"></div>
|
|
<div class="linenb">337</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">338</div><div class="codeline"><span class="keyword1">\section</span>{Behavior Trees}</div><div class="clear"></div>
|
|
<div class="linenb">339</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [zur] (27161) [lt:de:DE_CASE]">Zur</span> Verwaltung der Abläufe sollen Behavior Trees genutzt werden, die durch die Bibliothek<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (27251) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree</span>.CP</span>P} bereitgestellt werden.</div><div class="clear"></div>
|
|
<div class="linenb">340</div><div class="codeline">Diese Bibliothek wurde in C++ geschrieben, und ist somit in ROS und dem geplanten Konzept integrierbar.</div><div class="clear"></div>
|
|
<div class="linenb">341</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">342</div><div class="codeline">Es existieren viele Beispiele und eine gute Dokumentation über die erweiterten Funktionen der Bibliothek, die im Folgenden vorgestellt werden.</div><div class="clear"></div>
|
|
<div class="linenb">343</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">344</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (27540) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb">345</div><div class="codeline"> <span class="keyword1">\item</span>[Asynchrone Nodes]</div><div class="clear"></div>
|
|
<div class="linenb">346</div><div class="codeline"> sind in<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (27583) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree</span>.CP</span>P} leichter umsetzbar, da diese in Form verschiedener Zustände der Nodes beim Konzept der Bibliothek mit bedacht wurden.</div><div class="clear"></div>
|
|
<div class="linenb">347</div><div class="codeline"> Dies resultiert in Nodes, die ohne spezielle Logik langanhaltende Aktionen ausführen können, ohne die Ausführung des Behavior Trees zu behindern.</div><div class="clear"></div>
|
|
<div class="linenb">348</div><div class="codeline"> <span class="keyword1">\item</span>[Reaktives Verhalten] ist ein neues Konzept, um die Handhabung von asynchronen Nodes zu vereinfachen.</div><div class="clear"></div>
|
|
<div class="linenb">349</div><div class="codeline"> Diese Strukturelemente erlauben die parallele Ausführung von mehreren Zweigen, die die aktuell ausgeführte Aktion beeinflussen können.</div><div class="clear"></div>
|
|
<div class="linenb">350</div><div class="codeline"> Darunter fällt die Modifizierung von Parametern der Aktionen, aber auch der vollständige Abbruch einer Aktion durch äußere Einflüsse.</div><div class="clear"></div>
|
|
<div class="linenb">351</div><div class="codeline"> <span class="keyword1">\item</span>[Das<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Exil-Format, Achsel-Format] (28250) [lt:de:GERMAN_SPELLER_RULE]">.x</span>m</span>l-Format</span> der Behavior Trees] ermöglicht einen Austausch des Verhaltens, ohne die unterliegenden Programme verändern zu müssen.</div><div class="clear"></div>
|
|
<div class="linenb">352</div><div class="codeline"> Dies ist vor allem in kompilierten Sprachen wie C++ sinnvoll, da Änderungen im Verhaltensablauf keiner Neukompilierung bedürfen, was die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Integrationszeit, Operationszeit] (28519) [lt:de:GERMAN_SPELLER_RULE]">Iterationszeit</span> für Änderungen verbessert.</div><div class="clear"></div>
|
|
<div class="linenb">353</div><div class="codeline"> <span class="keyword1">\item</span>[Plugins] können zum Start geladen werden, um weitere Nodes dem ausgeführten Programm hinzufügen zu können.</div><div class="clear"></div>
|
|
<div class="linenb">354</div><div class="codeline"> Dies vereinfacht die Erweiterung um neue Funktionen und das mehrfache Nutzen von Code.</div><div class="clear"></div>
|
|
<div class="linenb">355</div><div class="codeline"> <span class="keyword1">\item</span>[Das <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Backbord] (28767) [lt:de:GERMAN_SPELLER_RULE]">Blackboard</span>] ist eine Interaktionsebene, die den Datenfluss zwischen den Nodes erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb">356</div><div class="codeline"> In diesem System kann unter Verwendung einer Zeichenkette als Identifikator ein Wert in Form einer Referenz hinterlegt werden.</div><div class="clear"></div>
|
|
<div class="linenb">357</div><div class="codeline"> Sogenannte Ports erlauben Nodes, Daten aus dem <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Backbord] (29032) [lt:de:GERMAN_SPELLER_RULE]">Blackboard</span> zu lesen und auf dieses zu schreiben.</div><div class="clear"></div>
|
|
<div class="linenb">358</div><div class="codeline"> <span class="keyword1">\item</span>[Integriertes Logging] erlaubt es, Zustandsänderungen im Behavior Tree zu visualisieren, aufzunehmen und wieder abzuspielen.</div><div class="clear"></div>
|
|
<div class="linenb">359</div><div class="codeline"> Dies erleichtert das häufig schwierige Debuggen von Zustandsmaschinen erheblich, da das Verhalten genau untersucht werden kann.</div><div class="clear"></div>
|
|
<div class="linenb">360</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (29338) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb">361</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">362</div><div class="codeline">Behavior Trees werden bei Verwendung von<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (29392) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree</span>.CP</span>P} in Form von<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"><span class="highlight-sh" title="There should not be a space before the period at the end of a sentence. [sh:d:003]"> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Exil-Dateien, Achsel-Dateien] (29421) [lt:de:GERMAN_SPELLER_RULE]">.x</span>m</span>l-Dateien</span> gespeichert.</div><div class="clear"></div>
|
|
<div class="linenb">363</div><div class="codeline">Diese Dateien enthalten die Anordnung der Nodes selbst, aber auch weitere Konfigurationsmöglichkeiten in Form von Ein- und Ausgabeports.</div><div class="clear"></div>
|
|
<div class="linenb">364</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">365</div><div class="codeline">Ports können verwendet werden, um Nodes generischer zu gestalten.</div><div class="clear"></div>
|
|
<div class="linenb">366</div><div class="codeline">Durch veränderbare Parameter im später erstellten Tree können Nodes ohne Programmänderung verändert werden.</div><div class="clear"></div>
|
|
<div class="linenb">367</div><div class="codeline">Falls die Nodes mit Bedacht erstellt wurden, kann so auf viele spezialisierte Nodes verzichtet werden.</div><div class="clear"></div>
|
|
<div class="linenb">368</div><div class="codeline">Um dies zu ermöglichen, kann deren Funktion durch mehrere andere Nodes in einem <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bürde, Subtile, Separee, Subteen, Soupiere, Subtype, Superbe, Séparée, Süperbe, Supreme, Zuparke, Zustrebe, Zutrete] (29942) [lt:de:GERMAN_SPELLER_RULE]">Subtree</span> mit Parametern abgebildet werden.</div><div class="clear"></div>
|
|
<div class="linenb">369</div><div class="codeline">Diese in den Ports übertragenen Daten können sowohl aus einem String ausgelesen, aber auch aus dem sogenannten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Backbord] (30095) [lt:de:GERMAN_SPELLER_RULE]">Blackboard</span> entnommen werden.</div><div class="clear"></div>
|
|
<div class="linenb">370</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">371</div><div class="codeline">Um die Übersetzung aus einem String zu ermöglichen, muss eine entsprechende Funktion implementiert werden, die einen String in den gewünschten Zieltyp übersetzt.</div><div class="clear"></div>
|
|
<div class="linenb">372</div><div class="codeline">Viele primitive Datentypen, wie Ganzzahlen und Gleitkommazahlen, werden von Behavior<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> Tree.<span class="highlight" title="Fügen Sie zwischen Sätzen ein Leerzeichen ein. Suggestions: [ Cpp] (30377) [lt:de:DE_SENTENCE_WHITESPACE]">Cp</span>p</span> bereits durch native Funktionen unterstützt.</div><div class="clear"></div>
|
|
<div class="linenb">373</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">374</div><div class="codeline">Das <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Backbord] (30431) [lt:de:GERMAN_SPELLER_RULE]">Blackboard</span> ist ein System, dass die Nutzung von Variablen als Parameter für Ports erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb">375</div><div class="codeline">Diese werden im Hintergrund als eine Referenz auf den eigentlichen Wert gespeichert.</div><div class="clear"></div>
|
|
<div class="linenb">376</div><div class="codeline">Eine solche Funktion erlaubt das weitere Zerlegen von Vorgängen innerhalb des Behavior Trees.</div><div class="clear"></div>
|
|
<div class="linenb">377</div><div class="codeline">Solche kleineren Nodes sind durch ihren limitierten Umfang universeller einsetzbar, da sie nur kleinere Teilprobleme betrachten, die zu komplexeren Strukturen zusammengesetzt werden können.</div><div class="clear"></div>
|
|
<div class="linenb">378</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">379</div><div class="codeline">Um die dadurch wachsenden Strukturen besser überblicken zu können, lassen sich Gruppen von Nodes als sogenannte <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Separees, Subtiles, Subteen, Superbes, Séparées, Süperbes] (31004) [lt:de:GERMAN_SPELLER_RULE]">Subtrees</span> abspeichern.</div><div class="clear"></div>
|
|
<div class="linenb">380</div><div class="codeline">Diese bilden in ihrer Gesamtheit eine neue Node, die im Behavior Tree eingesetzt werden kann.</div><div class="clear"></div>
|
|
<div class="linenb">381</div><div class="codeline">Um den Einsatz von Variablen innerhalb eines <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Separees, Subtiles, Subteen, Superbes, Séparées, Süperbes] (31165) [lt:de:GERMAN_SPELLER_RULE]">Subtrees</span> zu ermöglichen, besitzt jeder <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bürde, Subtile, Separee, Subteen, Soupiere, Subtype, Superbe, Séparée, Süperbe, Supreme, Zuparke, Zustrebe, Zutrete] (31204) [lt:de:GERMAN_SPELLER_RULE]">Subtree</span> ein separates <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Backbord] (31226) [lt:de:GERMAN_SPELLER_RULE]">Blackboard</span>.</div><div class="clear"></div>
|
|
<div class="linenb">382</div><div class="codeline">Dadurch kann auch ein Eingriff durch äußere Einflüsse verhindert werden.</div><div class="clear"></div>
|
|
<div class="linenb">383</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">384</div><div class="codeline">Natürlich sollte es auch möglich sein, Variablen an solche <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Separees, Subtiles, Subteen, Superbes, Séparées, Süperbes] (31371) [lt:de:GERMAN_SPELLER_RULE]">Subtrees</span> zu übergeben.</div><div class="clear"></div>
|
|
<div class="linenb">385</div><div class="codeline">Diese können, wie auch bei normalen Nodes, als Parameter an den <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bürde, Subtile, Separee, Subteen, Soupiere, Subtype, Superbe, Séparée, Süperbe, Supreme, Zuparke, Zustrebe, Zutrete] (31458) [lt:de:GERMAN_SPELLER_RULE]">Subtree</span> übergeben werden.</div><div class="clear"></div>
|
|
<div class="linenb">386</div><div class="codeline">Die Bibliothek<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (31499) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree</span>.CP</span>P} verbindet dann diese Werte und erlaubt die Datenübergabe zum und vom <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bürde, Subteen, Subtile, Separee, Soupiere, Subtype, Séparée, Superbe, Supreme, Süperbe, Zuparke, Zustrebe, Zutrete] (31585) [lt:de:GERMAN_SPELLER_RULE]">Subtree</span>.</div><div class="clear"></div>
|
|
<div class="linenb">387</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">388</div><div class="codeline"><span class="keyword1">\subsection</span>{Asynchrone Nodes}</div><div class="clear"></div>
|
|
<div class="linenb">389</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [da] (31612) [lt:de:DE_CASE]">Da</span> nicht jeder Prozess sofort vollständig durchgeführt werden kann, muss die Möglichkeit geschaffen werden, lang anhaltende Prozesse abzubilden.</div><div class="clear"></div>
|
|
<div class="linenb">390</div><div class="codeline">Dies geschieht in<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (31775) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree</span>.CP</span>P} durch asynchrone Nodes.</div><div class="clear"></div>
|
|
<div class="linenb">391</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">392</div><div class="codeline">Eine asynchrone Node besitzt neben den Zuständen SUCCESS und FAILURE einer normalen Node auch die beiden neuen Zustände <span class="highlight" title="Möglicher Tippfehler gefunden. (31937) [lt:de:GERMAN_SPELLER_RULE]">RUNNING</span> und IDLE.</div><div class="clear"></div>
|
|
<div class="linenb">393</div><div class="codeline">Außerdem werden mehrere Funktionen definiert, die den Lebenszyklus der Node definieren.</div><div class="clear"></div>
|
|
<div class="linenb">394</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">395</div><div class="codeline">Wird eine Node durch den Aufruf der \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Stadt-Funktion, Start-Funktion] (32080) [lt:de:GERMAN_SPELLER_RULE]">onStart}-Funktion</span> gestartet, geht diese in einen der Zustände <span class="highlight" title="Möglicher Tippfehler gefunden. (32141) [lt:de:GERMAN_SPELLER_RULE]">RUNNING</span>, SUCCESS oder FAILURE über.</div><div class="clear"></div>
|
|
<div class="linenb">396</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">397</div><div class="codeline">Der Zustand <span class="highlight" title="Möglicher Tippfehler gefunden. (32190) [lt:de:GERMAN_SPELLER_RULE]">RUNNING</span> steht dabei für eine Node, die sich noch in der Ausführung befindet.</div><div class="clear"></div>
|
|
<div class="linenb">398</div><div class="codeline">Solange dieser Zustand anhält, wird die Node nicht noch ein weiteres Mal gestartet, sondern nur der Zustand in der neuen \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (32388) [lt:de:GERMAN_SPELLER_RULE]">onRunning}-Funktion</span> abgefragt.</div><div class="clear"></div>
|
|
<div class="linenb">399</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">400</div><div class="codeline">Der IDLE-Zustand ist ein besonderer Zustand, der nur durch eine vollständige Ausführung erreichbar ist.</div><div class="clear"></div>
|
|
<div class="linenb">401</div><div class="codeline">Er wird von der Node angenommen, nachdem deren Ausführung durch SUCCESS oder FAILURE beendet wurde.</div><div class="clear"></div>
|
|
<div class="linenb">402</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">403</div><div class="codeline">Im Falle eines Abbruchs, der durch andere Nodes im Baum ausgelöst werden könnte, muss die Ausführung der Node vorzeitig beendet werden können.</div><div class="clear"></div>
|
|
<div class="linenb">404</div><div class="codeline">Dies geschieht mit der neuen \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [anhaltet-Funktion, anmaltet-Funktion, obwaltet-Funktion] (32796) [lt:de:GERMAN_SPELLER_RULE]">onHalted}-Funktion</span>, welche ausgeführt wird, wenn die Ausführung der Node abgebrochen werden soll.</div><div class="clear"></div>
|
|
<div class="linenb">405</div><div class="codeline"><span class="keyword1">\subsection</span>{Dateiformat}</div><div class="clear"></div>
|
|
<div class="linenb">406</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [das] (32905) [lt:de:DE_CASE]">Das</span> in Behavior<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> Tree.<span class="highlight" title="Fügen Sie zwischen Sätzen ein Leerzeichen ein. Suggestions: [ Cpp] (32926) [lt:de:DE_SENTENCE_WHITESPACE]">Cp</span>p</span> verwendete Dateiformat, um Behavior Trees zu erstellen, basiert auf XML.</div><div class="clear"></div>
|
|
<div class="linenb">407</div><div class="codeline">Jedes Dokument beginnt dabei mit einem Root-Element, dass alle Behavior Trees und eine Referenz auf die ID des Hauptbaumes enthält.</div><div class="clear"></div>
|
|
<div class="linenb">408</div><div class="codeline">Diese wird benötigt, da auch Unterbäume im selben Dokument deklariert und genutzt werden können, die aber sonst nicht vom Hauptbaum unterscheidbar sind.</div><div class="clear"></div>
|
|
<div class="linenb">409</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">410</div><div class="codeline">Jeder Baum beginnt mit einem Behavior Tree-Element, das als Attribut die ID des Baumes besitzen muss.</div><div class="clear"></div>
|
|
<div class="linenb">411</div><div class="codeline">Als untergeordnete Elemente des Baumes werden die Nodes entsprechend der gewünschten Baumstruktur angeordnet.</div><div class="clear"></div>
|
|
<div class="linenb">412</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">413</div><div class="codeline">Als Beispiel wird der bereits im Konzept verwendete Behavior Tree (siehe Abbildung \ref{choice_tree_xml}) in die entsprechende XML-Repräsentation umgewandelt.</div><div class="clear"></div>
|
|
<div class="linenb">414</div><div class="codeline">Dabei ist zu beachten, dass die Root-Node in der Datei nicht existiert, da diese nur den Eintrittspunkt in die Struktur darstellt.</div><div class="clear"></div>
|
|
<div class="linenb">415</div><div class="codeline">Außerdem können selbst definierte Nodes sowohl direkt mit ihrem Namen, aber auch über den Namen Action mit ihrem Namen als ID-Parameter, referenziert werden.</div><div class="clear"></div>
|
|
<div class="linenb">416</div><div class="codeline"><span class="keyword2">\begin{figure}</span>[hpt]</div><div class="clear"></div>
|
|
<div class="linenb">417</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-tree-demo}</div><div class="clear"></div>
|
|
<div class="linenb">418</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">419</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Beispiel eines Behavior Trees</span>}</div><div class="clear"></div>
|
|
<div class="linenb">420</div><div class="codeline"><span class="keyword1">\label</span>{<span class="highlight-sh" title="Figure choice_tree_demo is never referenced in the text [sh:figref]">c</span>hoice_tree_demo}</div><div class="clear"></div>
|
|
<div class="linenb">421</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">422</div><div class="codeline"><span class="keyword2">\begin{figure}</span>[hpt]</div><div class="clear"></div>
|
|
<div class="linenb">423</div><div class="codeline"><span class="keyword2">\begin{minted}</span>[breaklines,frame=single,linenos]{xml}</div><div class="clear"></div>
|
|
<div class="linenb">424</div><div class="codeline"><?xml version="1.0"?></div><div class="clear"></div>
|
|
<div class="linenb">425</div><div class="codeline"><root main_tree_to_execute="demoTree"></div><div class="clear"></div>
|
|
<div class="linenb">426</div><div class="codeline"> <Behavior Tree ID="actorTree"></div><div class="clear"></div>
|
|
<div class="linenb">427</div><div class="codeline"> <Sequence></div><div class="clear"></div>
|
|
<div class="linenb">428</div><div class="codeline"> <Fallback></div><div class="clear"></div>
|
|
<div class="linenb">429</div><div class="codeline"> <Action ID="IsDoorOpen"/></div><div class="clear"></div>
|
|
<div class="linenb">430</div><div class="codeline"> <Action ID="OpenDoor"/></div><div class="clear"></div>
|
|
<div class="linenb">431</div><div class="codeline"> <Action ID="BreakDoor"/></div><div class="clear"></div>
|
|
<div class="linenb">432</div><div class="codeline"> </Fallback></div><div class="clear"></div>
|
|
<div class="linenb">433</div><div class="codeline"> <CanWalkThrough/></div><div class="clear"></div>
|
|
<div class="linenb">434</div><div class="codeline"> <WalkThrough/></div><div class="clear"></div>
|
|
<div class="linenb">435</div><div class="codeline"> </Sequence></div><div class="clear"></div>
|
|
<div class="linenb">436</div><div class="codeline"> </Behavior Tree></div><div class="clear"></div>
|
|
<div class="linenb">437</div><div class="codeline"></root></div><div class="clear"></div>
|
|
<div class="linenb">438</div><div class="codeline"><span class="keyword2">\end{minted}</span></div><div class="clear"></div>
|
|
<div class="linenb">439</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Beispiel eines Behavior Trees als .xml</span>}</div><div class="clear"></div>
|
|
<div class="linenb">440</div><div class="codeline"><span class="keyword1">\label</span>{choice_tree_xml}</div><div class="clear"></div>
|
|
<div class="linenb">441</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">442</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">443</div><div class="codeline"><span class="keyword1">\section</span>{Virtualisierungsumgebung}</div><div class="clear"></div>
|
|
<div class="linenb">444</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">445</div><div class="codeline">Bei Virtualisierungsumgebungen wird zwischen virtuellen Maschinen und Containerumgebungen unterschieden.</div><div class="clear"></div>
|
|
<div class="linenb">446</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">447</div><div class="codeline">Bei einer virtuellen Maschine (VM) werden alle Komponenten der Maschine simuliert, was die Nutzung anderer Betriebssysteme ermöglicht.</div><div class="clear"></div>
|
|
<div class="linenb">448</div><div class="codeline">Dies beinhaltet auch die Abstraktion von Speichermedien und anderen Geräten.</div><div class="clear"></div>
|
|
<div class="linenb">449</div><div class="codeline">Eine virtualisierte Umgebung erzeugt kleine <span class="highlight" title="Möglicher Tippfehler gefunden. (34319) [lt:de:GERMAN_SPELLER_RULE]">Performanceverluste</span> durch die Abstraktion.</div><div class="clear"></div>
|
|
<div class="linenb">450</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">451</div><div class="codeline">Eine Containerumgebung nutzt den Kernel des Hostsystems mit, was die Virtualisierung auf die Ebenen über dem Betriebssystem beschränkt.</div><div class="clear"></div>
|
|
<div class="linenb">452</div><div class="codeline">Die auszuführende Umgebung muss also mit dem Systemkernel lauffähig sein, um in einem Container ausgeführt werden zu können.</div><div class="clear"></div>
|
|
<div class="linenb">453</div><div class="codeline">Die <span class="highlight" title="Möglicher Tippfehler gefunden. (34628) [lt:de:GERMAN_SPELLER_RULE]">Performanceverluste</span> dieser Umgebung sind kleiner als die einer virtuellen Maschine, da grundlegende Teile des Systems nicht mehrfach ausgeführt werden müssen.</div><div class="clear"></div>
|
|
<div class="linenb">454</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">455</div><div class="codeline">Da bereits eine Linux-Maschine zur Entwicklung vorhanden ist, wäre die Virtualisierung eines weiteren Linux-Kernels nur mit weiterem <span class="highlight" title="Möglicher Tippfehler gefunden. (34921) [lt:de:GERMAN_SPELLER_RULE]">Performanceverlust</span> verbunden.</div><div class="clear"></div>
|
|
<div class="linenb">456</div><div class="codeline">Außerdem soll in der Virtualisierungsumgebung Grafikbeschleunigung genutzt werden, wozu in einer VM eine Grafikkarte an das Zielsystem durchgereicht wird, die dann von der VM exklusiv genutzt wird.</div><div class="clear"></div>
|
|
<div class="linenb">457</div><div class="codeline">In einer Containerumgebung kann die Grafikeinheit des Hostsystems mit genutzt werden, indem das durch das Hostsystem bereits abstrahierte Gerät in den Container hereingereicht werden.</div><div class="clear"></div>
|
|
<div class="linenb">458</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">459</div><div class="codeline">Diese Punkte sprechen für die Nutzung einer Containerumgebung.</div><div class="clear"></div>
|
|
<div class="linenb">460</div><div class="codeline">Docker ist eine etablierte Umgebung für die Ausführung von Containern, die aufgrund der extensiven Dokumentation und Verfügbarkeit auf allen gängigen Linux-Systemen ausgewählt wurde.</div><div class="clear"></div>
|
|
<div class="linenb">461</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">462</div><div class="codeline">Ein Container wird in Docker über sogenannte Build-Files definiert.</div><div class="clear"></div>
|
|
<div class="linenb">463</div><div class="codeline">Das Build-File enthält exakte Instruktionen, wie der Container aus anderen Containern, Dateien oder einer Kombination beider erstellt werden kann.</div><div class="clear"></div>
|
|
<div class="linenb">464</div><div class="codeline">Der so erstellte Container wird anhand dieser Definition durch den Host erstellt.</div><div class="clear"></div>
|
|
<div class="linenb">465</div><div class="codeline">Um diesen Prozess weiter zu beschleunigen, ist auch der Einsatz eines <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bildervers] (35948) [lt:de:GERMAN_SPELLER_RULE]">Buildservers</span> möglich, der benötigte Container als Download bereitstellt.</div><div class="clear"></div>
|
|
<div class="linenb">466</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">467</div><div class="codeline">Jeder Container enthält ein eigenes Dateisystem, das aus dem im <span class="highlight" title="Uneinheitliche Verwendung von Bindestrichen. Der Text enthält sowohl 'Buildfile' als auch 'Build-File'.. Suggestions: [Build-File] (36086) [lt:de:DE_COMPOUND_COHERENCY]">Buildfile</span> definierten Dateien und einem Overlay besteht.</div><div class="clear"></div>
|
|
<div class="linenb">468</div><div class="codeline">In diesem Overlay werden temporär Änderungen gespeichert, die am Container während dessen Laufzeit vorgenommen werden.</div><div class="clear"></div>
|
|
<div class="linenb">469</div><div class="codeline">Sofern nicht definiert, werden diese Änderungen beim Neustart des Containers wieder entfernt.</div><div class="clear"></div>
|
|
<div class="linenb">470</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">471</div><div class="codeline">Um dies zu vermeiden, kann entweder ein <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Volumen, Folgte, Volute, Volle, Blume, Kolumne, Vollem, Volke, Vollmer, Volumens, Forme, Votums, Flute, Holme, Velum, Velums, Volte, Zölome, Filme] (36397) [lt:de:GERMAN_SPELLER_RULE]">Volume</span>, eine Art virtuelles Laufwerk in einem Systemverzeichnis des Hostsystems, oder ein ``bind <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Mount, rund, Bund, Fund, Hund, Mund, out, bunt, kund, wund, munde, Bunt, Lund, Rund, Sound, Sund, Wund, mounte, muht] (36494) [lt:de:GERMAN_SPELLER_RULE]">mount</span>'' eingerichtet werden.</div><div class="clear"></div>
|
|
<div class="linenb">472</div><div class="codeline">Ein ``bind <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Mount, rund, Bund, Fund, Hund, Mund, out, bunt, kund, wund, munde, Bunt, Lund, Rund, Sound, Sund, Wund, mounte, muht] (36534) [lt:de:GERMAN_SPELLER_RULE]">mount</span>'' ist eine direkte Verbindung zu einem Ort des Host-Dateisystems, dass in den Container hereingereicht wird.</div><div class="clear"></div>
|
|
<div class="linenb">473</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">474</div><div class="codeline"><span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Docker-Pompöse, Docker-Combos, Docker-Pompösen, Docker-Combo, Docker-Kompost] (36650) [lt:de:GERMAN_SPELLER_RULE]">Docker-Compose</span> stellt eine Erweiterung von Docker dar.</div><div class="clear"></div>
|
|
<div class="linenb">475</div><div class="codeline">Diese Erweiterung verwaltet die Inbetriebnahme der Container über ein spezielles Dateiformat.</div><div class="clear"></div>
|
|
<div class="linenb">476</div><div class="codeline">Eine solche Funktion erlaubt das wiederholte Einrichten von Containern mit gleichen Parametern.</div><div class="clear"></div>
|
|
<div class="linenb">477</div><div class="codeline">In dieser Datei werden weitere Optionen angegeben, die in die Umgebung des laufenden Containers eingreifen.</div><div class="clear"></div>
|
|
<div class="linenb">478</div><div class="codeline">Dazu gehört zum Beispiel das automatisierte Übergeben von Umgebungsvariablen, Einrichten von Netzwerkumgebungen und Erstellen von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Volumen, Volumens, Holmes, Volkes, Volles, Vollmer, Vollmers, Votums, Velums, Volute, Voluten, Values] (37133) [lt:de:GERMAN_SPELLER_RULE]">Volumes</span> und ``bind <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bunds, munde, Funds, Hunds, Lunds, Munds, Sounds, Sunds, mounte, muss, rund, Kunst, Bund, Bundes, Funde, Mount, runde, Fund, Hund] (37152) [lt:de:GERMAN_SPELLER_RULE]">mounts</span>''.</div><div class="clear"></div>
|
|
<div class="linenb">479</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">480</div><div class="codeline">Diese Automatisierung erleichtert die initiale Einrichtung eines Containers auf einem neuen System, da alle benötigten Aspekte leicht angepasst werden können.</div><div class="clear"></div>
|
|
</div>
|
|
<h2 class="filename">tex/5_Evaluation_und_Diskussion.tex</h2>
|
|
|
|
<p>Found 92 warning(s)</p>
|
|
<div class="original-file">
|
|
<div class="linenb"> 1</div><div class="codeline"><span class="highlight-sh" title="If a section has sub-sections, it should have more than one such sub-section. [sh:nsubdiv]"></span>\<span class="highlight-sh" title="If a section has sub-sections, it should have more than one such sub-section. [sh:nsubdiv]"><span class="highlight-sh" title="This chapter is very short (about 2 words). You should consider merging it with another section or make it longer. [sh:seclen]">chapter</span></span>{Evaluation und Diskussion}</div><div class="clear"></div>
|
|
<div class="linenb"> 2</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 3</div><div class="codeline">\<span class="highlight-sh" title="Avoid stacked headings, i.e. consecutive headings without text in between. [sh:stacked]">section</span>{Grundlagen}</div><div class="clear"></div>
|
|
<div class="linenb"> 4</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 5</div><div class="codeline">\<span class="highlight-sh" title="A heading of level n should not be followed by a heading of level n+2 or more. [sh:secskip]"><span class="highlight-sh" title="Avoid stacked headings, i.e. consecutive headings without text in between. [sh:stacked]">subsubsection</span></span>{Auswahl einer geeigneten Umgebung}</div><div class="clear"></div>
|
|
<div class="linenb"> 6</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (73) [lt:de:DE_CASE]">Die</span> Auswahl einer geeigneten Umgebung für die gewünschte Simulation erfolgte in mehreren Auswahlschritten.</div><div class="clear"></div>
|
|
<div class="linenb"> 7</div><div class="codeline">Hierfür wurden mehrere Komponenten einzeln verglichen und ausgewählt.</div><div class="clear"></div>
|
|
<div class="linenb"> 8</div><div class="codeline">Folgende Komponenten wurden für die Umgebung ausgewählt:</div><div class="clear"></div>
|
|
<div class="linenb"> 9</div><div class="codeline"><span class="keyword2">\begin{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 10</div><div class="codeline"> <span class="keyword1">\item</span> ROS2 als Dienstumgebung,</div><div class="clear"></div>
|
|
<div class="linenb"> 11</div><div class="codeline"> <span class="keyword1">\item</span> Gazebo <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Munition, Kognition] (342) [lt:de:GERMAN_SPELLER_RULE]">Ignition</span> als Simulationssoftware und</div><div class="clear"></div>
|
|
<div class="linenb"> 12</div><div class="codeline"><span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> <span class="keyword1">\item</span> <span class="highlight" title="Möglicher Tippfehler gefunden. (380) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree</span>.CP</span>P als Beschreibungssprache.</div><div class="clear"></div>
|
|
<div class="linenb"> 13</div><div class="codeline"><span class="keyword2">\end{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 14</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 15</div><div class="codeline">Alle Komponenten können prinzipiell miteinander kommunizieren, was den Aufbau einer Simulationsumgebung erlaubt.</div><div class="clear"></div>
|
|
<div class="linenb"> 16</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 17</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Nutzung der Virtualisierungsumgebung}</div><div class="clear"></div>
|
|
<div class="linenb"> 18</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (576) [lt:de:DE_CASE]">Die</span> auf Docker basierende Virtualisierungsumgebung stellt eine vollständige ROS2-Installation dar.</div><div class="clear"></div>
|
|
<div class="linenb"> 19</div><div class="codeline">In dieser Umgebung sind alle für die Arbeit benötigten Pakete enthalten.</div><div class="clear"></div>
|
|
<div class="linenb"> 20</div><div class="codeline">Der Start der Umgebung erfolgt über das im Projektverzeichnis befindliche<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [startest-Shellscript, startest-Shellscripts] (822) [lt:de:GERMAN_SPELLER_RULE]">start.sh}</span>-Shellskript</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 21</div><div class="codeline">Dieses Skript wird ohne Parameter ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 22</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 23</div><div class="codeline">Beim ersten Start der Umgebung wird automatisch eine neue Containervorlage erstellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 24</div><div class="codeline">Der Start der Umgebung wird mit der Ausgabe \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [rostrot, rosarot] (1020) [lt:de:GERMAN_SPELLER_RULE]">ros-ros</span>-1 | <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Rede, Reale, Rest, Seat, Reste, Real, Regte, Betty, Rente, Freddy, Teddy, Reede, Red, Rhea, Regt, Rheydt, Hedy, Riad, Rette, Reit] (1033) [lt:de:GERMAN_SPELLER_RULE]">Ready</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [von, so, vom, vor, da, de, wo, zog, Sohn, Tod, du, hohe, wohl, John, Rom, bot, sog, tun, Hof, Tor] (1039) [lt:de:GERMAN_SPELLER_RULE]">to</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [könnend, könnest, könnende, können, könne, korrekt, könnt, Konfekt, kontert, könntest, donnert, gönnend, kennend, konnex, konnexe, konntest, konntet, könntet, zoniert, körnend] (1042) [lt:de:GERMAN_SPELLER_RULE]">connect</span>.} <span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Abgeschlossen] (1051) [lt:de:UPPERCASE_SENTENCE_START]">abgeschlossen</span>, die auch in Abbildung \ref{console-docker-started} sichtbar ist.</div><div class="clear"></div>
|
|
<div class="linenb"> 25</div><div class="codeline">Während der Nutzung der Umgebung muss das Terminal weiter geöffnet bleiben.</div><div class="clear"></div>
|
|
<div class="linenb"> 26</div><div class="codeline">Nach dem Senden eines <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Terminvorsignals, Terminohrsignals, Terminreizsignals, Termintorsignals, Terminuhrsignals, Terminwegsignals, Terminzielsignals, Terminjägersignals, Terminwertsignals, Terminkursignals] (1202) [lt:de:GERMAN_SPELLER_RULE]">Terminiersignals</span> durch das Schließen des Terminals oder die Tastenkombination \code{Ctrl+C} wird die Containerumgebung beendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 27</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 28</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 29</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Docker-Started}</div><div class="clear"></div>
|
|
<div class="linenb"> 30</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 31</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Konsole mit gestarteter Virtualisierungsumgebung</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 32</div><div class="codeline"><span class="keyword1">\label</span>{console-docker-started}</div><div class="clear"></div>
|
|
<div class="linenb"> 33</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 34</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 35</div><div class="codeline">Die Verbindung in die ROS-Umgebung erfolgt über SSH in einer separaten Konsole.</div><div class="clear"></div>
|
|
<div class="linenb"> 36</div><div class="codeline">Eine SSH-Verbindung wird mit dem Befehl \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [SSH, sah, zäh, seh, ist, sich, zu, es, sie, zum, zur, so, sehr, sei, zog, ich, zehn, sog, saß, Ost] (1445) [lt:de:GERMAN_SPELLER_RULE]">ssh</span> ros@localhost -p 2222} aufgebaut.</div><div class="clear"></div>
|
|
<div class="linenb"> 37</div><div class="codeline">In dieser Session kann die Hardwarebeschleunigung des Hostsystems automatisch genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 38</div><div class="codeline">Dies wurde in Abbildung \ref{console-docker-passthrough} durch die Ausführung von \code{<span class="highlight" title="Möglicher Tippfehler gefunden. (1627) [lt:de:GERMAN_SPELLER_RULE]">glxgears}</span>, einer OpenGL-Anwendung zum Testen der Grafikpipeline, demonstriert.</div><div class="clear"></div>
|
|
<div class="linenb"> 39</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 40</div><div class="codeline">Das entworfene Containersystem ist mit der bereitgestellten Funktionalität eine Grundlage für die weitere Implementation.</div><div class="clear"></div>
|
|
<div class="linenb"> 41</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 42</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 43</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Docker-Passthrough}</div><div class="clear"></div>
|
|
<div class="linenb"> 44</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 45</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Konsole in der virtuellen Umgebung mit Grafiktests</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 46</div><div class="codeline"><span class="keyword1">\label</span>{console-docker-passthrough}</div><div class="clear"></div>
|
|
<div class="linenb"> 47</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 48</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 49</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Erstellung der benötigten Modelle}</div><div class="clear"></div>
|
|
<div class="linenb"> 50</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [für] (1864) [lt:de:DE_CASE]">Für</span> den simulierten Menschen und Roboter werden verschiedene Modelle benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 51</div><div class="codeline">Das Robotermodell wurde aus Herstellerdaten exportiert und in Blender nachbearbeitet.</div><div class="clear"></div>
|
|
<div class="linenb"> 52</div><div class="codeline">Eine Definition des Roboters wurde für Gazebo und MoveIt erstellt, um die Zusammenhänge der einzelnen Armglieder und die physikalischen Eigenschaften der Gelenke festzulegen.</div><div class="clear"></div>
|
|
<div class="linenb"> 53</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 54</div><div class="codeline">Für das Modell des Menschen wurde eine bereits in Gazebo enthaltene Animation als Grundlage verwendet.</div><div class="clear"></div>
|
|
<div class="linenb"> 55</div><div class="codeline">Das in dieser enthaltene Modell wurde angepasst, um das Erstellen weiterer Animationen zu vereinfachen.</div><div class="clear"></div>
|
|
<div class="linenb"> 56</div><div class="codeline">Mithilfe dieses modifizierten Modells wurden dann die benötigten Animationen erstellt.</div><div class="clear"></div>
|
|
<div class="linenb"> 57</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 58</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Steuerung des Menschen}</div><div class="clear"></div>
|
|
<div class="linenb"> 59</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 60</div><div class="codeline">Durch den Start der Simulation wird selbstständig das erstellte ActorPlugin geladen.</div><div class="clear"></div>
|
|
<div class="linenb"> 61</div><div class="codeline">Der Start des für diese Arbeit implementierten <span class="highlight" title="Möglicher Tippfehler gefunden. (2656) [lt:de:GERMAN_SPELLER_RULE]">ActorServers</span> erfolgt zeitgleich, um die Anbindung an ROS zu gewährleisten.</div><div class="clear"></div>
|
|
<div class="linenb"> 62</div><div class="codeline">Beide Anwendungen zusammen erlauben das Ausführen von Bewegungen und Animationen während der Laufzeit der Simulation.</div><div class="clear"></div>
|
|
<div class="linenb"> 63</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 64</div><div class="codeline">Alle für die Simulation des Menschen erstellten Animationen werden automatisch geladen, sobald diese durch das Plugin verwendet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 65</div><div class="codeline">Dies kann durch die erstellten <span class="highlight" title="Möglicher Tippfehler gefunden. (3017) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree-Nodes</span> erfolgen, aber auch durch das Verwenden von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Terminal befehlen, Terminbefehlen, Terminalpeneulen] (3080) [lt:de:GERMAN_SPELLER_RULE]">Terminalbefehlen</span> zu Testzwecken.</div><div class="clear"></div>
|
|
<div class="linenb"> 66</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 67</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 68</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Definition von Verhalten mit einer Beschreibungssprache}</div><div class="clear"></div>
|
|
<div class="linenb"> 69</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 70</div><div class="codeline">Die Definition von verschiedenen Verhaltensweisen über eine Beschreibungssprache wurde durch die Erstellung neuer Nodes für einen Behavior Tree erreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 71</div><div class="codeline">Für die Bewegung und Animation des Menschen sind die Nodes ActorMovement und ActorAnimation verfügbar.</div><div class="clear"></div>
|
|
<div class="linenb"> 72</div><div class="codeline">Die Steuerung des Roboters erfolgt durch die <span class="highlight" title="Möglicher Tippfehler gefunden. (3474) [lt:de:GERMAN_SPELLER_RULE]">RobotMove-</span> und <span class="highlight" title="Möglicher Tippfehler gefunden. (3489) [lt:de:GERMAN_SPELLER_RULE]">SetRobotVelocity-Node</span>.</div><div class="clear"></div>
|
|
<div class="linenb"> 73</div><div class="codeline">Beide Nodes zur Kontrolle des Roboters starten eine neue Bewegung mit den neuen Parametern.</div><div class="clear"></div>
|
|
<div class="linenb"> 74</div><div class="codeline">Im Falle einer laufenden Bewegung wird diese vorher gestoppt.</div><div class="clear"></div>
|
|
<div class="linenb"> 75</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 76</div><div class="codeline">Um Bewegungen in Zonen zu ermöglichen, kann die <span class="highlight" title="Möglicher Tippfehler gefunden. (3715) [lt:de:GERMAN_SPELLER_RULE]">GenerateXYPose-Node</span> zufällige Positionen in einer Zone generieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 77</div><div class="codeline">Die <span class="highlight" title="Möglicher Tippfehler gefunden. (3786) [lt:de:GERMAN_SPELLER_RULE]">InAreaTest-Node</span> erlaubt eine Auskunft über die Position von Objekten.</div><div class="clear"></div>
|
|
<div class="linenb"> 78</div><div class="codeline">Eine Redefinition von bestehenden Parametern der generierten Pose ist über die <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Offset Pose-Nöte, Offset Pose-Tode, Offset Pose-Note, Offset Pose-Rote, Offset Pose-Boote] (3935) [lt:de:GERMAN_SPELLER_RULE]">OffsetPose-Node</span> möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 79</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 80</div><div class="codeline">Eine Wiederaufnahme von unvollendeten Aktionen ist durch die implementierte <span class="highlight" title="Möglicher Tippfehler gefunden. (4037) [lt:de:GERMAN_SPELLER_RULE]">Interruptable\-Sequence-Node</span> möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 81</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 82</div><div class="codeline">Die Entscheidung über die Ausführung einer von mehreren möglichen Aktionen wird mit der WeightedRandom-Node realisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 83</div><div class="codeline">Um Fehler simulieren zu können, ist der Abbruch von Aktionen nötig.</div><div class="clear"></div>
|
|
<div class="linenb"> 84</div><div class="codeline">Dies wird durch die <span class="highlight" title="Möglicher Tippfehler gefunden. (4282) [lt:de:GERMAN_SPELLER_RULE]">RandomFailure-Node</span> erreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 85</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 86</div><div class="codeline">Eine Kombination dieser neu implementieren und den bereits in<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> <span class="highlight" title="Möglicher Tippfehler gefunden. (4374) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTree</span>.CP</span>P verfügbaren Nodes kann alle in den Szenarien benötigten Verhaltensweisen darstellen.</div><div class="clear"></div>
|
|
<div class="linenb"> 87</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 88</div><div class="codeline">\<span class="highlight-sh" title="The first heading of a document should be the one with the highest level. For example, if a document contains sections, the first section cannot be preceded by a sub-section. [sh:secorder]"><span class="highlight-sh" title="This subsection is very short (about 96 words). You should consider merging it with another section or make it longer. [sh:seclen]">subsection</span></span>{Erstellen der benötigten Pakete}</div><div class="clear"></div>
|
|
<div class="linenb"> 89</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 90</div><div class="codeline">Alle benötigten Pakete müssen vor der ersten Ausführung der Simulation kompiliert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 91</div><div class="codeline">Dies wird durch das Ausführen des<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"> \code{build.<span class="highlight" title="Hier scheint ein Leerzeichen zu fehlen. Wenn ein neuer Satz beginnt, muss das Wort großgeschrieben werden.. Suggestions: [ sh-Skripts, Sh-Skripts] (4640) [lt:de:KLEIN_NACH_PUNKT]">sh}</span>-Skripts</span> im Verzeichnis \code{\<span class="highlight" title="Möglicher Tippfehler gefunden. (4667) [lt:de:GERMAN_SPELLER_RULE]">textasciitilde</span>/<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Workspace, Workspaces] (4682) [lt:de:GERMAN_SPELLER_RULE]">workspace}</span> des Containers ausgelöst.</div><div class="clear"></div>
|
|
<div class="linenb"> 92</div><div class="codeline">Nach diesem Vorgang muss der Workspace neu geladen werden, damit die jetzt verfügbaren Pakete registriert werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 93</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 94</div><div class="codeline">Die kann sowohl durch einen erneuten Aufbau der SSH-Verbindung erfolgen, da bei Start der Session die entsprechende Datei geladen wird, oder manuell geschehen.</div><div class="clear"></div>
|
|
<div class="linenb"> 95</div><div class="codeline">Für das manuelle Laden <span class="highlight" title="Möglicherweise fehlende grammatische Übereinstimmung des Numerus (Einzahl, Mehrzahl - Beispiel: 'das Fahrräder' statt 'die Fahrräder').. Suggestions: [des Workspace, den Workspaces, der Workspaces, die Workspaces] (5016) [lt:de:DE_AGREEMENT]">des Workspaces</span> muss der Befehl \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Source, kurze, Gurke, stürze, furze, gurke, sulze, surfe, surre, zucke, zurre, zurufe, wurde, durch, zur, zurück, kurz, kurzen, kurzer, starke] (5047) [lt:de:GERMAN_SPELLER_RULE]">source<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"></span> /<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Home, hohe, hohem, hohle, höre, hole, Lomé, Dome, boome, hone, höbe, zoome, vom, ohne, Name, habe, hoch, hohen, Höhe, Rom] (5055) [lt:de:GERMAN_SPELLER_RULE]">home</span>/ros/<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Workspace, Workspaces] (5064) [lt:de:GERMAN_SPELLER_RULE]">workspace</span>/<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Anstalt, Kunstall, instabil, Dienstall, instand, Westall, Angstall, Wildstall, Arztall, Windfall, Ostall, einstell, Restall, instant, Windall, Gastall, Lustall, Obstall, Rostall, Zinsall] (5074) [lt:de:GERMAN_SPELLER_RULE]">install</span>/<span class="highlight" title="Möglicher Tippfehler gefunden. (5082) [lt:de:GERMAN_SPELLER_RULE]">setup.ba</span>sh}</span> in der Konsole ausgeführt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 96</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 97</div><div class="codeline">Nach dem Laden <span class="highlight" title="Möglicherweise fehlende grammatische Übereinstimmung des Numerus (Einzahl, Mehrzahl - Beispiel: 'das Fahrräder' statt 'die Fahrräder').. Suggestions: [des Workspace, den Workspaces, der Workspaces, die Workspaces] (5143) [lt:de:DE_AGREEMENT]">des Workspaces</span> ist die Umgebung für die Simulation einsatzbereit.</div><div class="clear"></div>
|
|
<div class="linenb"> 98</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 99</div><div class="codeline"><span class="keyword1">\section</span>{Simulation der Szenarien}</div><div class="clear"></div>
|
|
<div class="linenb">100</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [das] (5235) [lt:de:DE_CASE]">Das</span> Starten der Simulation erfolgt über ein Skript innerhalb des \code{ign_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bord-Pakets, Forst-Pakets, Gold-Pakets, Kord-Pakets, Mord-Pakets, Nord-Pakets, voll-Pakets, vor-Pakets, vorab-Pakets, wild-Pakets, wohl-Pakets] (5304) [lt:de:GERMAN_SPELLER_RULE]">world}-Pakets</span>.</div><div class="clear"></div>
|
|
<div class="linenb">101</div><div class="codeline">Dieses Skript wird durch den Befehl \code{ros2 <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Launch, launche, launcht, auch, Bauch, Rauch, Tausch, Übung, Ranch, Rausch, klang, manch, Bausch, Hauch, lauscht, Lauch, launisch, lasch, Ölung, lach] (5359) [lt:de:GERMAN_SPELLER_RULE]">launch</span> ign_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [World, wollt, vorl., vorlud, wird, vor, wohl, wollte, wirkt, womit, sorgt, voll, volle, voran, vorne, Bord, Ford, Horst, Lord, Mord] (5370) [lt:de:GERMAN_SPELLER_RULE]">world<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"></span> gazebo_controller_launch.py}</span> ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb">102</div><div class="codeline">In diesem Skript werden alle für die Simulation benötigten ROS2-Nodes gestartet und konfiguriert.</div><div class="clear"></div>
|
|
<div class="linenb">103</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">104</div><div class="codeline">Durch die Verwendung des optionalen Parameters \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Szene, seine, siehe, jene, Pläne, Szenen, schöne, späte, stehe, Irene, diene, ebene, sehe, Ikone, scheue, stete, ziehe, Biene, Ozeane] (5562) [lt:de:GERMAN_SPELLER_RULE]">scene}</span> kann das gewünschte Szenario ausgewählt werden.</div><div class="clear"></div>
|
|
<div class="linenb">105</div><div class="codeline">Dieser muss in folgendem Format verwendet werden:</div><div class="clear"></div>
|
|
<div class="linenb">106</div><div class="codeline">\code{ros2 <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Launch, launche, launcht, auch, Bauch, Rauch, Tausch, Übung, Ranch, Rausch, klang, manch, Bausch, Hauch, lauscht, Lauch, launisch, lasch, Ölung, lach] (5671) [lt:de:GERMAN_SPELLER_RULE]">launch</span> ign_<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [World, wollt, vorl., vorlud, wird, vor, wohl, wollte, wirkt, womit, sorgt, voll, volle, voran, vorne, Bord, Ford, Horst, Lord, Mord] (5682) [lt:de:GERMAN_SPELLER_RULE]">world<span class="highlight-sh" title="There should be a space after a period. If you are writing a URL or a filename, use the \url{} or \verb markup. [sh:d:002]"></span> gazebo_controller_launch.py</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Szene, seine, siehe, jene, Pläne, Szenen, schöne, späte, stehe, Irene, diene, ebene, sehe, Ikone, scheue, stete, ziehe, Biene, Ozeane] (5716) [lt:de:GERMAN_SPELLER_RULE]">scene</span><span class="highlight" title="Hinter einem ':' sollte ein Leerzeichen stehen.. Suggestions: [: =] (5721) [lt:de:LEERZEICHEN_HINTER_DOPPELPUNKT]">:=</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Co ex, Codex, Zwei, Coachs, Zog, Couchs, Sechs, Hohe, Czechs, Hohen, Hoher, Zogen, Hohem, Hohes, Songs, Joe, Alex, Ex, Zwecks, Joel] (5724) [lt:de:GERMAN_SPELLER_RULE]">Coex</span>|Coop|<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Cola, Ecolab, Colas, Klar, Vorab, Club, Lola, Clan, Zola, Cool, Colmar, Polar, Colt, Zugab, Colts, Golan, Coole, Coolen, Celan, Solar] (5734) [lt:de:GERMAN_SPELLER_RULE]">Colab</span>]}.</div><div class="clear"></div>
|
|
<div class="linenb">107</div><div class="codeline">Als Standard wird die Option \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Co ex, Codex, Zwei, Coachs, Zog, Couchs, Sechs, Hohe, Czechs, Hohen, Hoher, Zogen, Hohem, Hohes, Songs, Joe, Alex, Ex, Zwecks, Joel] (5771) [lt:de:GERMAN_SPELLER_RULE]">Coex}</span> genutzt, falls der \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Szene-Parameter, seine-Parameter, siehe-Parameter, jene-Parameter, Pläne-Parameter, Szenen-Parameter, schöne-Parameter, späte-Parameter, stehe-Parameter, Irene-Parameter, diene-Parameter, ebene-Parameter, sehe-Parameter, Ikone-Parameter, scheue-Parameter, stete-Parameter, ziehe-Parameter, Biene-Parameter, Ozeane-Parameter, scheine-Parameter] (5795) [lt:de:GERMAN_SPELLER_RULE]">scene}-Parameter</span> nicht spezifiziert wird.</div><div class="clear"></div>
|
|
<div class="linenb">108</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">109</div><div class="codeline">Nach dem Start der Simulationsumgebung ist der Raum vollständig geladen und einsatzbereit (Abbildung \ref{sim-room}).</div><div class="clear"></div>
|
|
<div class="linenb">110</div><div class="codeline">Der Roboter befindet sich nach dem Start in der Ausgangsposition, siehe Abbildung \ref{robot-still}.</div><div class="clear"></div>
|
|
<div class="linenb">111</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">112</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">113</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">114</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Sim-Room}</div><div class="clear"></div>
|
|
<div class="linenb">115</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">116</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Raum in der Simulation</span>}</div><div class="clear"></div>
|
|
<div class="linenb">117</div><div class="codeline"><span class="keyword1">\label</span>{sim-room}</div><div class="clear"></div>
|
|
<div class="linenb">118</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb">119</div><div class="codeline">\hspace{.09\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">120</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">121</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Sim-Robot-Still}</div><div class="clear"></div>
|
|
<div class="linenb">122</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">123</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Roboterarm in Ausagangslage</span>}</div><div class="clear"></div>
|
|
<div class="linenb">124</div><div class="codeline"><span class="keyword1">\label</span>{robot-still}</div><div class="clear"></div>
|
|
<div class="linenb">125</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb">126</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">127</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">128</div><div class="codeline">Alle beschriebenen Szenarien sind mit Ausnahme des Fließbandes aus dem Kooperationsszenario als Behavior Trees umgesetzt.</div><div class="clear"></div>
|
|
<div class="linenb">129</div><div class="codeline">Diese werden nach dem Start einer Simulation ausgeführt und definieren das Verhalten von Roboter und Mensch.</div><div class="clear"></div>
|
|
<div class="linenb">130</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">131</div><div class="codeline">\<span class="highlight-sh" title="A heading of level n should not be followed by a heading of level n+2 or more. [sh:secskip]">subsubsection</span>{Koexistenzszenario}</div><div class="clear"></div>
|
|
<div class="linenb">132</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">133</div><div class="codeline">Im Koexistenzszenario interagieren Roboter und Mensch nur im Ausnahmefall.</div><div class="clear"></div>
|
|
<div class="linenb">134</div><div class="codeline">Der Roboter simuliert einen Entladevorgang, bei welchem Objekte vom linken Tisch auf den rechten Tisch bewegt werden (Abbildung \ref{coex-move}).</div><div class="clear"></div>
|
|
<div class="linenb">135</div><div class="codeline">Die für diesen Zweck implementierten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bewegungsbades, Bewegungsloses, Bewegungsendes, Bewegungsmodus, Bewegungspottes, Bewegungsnordens, Bewegungsbodens, Bewegungstodes, Bewegungstötens, Bewegungshotels, Bewegungsrotems, Bewegungsbootes, Bewegungsnotars, Bewegungshodens, Bewegungspodests, Bewegungsrodens, Bewegungsköders, Bewegungsmotels, Bewegungsrodeos, Bewegungsköters] (6525) [lt:de:GERMAN_SPELLER_RULE]">Bewegungsnodes</span> werden in späteren Szenarien weiter verwendet.</div><div class="clear"></div>
|
|
<div class="linenb">136</div><div class="codeline">Um den Menschen nicht zu gefährden, wird die Verfahrgeschwindigkeit automatisch an die Aufenthaltszone des Menschen angepasst.</div><div class="clear"></div>
|
|
<div class="linenb">137</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">138</div><div class="codeline">Der Arbeitsvorgang des Menschen besteht aus dem Arbeiten an einer Werkbank und dem Verbringen von Material in das Regal (Abbildung \ref{coex-shelf}).</div><div class="clear"></div>
|
|
<div class="linenb">139</div><div class="codeline">In diesem Szenario begibt sich der Mensch nur mit einer Wahrscheinlichkeit von 5\% nach jedem Arbeitsvorgang zum Roboter.</div><div class="clear"></div>
|
|
<div class="linenb">140</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">141</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">142</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">143</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Sim-Robot-Move}</div><div class="clear"></div>
|
|
<div class="linenb">144</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">145</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Roboter in Bewegung</span>}</div><div class="clear"></div>
|
|
<div class="linenb">146</div><div class="codeline"><span class="keyword1">\label</span>{coex-move}</div><div class="clear"></div>
|
|
<div class="linenb">147</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb">148</div><div class="codeline">\hspace{.09\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">149</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">150</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Sim-Human-Shelf}</div><div class="clear"></div>
|
|
<div class="linenb">151</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">152</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Mensch am Regal</span>}</div><div class="clear"></div>
|
|
<div class="linenb">153</div><div class="codeline"><span class="keyword1">\label</span>{coex-shelf}</div><div class="clear"></div>
|
|
<div class="linenb">154</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb">155</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">156</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">157</div><div class="codeline"><span class="keyword1">\subsubsection</span>{Kooperationsszenario}</div><div class="clear"></div>
|
|
<div class="linenb">158</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">159</div><div class="codeline">Eine Ausweitung der Interaktion erfolgt im Kooperationsszenario.</div><div class="clear"></div>
|
|
<div class="linenb">160</div><div class="codeline">In diesem werden durch den Roboter Objekte entweder weitergereicht oder aussortiert.</div><div class="clear"></div>
|
|
<div class="linenb">161</div><div class="codeline">Nach jedem aussortierten Objekt wird der Mensch gerufen.</div><div class="clear"></div>
|
|
<div class="linenb">162</div><div class="codeline">Der Mensch holt die aussortierten Objekte nach dem Erledigen seiner aktuellen Aufgabe ab.</div><div class="clear"></div>
|
|
<div class="linenb">163</div><div class="codeline">Diese Interaktion und das in diesem Szenario hinzugefügte Fließband sind in Abbildung \ref{coop-human} dargestellt.</div><div class="clear"></div>
|
|
<div class="linenb">164</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">165</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">166</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Sim-Human-Coop}</div><div class="clear"></div>
|
|
<div class="linenb">167</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">168</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Mensch am Tisch des Roboters mit Förderband</span>}</div><div class="clear"></div>
|
|
<div class="linenb">169</div><div class="codeline"><span class="keyword1">\label</span>{coop-human}</div><div class="clear"></div>
|
|
<div class="linenb">170</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">171</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">172</div><div class="codeline">\<span class="highlight-sh" title="This subsubsection is very short (about 93 words). You should consider merging it with another section or make it longer. [sh:seclen]">subsubsection</span>{Kollaborationsszenario}</div><div class="clear"></div>
|
|
<div class="linenb">173</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">174</div><div class="codeline">Für das Kollaborationsszenario durchschreitet der Mensch den Raum, was die Kontrolle mehrerer Systeme simuliert.</div><div class="clear"></div>
|
|
<div class="linenb">175</div><div class="codeline">Der Roboter bewegt in diesem Szenario Objekte vom linken auf den rechten Tisch, wobei Fehler auftreten können.</div><div class="clear"></div>
|
|
<div class="linenb">176</div><div class="codeline">Bei einem Fehler beendet der Mensch seinen Kontrollgang und hebt ein Objekt auf, bringt es zum Roboter zurück und legt es auf dem rechten Tisch ab (Abbildung \ref{colab-drop}).</div><div class="clear"></div>
|
|
<div class="linenb">177</div><div class="codeline">Der Roboter bricht den fehlgeschlagenen Vorgang ab und setzt die Arbeit mit dem nächsten Objekt fort.</div><div class="clear"></div>
|
|
<div class="linenb">178</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">179</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">180</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">181</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Sim-Human-Colab-Pickup}</div><div class="clear"></div>
|
|
<div class="linenb">182</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">183</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb">184</div><div class="codeline">\hspace{.09\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">185</div><div class="codeline"><span class="keyword2">\begin{minipage}</span>{.45\textwidth}</div><div class="clear"></div>
|
|
<div class="linenb">186</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=\textwidth]{img/MA-Sim-Human-Colab-Drop}</div><div class="clear"></div>
|
|
<div class="linenb">187</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb">188</div><div class="codeline"><span class="keyword2">\end{minipage}</span></div><div class="clear"></div>
|
|
<div class="linenb">189</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Mensch beim Aufhebevorgang</span>}</div><div class="clear"></div>
|
|
<div class="linenb">190</div><div class="codeline"><span class="keyword1">\label</span>{colab-drop}</div><div class="clear"></div>
|
|
<div class="linenb">191</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">192</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">193</div><div class="codeline"><span class="keyword1">\section</span>{Zusammenfassung}</div><div class="clear"></div>
|
|
<div class="linenb">194</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [es] (7926) [lt:de:DE_CASE]">Es</span> wurden entsprechende Nodes für die Bewegung von Mensch und Roboter geschaffen.</div><div class="clear"></div>
|
|
<div class="linenb">195</div><div class="codeline">Mit diesen Nodes wurden alle simulierten Szenarien in einer Beschreibungssprache abgebildet.</div><div class="clear"></div>
|
|
<div class="linenb">196</div><div class="codeline">Die vollständige Kontrolle der <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Entenhecktorposition] (8132) [lt:de:GERMAN_SPELLER_RULE]">Endeffektorposition</span> des Roboters und der Bewegung des Menschen in der Simulation sind möglich.</div><div class="clear"></div>
|
|
<div class="linenb">197</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">198</div><div class="codeline">Die dynamische Simulation von Objekten, die durch Roboter und Mensch beeinflusst werden können, wurde im Rahmen dieser Arbeit aus Komplexitätsgründen nicht umgesetzt.</div><div class="clear"></div>
|
|
<div class="linenb">199</div><div class="codeline">Einen Überblick über die dafür notwendigen Erweiterungen wird in Sektion \ref{objectsim} skizziert.</div><div class="clear"></div>
|
|
<div class="linenb">200</div><div class="codeline">\<span class="highlight-sh" title="This section is very short (about 119 words). You should consider merging it with another section or make it longer. [sh:seclen]">section</span>{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Hessens, Lessing, Messens, Lesbos, Lessings, Lennons, Dessins, Lesens, Dessous, Läsion, Festons, Geisons, Kessins, Mesons, Nelsons, Nässens, Sessions, Tessins, Lassens, Lassos] (8481) [lt:de:GERMAN_SPELLER_RULE]">Lessons</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Learjet, Lernen, Lerner, Leugnet, Geartet, Lehrend, Lerne, Learjets, Learnweb, Leasend, Leastet, Leerend, Leertet, Lehrtet, Lernend, Lerntet, Clearnet] (8489) [lt:de:GERMAN_SPELLER_RULE]"></span>Learned}</div><div class="clear"></div>
|
|
<div class="linenb">201</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">202</div><div class="codeline">Während der Entwicklung des Projekts wurden zahlreiche Erkenntnisse gesammelt, welche die Entwicklung weiterer Projekte mit dieser Plattform erleichtern können.</div><div class="clear"></div>
|
|
<div class="linenb">203</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">204</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (8660) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb">205</div><div class="codeline"> <span class="keyword1">\item</span>[Testen einzelner Komponenten]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (8704) [lt:de:GERMAN_SPELLER_RULE]"></span>hfill<span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb">206</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [alle] (8712) [lt:de:DE_CASE]">Alle</span> ROS-Nachrichtentypen sind mit Kommandozeilenbefehlen <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [versand-, Märzend-, versende, Herzend-, versenkt, versandt, Werkend-, versendet, Bergend-, versenden, Kernend-, verwende, Netzend-, färbende, Kursend-, Felsend-, Kerzen-, Reizend-, Märzende, Werksend-] (8770) [lt:de:GERMAN_SPELLER_RULE]">versend-</span> und empfangbar.</div><div class="clear"></div>
|
|
<div class="linenb">207</div><div class="codeline"> Um einzelne Teilsysteme zu testen, können so deren Zustände gesetzt und überwacht werden.</div><div class="clear"></div>
|
|
<div class="linenb">208</div><div class="codeline"> <span class="keyword1">\item</span>[Überprüfung auf Updates]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (8914) [lt:de:GERMAN_SPELLER_RULE]"></span>hfill<span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb">209</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (8922) [lt:de:DE_CASE]">Die</span> regelmäßige Prüfung von verwendeten Bestandteilen auf Updates kann helfen, neue oder verbesserte Funktionen einzusetzen.</div><div class="clear"></div>
|
|
<div class="linenb">210</div><div class="codeline"> <span class="keyword1">\item</span>[Verwendung eines Debuggers]\<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [fiel, will, Bill, hell, still, Jill, heil, heilt, Dill, Weill, heile, kill, Krill, hilf, Idyll, filz, grill, quill, Drill, Grill] (9077) [lt:de:GERMAN_SPELLER_RULE]"></span>hfill<span class="highlight-sh" title="You should not break lines manually in a paragraph. Either start a new paragraph or stay in the current one. [sh:nobreak]">\</span>\</div><div class="clear"></div>
|
|
<div class="linenb">211</div><div class="codeline"> <span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [viele] (9085) [lt:de:DE_CASE]">Viele</span> Nodes in ROS können über Kommandozeilenparameter im <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Depotmodus, Dopingmodus] (9143) [lt:de:GERMAN_SPELLER_RULE]">Debugmodus</span> ausgeführt werden \cite{rosDebug}.</div><div class="clear"></div>
|
|
<div class="linenb">212</div><div class="codeline"> Da Programme wie Gazebo aber über weitere Launch-Files eingebunden werden, ist dies hier nicht möglich.</div><div class="clear"></div>
|
|
<div class="linenb">213</div><div class="codeline"> Eine Lösung ist in diesem Fall der separate Start der Gazebo-Umgebung in einem Debugger \cite{gazeboDebug}.</div><div class="clear"></div>
|
|
<div class="linenb">214</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (9378) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
</div>
|
|
<h2 class="filename">tex/6_Ausblick.tex</h2>
|
|
|
|
<p>Found 17 warning(s)</p>
|
|
<div class="original-file">
|
|
<div class="linenb"> 1</div><div class="codeline">\chapter{Ausblick}</div><div class="clear"></div>
|
|
<div class="linenb"> 2</div><div class="codeline">\<span class="highlight-sh" title="Avoid stacked headings, i.e. consecutive headings without text in between. [sh:stacked]">section</span>{Umsetzung in anderem Simulator}</div><div class="clear"></div>
|
|
<div class="linenb"> 3</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (40) [lt:de:DE_CASE]">Die</span> Umsetzung des gleichen Problems in einem anderen Simulator bietet die Möglichkeit, weitere Simulationsplattformen zu testen und miteinander zu vergleichen.</div><div class="clear"></div>
|
|
<div class="linenb"> 4</div><div class="codeline">Hierbei ist vor allem die Anbindung an ROS interessant, welche mit Gazebo mit nur einem Plugin gleichzeitig funktioniert.</div><div class="clear"></div>
|
|
<div class="linenb"> 5</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 6</div><div class="codeline">Eine verbesserte Anbindung an ROS würde die schnellere Entwicklung von Komponenten und Szenarien erlauben.</div><div class="clear"></div>
|
|
<div class="linenb"> 7</div><div class="codeline">Da diese für viele andere Simulatoren erst geschaffen werden muss, kann von Anfang an der Fokus auf Erweiterbarkeit gelegt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 8</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 9</div><div class="codeline">Je nach gewählter Umgebung ist es potenziell nötig, bestimmte Basisfunktionen neu zu implementieren, falls diese noch nicht unterstützt werden.</div><div class="clear"></div>
|
|
<div class="linenb">10</div><div class="codeline">Moderne <span class="highlight" title="Möglicher Tippfehler gefunden. (714) [lt:de:GERMAN_SPELLER_RULE]">Gameengines</span> sind für diesen Einsatzzweck geeignet, da diese viele Bestandteile einer Simulationsplattform bereits enthalten.</div><div class="clear"></div>
|
|
<div class="linenb">11</div><div class="codeline">Außerdem ist die hohe Verfügbarkeit von Tutorials und Dokumentation für diese weitläufig eingesetzten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Engine, Eines, Eigenes, Angies, Enges, Engeres, Eikes, Regines, Anginös, Elaines, Engineer, Benignes, Engineers, Eckiges, Eugenes, Ekkrines, Inlines, Engstes, Equines, Genuines] (941) [lt:de:GERMAN_SPELLER_RULE]">Engines</span> vorteilhaft.</div><div class="clear"></div>
|
|
<div class="linenb">12</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">13</div><div class="codeline">Mitgelieferte Werkzeuge bekannter <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Engine, Eines, Eigenes, Angies, Enges, Engeres, Eikes, Regines, Anginös, Elaines, Engineer, Benignes, Engineers, Eckiges, Eugenes, Ekkrines, Inlines, Engstes, Equines, Genuines] (997) [lt:de:GERMAN_SPELLER_RULE]">Engines</span> wie Unity, Unreal Engine und Godot beinhalten ausgereifte Physik- und Animationssysteme.</div><div class="clear"></div>
|
|
<div class="linenb">14</div><div class="codeline">Diese können für Roboterbewegungen und Menschensimulation verwendet werden.</div><div class="clear"></div>
|
|
<div class="linenb">15</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">16</div><div class="codeline"><span class="keyword1">\section</span>{Simulation bewegter Objekte}<span class="keyword1">\label</span>{objectsim}</div><div class="clear"></div>
|
|
<div class="linenb">17</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (1199) [lt:de:DE_CASE]">Die</span> Simulation bewegter Objekte benötigt ein neues Gazebo-Plugin, welches mit den bereits entwickelten Komponenten der aktuellen Umgebung interagiert.</div><div class="clear"></div>
|
|
<div class="linenb">18</div><div class="codeline">Um ein Objekt mit dem Roboter oder Menschen zu bewegen, muss dieses auf eine von zwei Arten bewegt werden.</div><div class="clear"></div>
|
|
<div class="linenb">19</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">20</div><div class="codeline">Die Bewegung von Objekten mit dem Roboter ist möglich, da dieser mit der gegenwärtigen Implementation aus mehreren Physikobjekten besteht.</div><div class="clear"></div>
|
|
<div class="linenb">21</div><div class="codeline">Das zu bewegende Objekt kann somit dem Objekt des Endeffektors als Unterobjekt hinzugefügt werden.</div><div class="clear"></div>
|
|
<div class="linenb">22</div><div class="codeline">Der daraus resultierende Übergang in lokale Koordinaten kann potenzielle Umrechnung anhand der Transformationen vorhergehender Armteile erfordern.</div><div class="clear"></div>
|
|
<div class="linenb">23</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">24</div><div class="codeline">Eine Bewegung mit dem Menschen erfordert vor allem bei Animationen einen anderen Mechanismus.</div><div class="clear"></div>
|
|
<div class="linenb">25</div><div class="codeline">Da der Mensch nicht aus einzelnen Physikobjekten besteht, ist die Anbringung als Unterobjekt nicht möglich.</div><div class="clear"></div>
|
|
<div class="linenb">26</div><div class="codeline">Stattdessen muss die aktuelle Position des Armes anhand der Animationsdaten verfolgt werden, um die Position des Objektes an diese anzupassen.</div><div class="clear"></div>
|
|
<div class="linenb">27</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">28</div><div class="codeline">Die unterschiedliche Anbindung von Roboter und Mensch erfordert mehrere Implementationen, welche Zustandsdaten über das Objekt austauschen müssen.</div><div class="clear"></div>
|
|
<div class="linenb">29</div><div class="codeline">Um die Objekte zu steuern, muss eine weitere ROS-Anbindung in einem entsprechenden Gazebo-Plugin erfolgen.</div><div class="clear"></div>
|
|
<div class="linenb">30</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">31</div><div class="codeline">Dieses Plugin unterliegt denselben Limitierungen, die auch schon im ActorPlugin beachtet werden mussten.</div><div class="clear"></div>
|
|
<div class="linenb">32</div><div class="codeline">Eine weitere Nachrichtenübergabe als Zwischenschritt vor dem eigentlichen ROS-Server ist so unausweichlich.</div><div class="clear"></div>
|
|
<div class="linenb">33</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">34</div><div class="codeline">Dieser Kommunikationsmechanismus muss das Erstellen, Entfernen und Bewegen von Objekten zwischen Roboter, Umgebung und Mensch unterstützen.</div><div class="clear"></div>
|
|
<div class="linenb">35</div><div class="codeline"><span class="keyword1">\section</span>{Erweiterung um Umgebungserkennung}</div><div class="clear"></div>
|
|
<div class="linenb">36</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [eine] (2834) [lt:de:DE_CASE]">Eine</span> Ergänzung von simulierten <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Tiefheckkameras, Tieffernkameras, Tieftonkameras, Tiefwebkameras] (2865) [lt:de:GERMAN_SPELLER_RULE]">Tiefenkameras</span> zur Umgebungserkennung stellt eine weitere mögliche Ausbaustufe des Projekts dar.</div><div class="clear"></div>
|
|
<div class="linenb">37</div><div class="codeline">Mit den Kameras kann eine <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Riesengarde, Tiefendkarte, Riesenkarte, Tiefeckart, Seifenkarte, Tiefeskorte, Tiefenwerte, Tiefkokarde, Tiefenwärme, Tiefleckrate, Tiefdeckakte, Tiefdeckarme, Tiefeckerde, Tiefeiskarte, Tiefendart, Tiefendarten, Tiefendkarten, Tiefentarten, Tiefgenkarte, Tiefheckart] (2987) [lt:de:GERMAN_SPELLER_RULE]">Tiefenkarte</span> erstellt werden, um die Verfahrgeschwindigkeit des Roboters zu kontrollieren.</div><div class="clear"></div>
|
|
<div class="linenb">38</div><div class="codeline">MoveIt implementiert für diesen Verwendungszweck bereits sogenannte Octomaps.</div><div class="clear"></div>
|
|
<div class="linenb">39</div><div class="codeline">Diese Octomaps repräsentieren die Belegung eines Raums durch Objekte mit gleichseitigen Würfeln.</div><div class="clear"></div>
|
|
<div class="linenb">40</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">41</div><div class="codeline">Der Einsatz dieser Octomaps zum Ausweichen von Hindernissen ist bereits in der Bewegungsplanung implementiert.</div><div class="clear"></div>
|
|
<div class="linenb">42</div><div class="codeline">Für die Reduktion der Verfahrgeschwindigkeit muss der erwartete Raum mit dem aktuellen Raum verglichen werden.</div><div class="clear"></div>
|
|
<div class="linenb">43</div><div class="codeline">Daraus kann die Distanz zu einem unerwarteten Objekt berechnet werden, um die Verfahrgeschwindigkeit dementsprechend anzupassen.</div><div class="clear"></div>
|
|
<div class="linenb">44</div><div class="codeline"><span class="keyword1">\section</span>{Zusammenführung von ActorPlugin und ActorServer}</div><div class="clear"></div>
|
|
<div class="linenb">45</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (3652) [lt:de:DE_CASE]">Die</span> aktuelle, separate Implementation von ActorServer und ActorPlugin kann durch eine Vereinigung der Implementation verbessert werden.</div><div class="clear"></div>
|
|
<div class="linenb">46</div><div class="codeline">Folgende Versuche wurden bereits durchgeführt, führten aber zu keinem Erfolg:</div><div class="clear"></div>
|
|
<div class="linenb">47</div><div class="codeline"><span class="keyword2">\begin{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb">48</div><div class="codeline"> <span class="keyword1">\item</span>{Die Ausführung in einem separaten Thread,}</div><div class="clear"></div>
|
|
<div class="linenb">49</div><div class="codeline"> <span class="keyword1">\item</span>{eine Trennung vom Hauptprogramm mittels <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Form, Vor, York, Volk, Fort, Ford, Vorn, Jörg, Fleck, Vorm, Frick, Kork, Flick, Fock, Vors, Frack, Noack, VRack, Pflock] (3951) [lt:de:GERMAN_SPELLER_RULE]">Fork</span> und}</div><div class="clear"></div>
|
|
<div class="linenb">50</div><div class="codeline"> <span class="keyword1">\item</span>{das Weglassen der Initialisierung von rclcpp, da diese später durch ign_ros2_control durchgeführt wird.}</div><div class="clear"></div>
|
|
<div class="linenb">51</div><div class="codeline"><span class="keyword2">\end{itemize}</span></div><div class="clear"></div>
|
|
<div class="linenb">52</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">53</div><div class="codeline"><span class="keyword1">\section</span>{Migration auf die neuste ROS-Version}</div><div class="clear"></div>
|
|
<div class="linenb">54</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (4104) [lt:de:DE_CASE]">Die</span> neuste ROS-Version bietet keine expliziten Vorteile der Umgebung selbst, jedoch sind in dieser mehr Pakete verfügbar.</div><div class="clear"></div>
|
|
<div class="linenb">55</div><div class="codeline">In der für das Projekt genutzten Umgebung befinden sich mehrere Pakete, die so auf eine neuere Version gebracht werden könnten.</div><div class="clear"></div>
|
|
<div class="linenb">56</div><div class="codeline">Jedoch ist der Aufwand einer Migration nur schwer abschätzbar.</div><div class="clear"></div>
|
|
<div class="linenb">57</div><div class="codeline">Dies führte zu der Entscheidung, diesen Prozess in dieser Arbeit nicht durchzuführen.</div><div class="clear"></div>
|
|
<div class="linenb">58</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">59</div><div class="codeline">Ein Vorteil dieser Maßnahme ist die Möglichkeit, das Paket \code{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [es, gab, km, gut, gar, kW, kg, gen, kHz, Hz, kJ, kN, aß, geh, gib, IgG, chi, kt, chic, gäb] (4563) [lt:de:GERMAN_SPELLER_RULE]">gz</span>_ros2_control} aus einer offiziellen Paketquelle zu beziehen.</div><div class="clear"></div>
|
|
<div class="linenb">60</div><div class="codeline">Dieses Paket stellt das Gazebo-Plugin für den Roboter bereit und muss so nicht manuell auf dem neusten Stand gehalten werden.</div><div class="clear"></div>
|
|
<div class="linenb">61</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">62</div><div class="codeline"><span class="keyword1">\section</span>{Verbesserung der Behavior Trees}</div><div class="clear"></div>
|
|
<div class="linenb">63</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [eine] (4785) [lt:de:DE_CASE]">Eine</span> weitere mögliche Verbesserung ist der Ausbau der Implementation der Behavior Trees.</div><div class="clear"></div>
|
|
<div class="linenb">64</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">65</div><div class="codeline">Ein Update auf die neuste Version, die während der Entwicklung dieses Projektes erschienen ist, würde die verbesserte Nutzung von asynchronen Nodes erlauben.</div><div class="clear"></div>
|
|
<div class="linenb">66</div><div class="codeline">Die Integration von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Prä, Brät, Präs, Bei, Drei, Frei, Prag, Pro, Treu, Breit, Peru, Per, Reg, Pier, Prägt, Perm, Poren, Spree, Prüm, Preis] (5053) [lt:de:GERMAN_SPELLER_RULE]">Pre-</span> und <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Post-Kondition, Post-Konditions-, Post-Conditioner, Post-Conditioners, Post-Konditional] (5062) [lt:de:GERMAN_SPELLER_RULE]">Post-Conditions</span> erlaubt die Ausführung von Events vor und nach dem Ausführen einer Node.</div><div class="clear"></div>
|
|
<div class="linenb">67</div><div class="codeline">Weitere universelle Node-Parameter vereinfachen den Aufbau von Bäumen durch die Vereinfachung von Schleifen und Bedingungen.</div><div class="clear"></div>
|
|
<div class="linenb">68</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">69</div><div class="codeline">Ein Nachteil der Migration wäre jedoch das Wegfallen einiger Funktionen des Editors, welcher in dieser Version unter einer neuen Lizenz vertrieben wird.</div><div class="clear"></div>
|
|
<div class="linenb">70</div><div class="codeline">Die Analyse von Logdateien nach der Ausführung und die Überwachung von Bäumen zur Laufzeit sind ohne kostenpflichtige Lizenz nicht mehr möglich.</div><div class="clear"></div>
|
|
<div class="linenb">71</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">72</div><div class="codeline">Eine weitere Alternative ist die Nutzung von MoveIt Studio \cite{moveItStudio}, welches ebenfalls mit Behavior Trees arbeitet.</div><div class="clear"></div>
|
|
<div class="linenb">73</div><div class="codeline">Die direkte Integration mit MoveIt vereinfacht die Anbindung an den Roboter, da wichtige Funktionen bereits implementiert sind.</div><div class="clear"></div>
|
|
<div class="linenb">74</div><div class="codeline">Jedoch ist die Unterstützung für eigene Befehle nur schlecht dokumentiert.</div><div class="clear"></div>
|
|
<div class="linenb">75</div><div class="codeline">Diese werden aber für die Steuerung des Menschen benötigt, was dieses Alternative nur für die Robotersteuerung attraktiv macht.</div><div class="clear"></div>
|
|
<div class="linenb">76</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">77</div><div class="codeline">Die Anpassung der aktuellen Implementation für größere Projekte ist eine weitere Option.</div><div class="clear"></div>
|
|
<div class="linenb">78</div><div class="codeline">Um die Übersichtlichkeit des Projekts zu erhöhen, werden häufig separate Module verwendet.</div><div class="clear"></div>
|
|
<div class="linenb">79</div><div class="codeline">Diese können einzelne Funktionen bereitstellen, die separat von anderen Modulen agieren.</div><div class="clear"></div>
|
|
<div class="linenb">80</div><div class="codeline">Alle Module müssen aktuell im <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Bildteile] (6318) [lt:de:GERMAN_SPELLER_RULE]">Buildfile</span> deklariert und mit in das Programm kompiliert werden.</div><div class="clear"></div>
|
|
<div class="linenb">81</div><div class="codeline">Bei einer großen Anzahl an Modulen erschwert dieser Umstand die Übersicht über benötigte Module für spezifische Trees.</div><div class="clear"></div>
|
|
</div>
|
|
<h2 class="filename">tex/2_Konzept.tex</h2>
|
|
|
|
<p>Found 17 warning(s)</p>
|
|
<div class="original-file">
|
|
<div class="linenb"> 1</div><div class="codeline">\chapter{Konzept}</div><div class="clear"></div>
|
|
<div class="linenb"> 2</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (8) [lt:de:DE_CASE]">Die</span> zu entwickelnde Simulation soll die bisher meist separaten Zweige der Roboter- und Menschensimulation verbinden.</div><div class="clear"></div>
|
|
<div class="linenb"> 3</div><div class="codeline">Um die beiden Akteure in der simulierten Umgebung zu steuern, werden Befehle von außerhalb der Simulation eingesetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 4</div><div class="codeline">Diese Befehle werden dabei von externer Software unter der Verwendung einer Beschreibungssprache und Feedback aus der Simulation generiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 5</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 6</div><div class="codeline">Hierfür wird die Beschreibungssprache in der Dienstumgebung ausgeführt, in der auch die Bewegungsplanung stattfindet.</div><div class="clear"></div>
|
|
<div class="linenb"> 7</div><div class="codeline">Die Beschreibungssprache kommuniziert direkt mit der Simulation und der Bewegungsplanung des simulierten Menschen.</div><div class="clear"></div>
|
|
<div class="linenb"> 8</div><div class="codeline">Damit der Roboter in der Simulation von der Bewegungsplanung gesteuert werden kann, werden zwischen Simulation und Bewegungsplanung auch Nachrichten ausgetauscht.</div><div class="clear"></div>
|
|
<div class="linenb"> 9</div><div class="codeline">Der gesamte Vorgang ist in Abbildung \ref{concept_overview} visualisiert.</div><div class="clear"></div>
|
|
<div class="linenb"> 10</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 11</div><div class="codeline">Die zu erarbeitende Softwareumgebung soll einfach erweiterbar sein, um weitere Modifikationen und die Umsetzung anderer Projekte zuzulassen.</div><div class="clear"></div>
|
|
<div class="linenb"> 12</div><div class="codeline">Hierzu zählt die Austauschbarkeit und Erweiterbarkeit von Komponenten wie der simulierten Welt, dem Roboter oder dem simulierten Mensch.</div><div class="clear"></div>
|
|
<div class="linenb"> 13</div><div class="codeline">Um diese Möglichkeiten zu schaffen, sind die Systeme modular aufzubauen.</div><div class="clear"></div>
|
|
<div class="linenb"> 14</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 15</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 16</div><div class="codeline"><span class="keyword1">\includegraphics</span>{img/MA-Konzept-Übersicht}</div><div class="clear"></div>
|
|
<div class="linenb"> 17</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 18</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Visualisierung des Konzepts</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 19</div><div class="codeline"><span class="keyword1">\label</span>{concept_overview}</div><div class="clear"></div>
|
|
<div class="linenb"> 20</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 21</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 22</div><div class="codeline"><span class="keyword1">\section</span>{Simulation des Roboters}</div><div class="clear"></div>
|
|
<div class="linenb"> 23</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [der] (1211) [lt:de:DE_CASE]">Der</span> simulierte Roboter soll für viele unterschiedliche Szenarien nutzbar sein, was spezialisierte Robotertypen ausschließt.</div><div class="clear"></div>
|
|
<div class="linenb"> 24</div><div class="codeline">Außerdem ist die enge Interaktion mit Menschen gewünscht, was für einen auf Mensch-Roboter-Kollaboration ausgelegten Roboter spricht.</div><div class="clear"></div>
|
|
<div class="linenb"> 25</div><div class="codeline">Für diese beschriebenen Kriterien eignet sich der <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [USA, UKW, BKA, KGaA, LKA, KMK, HUK, KKH, KUG, KUV, KUVs, UKH, UVA, KK, KKL, KKS, KSK, KVA, KWK, KWKG] (1519) [lt:de:GERMAN_SPELLER_RULE]">KUKA</span> LBR iisy, der als Cobot vermarktet wird.</div><div class="clear"></div>
|
|
<div class="linenb"> 26</div><div class="codeline">Die Bezeichnung als Cobot \cite{cobot} ist dabei ein Kofferwort aus <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Kollaborative, Kollaborativ, Kollaborativem, Kollaborativen, Kollaborativer, Kollaboratives, Kollaborativere] (1624) [lt:de:GERMAN_SPELLER_RULE]">Collaborative</span> und Robot, was die besondere Eignung für Mensch-Roboter-Kollaboration noch einmal unterstreicht.</div><div class="clear"></div>
|
|
<div class="linenb"> 27</div><div class="codeline">Der Roboter besitzt einen modifizierbaren Endeffektor, um unterschiedlichste Aufgaben erfüllen zu können.</div><div class="clear"></div>
|
|
<div class="linenb"> 28</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 29</div><div class="codeline">Um den Kuka iisy in der Simulation verwenden zu können, muss ein Modell des Roboterarms erstellt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 30</div><div class="codeline">Dieses Modell sollte die physikalischen Eigenschaften des Roboters möglichst genau abbilden.</div><div class="clear"></div>
|
|
<div class="linenb"> 31</div><div class="codeline">Anhand dieses Modells kann der Roboter dann in der Simulation dargestellt werden und mit anderen Objekten interagieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 32</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 33</div><div class="codeline"><span class="keyword1">\section</span>{Simulation des Menschen}</div><div class="clear"></div>
|
|
<div class="linenb"> 34</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [der] (2185) [lt:de:DE_CASE]">Der</span> Mensch soll in der Simulation typische Aufgaben erledigen und häufiges Verhalten abbilden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 35</div><div class="codeline">Hierzu sollen in der Simulationsumgebung mehrere Animationen verwendet werden, welche die aktuelle Tätigkeit darstellen.</div><div class="clear"></div>
|
|
<div class="linenb"> 36</div><div class="codeline">Für komplexere Verhaltensweisen können Animationen und andere Aktionen, wie zum Beispiel eine Bewegung und Rotation kombiniert werden, um zum Beispiel die Aktion ``Laufen in eine bestimmte Richtung'' auszuführen.</div><div class="clear"></div>
|
|
<div class="linenb"> 37</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 38</div><div class="codeline">Um diese Animationen erstellen zu können, wird zuerst ein animierbares Modell des Menschen benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 39</div><div class="codeline">Das zu erstellende Modell soll dabei um weitere Animationen erweiterbar sein.</div><div class="clear"></div>
|
|
<div class="linenb"> 40</div><div class="codeline">Unterschiedliche Animationen gehen dabei meist von verschiedenen Ursprungszuständen aus.</div><div class="clear"></div>
|
|
<div class="linenb"> 41</div><div class="codeline">Um zwischen diesen Ursprungszuständen wechseln zu können, werden weitere Animationen benötigt.</div><div class="clear"></div>
|
|
<div class="linenb"> 42</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 43</div><div class="codeline">Die so erstellten Animationen müssen von außerhalb der Simulationsumgebung ausführbar gemacht werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 44</div><div class="codeline">Ein solcher Mechanismus erlaubt die spätere Steuerung der Animation durch die Beschreibungssprache.</div><div class="clear"></div>
|
|
<div class="linenb"> 45</div><div class="codeline">Hierfür muss eine Komponente entwickelt werden, die in der Simulation die Anfragen der Beschreibungssprache entgegennimmt und umsetzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 46</div><div class="codeline">Um die spätere Steuerung des Menschen von außerhalb zu erleichtern, soll diese Komponente die Ausführung der Befehle überwachen.</div><div class="clear"></div>
|
|
<div class="linenb"> 47</div><div class="codeline">Da mehrere Befehle nacheinander ausgeführt werden sollen, wird der aktuelle Fortschritt der Aktion zurückgemeldet.</div><div class="clear"></div>
|
|
<div class="linenb"> 48</div><div class="codeline">Außerdem kann durch andere Komponenten in der Simulation der Abbruch einer Aktion des Menschen nötig werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 49</div><div class="codeline">Die Weitergabe eines Abbruchbefehls soll demzufolge auch über die geplante Komponente realisiert werden können.</div><div class="clear"></div>
|
|
<div class="linenb"> 50</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 51</div><div class="codeline"><span class="keyword1">\section</span>{Behavior Trees als Beschreibungssprache}</div><div class="clear"></div>
|
|
<div class="linenb"> 52</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [bislang] (3829) [lt:de:DE_CASE]">Bislang</span> wird das Verhalten von Akteuren in Simulationsumgebungen, darunter Roboter und Menschen, häufig in Form von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Stade-Maschinen, Stade-Mächtiges, Stade-Maschine, Stade-Mageres, Stade-Magie] (3945) [lt:de:GERMAN_SPELLER_RULE]">State-Machines</span> ausgedrückt.</div><div class="clear"></div>
|
|
<div class="linenb"> 53</div><div class="codeline">Diese besitzen jedoch einen großen Nachteil, der vor allem bei komplexeren Abläufen hervortreten kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 54</div><div class="codeline">Dabei handelt es sich um die Übersichtlichkeit, die bei einer wachsenden <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Stade-Maschine, Stade-Machte, Stade-Magie, Stade-Machen, Stade-Maschinen] (4149) [lt:de:GERMAN_SPELLER_RULE]">State-Machine</span> leicht verloren geht.</div><div class="clear"></div>
|
|
<div class="linenb"> 55</div><div class="codeline">Dies erschwert die schnelle Erfassung von Abfolgen und Zustandsübergängen bei Änderungen am Code, was zu Fehlern im späteren Betrieb führen kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 56</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 57</div><div class="codeline">Behavior Trees lösen dieses Problem, in dem sie sogenannte Nodes definieren, die in einer übersichtlichen Baumstruktur angeordnet werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 58</div><div class="codeline">Die einzelnen Nodes verändern dabei das System und lösen den Wechsel zu neuen Nodes aus.</div><div class="clear"></div>
|
|
<div class="linenb"> 59</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 60</div><div class="codeline">Ursprünglich wurde das Konzept der Behavior Trees von <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Sydney, Roten, Redner, Rote, Rhode, Rhodes, Rotem, Rodeo, Roter, Ronny, Ordnen, Röder, Ordnet, Rhone, Rotes, Rodler, Roden, Rotsee, Rotten, Rhoden] (4614) [lt:de:GERMAN_SPELLER_RULE]">Rodney</span> <span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Barocks, Barocke, Bronx, Barockes, Blocks, Barock, Briggs, Brotes, Porös, Bocks, Borax, Looks, Baracks, Brocke, Brockst, Biokoks, Brockt, Bioöls, EBooks] (4621) [lt:de:GERMAN_SPELLER_RULE]">Brooks</span> entwickelt, der diese für mobile Roboter einsetzen wollte. \cite{1087032}</div><div class="clear"></div>
|
|
<div class="linenb"> 61</div><div class="codeline">Das System setzte sich später jedoch zuerst in der Spieleindustrie, für die Beschreibung von menschlichem Verhalten, durch. \cite{isla2005handling}</div><div class="clear"></div>
|
|
<div class="linenb"> 62</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 63</div><div class="codeline">Der Ablauf eines Behavior Trees startet vom sogenannten Root, der Wurzel des Baums.</div><div class="clear"></div>
|
|
<div class="linenb"> 64</div><div class="codeline">Von dort an werden Nodes, die je nach Node unterschiedliches Verhalten abbilden, miteinander verbunden.</div><div class="clear"></div>
|
|
<div class="linenb"> 65</div><div class="codeline">Die Nodes werden untereinander angeordnet, was die Relation der Nodes zueinander beschreibt.</div><div class="clear"></div>
|
|
<div class="linenb"> 66</div><div class="codeline">Jede Node ist entweder direkt unter der Root-Node oder einer anderen Node angeordnet.</div><div class="clear"></div>
|
|
<div class="linenb"> 67</div><div class="codeline">Außerdem kann jede Node eine beliebige Anzahl an untergeordneten Nodes besitzen.</div><div class="clear"></div>
|
|
<div class="linenb"> 68</div><div class="codeline">Es gibt mehrere grundlegende Arten von Tree-Nodes, die in vier Kategorien unterschieden werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 69</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (5364) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 70</div><div class="codeline"> <span class="keyword1">\item</span>[Aktions-Nodes]</div><div class="clear"></div>
|
|
<div class="linenb"> 71</div><div class="codeline"> beschreiben einzelne ausführbare Aktionen, die das System beeinflussen können.</div><div class="clear"></div>
|
|
<div class="linenb"> 72</div><div class="codeline"> Jede Aktion liefert dabei einen Rückgabewert über ihren Erfolg, der durch die darüber liegende Node ausgewertet werden kann.</div><div class="clear"></div>
|
|
<div class="linenb"> 73</div><div class="codeline"> <span class="keyword1">\item</span>[<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Dekorations-Bodens, Dekorations-Bootes, Dekorations-Codes, Dekorations-Codecs, Dekorations-Hodens, Dekorations-Hotels, Dekorations-Kodes, Dekorations-Köders, Dekorations-Köters, Dekorations-Lotes, Dekorations-Lötens, Dekorations-Models, Dekorations-Modems, Dekorations-Moders, Dekorations-Motels, Dekorations-Odems, Dekorations-Podests, Dekorations-Rodels] (5603) [lt:de:GERMAN_SPELLER_RULE]">Dekorations-Nodes</span>]</div><div class="clear"></div>
|
|
<div class="linenb"> 74</div><div class="codeline"> können den Rückgabewert einer anderen Node modifizieren.</div><div class="clear"></div>
|
|
<div class="linenb"> 75</div><div class="codeline"> Zumeist wird die Negation des Rückgabewerts verwendet, aber auch das Forcieren eines bestimmten Rückgabewertes ist möglich.</div><div class="clear"></div>
|
|
<div class="linenb"> 76</div><div class="codeline"> <span class="keyword1">\item</span>[Sequenz-Nodes]</div><div class="clear"></div>
|
|
<div class="linenb"> 77</div><div class="codeline"> beschreiben eine nacheinander ausgeführte Abfolge von darunter liegenden Nodes.</div><div class="clear"></div>
|
|
<div class="linenb"> 78</div><div class="codeline"> Sollte eine Node einen Fehler zurückgeben, wird die Ausführung der Sequenz abgebrochen, was wiederum zur Rückgabe eines Fehlers durch die Sequenz selbst führt.</div><div class="clear"></div>
|
|
<div class="linenb"> 79</div><div class="codeline"> Beim erfolgreichen Durchlauf gibt die Sequenz einen Erfolg zurück.</div><div class="clear"></div>
|
|
<div class="linenb"> 80</div><div class="codeline"> <span class="keyword1">\item</span>[Fallback-Nodes]</div><div class="clear"></div>
|
|
<div class="linenb"> 81</div><div class="codeline"> verhalten sich ähnlich wie Sequenz-Nodes, jedoch werden die darunter liegenden Nodes nacheinander ausgeführt, bis eine Node Erfolg zurückgibt.</div><div class="clear"></div>
|
|
<div class="linenb"> 82</div><div class="codeline"> In diesem Fall wird die Ausführung der Fallback-Node mit einem Erfolg abgebrochen.</div><div class="clear"></div>
|
|
<div class="linenb"> 83</div><div class="codeline"> Ein Fehler wird hier zurückgegeben, wenn alle Nodes ohne eine Erfolgsmeldung durchlaufen wurden.</div><div class="clear"></div>
|
|
<div class="linenb"> 84</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Description] (6484) [lt:de:UPPERCASE_SENTENCE_START]"></span>description}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 85</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 86</div><div class="codeline"><span class="keyword2">\begin{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 87</div><div class="codeline"><span class="keyword1">\includegraphics</span>[]{img/MA-tree-demo}</div><div class="clear"></div>
|
|
<div class="linenb"> 88</div><div class="codeline">\centering</div><div class="clear"></div>
|
|
<div class="linenb"> 89</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Beispiel eines BehaviorTrees</span>}</div><div class="clear"></div>
|
|
<div class="linenb"> 90</div><div class="codeline"><span class="keyword1">\label</span>{concept_tree_demo}</div><div class="clear"></div>
|
|
<div class="linenb"> 91</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 92</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 93</div><div class="codeline">Das in Abbildung \ref{concept_tree_demo} visualisierte Beispiel zeigt die Abfolge, um eine Tür zu öffnen und zu durchschreiten.</div><div class="clear"></div>
|
|
<div class="linenb"> 94</div><div class="codeline">Die Ausführung des Baumes beginnt an der Root-Node, wobei die Zahlen über den Nodes die Reihenfolge der Rückgabewerte angeben.</div><div class="clear"></div>
|
|
<div class="linenb"> 95</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 96</div><div class="codeline">Von dort aus wird als Erstes die Sequenz-Node ausgeführt, die drei untergeordnete Nodes besitzt.</div><div class="clear"></div>
|
|
<div class="linenb"> 97</div><div class="codeline">Diese drei Nodes werden in Leserichtung, in diesem Falle von links nach rechts, ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb"> 98</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 99</div><div class="codeline">Daraus resultierend wird zuerst die linke Fallback-Node, die ihrerseits untergeordnete Nodes besitzt, ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb">100</div><div class="codeline">Da der Rückgabewert der Fallback-Node von den unter ihr befindlichen Nodes bestimmt wird, werden diese nacheinander ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb">101</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">102</div><div class="codeline">Von diesem Punkt an beginnen die Rückgaben, die das weitere Verhalten beeinflussen.</div><div class="clear"></div>
|
|
<div class="linenb">103</div><div class="codeline">Folgender Kontrollfluss findet in diesem Beispiel statt:</div><div class="clear"></div>
|
|
<div class="linenb">104</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">105</div><div class="codeline"><span class="keyword2">\begin{enumerate}</span></div><div class="clear"></div>
|
|
<div class="linenb">106</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb">107</div><div class="codeline"> In dieser Node wird geprüft, ob die Tür bereits offen ist.</div><div class="clear"></div>
|
|
<div class="linenb">108</div><div class="codeline"> Da die Tür nicht offen ist, wird ein Misserfolg zurückgemeldet.</div><div class="clear"></div>
|
|
<div class="linenb">109</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb">110</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb">111</div><div class="codeline"> Dieses Ergebnis löst die Ausführung der nächsten untergeordneten Node der Fallback-Node aus.</div><div class="clear"></div>
|
|
<div class="linenb">112</div><div class="codeline"> Die so ausgewählte Node soll die Tür öffnen.</div><div class="clear"></div>
|
|
<div class="linenb">113</div><div class="codeline"> Der Versuch gelingt und der Erfolg wird an die Fallback-Node übergeben.</div><div class="clear"></div>
|
|
<div class="linenb">114</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb">115</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb">116</div><div class="codeline"> Da die untergeordnete Node eine erfolgreiche Ausführung meldet, wird die Ausführung der Fallback-Node mit einem erfolgreichen Rückgabewert beendet.</div><div class="clear"></div>
|
|
<div class="linenb">117</div><div class="codeline"> Aus diesem Grund wird die Node ``Tür eintreten'' nicht mehr ausgeführt.</div><div class="clear"></div>
|
|
<div class="linenb">118</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb">119</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb">120</div><div class="codeline"> Dadurch wird die nächste Node in der Sequenz ausgeführt, die prüft, ob die Tür durchlaufen werden kann.</div><div class="clear"></div>
|
|
<div class="linenb">121</div><div class="codeline"> Da dies nicht möglich ist, da die Tür zwar offen, aber durch dahinter liegende Gegenstände blockiert ist, wird ein Misserfolg gemeldet.</div><div class="clear"></div>
|
|
<div class="linenb">122</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb">123</div><div class="codeline"> <span class="keyword1">\item</span>{</div><div class="clear"></div>
|
|
<div class="linenb">124</div><div class="codeline"> Der gemeldete Misserfolg der untergeordneten Node bricht die Ausführung der Sequenz mit einem negativen Rückgabewert ab.</div><div class="clear"></div>
|
|
<div class="linenb">125</div><div class="codeline"> }</div><div class="clear"></div>
|
|
<div class="linenb">126</div><div class="codeline"><span class="keyword2">\end{enumerate}</span></div><div class="clear"></div>
|
|
<div class="linenb">127</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">128</div><div class="codeline">Dieser Ablauf würde nun von neuem beginnen, da die Root-Node ihre untergeordnete Node ohne Berücksichtigung des Rückgabewertes neu startet.</div><div class="clear"></div>
|
|
<div class="linenb">129</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">130</div><div class="codeline">Durch die Definition neuer Nodes und einer anderen Baumstruktur lassen sich neue Verhalten implementieren.</div><div class="clear"></div>
|
|
<div class="linenb">131</div><div class="codeline">Dies erlaubt die schnelle Anpassung des Verhaltens der gesteuerten Systeme.</div><div class="clear"></div>
|
|
<div class="linenb">132</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">133</div><div class="codeline">In dieser Arbeit sollen deshalb <span class="highlight" title="Möglicher Tippfehler gefunden. (8621) [lt:de:GERMAN_SPELLER_RULE]">BehaviorTrees</span> für die Steuerung von Mensch und Roboter verwendet werden.</div><div class="clear"></div>
|
|
<div class="linenb">134</div><div class="codeline">Die hierfür erstellten Nodes sollen universell gestaltet werden, um alle Szenarien, die in dieser Arbeit betrachtet werden, abzudecken.</div><div class="clear"></div>
|
|
<div class="linenb">135</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">136</div><div class="codeline"><span class="keyword1">\section</span>{Virtualisierungsumgebung als Plattform}</div><div class="clear"></div>
|
|
<div class="linenb">137</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [der] (8870) [lt:de:DE_CASE]">Der</span> Einsatz fest definierter Prozesse in einer stabilen Umgebung ist unerlässlich, um Fehler durch die unvollständige Einrichtung der Umgebung zu vermeiden.</div><div class="clear"></div>
|
|
<div class="linenb">138</div><div class="codeline">Dies kann durch den Einsatz einer Virtualisierungsumgebung geschehen, in der das zu entwerfende System ausgeführt wird.</div><div class="clear"></div>
|
|
<div class="linenb">139</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">140</div><div class="codeline">Dadurch können benötigte Programme, Pfade und Umgebungsvariablen in der Virtualisierungsumgebung hinterlegt werden, die diese bei der Ausführung auf einem anderen Grundsystem korrekt abbildet.</div><div class="clear"></div>
|
|
<div class="linenb">141</div><div class="codeline">Eine solche Struktur erhöht die Zuverlässigkeit der Umgebung, da die Änderungen an der Umgebung auf alle ausführenden Systeme gespiegelt werden.</div><div class="clear"></div>
|
|
<div class="linenb">142</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">143</div><div class="codeline">Ein weiterer Vorteil ist die beschleunigte Entwicklung, weil Änderungen nicht mehr an einzelne Zielsysteme angepasst werden müssen.</div><div class="clear"></div>
|
|
<div class="linenb">144</div><div class="codeline">Hinzu kommt die einfachere Inbetriebnahme eines bereits entwickelten Systems, da keine Anpassungen am Hostsystem vorgenommen werden müssen.</div><div class="clear"></div>
|
|
<div class="linenb">145</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">146</div><div class="codeline">Natürlich existieren auch Nachteile der Virtualisierung, die mit den Vorteilen abgewogen werden müssen.</div><div class="clear"></div>
|
|
<div class="linenb">147</div><div class="codeline">Alle Virtualisierungssysteme benötigen zusätzliche Rechenleistung, die dann der virtualisierten Anwendung nicht mehr zur Verfügung steht.</div><div class="clear"></div>
|
|
<div class="linenb">148</div><div class="codeline">Außerdem muss bei grafischen Systemen die Darstellung der relevanten grafischen Daten auf dem Hostsystem berücksichtigt werden.</div><div class="clear"></div>
|
|
<div class="linenb">149</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">150</div><div class="codeline">Die Auswahl einer für das Projekt geeigneten Virtualisierungsumgebung beeinflusst das Ergebnis dieser Arbeit zwar nicht direkt, hat aber großen Einfluss auf die Pflege des Gesamtsystems.</div><div class="clear"></div>
|
|
<div class="linenb">151</div><div class="codeline">Dies erlaubt zum Beispiel unabhängige, dedizierte Versionen der Softwarekomponenten und die Möglichkeit isolierter Upgrades dieser Komponenten.</div><div class="clear"></div>
|
|
<div class="linenb">152</div><div class="codeline">Eine solche Plattform sorgt somit für die Reproduzierbarkeit der Ergebnisse auf verschiedenen Systemen.</div><div class="clear"></div>
|
|
</div>
|
|
<h2 class="filename">main.tex</h2>
|
|
|
|
<p>Found 12 warning(s)</p>
|
|
<div class="original-file">
|
|
<div class="linenb"> 1</div><div class="codeline"><span class="keyword1">\documentclass</span>[paper=a4,</div><div class="clear"></div>
|
|
<div class="linenb"> 2</div><div class="codeline">ngerman,</div><div class="clear"></div>
|
|
<div class="linenb"> 3</div><div class="codeline">captions=tableabove,</div><div class="clear"></div>
|
|
<div class="linenb"> 4</div><div class="codeline">fontsize=11pt,</div><div class="clear"></div>
|
|
<div class="linenb"> 5</div><div class="codeline">numbers=noenddot,</div><div class="clear"></div>
|
|
<div class="linenb"> 6</div><div class="codeline">parskip=half,</div><div class="clear"></div>
|
|
<div class="linenb"> 7</div><div class="codeline">]{scrreprt}</div><div class="clear"></div>
|
|
<div class="linenb"> 8</div><div class="codeline"><span class="keyword1">\usepackage</span>[ngerman]{babel}</div><div class="clear"></div>
|
|
<div class="linenb"> 9</div><div class="codeline"><span class="keyword1">\usepackage</span>[T1]{fontenc}</div><div class="clear"></div>
|
|
<div class="linenb"> 10</div><div class="codeline"><span class="keyword1">\usepackage</span>{lmodern}</div><div class="clear"></div>
|
|
<div class="linenb"> 11</div><div class="codeline"><span class="keyword1">\usepackage</span>[newfloat=true]{minted}</div><div class="clear"></div>
|
|
<div class="linenb"> 12</div><div class="codeline"><span class="keyword1">\usepackage</span>{csquotes}</div><div class="clear"></div>
|
|
<div class="linenb"> 13</div><div class="codeline"><span class="keyword1">\usepackage</span>[includehead, includefoot, left=3.0cm, right=2.5cm, top=1.5cm, bottom=1.5cm]{geometry}</div><div class="clear"></div>
|
|
<div class="linenb"> 14</div><div class="codeline"><span class="keyword1">\usepackage</span>{acro}</div><div class="clear"></div>
|
|
<div class="linenb"> 15</div><div class="codeline"><span class="keyword1">\usepackage</span>[style=numeric,backend=biber,sorting=none]{biblatex}</div><div class="clear"></div>
|
|
<div class="linenb"> 16</div><div class="codeline"><span class="keyword1">\usepackage</span>{notoccite}</div><div class="clear"></div>
|
|
<div class="linenb"> 17</div><div class="codeline"><span class="keyword1">\usepackage</span>{pdfpages}</div><div class="clear"></div>
|
|
<div class="linenb"> 18</div><div class="codeline"><span class="keyword1">\usepackage</span>{xcolor}</div><div class="clear"></div>
|
|
<div class="linenb"> 19</div><div class="codeline"><span class="keyword1">\usepackage</span>{enumitem}</div><div class="clear"></div>
|
|
<div class="linenb"> 20</div><div class="codeline"><span class="keyword1">\usepackage</span>[onehalfspacing]{setspace}</div><div class="clear"></div>
|
|
<div class="linenb"> 21</div><div class="codeline"><span class="keyword1">\usepackage</span>{hyperref}</div><div class="clear"></div>
|
|
<div class="linenb"> 22</div><div class="codeline"><span class="keyword1">\usepackage</span>{tabularray}</div><div class="clear"></div>
|
|
<div class="linenb"> 23</div><div class="codeline"><span class="keyword1">\usepackage</span>{xurl}</div><div class="clear"></div>
|
|
<div class="linenb"> 24</div><div class="codeline"><span class="keyword1">\usepackage</span>{soul}</div><div class="clear"></div>
|
|
<div class="linenb"> 25</div><div class="codeline"><span class="keyword1">\usepackage</span>{xcolor}</div><div class="clear"></div>
|
|
<div class="linenb"> 26</div><div class="codeline"><span class="keyword1">\usepackage</span>{subcaption}</div><div class="clear"></div>
|
|
<div class="linenb"> 27</div><div class="codeline"><span class="keyword1">\usepackage</span>[strings]{underscore}</div><div class="clear"></div>
|
|
<div class="linenb"> 28</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 29</div><div class="codeline"><span class="keyword1">\usepackage</span>[letterspace=150]{microtype}</div><div class="clear"></div>
|
|
<div class="linenb"> 30</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 31</div><div class="codeline"><span class="keyword1">\usepackage</span>[page]{totalcount}</div><div class="clear"></div>
|
|
<div class="linenb"> 32</div><div class="codeline"><span class="keyword1">\usepackage</span>[automark,headsepline=.4pt,plainheadsepline]{scrlayer-scrpage} <span class="comment">% Erstellung von selbst definierten Kopfzeilen</span></div><div class="clear"></div>
|
|
<div class="linenb"> 33</div><div class="codeline"><span class="comment"><span class="comment">%<span class="keyword1">\usepackage</span>{scrhack}</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 34</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 35</div><div class="codeline">\newcommand{\source}[1]{<span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>*{Quelle: {#1}</span>} }</div><div class="clear"></div>
|
|
<div class="linenb"> 36</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 37</div><div class="codeline">\clearpairofpagestyles<span class="comment">%\clearscrheadfoot veraltet</span></div><div class="clear"></div>
|
|
<div class="linenb"> 38</div><div class="codeline">\renewcommand*{\chaptermarkformat}{</div><div class="clear"></div>
|
|
<div class="linenb"> 39</div><div class="codeline"> \chaptername~\thechapter\autodot\quad-\quad</div><div class="clear"></div>
|
|
<div class="linenb"> 40</div><div class="codeline">}</div><div class="clear"></div>
|
|
<div class="linenb"> 41</div><div class="codeline">\definecolor{light-gray}{gray}{0.95}</div><div class="clear"></div>
|
|
<div class="linenb"> 42</div><div class="codeline"><span class="comment"><span class="comment">%\newcommand{\code}[1]{\colorbox{light-gray}{\texttt{#1}}}</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 43</div><div class="codeline">\newcommand{\code}[1]{</div><div class="clear"></div>
|
|
<div class="linenb"> 44</div><div class="codeline"> \begingroup<span class="comment">%</span></div><div class="clear"></div>
|
|
<div class="linenb"> 45</div><div class="codeline"> \sethlcolor{light-gray}<span class="comment">%</span></div><div class="clear"></div>
|
|
<div class="linenb"> 46</div><div class="codeline"> \hl{\texttt{#1}}<span class="comment">%</span></div><div class="clear"></div>
|
|
<div class="linenb"> 47</div><div class="codeline"> \endgroup</div><div class="clear"></div>
|
|
<div class="linenb"> 48</div><div class="codeline">}</div><div class="clear"></div>
|
|
<div class="linenb"> 49</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 50</div><div class="codeline">\ihead*{\rightmark}</div><div class="clear"></div>
|
|
<div class="linenb"> 51</div><div class="codeline">\ohead*{\thepage}</div><div class="clear"></div>
|
|
<div class="linenb"> 52</div><div class="codeline">\setkomafont{pageheadfoot}{\normalfont}</div><div class="clear"></div>
|
|
<div class="linenb"> 53</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 54</div><div class="codeline">\pagestyle{scrheadings}</div><div class="clear"></div>
|
|
<div class="linenb"> 55</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 56</div><div class="codeline">\pdfminorversion=7</div><div class="clear"></div>
|
|
<div class="linenb"> 57</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 58</div><div class="codeline">\addbibresource{main.bib}</div><div class="clear"></div>
|
|
<div class="linenb"> 59</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 60</div><div class="codeline"><span class="comment"><span class="comment">% Title Page</span></span></div><div class="clear"></div>
|
|
<div class="linenb"> 61</div><div class="codeline"><span class="keyword1">\title</span>{}</div><div class="clear"></div>
|
|
<div class="linenb"> 62</div><div class="codeline">\subtitle{mechatronisches Forschungsprojekt}</div><div class="clear"></div>
|
|
<div class="linenb"> 63</div><div class="codeline">\author{Bastian Maximilian Hofmann}</div><div class="clear"></div>
|
|
<div class="linenb"> 64</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 65</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 66</div><div class="codeline">\DeclareAcronym{ros}{</div><div class="clear"></div>
|
|
<div class="linenb"> 67</div><div class="codeline"> short=ROS,</div><div class="clear"></div>
|
|
<div class="linenb"> 68</div><div class="codeline"> long=Robot Operating System,</div><div class="clear"></div>
|
|
<div class="linenb"> 69</div><div class="codeline">}</div><div class="clear"></div>
|
|
<div class="linenb"> 70</div><div class="codeline">\DeclareAcronym{fsm}{</div><div class="clear"></div>
|
|
<div class="linenb"> 71</div><div class="codeline"> short=FSM,</div><div class="clear"></div>
|
|
<div class="linenb"> 72</div><div class="codeline"> long=Finite-State-Machine,</div><div class="clear"></div>
|
|
<div class="linenb"> 73</div><div class="codeline">}</div><div class="clear"></div>
|
|
<div class="linenb"> 74</div><div class="codeline">\DeclareAcronym{mrk}{</div><div class="clear"></div>
|
|
<div class="linenb"> 75</div><div class="codeline"> short=MRK,</div><div class="clear"></div>
|
|
<div class="linenb"> 76</div><div class="codeline"> long=Mensch-Roboter-Kollaboration,</div><div class="clear"></div>
|
|
<div class="linenb"> 77</div><div class="codeline">}</div><div class="clear"></div>
|
|
<div class="linenb"> 78</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 79</div><div class="codeline"><span class="keyword2">\begin{document}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 80</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 81</div><div class="codeline">\setcounter{<span class="highlight" title="Dieser Satz fängt nicht mit einem großgeschriebenen Wort an.. Suggestions: [Page1] (1) [lt:de:UPPERCASE_SENTENCE_START]"></span>page}{1}</div><div class="clear"></div>
|
|
<div class="linenb"> 82</div><div class="codeline">\pagenumbering{Roman}</div><div class="clear"></div>
|
|
<div class="linenb"> 83</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 84</div><div class="codeline"><span class="keyword2">\begin{<span class="highlight" title="Möglicher Tippfehler gefunden. (14) [lt:de:GERMAN_SPELLER_RULE]"></span>titlepage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 85</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 86</div><div class="codeline">\includepdf[pages=-]{tex/Deckblatt.pdf}</div><div class="clear"></div>
|
|
<div class="linenb"> 87</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 88</div><div class="codeline"><span class="keyword2">\end{<span class="highlight" title="Möglicher Tippfehler gefunden. (27) [lt:de:GERMAN_SPELLER_RULE]"></span>titlepage}</span></div><div class="clear"></div>
|
|
<div class="linenb"> 89</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 90</div><div class="codeline">\<span class="highlight" title="Möglicher Tippfehler gefunden. (39) [lt:de:GERMAN_SPELLER_RULE]"></span>tableofcontents</div><div class="clear"></div>
|
|
<div class="linenb"> 91</div><div class="codeline">\<span class="highlight" title="Möglicher Tippfehler gefunden. (56) [lt:de:GERMAN_SPELLER_RULE]"></span>listoffigures</div><div class="clear"></div>
|
|
<div class="linenb"> 92</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 93</div><div class="codeline">\includepdf[pages=-]{tex/Aufgabenstellung.pdf}</div><div class="clear"></div>
|
|
<div class="linenb"> 94</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 95</div><div class="codeline">\setcounter{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Page, Lage, Tage, Sache, Rache, mache, Bäche, vage, Gage, läge, sage, Säge, bare, baue, fache, wache, wage, Bache, Bake, bange] (73) [lt:de:GERMAN_SPELLER_RULE]">page}{</span>1}</div><div class="clear"></div>
|
|
<div class="linenb"> 96</div><div class="codeline">\pagenumbering{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Grafik, arabisch, Tragik, Trapez, Harpyie, Trabi, Trabis] (79) [lt:de:GERMAN_SPELLER_RULE]"></span>arabic}</div><div class="clear"></div>
|
|
<div class="linenb"> 97</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 98</div><div class="codeline">\input{tex/1_Einleitung.tex}</div><div class="clear"></div>
|
|
<div class="linenb"> 99</div><div class="codeline">\input{tex/2_Konzept.tex}</div><div class="clear"></div>
|
|
<div class="linenb">100</div><div class="codeline">\input{tex/3_Auswahl.tex}</div><div class="clear"></div>
|
|
<div class="linenb">101</div><div class="codeline">\input{tex/4_Umsetzung.tex}</div><div class="clear"></div>
|
|
<div class="linenb">102</div><div class="codeline">\input{tex/5_Evaluation_und_Diskussion.tex}</div><div class="clear"></div>
|
|
<div class="linenb">103</div><div class="codeline">\input{tex/6_Ausblick.tex}</div><div class="clear"></div>
|
|
<div class="linenb">104</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">105</div><div class="codeline">\printbibliography</div><div class="clear"></div>
|
|
<div class="linenb">106</div><div class="codeline"><span class="highlight-sh" title="If you are writing a research paper, do not force page breaks. [sh:nonp]"></span>\newpage</div><div class="clear"></div>
|
|
<div class="linenb">107</div><div class="codeline">\markboth{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Anhang Anhang, Anhängerhang] (96) [lt:de:GERMAN_SPELLER_RULE]"></span>Anhang}{Anhang}</div><div class="clear"></div>
|
|
<div class="linenb">108</div><div class="codeline"><span class="keyword2">\begin{figure}</span>[ht]</div><div class="clear"></div>
|
|
<div class="linenb">109</div><div class="codeline"><span class="keyword1">\includegraphics</span>[width=14cm]{img/moveit_pipeline}</div><div class="clear"></div>
|
|
<div class="linenb">110</div><div class="codeline"><span class="highlight-sh" title="A caption should end with a period [sh:capperiod]"><span class="keyword1">\caption</span>{Visualisierung der MoveIt Pipeline</span>}</div><div class="clear"></div>
|
|
<div class="linenb">111</div><div class="codeline">\source{\cite{moveitpipeline}}</div><div class="clear"></div>
|
|
<div class="linenb">112</div><div class="codeline"><span class="keyword1">\label</span>{<span class="highlight-sh" title="Figure moveitpipeline is never referenced in the text [sh:figref]">m</span>oveitpipeline}</div><div class="clear"></div>
|
|
<div class="linenb">113</div><div class="codeline"><span class="keyword2">\end{figure}</span></div><div class="clear"></div>
|
|
<div class="linenb">114</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">115</div><div class="codeline"><span class="keyword2">\end{document}</span> </div><div class="clear"></div>
|
|
</div>
|
|
<h2 class="filename">tex/1_Einleitung.tex</h2>
|
|
|
|
<p>Found 7 warning(s)</p>
|
|
<div class="original-file">
|
|
<div class="linenb"> 1</div><div class="codeline">\chapter{Einleitung}</div><div class="clear"></div>
|
|
<div class="linenb"> 2</div><div class="codeline">\<span class="highlight-sh" title="Avoid stacked headings, i.e. consecutive headings without text in between. [sh:stacked]">section</span>{Motivation}</div><div class="clear"></div>
|
|
<div class="linenb"> 3</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (22) [lt:de:DE_CASE]">Die</span> Simulation von Maschinen wird im industriellen Umfeld immer beliebter, um deren Verhalten schon vor der eigentlichen Produktion zu testen.</div><div class="clear"></div>
|
|
<div class="linenb"> 4</div><div class="codeline">Dazu wird ein Modell des gesamten Prozesses in der Simulation geschaffen, der durch die Maschine beeinflusst werden soll.</div><div class="clear"></div>
|
|
<div class="linenb"> 5</div><div class="codeline">Das Modell wird um die Maschine selbst erweitert, die Einfluss auf das System nimmt.</div><div class="clear"></div>
|
|
<div class="linenb"> 6</div><div class="codeline">Die Veränderungen durch die Maschine werden analysiert, und erlauben Rückschlüsse auf die Funktion des Systems.</div><div class="clear"></div>
|
|
<div class="linenb"> 7</div><div class="codeline">Ein solches Modell kann für die Erkennung von Fehlverhalten und Problemen schon weit vor der eigentlichen Inbetriebnahme der Maschine genutzt werden.</div><div class="clear"></div>
|
|
<div class="linenb"> 8</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb"> 9</div><div class="codeline">Da in der Realität oftmals Menschen und Maschinen im gleichen Umfeld mit- oder auch zusammenarbeiten, ist es sinnvoll, die Menschen in die Simulation einzubeziehen.</div><div class="clear"></div>
|
|
<div class="linenb">10</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">11</div><div class="codeline">Im wachsenden Feld der Mensch-Roboter-Kollaboration existieren bereits einige Lösungen, um auch die namensgebende Interaktion von Mensch und Roboter zu simulieren.</div><div class="clear"></div>
|
|
<div class="linenb">12</div><div class="codeline">Eine häufige Einschränkung der Simulatoren ist dabei, dass der Bewegungsablauf in der Simulation bereits vor deren Ausführung fest definiert werden muss.</div><div class="clear"></div>
|
|
<div class="linenb">13</div><div class="codeline">Dies erlaubt lediglich die Reproduktion des geplanten Bewegungsablaufes, aber nicht dessen Variation im Prozess, ausgelöst durch Ereignisse in der Simulation.</div><div class="clear"></div>
|
|
<div class="linenb">14</div><div class="codeline">Um eine solche Funktionalität bereitzustellen, müssen die Bewegungsabläufe sowohl von Roboter als auch Mensch zur Laufzeit der Simulation gesteuert werden können.</div><div class="clear"></div>
|
|
<div class="linenb">15</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">16</div><div class="codeline">Diese Steuerung soll durch eine eingängige Beschreibungssprache erfolgen, die einfach erweitert und auf neue Szenarien angepasst werden kann.</div><div class="clear"></div>
|
|
<div class="linenb">17</div><div class="codeline">Um die Funktionalität zu demonstrieren, sind 3 unterschiedliche Testszenarien in der Simulationsumgebung abzubilden.</div><div class="clear"></div>
|
|
<div class="linenb">18</div><div class="codeline">Diese sollen durch verschiedene Aufgaben unterschiedliche Interaktionsgrade zwischen Mensch und Roboter simulieren.</div><div class="clear"></div>
|
|
<div class="linenb">19</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">20</div><div class="codeline"><span class="keyword1">\section</span>{Stand der Wissenschaft}</div><div class="clear"></div>
|
|
<div class="linenb">21</div><div class="codeline">Aktuelle wissenschaftliche Arbeiten befassen sich mit vielen unterschiedlichen Teilaspekten der Simulation eines <span class="highlight" title="Möglicher Tippfehler gefunden. (1954) [lt:de:GERMAN_SPELLER_RULE]">Mensch-Roboter-Kollaborationsszenarios</span>.</div><div class="clear"></div>
|
|
<div class="linenb">22</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">23</div><div class="codeline">Die Planung von unterschiedlichen Reaktionen von Roboter auf den Menschen in verschiedenen Interaktionsszenarien stellt eine Grundlage für spätere</div><div class="clear"></div>
|
|
<div class="linenb">24</div><div class="codeline">Projekte dar \cite{DOMBROWSKI2018134}.</div><div class="clear"></div>
|
|
<div class="linenb">25</div><div class="codeline">Hierbei wird die erwünschte Interaktion betrachtet und aus den gewonnenen Daten werden Einschränkungen generiert.</div><div class="clear"></div>
|
|
<div class="linenb">26</div><div class="codeline">Diese Einschränkungen können in der Interaktion verwendet werden, um zum Beispiel Verletzungen des Menschen durch den Roboter auszuschließen.</div><div class="clear"></div>
|
|
<div class="linenb">27</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">28</div><div class="codeline">Ein anderer Weg der Kollisionsvermeidung ist die Planung der maximal zurücklegbaren Distanz eines Menschen aus seiner aktuellen Position \cite{ffdrobotsim}.</div><div class="clear"></div>
|
|
<div class="linenb">29</div><div class="codeline">Dafür werden die maximalen Beschleunigungen einzelner Körperteile ermittelt, um diese während der Interaktion zu überwachen.</div><div class="clear"></div>
|
|
<div class="linenb">30</div><div class="codeline">Sollte ein Mensch den Roboter erreichen können, muss dieser in der dafür benötigten Zeit stoppen können.</div><div class="clear"></div>
|
|
<div class="linenb">31</div><div class="codeline">Dies sorgt für eine Geschwindigkeitsanpassung im Nahfeld, da hier schnellere Bewegungen möglich sind.</div><div class="clear"></div>
|
|
<div class="linenb">32</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">33</div><div class="codeline">Es existieren auch zahlreiche Ansätze, die Bewegungs- und Interaktionsplanung eines Roboters mit Beschreibungssprachen abzudecken \cite{btintro}.</div><div class="clear"></div>
|
|
<div class="linenb">34</div><div class="codeline">Dabei kommt es auf die Umsetzung in der Beschreibungssprache, aber auch auf Anforderungen an das System an, um zum Beispiel das Abbrechen von Aktionen zu ermöglichen.</div><div class="clear"></div>
|
|
<div class="linenb">35</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">36</div><div class="codeline">In Computerspielen werden Beschreibungssprachen schon seit langer Zeit eingesetzt, um verschiedene Systeme, wie zum Beispiel die Steuerung von Nichtspielercharakteren, zu beschreiben \cite{halo2}.</div><div class="clear"></div>
|
|
<div class="linenb">37</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">38</div><div class="codeline">Eine vollständige Umsetzung einer erweiterbaren Simulation mit Mensch und Roboter, gesteuert durch eine Beschreibungssprache, konnte bei der Recherche zu dieser Arbeit jedoch nicht gefunden werden.</div><div class="clear"></div>
|
|
<div class="linenb">39</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">40</div><div class="codeline"><span class="keyword1">\section</span>{Auswahl der Szenarien}</div><div class="clear"></div>
|
|
<div class="linenb">41</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [die] (3605) [lt:de:DE_CASE]">Die</span> drei zu modellierenden Szenarien sollten so gewählt werden, dass spätere komplexere Szenarien auf einfacheren Vorgängern aufsetzen und deren Funktionen weiter nutzen und ergänzen.</div><div class="clear"></div>
|
|
<div class="linenb">42</div><div class="codeline">Hierfür kommen bestimmte Aufgaben, wie zum Beispiel die Interaktion mit Objekten besonders infrage.</div><div class="clear"></div>
|
|
<div class="linenb">43</div><div class="codeline">Diese besitzen viele ähnliche Bestandteile, die in mehreren Umständen nutzbar sind.</div><div class="clear"></div>
|
|
<div class="linenb">44</div><div class="codeline">Das erlaubt den Einsatz von wenigen Animationen in vielen Szenarien.</div><div class="clear"></div>
|
|
<div class="linenb">45</div><div class="codeline">Dazu zählen zum Beispiel das Hineingreifen in einen Prozess, das Aufheben von Material oder das Begutachten eines Objekts, welche jeweils nur eine ähnliche Bewegungsabfolge des beteiligten Menschen sind.</div><div class="clear"></div>
|
|
<div class="linenb">46</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">47</div><div class="codeline">Das erste Szenario soll sich mit der Simulation einer bereits vollautomatisierten Fertigungsaufgabe befassen, in der ein Roboter im Arbeitsbereich eines Menschen Teile fertigt.</div><div class="clear"></div>
|
|
<div class="linenb">48</div><div class="codeline">Die zu erwartende Interaktion beschränkt sich hierbei auf die Anpassung der Fahrgeschwindigkeit des Roboters bei Annäherung des Menschen, um Kollisionen zu vermeiden.</div><div class="clear"></div>
|
|
<div class="linenb">49</div><div class="codeline">Der Mensch soll in diesem Szenario an einer anderen Aufgabe arbeiten.</div><div class="clear"></div>
|
|
<div class="linenb">50</div><div class="codeline">Während dieser Arbeit betritt der Mensch vereinzelt den Arbeitsbereich des Roboters, was die entsprechende Reaktion des Roboters hervorrufen soll.</div><div class="clear"></div>
|
|
<div class="linenb">51</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">52</div><div class="codeline">Dieses Szenario ist ein Beispiel für eine Koexistenz zwischen Roboter und Mensch, wo beide im selben Raum, jedoch an unterschiedlichen Aufgaben arbeiten.</div><div class="clear"></div>
|
|
<div class="linenb">53</div><div class="codeline">Außerdem werden grundlegende Aspekte der Simulation getestet, wie zum Beispiel das Bewegen von Mensch und Roboter und die sicherheitsrelevante Aktion der Geschwindigkeitsanpassung.</div><div class="clear"></div>
|
|
<div class="linenb">54</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">55</div><div class="codeline">Im zweiten Szenario prüft und sortiert der Roboter Teile und legt die fehlerfreien Exemplare auf einem Fließband zur Weiterverarbeitung ab.</div><div class="clear"></div>
|
|
<div class="linenb">56</div><div class="codeline">Die Mängelexemplare werden hingegen in einer dafür vorgesehenen Zone abgelegt, von wo sie vom Menschen abtransportiert werden.</div><div class="clear"></div>
|
|
<div class="linenb">57</div><div class="codeline">Auch hier soll der Mensch so lange eigenständig arbeiten, bis der Roboter ein aussortiertes Teil ablegt, das transportiert werden muss.</div><div class="clear"></div>
|
|
<div class="linenb">58</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">59</div><div class="codeline">Die dritte simulierte Aufgabe stellt ein Kollaborationsszenario dar, in dem Mensch und Roboter an derselben Aufgabe arbeiten.</div><div class="clear"></div>
|
|
<div class="linenb">60</div><div class="codeline">Hierbei soll der Roboter eine Palette entladen, wobei er nicht jedes Objekt ausreichend manipulieren kann.</div><div class="clear"></div>
|
|
<div class="linenb">61</div><div class="codeline">Dies wird durch zufällige Fehler beim Aufheben, Transport und Ablegen der Objekte abgebildet.</div><div class="clear"></div>
|
|
<div class="linenb">62</div><div class="codeline">In diesen Fällen muss ein Mensch aushelfen, wodurch er mit dem Roboter in Interaktion tritt.</div><div class="clear"></div>
|
|
<div class="linenb">63</div><div class="codeline">Der Mensch soll, wenn seine Hilfe nicht benötigt wird, andere Roboter kontrollieren, was durch das Laufen im Raum abgebildet werden soll.</div><div class="clear"></div>
|
|
<div class="linenb">64</div><div class="codeline">\<span class="highlight-sh" title="This section is very short (about 70 words). You should consider merging it with another section or make it longer. [sh:seclen]">section</span>{<span class="highlight" title="Möglicher Tippfehler gefunden.. Suggestions: [Kontribution] (6107) [lt:de:GERMAN_SPELLER_RULE]"></span>Contributions}</div><div class="clear"></div>
|
|
<div class="linenb">65</div><div class="codeline"><span class="highlight" title="Außer am Satzanfang werden nur Nomen und Eigennamen großgeschrieben.. Suggestions: [durch] (6121) [lt:de:DE_CASE]">Durch</span> diese Arbeit soll in zukünftigen Projekten die Möglichkeit geschaffen werden, konzeptionelle Probleme bei der Erstellung neuer Aufgabenbereiche eines Roboters frühzeitig durch Simulation erkennbar zu machen.</div><div class="clear"></div>
|
|
<div class="linenb">66</div><div class="codeline"> </div><div class="clear"></div>
|
|
<div class="linenb">67</div><div class="codeline">Dazu ist eine schnelle Adaption von sowohl Roboter als auch Mensch auf unterschiedliche Szenarien nötig.</div><div class="clear"></div>
|
|
<div class="linenb">68</div><div class="codeline">Die Szenarien sollen dabei durch eine Beschreibungssprache definiert werden.</div><div class="clear"></div>
|
|
<div class="linenb">69</div><div class="codeline">Durch deren Struktur soll komplexes Verhalten einfach und überschaubar abbildbar sein, dass dann in der Simulation getestet werden kann.</div><div class="clear"></div>
|
|
</div>
|
|
<hr/>
|
|
Output produced by TeXtidote v0.8.2, © 2018-2020 Sylvain Hallé - All rights reserved.<br/>
|
|
See the <a href="https://sylvainhalle.github.io/textidote">TeXtidote website</a> for more information.
|
|
</body>
|
|
</html>
|