﻿<?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%2FSimulatorSoftwareArchitecture</id>
	<title>Community:Science/Robotics/SimulatorSoftwareArchitecture - 版の履歴</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%2FSimulatorSoftwareArchitecture"/>
	<link rel="alternate" type="text/html" href="https://wiki.blender.jp/index.php?title=Community:Science/Robotics/SimulatorSoftwareArchitecture&amp;action=history"/>
	<updated>2026-08-12T02:33:06Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.blender.jp/index.php?title=Community:Science/Robotics/SimulatorSoftwareArchitecture&amp;diff=90543&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/SimulatorSoftwareArchitecture&amp;diff=90543&amp;oldid=prev"/>
		<updated>2018-06-28T18:43:19Z</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:43時点における版&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/SimulatorSoftwareArchitecture&amp;diff=90542&amp;oldid=prev</id>
		<title>wiki&gt;Mindrones: moved Robotics/SimulatorSoftwareArchitecture to Community:Science/Robotics/SimulatorSoftwareArchitecture: 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/SimulatorSoftwareArchitecture&amp;diff=90542&amp;oldid=prev"/>
		<updated>2011-11-02T19:51:48Z</updated>

		<summary type="html">&lt;p&gt;moved &lt;a href=&quot;/Robotics/SimulatorSoftwareArchitecture&quot; class=&quot;mw-redirect&quot; title=&quot;Robotics/SimulatorSoftwareArchitecture&quot;&gt;Robotics/SimulatorSoftwareArchitecture&lt;/a&gt; to &lt;a href=&quot;/Community:Science/Robotics/SimulatorSoftwareArchitecture&quot; title=&quot;Community:Science/Robotics/SimulatorSoftwareArchitecture&quot;&gt;Community:Science/Robotics/SimulatorSoftwareArchitecture&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;= OpenRobot Simulator: software architecture =&lt;br /&gt;
&lt;br /&gt;
== Code generation: Processing of the components at run-time ==&lt;br /&gt;
&lt;br /&gt;
The envisioned process follows these steps:&lt;br /&gt;
# Building of the simulation scenario by drag&amp;amp;drop of [[Robotics:ComponentsFileFormat | components]] and linking of models (cf [[Robotics:ComponentsFileFormat#An_example:_the_GPS_component | GPS example]]).&lt;br /&gt;
# &amp;quot;Baking&amp;quot; of the simulation: once the scene is ready, we bake it. The user decide which middleware he wants to use, and the simulator iterate through all existing components in the scene, and call the Genom (&amp;quot;Module GENeratOr&amp;quot;, see below) application to &amp;quot;instantiate&amp;quot; each component with the middleware. The output of this step is a Python script per component (or maybe a single big Python script - not decided yet).&lt;br /&gt;
# The GameEngine is started, with each component associated with its generated execution script. At each iteration of the GameEngine main loop, each script for each component is called and reads or outputs what it need, according what was initially declared in the description file (cf [[Robotics:ComponentsGenomDescription | component description file]]).&lt;br /&gt;
&lt;br /&gt;
== Templates ==&lt;br /&gt;
&lt;br /&gt;
Since we want the simulator to interact with the rest of the world without making any assumption on which protocol or transport the simulator users will use, we describe the components behaviour through its formal description, the .gen file.&lt;br /&gt;
&lt;br /&gt;
But we need at some point to convert this description into an actual implementation relying on actual protocols and transports (we'll call it simply &amp;quot;communication middlewares&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Genom makes this transformation thanks templates. A template holds the structure of a module for a pair (programming language, middleware) (for instance, the structure of a ROS module coded in Java, the structure of a OpenRTM module coded in C, the structure of a YARP module coded in Python, etc.).&lt;br /&gt;
&lt;br /&gt;
This diagram summarizes the whole process:&lt;br /&gt;
[[File:g3nom-archi.png|center|400px|Overview of the Genom3 processing architecture]]&lt;br /&gt;
&lt;br /&gt;
Below a '''pseudo''' example of a YARP/Python template: each statement within &amp;lt; &amp;gt; is interpreted by the module generator and replaced with data coming from both the .gen file and the codels.&lt;br /&gt;
&lt;br /&gt;
 Pseudo_YARP_Python_template&lt;br /&gt;
 ---------------------------&lt;br /&gt;
 &lt;br /&gt;
 import yarp&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;? for p in ports&amp;gt;&lt;br /&gt;
    self._yarpPorts[&amp;quot;&amp;lt;? echo p.name&amp;gt;&amp;quot;] = yarp.BufferedPortBottle()&lt;br /&gt;
 &lt;br /&gt;
    self._yarpPorts[&amp;quot;&amp;lt;? echo p.name&amp;gt;&amp;quot;].open(&amp;lt;? echo p.name&amp;gt;)&lt;br /&gt;
 &lt;br /&gt;
    def &amp;lt;? echo p.name&amp;gt;_execution():&lt;br /&gt;
       &amp;lt;? echo p.codel&amp;gt;&lt;br /&gt;
 &amp;lt;? end for&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...You can understand it a bit like HTML + PHP programming.&lt;br /&gt;
&lt;br /&gt;
This example doesn't reflect, however, the actual syntax of template (which relies on more powerful, TCL-based, statements).&lt;br /&gt;
&lt;br /&gt;
In the case of the simulation in Blender, templates must generate Python code (since it's what is executed in the GameEngine at runtime). So, in principle, one just needs to write a new &amp;quot;Python_myMiddleware&amp;quot; template for the simulator to support a new middleware (assuming, of course, that the middleware can be adressed in Python, but it's pretty easy to generate Python bindings for most C/C++ code).&lt;/div&gt;</summary>
		<author><name>wiki&gt;Mindrones</name></author>
		
	</entry>
</feed>