
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.robotika.sk/robowiki/index.php?action=history&amp;feed=atom&amp;title=Tatrabot_learns</id>
		<title>Tatrabot learns - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.robotika.sk/robowiki/index.php?action=history&amp;feed=atom&amp;title=Tatrabot_learns"/>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Tatrabot_learns&amp;action=history"/>
		<updated>2026-04-13T12:55:57Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.robotika.sk/robowiki/index.php?title=Tatrabot_learns&amp;diff=8672&amp;oldid=prev</id>
		<title>Robot: Created page with &quot;We would like to make the Tatrabot learn.  &lt;youtube&gt;igidgijd&lt;/youtube&gt;   &lt;syntaxhighlight lang=&quot;C&quot;&gt;  #include &lt;stdlib.h&gt; #include &quot;tatrabot.h&quot; #include &quot;demo.h&quot;  int ml[10]; i...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.robotika.sk/robowiki/index.php?title=Tatrabot_learns&amp;diff=8672&amp;oldid=prev"/>
				<updated>2019-04-08T12:34:19Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;We would like to make the Tatrabot learn.  &amp;lt;youtube&amp;gt;igidgijd&amp;lt;/youtube&amp;gt;   &amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;  #include &amp;lt;stdlib.h&amp;gt; #include &amp;quot;tatrabot.h&amp;quot; #include &amp;quot;demo.h&amp;quot;  int ml[10]; i...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;We would like to make the Tatrabot learn.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube&amp;gt;igidgijd&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;C&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;quot;tatrabot.h&amp;quot;&lt;br /&gt;
#include &amp;quot;demo.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int ml[10];&lt;br /&gt;
int mr[10];&lt;br /&gt;
int mt[10];&lt;br /&gt;
&lt;br /&gt;
void generate_movement(void)&lt;br /&gt;
{&lt;br /&gt;
  for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
  {&lt;br /&gt;
    ml[i] = rand() % 20000 - 10000;&lt;br /&gt;
    mr[i] = rand() % 20000 - 10000;&lt;br /&gt;
    mt[i] = rand() % 900 + 100;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void demonstrate_movement(void)&lt;br /&gt;
{&lt;br /&gt;
  for (int i = 0; i &amp;lt; 10; i++)&lt;br /&gt;
  {&lt;br /&gt;
    setMotor(1, ml[i]);&lt;br /&gt;
    setMotor(2, mr[i]);&lt;br /&gt;
    chThdSleepMilliseconds(mt[i]);&lt;br /&gt;
  }&lt;br /&gt;
  setMotor(3, 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int mind, oldl, oldr, oldt;&lt;br /&gt;
&lt;br /&gt;
void generate_modification(void)&lt;br /&gt;
{&lt;br /&gt;
  mind = rand() % 10;&lt;br /&gt;
  oldl = ml[mind];&lt;br /&gt;
  oldr = mr[mind];&lt;br /&gt;
  oldt = mt[mind];&lt;br /&gt;
  ml[mind] = rand() % 20000 - 10000;&lt;br /&gt;
  mr[mind] = rand() % 20000 - 10000;&lt;br /&gt;
  mt[mind] = rand() % 900 + 100;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int acquire_feedback(void)&lt;br /&gt;
{&lt;br /&gt;
  int positive_answer, negative_answer, finish_answer;&lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    senseTemperatureAndPressure(0);&lt;br /&gt;
    positive_answer = (temperature &amp;gt; 280);&lt;br /&gt;
    negative_answer = (distance &amp;gt; 1500);&lt;br /&gt;
    finish_answer = senseButton(3);&lt;br /&gt;
&lt;br /&gt;
    sound(2000);&lt;br /&gt;
    chThdSleepMilliseconds(30);&lt;br /&gt;
    nosound();&lt;br /&gt;
    chThdSleepMilliseconds(50);&lt;br /&gt;
  } while (!positive_answer &amp;amp;&amp;amp; !negative_answer &amp;amp;&amp;amp; !finish_answer);&lt;br /&gt;
&lt;br /&gt;
  if (positive_answer) return 1;&lt;br /&gt;
  if (negative_answer) return 0;&lt;br /&gt;
  return -1;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void revert_modification(void)&lt;br /&gt;
{&lt;br /&gt;
  ml[mind] = oldl;&lt;br /&gt;
  mr[mind] = oldr;&lt;br /&gt;
  mt[mind] = oldt;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void beep(void)&lt;br /&gt;
{&lt;br /&gt;
  sound(440);&lt;br /&gt;
  chThdSleepMilliseconds(200);&lt;br /&gt;
  nosound();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void learn (void)&lt;br /&gt;
{&lt;br /&gt;
  int feedback;&lt;br /&gt;
  generate_movement();&lt;br /&gt;
  demonstrate_movement();&lt;br /&gt;
  beep();&lt;br /&gt;
  chThdSleepMilliseconds(7000);&lt;br /&gt;
  do&lt;br /&gt;
  {&lt;br /&gt;
    generate_modification();&lt;br /&gt;
    demonstrate_movement();&lt;br /&gt;
&lt;br /&gt;
    feedback = acquire_feedback();&lt;br /&gt;
    if (feedback == 0) revert_modification();&lt;br /&gt;
  } while (feedback &amp;gt;= 0);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
  tatrabotInit();&lt;br /&gt;
  srand(distance);&lt;br /&gt;
&lt;br /&gt;
  chprintf(PC, &amp;quot; Hello  hello, this is Tatrabot speaking...\n\r&amp;quot;);&lt;br /&gt;
  chprintf(BT, &amp;quot; Hello Tatrabot on BT!\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  demo();&lt;br /&gt;
  learn();&lt;br /&gt;
&lt;br /&gt;
  while(true)&lt;br /&gt;
  {&lt;br /&gt;
    setLED(0, 1);&lt;br /&gt;
    chThdSleepMilliseconds(1000);&lt;br /&gt;
    setLED(0, 0);&lt;br /&gt;
    chThdSleepMilliseconds(1000);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robot</name></author>	</entry>

	</feed>