<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-gb">
<link rel="self" type="application/atom+xml" href="http://forum.robosavvy.com/feed.php?f=4&amp;t=2433" />

<title>RoboSavvy Forum</title>
<subtitle>Robosavvy Forum: The largest online community of Humanoid Robot Builders</subtitle>
<link href="http://forum.robosavvy.com/index.php" />
<updated>2008-05-19T15:07:16+01:00</updated>

<author><name><![CDATA[RoboSavvy Forum]]></name></author>
<id>http://forum.robosavvy.com/feed.php?f=4&amp;t=2433</id>
<entry>
<author><name><![CDATA[tum]]></name></author>
<updated>2008-05-19T15:07:16+01:00</updated>
<published>2008-05-19T15:07:16+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15901#p15901</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15901#p15901"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15901#p15901"><![CDATA[
<blockquote><div><cite>roboTT wrote:</cite><br />Fixed.<br /><br /><br />Correct flow :<br /><br /> SerialPutc(hCom,0xEB);SerialGetc(hCom);//sync move<br /> SerialPutc(hCom,0x06);SerialGetc(hCom);// start from servo no<br /> SerialPutc(hCom,0x02);SerialGetc(hCom);// how many servoes ?<br /> SerialPutc(hCom,0x64);SerialGetc(hCom);// servo1 pos<br />SerialPutc(hCom,0x64);SerialGetc(hCom);// servox pos<br /><br /><br />So, seems like no PTP in byte2.<br /><br />Thanks i-Bot.<br /></div></blockquote><br /><br /><br />For a minute there I thought you were programming in C for the AVR128 and then noticed the GetTickCount <img src="http://forum.robosavvy.com/images/smilies/icon_wink.gif" alt=";)" title="Wink" /><br /><br />Are you using the comms protocol the robobasic IDE uses to communicate with the robonova servos individually? How are you finding the speed?  Are you able to get realtime movements and feedback across the serial port?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=648">tum</a> — Mon May 19, 2008 3:07 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2008-04-20T21:02:09+01:00</updated>
<published>2008-04-20T21:02:09+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15430#p15430</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15430#p15430"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15430#p15430"><![CDATA[
Fixed.<br /><br /><br />Correct flow :<br /><br /> SerialPutc(hCom,0xEB);SerialGetc(hCom);//sync move<br /> SerialPutc(hCom,0x06);SerialGetc(hCom);// start from servo no<br /> SerialPutc(hCom,0x02);SerialGetc(hCom);// how many servoes ?<br /> SerialPutc(hCom,0x64);SerialGetc(hCom);// servo1 pos<br />SerialPutc(hCom,0x64);SerialGetc(hCom);// servox pos<br /><br /><br />So, seems like no PTP in byte2.<br /><br />Thanks i-Bot.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Sun Apr 20, 2008 9:02 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[i-Bot]]></name></author>
<updated>2008-04-20T18:12:03+01:00</updated>
<published>2008-04-20T18:12:03+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15426#p15426</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15426#p15426"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15426#p15426"><![CDATA[
The pdf is not correct for this move. Check out the thread on synchro servo move. The format is EB, first servo number, count of servos to move, servo data...<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=159">i-Bot</a> — Sun Apr 20, 2008 6:12 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2008-04-20T12:35:18+01:00</updated>
<published>2008-04-20T12:35:18+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15424#p15424</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15424#p15424"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15424#p15424"><![CDATA[
Still challenging the 0xEB..<br /><br />Here is the snippet from the Port sniffer set to listen on COM1:<br /><br />I send the 0xEB :<br /><br /><blockquote class="uncited"><div><br />Port opened by process &quot;rn1.exe&quot; (PID: 3684)<br /><br />Request: 4/20/2008 13:28:03.65564<br /><br /> EB                                                ë               <br /><br />Answer: 4/20/2008 13:28:03.68664 (+0.0313 seconds)<br /><br /> EB                                                ë               <br /><br />Request: 4/20/2008 13:28:03.68664 (+0.0000 seconds)<br /><br /> 01                                                .               <br /><br />Answer: 4/20/2008 13:28:03.70164 (+0.0156 seconds)<br /><br /> 01                                                .               <br /><br />Request: 4/20/2008 13:28:03.73364 (+0.0313 seconds)<br /><br /> 06                                                .               <br /><br />Answer: 4/20/2008 13:28:03.74864 (+0.0156 seconds)<br /><br /> 06                                                .               <br /><br />Request: 4/20/2008 13:28:03.74864 (+0.0000 seconds)<br /><br /> 01                                                .               <br /><br />Answer: 4/20/2008 13:28:03.78064 (+0.0313 seconds)<br /><br /> 01                                                .               <br /><br />Request: 4/20/2008 13:28:03.78064 (+0.0000 seconds)<br /><br /> 64                                                d               <br /><br />Answer: 4/20/2008 13:28:03.79564 (+0.0156 seconds)<br /><br /> 64<br /></div></blockquote><br /><br /><br />So i am telling the controller that :<br /><br />- i use 0XEB<br />- i use PTP 0x01<br />- i want to controll servoes from 0x06<br />- i want to controll 1 servo from 0x06 (0x01)<br />- i want to move the selected servo to 0x64<br /><br /><br />Well, seems like board is taking it allright.<br /><br />But hey!<br />Robonova is not moving servo 0x06 to position 0x64.<br />Robonova does some random moves on few servoes at once...<br /><br />Am i missing something, or the Protocol described in PDF is not correct ?:/<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Sun Apr 20, 2008 12:35 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2008-04-19T15:45:36+01:00</updated>
<published>2008-04-19T15:45:36+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15413#p15413</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15413#p15413"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15413#p15413"><![CDATA[
Ok, went through totally separate implementation to see if 0xEB does all the magic thing, and using this - i would be able to code MOVE24, MOVEG6A and others.<br /><br />  Now, within ROBOBASIC in the beggining i do:<br /><br /><blockquote class="uncited"><div><br />PTP SETON <br />PTP ALLON<br /><br />'== motor diretion setting ======================<br />DIR G6A,1,0,0,1,0,0<br />DIR G6B,1,1,1,1,1,1<br />DIR G6C,0,0,0,0,0,0<br />DIR G6D,0,1,1,0,1,0<br /><br />'== motor start position read ===================<br />GETMOTORSET G6A,1,1,1,1,1,0<br />GETMOTORSET G6B,1,1,1,0,0,0<br />GETMOTORSET G6C,1,1,1,0,0,0<br />GETMOTORSET G6D,1,1,1,1,1,0<br />SPEED 5<br />MOTOR G24<br /></div></blockquote><br /><br />What is always to be used in my project.<br /><br />As all my motors are on, and the speed is set - i would like to perform a movement of servoes 7,8 to position 0x64 - which stands for the 'middle'.<br /><br /><br />Here goes the code:<br /><br /><br /><dl class="codebox"><dt>Code: </dt><dd><code>   <br />SerialPutc&#40;hCom,0xEB&#41;;A=SerialGetc&#40;hCom&#41;;   //SYNC MOVE<br />SerialPutc&#40;hCom,0x01&#41;;a=SerialGetc&#40;hCom&#41;;    //PTP<br /> <br />SerialPutc&#40;hCom,0x07&#41;;b=SerialGetc&#40;hCom&#41;;   //Servo1<br />SerialPutc&#40;hCom,0x08&#41;;c=SerialGetc&#40;hCom&#41;;    //Servo2<br /> <br />SerialPutc&#40;hCom,0x64&#41;;d=SerialGetc&#40;hCom&#41;;    //Desire for Servo1<br />SerialPutc&#40;hCom,0x64&#41;;e=SerialGetc&#40;hCom&#41;;    //Desire for Servo2<br /> </code></dd></dl><br /><br /><br /><br />And what gets me dizzy here, is that on the 3rd/4th byte i put into controller values of the servos that i would like to setup.<br /><br />Next two bytes are the desired positions for those two servos.<br /><br />And,<br />compiling,<br />run..<br /><br />And?<br /><br />And the trouble is, that even if board echoes back (<br />SerialGetc(hCom);) the values correctly - robonova is NOT performing moves on the 7,8 servo - bot moves group A.<br /><br /><br /><br />Now, due to the fact that i promised myself to code robonova1 with C, and that it is now more than just a project and slightly becomes a fight with myself - it is crucial for me to fix it up, and get this piece of servos running correctly.<br /><br /><br />Ok, so ideas:<br /><br />- I think there should be some Sleep implemented, but the question is how often, how long ? Maybe after each sent character / received character i need to sleep for some ms ?<br /><br />- If above is not the trick, then what? i am thinking of a command WAIT in robobasic - it has to WAIT for smth, for some bytes receieved from boards saying &quot;Ok, i am ready to proceed futher ?&quot; - is this a 0x00 byte sent via board?<br /><br /><br /><br />Having all that in mind, i know that i am closer than futher - but there is still some piece missing...<br /><br /><br />i-Bot, pls.. <img src="http://forum.robosavvy.com/images/smilies/icon_wink.gif" alt=";)" title="Wink" /><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Sat Apr 19, 2008 3:45 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2008-04-19T10:03:52+01:00</updated>
<published>2008-04-19T10:03:52+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15412#p15412</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15412#p15412"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15412#p15412"><![CDATA[
Urgh!! <br /><br />i did not read that correctly..<br /><br />It is clear that we set the servoes to be moved and then we set their desired positions in 0xEB.<br /><br />Sorry i-Bot, my fault <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":)" title="Smile" /><br /><br />I'll work on it, and drop some results.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Sat Apr 19, 2008 10:03 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2008-04-16T15:01:50+01:00</updated>
<published>2008-04-16T15:01:50+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15373#p15373</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15373#p15373"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15373#p15373"><![CDATA[
i-Bot,<br /><br />there is a separate thread continously receiving data from the Board.<br /><br />It does the:<br /><br />pseudocode<br /><br /><dl class="codebox"><dt>Code: </dt><dd><code>while&#40;1&#41;&#123;<br /><br /><br />a=receivedatafromcom&#40;&#41;;<br /><br />switch&#40;a&#41;&#123;<br /><br />   case 0xCOMMANDRESPONSE1:<br />   receive_all_bytes_left&#40;&#41;;<br />   break;<br /><br /><br />  case 0xCOMMANDRESPONSE2:<br />receive_all_bytes_left&#40;&#41;;<br /> break<br /><br />&#125;<br /><br />&#125;</code></dd></dl><br /><br /><br />Btw,<br /><br />isn't the EB command requiring FIRST_SERVO LAST_SERVO arguments ?<br /><br /><blockquote class="uncited"><div><br />SYNC_MOVE 0xEB Writes a position value to a C3024<br />Servo Synchronous motion. PTP<br />should be on<br /></div></blockquote><br /><br /><br /><blockquote class="uncited"><div><br />Byte 1 <br />0xEB 0xEB Command and echo<br /><br />Byte 2 <br />PTP ( 1 byte) On= 1, Off = 0 PTP ( 1 byte) On = 1, Off = 0 PTP value and<br />echo<br /><br />Byte 3 <br />First servo Number (1 byte)<br /><br />Byte 4 <br />Last servo Number (1 byte)<br /><br />Byte 5 <br />to end Repeats for number of servos (last-first)<br /></div></blockquote><br /><br /><br /><br />So having this implemented,<br />how would you use that to move servo 0 and 18 to a one position?<br /><br />i-Bot - the STOP mode, what is this setting?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Wed Apr 16, 2008 3:01 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[i-Bot]]></name></author>
<updated>2008-04-16T11:56:11+01:00</updated>
<published>2008-04-16T11:56:11+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15370#p15370</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15370#p15370"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15370#p15370"><![CDATA[
The E6 command you are using is the equivalent of the RoboBasic SERVO instruction. It is not a point to point move, so not equivalent to MOVE G??.<br /><br />The EB command is the MOVE equivalent. This also has some limitations due to the slow communications link, but is the correct basis for group moves.<br /><br />Is your C3024 interpreter in STOP mode ?. This should give more time for the serial comms. You might also up the serial speed to 115K.<br /><br />As described in the other thread the start may be a bit ragged, but the point to point should make them all stop together.<br /><br />It may be we have to patch in a new command, which does not update the desired servo positions until the entire data is received.<br /><br />From your code it is not clear how you wait for a response before sending the next character. I see you sent characters one after each other, which can overrun the limited (3 bytes) buffer in the C3024. You will need to follow the protocol if you send longer commands such as a MOVE G24.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=159">i-Bot</a> — Wed Apr 16, 2008 11:56 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2008-04-15T17:03:42+01:00</updated>
<published>2008-04-15T17:03:42+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15350#p15350</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15350#p15350"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15350#p15350"><![CDATA[
Here is how i do it:<br /><br /><dl class="codebox"><dt>Code: </dt><dd><code><br />//Pushes E6 to move a single servo<br />void Servo_move&#40;int which,int position&#41;&#123;<br />     SerialPutc&#40;hCom,0xE6&#41;;//move servo<br />     SerialPutc&#40;hCom,which&#41;;//ktore serwo<br />     SerialPutc&#40;hCom,position&#41;;//position<br />     Sleep&#40;5&#41;;<br />&#125;<br /><br />..<br /><br />//This is used to peek the data from the registry<br />//mainly used to receive actual servo positions<br />void Memory_read&#40;int low,int high&#41;&#123;<br />   SerialPutc&#40;hCom,0xF7&#41;;<br />   SerialPutc&#40;hCom,low&#41;;<br />   SerialPutc&#40;hCom,high&#41;;<br />   SerialPutc&#40;hCom,0x00&#41;;<br />&#125;  <br /><br /><br />//This is my WAIT implementation<br />//it goes to endless loop untill actual servo value reaches required value.<br />int Servo_wait&#40;int ktore,int wartosc&#41;&#123;<br /><br />   while&#40;ROBONOVA.servo&#91;ktore&#93;.value!=wartosc&#41;&#123;<br />      if&#40;GetTickCount&#40;&#41;-tick&gt;10&#41;&#123;<br />         Memory_read&#40;0x20+ktore,0x03&#41;;Sleep&#40;5&#41;;<br />         tick=GetTickCount&#40;&#41;;<br />      &#125;<br />   &#125;<br />   return 1;<br /><br />&#125;<br /><br /></code></dd></dl><br /><br /><br />And when i perform the move with WAIT, i do this like that:<br /><br />Servo_move(14,10);<br />Servo_wait(14,10);<br /><br />And that is really working fine.<br /><br />But i have noticed, that when i do plenty of moves at once - for example:<br /><br /><br /><br /><br /><dl class="codebox"><dt>Code: </dt><dd><code>//g6a<br />Servo_move&#40;0,100&#41;;Servo_move&#40;1,76&#41;;Servo_move&#40;2,145&#41;; Servo_move&#40;3,93&#41;; Servo_move&#40;4,100&#41;; <br />//g6d<br />Servo_move&#40;18,100&#41;;Servo_move&#40;19,76&#41;;Servo_move&#40;20,145&#41;; Servo_move&#40;21,93&#41;;Servo_move&#40;22,100&#41;; <br /><br />Servo_wait&#40;4,100&#41;;<br /><br />//g6b<br />Servo_move&#40;6,100&#41;;Servo_move&#40;7,30&#41;;   Servo_move&#40;8,80&#41;;<br />//g6c<br />Servo_move&#40;12,100&#41;;Servo_move&#40;13,30&#41;;Servo_move&#40;14,80&#41;;<br />         <br />Servo_wait&#40;2,120&#41;; <br /></code></dd></dl><br /><br /><br />Robonova does not do that correct, it likes to loose itself somewhere in the middle, at the beggining without reason.<br /><br /><br />I have a separate thread that receives the data to buffer, so i am aware when i can send the next data.<br /><br /><br />The thing is that when i perform many moves - for example required for forward_walk, robonova does some strange things.. Exceeds the values of the servos, doesn't move at all, stops, pauses or just mixes them all at once.<br /><br />I rewrote the desired servo values from working robobasic code, and due to the fact ( i believe ) that there is no MOVE24 possible from C, each servo move is spawned with some ms delay.. so everything starts to be desynched.<br /><br /><br />i-Bot, got some idea?<br /><br />It gets me really p!ssed.. as i've managed to receieve all AD data values and so on, but when it is time to code some real stuff - like walking and autonomus moves, i fail at the beggining.<br /><br />Hitec should really post official documentation for the RN-1 board.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Tue Apr 15, 2008 5:03 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[i-Bot]]></name></author>
<updated>2008-04-15T16:48:44+01:00</updated>
<published>2008-04-15T16:48:44+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15349#p15349</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15349#p15349"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15349#p15349"><![CDATA[
Are you using the EB command for the servo moves, or individual E6 coomands ?<br /><br />If you are using EB, then you can check for the motion complete by reading the RAM locations.<br /><br />In the thread on synchro servo move, you will see some earlier discussion on this topic.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=159">i-Bot</a> — Tue Apr 15, 2008 4:48 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[roboTT]]></name></author>
<updated>2008-04-15T16:10:42+01:00</updated>
<published>2008-04-15T16:10:42+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15348#p15348</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15348#p15348"/>
<title type="html"><![CDATA[Pain in the 455]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2433&amp;p=15348#p15348"><![CDATA[
Anyone here coding Robonova in something different than ROBOBASIC ?<br /><br />It's cool to have the controller board documentation, but there are some major things missing ;(<br /><br />I still fight with a method to go over and do some &quot;WAIT&quot; translation to C - the same goes for MOVE24.<br /><br />Guys, do you know how to implement a WAIT method - or any ideas ?<br /><br />This is crucial when some synchro moves are made.<br /><br />I just don't want to land with Robobasic ;/ especially due to the fact that there is no chance to retrieve the data to my laptop with Robobasic while the robot is working - and futher, no chance to command on event.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=946">roboTT</a> — Tue Apr 15, 2008 4:10 pm</p><hr />
]]></content>
</entry>
</feed>