Skip to content

Commit

Permalink
deploy: 3c3cb1e
Browse files Browse the repository at this point in the history
  • Loading branch information
MatthijsBurgh committed Jul 11, 2024
0 parents commit e4c8f8c
Show file tree
Hide file tree
Showing 50,998 changed files with 4,157,443 additions and 0 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
_site
.sass-cache
22 changes: 22 additions & 0 deletions _config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Site settings
title: TU/e Robotics
email: [email protected]
website: http://www.techunited.nl/en/
site: http://www.techunited.nl/en/
description: > # this means to ignore newlines until "baseurl:"
Robotics group of the TU/e (University of Technology Eindhoven).
baseurl: "" # the subpath of your site, e.g. /blog/
url: "" # the base hostname & protocol for your site
twitter_username: TechUnited
github_username: tue-robotics

# Build settings
markdown: kramdown

include:
- _modules
- _static
- _sources

plugins:
- jekyll-redirect-from
55 changes: 55 additions & 0 deletions _includes/footer.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<footer class="site-footer">

<div class="wrapper">

<h2 class="footer-heading">{{ site.title }}</h2>

<div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li>{{ site.title }}</li>
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
</ul>
</div>

<div class="footer-col footer-col-2">
<ul class="social-media-list">
{% if site.github_username %}
<li>
<a href="https://github.com/{{ site.github_username }}">
<span class="icon icon--github">
<svg viewBox="0 0 16 16">
<path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/>
</svg>
</span>

<span class="username">{{ site.github_username }}</span>
</a>
</li>
{% endif %}

{% if site.twitter_username %}
<li>
<a href="https://twitter.com/{{ site.twitter_username }}">
<span class="icon icon--twitter">
<svg viewBox="0 0 16 16">
<path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809
c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/>
</svg>
</span>

<span class="username">{{ site.twitter_username }}</span>
</a>
</li>
{% endif %}
</ul>
</div>

<div class="footer-col footer-col-3">
<p class="text">{{ site.description }}</p>
</div>
</div>

</div>

</footer>
12 changes: 12 additions & 0 deletions _includes/head.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width initial-scale=1">

<title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
<meta name="description" content="{% if page.excerpt %}{{ page.excerpt | strip_html | strip_newlines | truncate: 160 }}{% else %}{{ site.description }}{% endif %}">

<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
<link rel="alternate" type="application/atom+xml" title="{{ site.title }}" href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" />
</head>
27 changes: 27 additions & 0 deletions _includes/header.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<header class="site-header">

<div class="wrapper">

<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>

<nav class="site-nav">
<a href="#" class="menu-icon">
<svg viewBox="0 0 18 15">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</a>

<div class="trigger">
{% for page in site.pages %}
{% if page.title %}
<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a>
{% endif %}
{% endfor %}
</div>
</nav>

</div>

</header>
20 changes: 20 additions & 0 deletions _layouts/default.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>

{% include head.html %}

<body>

{% include header.html %}

<div class="page-content">
<div class="wrapper">
{{ content }}
</div>
</div>

{% include footer.html %}

</body>

</html>
14 changes: 14 additions & 0 deletions _layouts/page.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
layout: default
---
<div class="post">

<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
</header>

<article class="post-content">
{{ content }}
</article>

</div>
15 changes: 15 additions & 0 deletions _layouts/post.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
---
layout: default
---
<div class="post">

<header class="post-header">
<h1 class="post-title">{{ page.title }}</h1>
<p class="post-meta">{{ page.date | date: "%b %-d, %Y" }}{% if page.author %} • {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
</header>

<article class="post-content">
{{ content }}
</article>

</div>
12 changes: 12 additions & 0 deletions _posts/2016-01-06-site-online.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
layout: post
title: "Site online"
date: 2016-01-06 17:52:06
---
Website [http://tue-robotics.github.io/](http://tue-robotics.github.io/) online where we can put technical posts, overviews or pages. Also take a look at the [Wiki](https://github.com/tue-robotics/tue-robotics.github.io/wiki)

You can simply add a page the root of [this repository](https://github.com/tue-robotics/tue-robotics.github.io) (see example [software-architecture.html](https://github.com/tue-robotics/tue-robotics.github.io/blob/master/software-architecture.html)) or add a post to the [_posts directory](https://github.com/tue-robotics/tue-robotics.github.io/tree/master/_posts). Pages can be written in markdown or html and must have a .yaml formatter. For more information, check out the following page: [http://jekyllrb.com/docs/home/](http://jekyllrb.com/docs/home/).

Feel free to add new pages / posts.

-Rein
61 changes: 61 additions & 0 deletions _posts/2018-09-25-from-ui-to-motors.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
---
layout: post
title: "From UI to motors"
date: 2018-09-25 21:55:00
---

How do commands given to the robot get translated into motor commands?

There are several layers to this, as you can see in
[software-architecture](https://tue-robotics.github.io/software-architecture).
When you use [Telegram](https://telegram.org/) to chat with the robot,
your text command first gets sent to the servers of Telegram,
which passes the message on to our [telegram_ros](https://github.com/tue-robotics/telegram_ros) node. That node implements a [Telegram Bot](https://core.telegram.org/bots)

Instead of Telegram, there is also a speech-to-text engine on our robots, that take in audio and try to convert that to text.
On Amigo, we use [dragonfly_speech_recognition](https://github.com/tue-robotics/dragonfly_speech_recognition).
This also uses the grammar (as describer below) to aid in speech recognition.
The grammar restricts what the STT can hear and thus the result is always something the robot can at least parse.

Because we want to be able to both talk to the robot and text with it, each taing turns or even falling back from one modality to another, we use the [HMI](https://github.com/tue-robotics/hmi).
The Human Machine Interface provides a client that the GPSR's conversation_engine uses. This client is connected to several servers that implement some way for the robot to ask the user a question.
This can thus be voice (via STT) or text (via Telegram or Slack) or some mock interface for testing.

The text is eventually read by the
[conversation_engine](https://github.com/tue-robotics/conversation_engine).
This interprets the command using the [grammar_parser](https://github.com/tue-robotics/grammar_parser).
The result of the parsing is an action description that gets sent to the [action_server](https://github.com/tue-robotics/action_server).

The action_server performs some action planning to execute the desired command, which results either in
- A sequence of actions
- An error. The most interesting one being that the command is underspecified.

In the last case, the conversion_engine talks with the user to fill in more details of the command, also using Telegram or via speech.

Once a sequence of actions is defined, it gets executed by the action_server, which also reports on the progress of the action.

The actions themselves are implemented using the [robot_smach_states](https://github.com/tue-robotics/tue_robocup/tree/master/robot_smach_states).
This is a library of various state machines that for example provide Grab, NavigateTo..., Place, LearnOperator actions.
Each of those accepts a robot-parameter, which is an instance of a Robot-subclass from the [robot_skills](https://github.com/tue-robotics/tue_robocup/tree/master/robot_skills)-package, for example Amigo, Sergio and Hero.
When the state machines execute, they call methods of RobotParts (eg. a Base, Arm, Head, Worldmodel etc),
which in turn tap into the ROS [Action Servers](http://wiki.ros.org/actionlib#Client-Server_Interaction), [Services](http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams#ROS_Services) and [Topics](http://wiki.ros.org/ROS/Tutorials/UnderstandingTopics) of the robot.

In short, the robot_skills provide an abstract, mostly ROS-independent interface to the actual robot.
This way, we don't need to instantiate a lot of clients to ROS actions and services etc in the actual in the higher layers.

A major component in our robots is the worldmodel, called [ED](https://github.com/tue-robotics/ed) (Environment Descriptor).
We use this to get a symbolic representation of the world. ED Keeps track of objects and uses various plugins to e.g. recognize objects.
ED, through the [ed_localization](https://github.com/tue-robotics/ed_localization.git)-plugin, also provides a maps for the robot to localize itself (over a map-topic like the standard ROS map server) and various other tasks.

There are several action_servers ont he robot, for example for navigation.
ROS robots typoically use move_base but we have a more advanced version called [cb_base_navigation](https://github.com/tue-robotics/cb_base_navigation), which does Constraint Based navigation.
The advantage of that is that we can move to an area (defined by some mathematically described constraints) rather than a single Pose.

Another action-server is provided by [MoveIt](https://moveit.ros.org/) to command the arms to various joint goals and cartesian goals.

These planners talk with the hardware interface components, that use EtherCAT to interface with the motors and encoders to send references and read back what the various joint really did.

That is all published on the joint_states-topic. This lists, for each joint in the robot, what position it is in, what velocity it is moving at and what effort (in N or Nm) that requires. Together with the robot's URDF model, this is used by the [robot_state_publisher](https://wiki.ros.org/action/fullsearch/urdf/Tutorials/Using%20urdf%20with%20robot_state_publisher) to publish the full state of the robot.
The robot_state_publisher publishes [TF-frames](http://wiki.ros.org/tf) so we can see where different parts of the robot are and so that relative positions can be calculated etc.

The hardware interface components also contain various controllers and a supervisor.
Loading

0 comments on commit e4c8f8c

Please sign in to comment.