﻿<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Community%3AScience%2FRobotics%2FMiddleware</id>
	<title>Community:Science/Robotics/Middleware - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.blender.jp/index.php?action=history&amp;feed=atom&amp;title=Community%3AScience%2FRobotics%2FMiddleware"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Community:Science/Robotics/Middleware&amp;action=history"/>
	<updated>2026-04-21T18:35:59Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Community:Science/Robotics/Middleware&amp;diff=87599&amp;oldid=prev</id>
		<title>Yamyam: 1版 をインポートしました</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Community:Science/Robotics/Middleware&amp;diff=87599&amp;oldid=prev"/>
		<updated>2018-06-28T18:41:25Z</updated>

		<summary type="html">&lt;p&gt;1版 をインポートしました&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ja&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← 古い版&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;2018年6月28日 (木) 18:41時点における版&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ja&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(相違点なし)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Yamyam</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Community:Science/Robotics/Middleware&amp;diff=87598&amp;oldid=prev</id>
		<title>wiki&gt;Mindrones: moved Robotics/Middleware to Community:Science/Robotics/Middleware: moving under Community:Science (&quot;Community&quot; being a new namespace)</title>
		<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Community:Science/Robotics/Middleware&amp;diff=87598&amp;oldid=prev"/>
		<updated>2011-11-02T19:51:47Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/Robotics/Middleware&quot; class=&quot;mw-redirect&quot; title=&quot;Robotics/Middleware&quot;&gt;Robotics/Middleware&lt;/a&gt; to &lt;a href=&quot;/Community:Science/Robotics/Middleware&quot; title=&quot;Community:Science/Robotics/Middleware&quot;&gt;Community:Science/Robotics/Middleware&lt;/a&gt;: moving under Community:Science (&amp;quot;Community&amp;quot; being a new namespace)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Blender and middleware integration =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== List of middleware software ==&lt;br /&gt;
&lt;br /&gt;
* [http://softs.laas.fr/openrobots/wiki/ OpenRobots], the LAAS robotics software projects, that, themselves want to use other middlewares.&lt;br /&gt;
* [http://eris.liralab.it/yarp/ YARP] (MIT/IIT ''Yet Another Robotic Platform'')&lt;br /&gt;
* [http://pr.willowgarage.com/wiki/ROS ROS], Willow Garage's ''Robotic Operating System''.&lt;br /&gt;
* [http://www.cs.unc.edu/Research/vrpn/ VRPN] (''Virtual Reality Peripherical Network'')&lt;br /&gt;
* [http://opensoundcontrol.org/introduction-osc OSC], ''Open Sound Control'', that came out of the music world but seems to have grown far beyond that, e.g., Nick Porcaro successfully interfaced it with Blender. ('''Reference/link needed!''')&lt;br /&gt;
* [http://zeroc.com ICE] General ORB with many features and bindings to most of the popular programming languages. Works cross-platform and cross-language.&lt;br /&gt;
* [http://www.blender.org/download/get-blender/verse-blender/ Verse], probably not a good idea to invest efforts in: &lt;br /&gt;
**Pros: already integrated with Blender&lt;br /&gt;
**Cons:&lt;br /&gt;
*** No good armature support&lt;br /&gt;
*** No support in Game Mode&lt;br /&gt;
*** Not been worked on in a long time (like 2006)&lt;br /&gt;
&lt;br /&gt;
==How to connect Blender with an external programme?==&lt;br /&gt;
=== Via a Python script in a Game Engine ''controller''===&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;always&amp;quot; sensor triffers a controller, whose Python script writes or reads data to/from the middleware. Some initialization/finalization can be done through &amp;quot;runOnce&amp;quot;/&amp;quot;quit&amp;quot; sensors. For an example, see the [[Robotics:Middleware/YARP|YARP]] page.&lt;br /&gt;
&lt;br /&gt;
=== Via new C implementations of the Game Engine ''sensors/actuators'' ===&lt;br /&gt;
Conceptually, ''sensors'' and ''actuators'' are the natural objects that interact with the real world. However, Blender does currently not allow Python scripts in its Game Engine sensors or actuators. This would require a C/C++ development effort to implement custom sensors/actuators that can read/write from a middleware &amp;quot;socket&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Some background on the [[Robotics:Sensors, Controllers, Actuators architecture in the GameEngine]] by Benoit Bolsee.&lt;br /&gt;
&lt;br /&gt;
==Architectural issues==&lt;br /&gt;
All ''implementations'' of the first three [[Robotics:Contents|use cases]] of Blender in robotics (''visualisation'', ''simulation'', and ''emulation'') use the same architecture: a Python script in a ''controller'' of the Game Engine, that runs the communication middleware. This approach means that, for each middleware that someone needs to use, the Python code has to be extended, with a middleware-specific piece of code. Nevertheless, the functionality for which middlewares are used is almost always the same, and only the implementation details (choice of ''message'' data structure, policy of communication, names of objects that are being communicated, etc.) differ. This situation typically emerges in organically growing projects, and leads (potentially, but not necessarily) to a lot of code duplication and to a large maintenance overhead.&lt;br /&gt;
So, in principle, one could come up with the following &amp;quot;HLA&amp;quot; architecture:&lt;br /&gt;
&lt;br /&gt;
[[File:Decoupled-architecture-for-middleware.png|400px]]&lt;br /&gt;
&lt;br /&gt;
This [http://en.wikipedia.org/wiki/High_Level_Architecture_%28simulation%29 HLA] approach is more flexible, and has (at least in theory) more potential in large-scale integrated system, or in an application where different simulation/emulation components ''have'' to be tightly synchronized.&lt;br /&gt;
One necessary (but not sufficient) condition for Blender (or any other software component) to be a full HLA component, it has to allow to let its own &amp;quot;clock&amp;quot; (i.e., the &amp;quot;Frames Per Second&amp;quot;, fps) be triggered by the HLA system ''Coordinator''. That is possible, in principle, via a Python script in a Game Engine ''controller'' that blocks on a ''socket'' connection with the ''Coordinator''.&lt;br /&gt;
A second necessary condition is that Blender has to be executed ''asynchronously'' with the middleware process, since all components in an HLA architecture must be mutually asynchronous, and their activities are only synchronized through (asynchronous) communciations with the HLA ''Coordinator'' (not shown in the image).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;middleware-neutral mediator&amp;quot; is a programme running outside of Blender, and to which the Blender Python script exchanges messages, containing the information that Blender needs from the outside world and/or provides to the outside world. Such a mediator would contain all the above-mentioned middleware-specific translation code, using a &amp;quot;standardized&amp;quot; data format to communicate with Blender. To make such &amp;quot;standardized&amp;quot; data format is a job that is not only relevant to the whole robotics community, but probably should also be done there, and not in this relatively small Blender-centric project...&lt;/div&gt;</summary>
		<author><name>wiki&gt;Mindrones</name></author>
		
	</entry>
</feed>