<?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=5&amp;t=2241" />

<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-04-22T09:55:08+01:00</updated>

<author><name><![CDATA[RoboSavvy Forum]]></name></author>
<id>http://forum.robosavvy.com/feed.php?f=5&amp;t=2241</id>
<entry>
<author><name><![CDATA[Rob]]></name></author>
<updated>2008-04-22T09:55:08+01:00</updated>
<published>2008-04-22T09:55:08+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15446#p15446</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15446#p15446"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15446#p15446"><![CDATA[
Good point the movements I am doing aren't complex i.e. &gt; 5. I'll email you a link which talks about calculating S-Curves.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=814">Rob</a> — Tue Apr 22, 2008 9:55 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sirhoop]]></name></author>
<updated>2008-04-22T09:50:47+01:00</updated>
<published>2008-04-22T09:50:47+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15445#p15445</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15445#p15445"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15445#p15445"><![CDATA[
Hi Rob,<br /><br />Yes that would be great. I started my work just a week ago, so I am pretty much in an explorative phase. I realized, that with the sync-write I need an delay of about 50 ms between command, but I am not sure if that will go well with my realtime-requirements. Suppose I want to move 10 Joints at a time, then the 10th will start to move half a second after the first.<br /><br />I have to do some testing in this direction. I thougth I could use the Toss-Mode, but I am a little bit worried about the s-curve problem. Sending all the commands for a s-Curve via the serial-port could result in a similar delay <img src="http://forum.robosavvy.com/images/smilies/icon_sad.gif" alt=":-(" title="Sad" /><br /><br />Perhaps you want to write me a short Mail, so we could discuss further problems that way. ( a dotttt sommerkorn atttt googlemail dotttt com )<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=993">sirhoop</a> — Tue Apr 22, 2008 9:50 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bullit]]></name></author>
<updated>2008-04-21T17:40:49+01:00</updated>
<published>2008-04-21T17:40:49+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15442#p15442</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15442#p15442"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15442#p15442"><![CDATA[
That's correct, in toss mode you would have to generate your own s-curve off line and send it down one sync_write at a time.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=173">Bullit</a> — Mon Apr 21, 2008 5:40 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rob]]></name></author>
<updated>2008-04-21T14:10:17+01:00</updated>
<published>2008-04-21T14:10:17+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15439#p15439</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15439#p15439"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15439#p15439"><![CDATA[
Hi Sirhoop,<br /><br />In about 2 -4 weeks I will start putting together a collection of MSRS services for the AX-12 Servos. I currently have all the base code 1/3 of which is my own 2/3rds are from other sources like CrustCrawler and this forum. I will create a Codeplex project page for the open source soon. <br /><br />The goal is just to get the AX-12 covered first and to allow people to choose what method they want to connect to the AX-12. The three I am looking at providing for at the moment are:<br />-Via the CM5 (not Toss mode I'll explain later how you don't need TOSS mode to get this to work)<br />-USBToDynamixel based on CrustCrawlers lib<br />-Via boards such as Jon Hylands USB FTDI based on ArnaudBuy's code posted to this forum<br /><br />If you want to partner on this, it would be cool. <br /><br />To issue a sync_write to the CM5 but not in TOSS mode you just need to add each individual goal pos + speed command as an item in a queue. When you've finished adding them, dequeue them one at a time and write each sync write to the CM5 with a small delay between writes (see code below). The swrWriteDelay is set to 50 milliseconds.<br /><br />            int totalQueued = commandQueue.Count;<br />            for (int i = 0; i &lt;= totalQueued - 1; i++)<br />            {<br />                port.WriteLine(commandQueue.Dequeue());<br />                Thread.Sleep(swrWriteDelay);<br />            }<br /><br />I've found this works fine the advantage being that the CM5 still computes and executes an S-Curve for you so you get much smoother movement. I think TOSS mode bypasses this (please someone tell me if I'm wrong)??<br /><br />Hope this helps<br />Rob<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=814">Rob</a> — Mon Apr 21, 2008 2:10 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[sirhoop]]></name></author>
<updated>2008-04-21T13:21:48+01:00</updated>
<published>2008-04-21T13:21:48+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15438#p15438</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15438#p15438"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=15438#p15438"><![CDATA[
Hi, <br /><br />I am working with the bioloid. I want to control it him from my PC via Services implemented with MS Robotics Studio. <br /><br />So I started with the sync_write command, but realized quickly that there will be a lot of problems, since it only let's me drive 3 servos at one time.  So I tried out the Toss-Mode I read about in this thread. And that is working fine.<br />I pretty fast can put the robot in its initial pose.<br /><br />But I could not find a way to leave the toss-mode again. Is there any way?<br /><br />In the end the robot shall be controlled via bluetooth. We want to connect a Bluetooth-board to the ZigBee Interface as described in the Bluetooth-Hack. <br />I guess I have to write my own Behaviour Control Program, right? Or ist there a possibility to use the Toss-Mode for that purpose as well?<br /><br /><br />Thanks,<br />  Alex<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=993">sirhoop</a> — Mon Apr 21, 2008 1:21 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rob]]></name></author>
<updated>2008-03-17T14:49:56+01:00</updated>
<published>2008-03-17T14:49:56+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14836#p14836</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14836#p14836"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14836#p14836"><![CDATA[
Am I right in assuming if you use Toss mode you bypass the CM5 C Lib therefore no S-Curve is applied to your commands?<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=814">Rob</a> — Mon Mar 17, 2008 2:49 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BillB]]></name></author>
<updated>2008-03-17T14:40:34+01:00</updated>
<published>2008-03-17T14:40:34+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14835#p14835</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14835#p14835"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14835#p14835"><![CDATA[
Has anyone managed to use the toss through mode via the Bluetooth/Zigbee modules? Theoretically it would be possible, although error corection, and latency may be an issue. It would be nice if this were possible without having to write special firmware for the CM5.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=264">BillB</a> — Mon Mar 17, 2008 2:40 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ike]]></name></author>
<updated>2008-03-16T23:22:54+01:00</updated>
<published>2008-03-16T23:22:54+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14817#p14817</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14817#p14817"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14817#p14817"><![CDATA[
I am actually looking to go wireless, but have been very tempted by Jon's USB board.<br /><br />For anyone who is interested in some C# code to work with in Toss Mode, here is something I hobbled together from various sources.  The WritePacket code is from the RoboticsLibrary, modified to talk to a COM port.  You will need to put a GUI around it (comPort, txtOutput window, and a few buttons/sliders) but it works well if you are looking to send commands longer than 60 characters, or just want to bypass the CM5.<br /><br />This is a work in progress, so there is some junk/redundant code.  Also, please note that most of this was created from pieces of code written by people who are much smarter than I am; all credit goes to the original authors.  You can tell the parts that I wrote... they haven't the vaguest sense of good coding practices. <img src="http://forum.robosavvy.com/images/smilies/icon_biggrin.gif" alt=":D" title="Very Happy" /><br /><br /><dl class="codebox"><dt>Code: </dt><dd><code>using System;<br />using System.Collections.Generic;<br />using System.ComponentModel;<br />using System.Data;<br />using System.Drawing;<br />using System.IO.Ports;<br />using System.Text;<br />using System.Text.RegularExpressions;<br />using System.Threading;<br />using System.Windows.Forms;<br /><br />namespace BioloidChat<br />&#123;<br />    public partial class BioloidToss : Form<br />    &#123;<br />        #region Dynamixel IDs<br /><br />        public const byte ID01 = 0x01;<br />        public const byte ID02 = 0x02;<br />        public const byte ID03 = 0x03;<br />        public const byte ID04 = 0x04;<br />        public const byte ID05 = 0x05;<br />        public const byte ID06 = 0x06;<br />        public const byte ID07 = 0x07;<br />        public const byte ID08 = 0x08;<br />        public const byte ID09 = 0x09;<br />        public const byte ID10 = 0x0A;<br />        public const byte ID11 = 0x0B;<br />        public const byte ID12 = 0x0C;<br />        public const byte ID13 = 0x0D;<br />        public const byte ID14 = 0x0E;<br />        public const byte ID15 = 0x0F;<br />        public const byte ID16 = 0x10;<br />        public const byte ID17 = 0x11;<br />        public const byte ID18 = 0x12;<br />        public const byte BroadcastID = 0xFE;<br /><br />        #endregion<br /><br /><br />        #region Instruction Set<br /><br />        // Instruction Set<br />        public const byte InstPing = 0x01;<br />        public const byte InstReadData = 0x02;<br />        public const byte InstWriteData = 0x03;<br />        public const byte InstRegWrite = 0x04;<br />        public const byte InstAction = 0x05;<br />        public const byte InstReset = 0x06;<br />        public const byte InstDigitalReset = 0x07;<br />        public const byte InstSystemRead = 0x0C;<br />        public const byte InstSystemWrite = 0x0D;<br />        public const byte InstSyncWrite = 0x83;<br />        public const byte InstSyncRegWrite = 0x84;<br />        <br />        #endregion<br /><br />        #region Control Table<br /><br />        // Control Table <br />        public const byte AddressModelNumberLow = 0X00;<br />        public const byte AddressModelNumberHigh = 0X01;<br />        public const byte AddressVersionOfFirmware = 0X02;<br />        public const byte AddressID = 0X03;<br />        public const byte AddressBaudRate = 0X04;<br />        public const byte AddressReturnDelayTime = 0X05;<br />        public const byte AddressCWAngleLimitLow = 0X06;<br />        public const byte AddressCWAngleLimitHigh = 0X07;<br />        public const byte AddressCCWAngleLimitLow = 0X08;<br />        public const byte AddressCCWAngleLimitHigh = 0X09;<br />        public const byte AddressSystemData2 = 0x0A;<br />        public const byte AddressHighestLimitTemperature = 0X0B;<br />        public const byte AddressLowestLimitVoltage = 0X0C;<br />        public const byte AddressHighestLimitVoltage = 0X0D;<br />        public const byte AddressMaxTorqueLow = 0X0E;<br />        public const byte AddressMaxTorqueHigh = 0X0F;<br />        public const byte AddressStatusReturnLevel = 0X10;<br />        public const byte AddressAlarmLed = 0X11;<br />        public const byte AddressAlarmShutdown = 0X12;<br />        public const byte AddressOperatingMode = 0X13;<br />        public const byte AddressDownCalibrationLow = 0X14;<br />        public const byte AddressDownCalibrationHigh = 0X15;<br />        public const byte AddressUpCalibrationLow = 0X16;<br />        public const byte AddressUpCalibrationHigh = 0X17;<br /><br />        public const byte AddressTorqueEnable = 0X18;<br />        public const byte AddressLed = 0X19;<br />        public const byte AddressCWComplianceMargin = 0X1A;<br />        public const byte AddressCCWComplianceMargin = 0X1B;<br />        public const byte AddressCWComplianceSlope = 0X1C;<br />        public const byte AddressCCWComplianceSlope = 0X1D;<br />        public const byte AddressGoalPositionLow = 0X1E;<br />        public const byte AddressGoalPositionHigh = 0X1F;<br />        public const byte AddressMovingSpeedLow = 0X20;<br />        public const byte AddressMovingSpeedHigh = 0X21;<br />        public const byte AddressTorqueLimitLow = 0X22;<br />        public const byte AddressTorqueLimitHigh = 0X23;<br />        public const byte AddressPresentPositionLow = 0X24;<br />        public const byte AddressPresentPositionHigh = 0X25;<br />        public const byte AddressPresentSpeedLow = 0X26;<br />        public const byte AddressPresentSpeedHigh = 0X27;<br />        public const byte AddressPresentLoadLow = 0X28;<br />        public const byte AddressPresentLoadHigh = 0X29;<br />        public const byte AddressPresentVoltage = 0X2A;<br />        public const byte AddressPresentTemperature = 0X2B;<br />        public const byte AddressRegisteredInstruction = 0X2C;<br />        public const byte AddressPauseTime = 0X2D;<br />        public const byte AddressMoving = 0x2E;<br />        public const byte AddressLock = 0x2F;<br />        public const byte AddressPunchLow = 0x30;<br />        public const byte AddressPunchHigh = 0x31;<br /><br />        #endregion<br /><br />        public BioloidToss&#40;&#41;<br />        &#123;<br />            InitializeComponent&#40;&#41;;<br />        &#125;<br />        private void Form1_Load&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            Control.CheckForIllegalCrossThreadCalls = false;<br />            this.comPort.ReadTimeout = 1000;<br />            this.comPort.Open&#40;&#41;;<br />        &#125;<br />        private void Form1_FormClosed&#40;object sender, FormClosedEventArgs e&#41;<br />        &#123;<br />            this.comPort.Close&#40;&#41;;<br />        &#125;<br />        private byte&#91;&#93; HexStringToByteArray&#40;string s&#41;<br />        &#123;<br />            s = s.Replace&#40;&quot; &quot;, &quot;&quot;&#41;;<br />            byte&#91;&#93; buffer = new byte&#91;s.Length / 2&#93;;<br />            for &#40;int i = 0; i &lt;s&gt; 0&#41;<br />            &#123;<br />                Byte&#91;&#93; comByte = new byte&#91;this.comPort.BytesToRead&#93;;<br />                this.comPort.Read&#40;comByte, 0, this.comPort.BytesToRead&#41;;<br />                this.txtOutput.AppendText&#40;&quot;&lt;Recv&gt;: &quot; + ByteArrayToHexString&#40;comByte&#41; + &quot;\r\n&quot;&#41;;<br />                this.txtOutput.SelectionStart = this.txtOutput.Text.Length;<br />                this.txtOutput.ScrollToCaret&#40;&#41;;<br /><br />            &#125;<br />        &#125;<br />        private void btnOpenCOM_Click&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            if &#40;this.comPort.IsOpen&#41;<br />            &#123;<br />                this.txtOutput.AppendText&#40;&quot;COM2 is already open\r\n&quot;&#41;;<br />                this.txtOutput.SelectionStart = this.txtOutput.Text.Length;<br />                this.txtOutput.ScrollToCaret&#40;&#41;;<br />            &#125;<br />            else<br />            &#123;<br />                this.comPort.ReadTimeout = 500;<br />                this.comPort.Open&#40;&#41;;<br />                this.txtOutput.AppendText&#40;&quot;COM2 Opened\r\n&quot;&#41;;<br />                this.txtOutput.SelectionStart = this.txtOutput.Text.Length;<br />                this.txtOutput.ScrollToCaret&#40;&#41;;<br />            &#125;<br />        &#125;<br />        private void btnCloseCOM_Click&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            this.comPort.Close&#40;&#41;;<br />            this.txtOutput.AppendText&#40;&quot;COM2 Closed\r\n&quot;&#41;;<br />            this.txtOutput.SelectionStart = this.txtOutput.Text.Length;<br />            this.txtOutput.ScrollToCaret&#40;&#41;;<br />        &#125;<br />        private void btnServoOff_Click&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            WriteInstructionPacket&#40;BroadcastID,             //Broadcast ID<br />                                   InstSyncWrite,             //SyncWrite<br />                                   HexStringToByteArray&#40;&quot;18&quot; +            //Starting Address &#40;Torque Enable&#41;<br />                                   &quot;01&quot; +            //Number of bytes to write<br />                                   &quot;01 00&quot; +     //Disable Torque for ID 1<br />                                   &quot;02 00&quot; +     //Disable Torque for ID 2<br />                                   &quot;03 00&quot; +     //Disable Torque for ID 3<br />                                   &quot;04 00&quot; +     //Disable Torque for ID 4<br />                                   &quot;05 00&quot; +     //Disable Torque for ID 5<br />                                   &quot;06 00&quot; +     //Disable Torque for ID 6<br />                                   &quot;07 00&quot; +     //Disable Torque for ID 7<br />                                   &quot;08 00&quot; +     //Disable Torque for ID 8<br />                                   &quot;09 00&quot; +     //Disable Torque for ID 9<br />                                   &quot;0A 00&quot; +     //Disable Torque for ID 10<br />                                   &quot;0B 00&quot; +     //Disable Torque for ID 11<br />                                   &quot;0C 00&quot; +     //Disable Torque for ID 12<br />                                   &quot;0D 00&quot; +     //Disable Torque for ID 13<br />                                   &quot;0E 00&quot; +     //Disable Torque for ID 14<br />                                   &quot;0F 00&quot; +     //Disable Torque for ID 15<br />                                   &quot;10 00&quot; +     //Disable Torque for ID 16<br />                                   &quot;11 00&quot; +     //Disable Torque for ID 17<br />                                   &quot;12 00&quot;&#41;&#41;;     //Disable Torque for ID 18<br />        &#125;<br />        private void btnStandUp_Click&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            WriteInstructionPacket&#40;BroadcastID,           //Broadcast ID<br />                                   InstSyncWrite,             //SyncWrite<br />                                   HexStringToByteArray<br />                                   &#40;<br />                                   &quot;1E&quot; +                 //Starting Address &#40;Goal Position&#41;<br />                                   &quot;04&quot; +                 //Number of bytes to write<br />                                   &quot;01 FF 01 FF 00&quot; +     //ID01 Pos 255 001 Speed 255 000<br />                                   &quot;02 FF 01 FF 00&quot; +     //ID02 Pos 255 001 Speed 255 000<br />                                   &quot;03 FF 01 FF 00&quot; +     //ID03 Pos 255 001 Speed 255 000<br />                                   &quot;04 FF 01 FF 00&quot; +     //ID04 Pos 255 001 Speed 255 000<br />                                   &quot;05 FF 01 FF 00&quot; +     //ID05 Pos 255 001 Speed 255 000<br />                                   &quot;06 FF 01 FF 00&quot; +     //ID06 Pos 255 001 Speed 255 000<br />                                   &quot;07 FF 01 FF 00&quot; +     //ID07 Pos 255 001 Speed 255 000<br />                                   &quot;08 FF 01 FF 00&quot; +     //ID08 Pos 255 001 Speed 255 000<br />                                   &quot;09 FF 01 FF 00&quot; +     //ID09 Pos 255 001 Speed 255 000<br />                                   &quot;0A FF 01 FF 00&quot; +     //ID10 Pos 255 001 Speed 255 000<br />                                   &quot;0B FF 01 FF 00&quot; +     //ID11 Pos 255 001 Speed 255 000<br />                                   &quot;0C FF 01 FF 00&quot; +     //ID12 Pos 255 001 Speed 255 000<br />                                   &quot;0D FF 01 FF 00&quot; +     //ID13 Pos 255 001 Speed 255 000<br />                                   &quot;0E FF 01 FF 00&quot; +     //ID14 Pos 255 001 Speed 255 000<br />                                   &quot;0F FF 01 FF 00&quot; +     //ID15 Pos 255 001 Speed 255 000<br />                                   &quot;10 FF 01 FF 00&quot; +     //ID16 Pos 255 001 Speed 255 000<br />                                   &quot;11 FF 01 FF 00&quot; +     //ID17 Pos 255 001 Speed 255 000<br />                                   &quot;12 FF 01 FF 00&quot;&#41;      //ID18 Pos 255 001 Speed 255 000<br />                                   &#41;;    <br />        &#125;<br />        private void trackbarPosition_Changed&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            int Position_Low = this.trackBar1.Value % 256;<br />            String PosL = Position_Low.ToString&#40;&quot;X2&quot;&#41;;<br />            int Position_High = this.trackBar1.Value / 256;<br />            String PosH = Position_High.ToString&#40;&quot;X2&quot;&#41;;<br />            WriteInstructionPacket&#40;ID01, InstWriteData, HexStringToByteArray&#40;&quot;1E&quot; + PosL + PosH&#41;&#41;;       <br />        &#125;<br />        private void trackbarSpeed_Changed&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            int Speed_Low = this.trackBar2.Value % 256;<br />            String SpeedL = Speed_Low.ToString&#40;&quot;X2&quot;&#41;;<br />            int Speed_High = this.trackBar2.Value / 256;<br />            String SpeedH = Speed_High.ToString&#40;&quot;X2&quot;&#41;;<br />            WriteInstructionPacket&#40;ID01, InstWriteData, HexStringToByteArray&#40;&quot;20&quot; + SpeedL + SpeedH&#41;&#41;;<br />        &#125;<br />        private void btnSendBinary_Click&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            <br />            WriteInstructionPacket&#40;ID01,InstWriteData,HexStringToByteArray&#40;&quot;1EFF01&quot;&#41;&#41;;<br />            //byte&#91;&#93; data = HexStringToByteArray&#40;&quot;FFFF0105031EFF01D8&quot;&#41;;<br />            //this.comPort.Write&#40;data, 0, data.Length&#41;;<br />        &#125;<br />        private void btnTossMode_Click&#40;object sender, EventArgs e&#41;<br />        &#123;<br />            this.comPort.WriteLine&#40;&quot;T&quot;&#41;;<br />        &#125;<br />    &#125;<br />&#125;<br /></code></dd></dl><p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=928">Ike</a> — Sun Mar 16, 2008 11:22 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rob]]></name></author>
<updated>2008-03-15T12:24:28+01:00</updated>
<published>2008-03-15T12:24:28+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14795#p14795</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14795#p14795"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14795#p14795"><![CDATA[
Ike,<br /><br />Your better off ditching the CM5 now and getting Jon Hylands USB Bus board.<br /><br />ArnaudBuy has already written some C# code for the AX12s which I think uses the FT232 chip in Jon's board see:<br /><br /><!-- m --><a class="postlink" href="http://robosavvy.com/forum/viewtopic.php?t=990&amp;postdays=0&amp;postorder=asc&amp;highlight=packet&amp;start=15">http://robosavvy.com/forum/viewtopic.ph ... t&amp;start=15</a><!-- m --><br /><br />He doesn't program via a com port but via D2XX Driver for the FTDI chip in unmanaged code.<br /><br />I am not sure if this code will work, I am yet to start using Jons board but I think its a good start. I am working on other stuff with my Bioloid for the next 2 weeks after that I will start testing this code. If I can get it to work with Jons board I will post it. <br /><br />If you get it to work can you let me know?<br /><br />Cheers<br />Rob<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=814">Rob</a> — Sat Mar 15, 2008 12:24 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ike]]></name></author>
<updated>2008-03-15T03:02:56+01:00</updated>
<published>2008-03-15T03:02:56+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14792#p14792</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14792#p14792"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14792#p14792"><![CDATA[
Ah ha!<br /><br />Looks like I have some work to do <img src="http://forum.robosavvy.com/images/smilies/icon_smile.gif" alt=":)" title="Smile" /><br /><br />Thank you Jon!<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=928">Ike</a> — Sat Mar 15, 2008 3:02 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[JonHylands]]></name></author>
<updated>2008-03-15T02:39:33+01:00</updated>
<published>2008-03-15T02:39:33+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14791#p14791</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14791#p14791"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14791#p14791"><![CDATA[
You're trying to send ASCII to it, and you need to send binary data to it.<br /><br />The byte values you're trying to send are correct, just in the wrong format.<br /><br />You have to write code that sends the actual bytes out the serial port...<br /><br />- Jon<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=373">JonHylands</a> — Sat Mar 15, 2008 2:39 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Ike]]></name></author>
<updated>2008-03-15T02:29:59+01:00</updated>
<published>2008-03-15T02:29:59+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14790#p14790</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14790#p14790"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14790#p14790"><![CDATA[
I was able to set to CM5 to Toss Mode (either T or L will set Toss Mode) but for the life of me, I can't seem to get the AX-12s to recognize (or even respond to) a command, even a simple PING command.<br /><br />I have tried a few of the commands from the AX12 manual through the Robot Terminal and Hyperterm, none of which seem to give a response, not even a light on the Tx LED:<br /><br /># Obtain the status packet of the Dynamixel actuator with an ID of 1<br />ff ff 01 02 01 fb<br /># Read the internal temperature of the Dynamixel actuator with an ID of 1<br />ff ff 01 04 02 2b 01 cc<br /><br /><br />Am I using an incorrect format? (I've tried FF, ff, 0XFF, 0xFF, 0xff, 255)  Do I need a header/footer?  Baud rates maybe? (currently COM-&gt;CM5 = 57600, CM5-&gt;AX12 = 1000000)<br /><br />I eventually plan to go wireless (ditch the CM5 all together) if I can find anyone still selling the parts to get WiFi/SPI going, so this kind of development hopefully all lends itself to my end state.<br /><br />Thanks!<br /><br />Chris<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=928">Ike</a> — Sat Mar 15, 2008 2:29 am</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bullit]]></name></author>
<updated>2008-03-14T19:47:50+01:00</updated>
<published>2008-03-14T19:47:50+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14784#p14784</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14784#p14784"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14784#p14784"><![CDATA[
Enter toss mode my setting to manage mode then send a 't' and the bioloid firmware responds with something like  &quot;toss mode&quot;  all communication from that point on is tossed from the CM-5 to the dynamixel bus and from the dynamixel bus back to the pc.  So the CM-5 becomes transparent.<br /><br />I used to have a separate app that was toss.hex that I got from robotis some time ago that basically is just the toss function.  Now it is part of the bioloid.hex.  Monitor was also a separate program at one point.<br /><br />Hope this helps.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=173">Bullit</a> — Fri Mar 14, 2008 7:47 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rob]]></name></author>
<updated>2008-03-14T12:58:38+01:00</updated>
<published>2008-03-14T12:58:38+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14774#p14774</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14774#p14774"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14774#p14774"><![CDATA[
I hope that was a typo!<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=814">Rob</a> — Fri Mar 14, 2008 12:58 pm</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[siempre.aprendiendo]]></name></author>
<updated>2008-03-14T12:42:09+01:00</updated>
<published>2008-03-14T12:42:09+01:00</published>
<id>http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14772#p14772</id>
<link href="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14772#p14772"/>
<title type="html"><![CDATA[Moving Dynamixels with sync_wr]]></title>

<content type="html" xml:base="http://forum.robosavvy.com/viewtopic.php?t=2241&amp;p=14772#p14772"><![CDATA[
<blockquote><div><cite>Ike wrote:</cite><br />For those that are interested, here is the response from Robotis:<br /><br />Dear 1ke,<br /><br />Thank you for your kind patience.<br /><br />#define COMMAND_BUFFER_SIZE 60<br />  <br />void SerialMonitor(void)<br />{<br />  byte bpCommandBuffer[COMMAND_BUFFER_SIZE];<br />  byte bTerminate,bCount,bParaNum,bRxData;<br />  byte bpCommand[COMMAND_LENGTH];<br />  unsigned long ulpParameter[PARA_NUM];<br />.<br />.<br />Currently, the manage mode and edit mode's text command buffer within the CM-5 firmware<br />is limiting the size to 60 characters. With the information provided, we are assuming that<br />the programming has been done through a program like Visual Studio.<br />This may be a little inconvenient, but please try creating your own packet and use the CM-5<br />s toss mode.<br /><br />Thanks,<br />ROBOTIS<br /></div></blockquote><br /><br />I have asked Robotis (Q&amp;A forum) where is that toss mode documented. I can't find it in the documentation.<p>Statistics: Posted by <a href="http://forum.robosavvy.com/memberlist.php?mode=viewprofile&amp;u=698">siempre.aprendiendo</a> — Fri Mar 14, 2008 12:42 pm</p><hr />
]]></content>
</entry>
</feed>