<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RobotShop Blog &#187; GoRobotics &gt;&gt; Education</title>
	<atom:link href="http://www.robotshop.com/blog/en/robots/gorobotics/feed" rel="self" type="application/rss+xml" />
	<link>http://www.robotshop.com/blog/en</link>
	<description>Robot News &#38; Robot Reviews</description>
	<lastBuildDate>Sat, 18 May 2013 15:37:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Adorable Robots Film A Documentary About Humans</title>
		<link>http://www.robotshop.com/blog/en/adorable-robots-film-a-documentary-about-humans-10891</link>
		<comments>http://www.robotshop.com/blog/en/adorable-robots-film-a-documentary-about-humans-10891#comments</comments>
		<pubDate>Thu, 18 Apr 2013 22:43:58 +0000</pubDate>
		<dc:creator>RB1</dc:creator>
				<category><![CDATA[Entertainment]]></category>
		<category><![CDATA[Hobbyist]]></category>
		<category><![CDATA[Cubiebot]]></category>
		<category><![CDATA[documentary]]></category>
		<category><![CDATA[film]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=10891</guid>
		<description><![CDATA[Cubiebot, a little robot made from hobbyist robot parts and cardboard is directing and filming its own documentary. As a matter of fact, many of these filmmaker robots are on the loose interviewing humans about their relationships with other robots. As shown in the video below, these cute robots capture the attention of the participants and invite them to <a href="http://www.robotshop.com/blog/en/adorable-robots-film-a-documentary-about-humans-10891" class="more-link" title="Read Adorable Robots Film A Documentary About Humans">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<div id="attachment_10892" class="wp-caption aligncenter" style="width: 310px"><a  href="http://www.robotshop.com/blog/en/files/CubieBot.jpg"><img class="size-medium wp-image-10892" title="CubieBot, Filmmaker Robot" alt="CubieBot, Filmmaker Robot" src="http://www.robotshop.com/blog/en/files/CubieBot-e1366221425679-300x107.jpg" width="300" height="107" /></a><p class="wp-caption-text">Cubiebot, Filmmaker Robot</p></div>
<p>Cubiebot, a little robot made from <a  href="http://www.robotshop.com/robot-parts.html">hobbyist robot parts</a> and cardboard is directing and filming its own documentary. As a matter of fact, many of these filmmaker robots are on the loose interviewing humans about their relationships with other robots. As shown in the video below, these cute robots capture the attention of the participants and invite them to open up on questions that would otherwise be embarrassing to tell to a human. Also, as a disclaimer, this openness leads participants to use some strong language and allows the robot to get into some otherwise forbidden places. So, watch the video at your own risk.</p>
<p><iframe src="http://player.vimeo.com/video/57930115" width="580" height="326" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe></p>
<p>If you encountered one of these little robot, what would you say to it? How much would you be willing to reveal? Leave a comment with your answers below.</p>
<p>Via <a  href="http://www.wired.com/underwire/2013/04/robot-documentary-tribeca/">Wired</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/adorable-robots-film-a-documentary-about-humans-10891/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2013 Global Cloud Robotics Hackathon Participants</title>
		<link>http://www.robotshop.com/blog/en/2013-global-cloud-robotics-hackathon-participants-10737</link>
		<comments>http://www.robotshop.com/blog/en/2013-global-cloud-robotics-hackathon-participants-10737#comments</comments>
		<pubDate>Thu, 11 Apr 2013 21:30:22 +0000</pubDate>
		<dc:creator>Carlos Asmat</dc:creator>
				<category><![CDATA[Cloud Robotics]]></category>
		<category><![CDATA[Competitions]]></category>
		<category><![CDATA[RobotShop]]></category>
		<category><![CDATA[Hackathon]]></category>
		<category><![CDATA[MyRobots.com]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=10737</guid>
		<description><![CDATA[The Global Cloud Robotics Hackathon 2013 is currently taking place. The hacking marathon where participants compete to create the best cloud monitoring robotic application started on April 6th and will be ending on the 14th of the same month. So far 29 teams from all around the world are hard at work as shown on the hackathon <a href="http://www.robotshop.com/blog/en/2013-global-cloud-robotics-hackathon-participants-10737" class="more-link" title="Read 2013 Global Cloud Robotics Hackathon Participants">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<p>The <a  href="http://roboticshackathon.com/">Global Cloud Robotics Hackathon 2013</a> is currently taking place. The hacking marathon where participants compete to create the best cloud monitoring robotic application started on April 6th and will be ending on the 14th of the same month. So far 29 teams from all around the world are hard at work as shown on the <a  href="http://roboticshackathon.com/register/">hackathon interactive map</a>. Your team is not there? Don&#8217;t stay behind and miss the chance of hacking robots. <a  href="http://roboticshackathon.com/register/">Register now!</a></p>
<div id="attachment_10738" class="wp-caption aligncenter" style="width: 310px"><a  href="http://www.robotshop.com/blog/en/files/2013-global-cloud-robotics-hackathon.png"><img class="size-medium wp-image-10738" title="2013 Global Cloud Robotics Hackathon Participants Map" alt="2013 Global Cloud Robotics Hackathon Participants Map" src="http://www.robotshop.com/blog/en/files/2013-global-cloud-robotics-hackathon-300x213.png" width="300" height="213" /></a><p class="wp-caption-text">2013 Global Cloud Robotics Hackathon Participants Map</p></div>
<p>If you hover the interactive map, you can see the teams names, their projects, and even their Twitter names where they keep the world updated about their progress. For your convenience, we gathered all that information here:</p>
<ol>
<li><strong>Project:</strong> A robot that is following voice commands for basic instructions such as moving in the said direction.</li>
<li><strong>Project:</strong> Robotic autonomous mapping of an area; with robots working together using the MyRobots cloud. During the mapping process, the robots will interact with any humans they encounter.</li>
<li>@RobotShop <strong>Team:</strong> RobotShop. <strong>Project:</strong> Monitoring a Roomba charging.</li>
<li><strong>Team:</strong> iconcells. <strong>Project:</strong> Having robot for home stay senior to detect if they accidentally fall</li>
<li>@iqbalmohomed<strong> Team:</strong> This little piggy. <strong>Project:</strong> This year, my team has access to a 3D printer. Our idea is to print out the chassis of the robot, and hook it up with an Arduino and motors.</li>
<li><strong>Team:</strong> OdinSky-Od. <strong>Project:</strong> To use a variety of smartphone apps such as; &#8220;find my phone,&#8221; &#8220;monitor my kids,&#8221; &#8220;monitor my home,&#8221; &#8220;google earth,&#8221; &#8220;google maps,&#8221; etc&#8230; My Robot will be a Smartphone Guru &#8230;&#8221;</li>
<li>@nihar_pradhan <strong>Team:</strong> Robo NXT iGen. <strong>Project:</strong> Our idea is simple and less hard working.</li>
<li><strong>Team:</strong> Corruptedlink. <strong>Project:</strong> Key hunter Hunts down keys (or any object) fitted with a locator. After logging multiple finds it will use the data to guess where the keys are.</li>
<li><strong>Team:</strong> RISING RHINO. <strong>Project:</strong> GPS BASED AUTONOMOUS AGRICULTURE ROBOT</li>
<li><strong>Team:</strong> Mr.Face Productions. <strong>Project:</strong> The idea of this program is to have a solar powered mobile jelly bean dispenser! (Project might change in the future) If you would like to join our team and live in Baton Rouge, Louisiana, just let us know</li>
<li><strong>Team:</strong> none. <strong>Project:</strong> UAV</li>
<li>@DigitalGawd <strong>Team:</strong> Future of Robotics. <strong>Project:</strong> Unsure yet, my six year old daughter loves robotics, this will be a joint project between myself and her.</li>
<li>@robotsblog <strong>Team:</strong> RobotsBlog.net. <strong>Project:</strong> Will work with the new Lego Mindstorms EV3 and see what this amazing new robot can do!</li>
<li><strong>Team:</strong> ONE. <strong>Project:</strong> Surveillance robot</li>
<li><strong>Team:</strong> Angry FIsh. <strong>Project:</strong> Our project revolves around monitoring your pet cat or dog when you away from home. We intend to build a moving robot platform that can flow your pet around the house, monitor its eating, and sleeping habits. Furthermore the platform can play rudimentary games with the pet. All the meanwhile the robot will be relaying vital stats for your pet back to the owner. Stats such as eating times, activity times, sleep times etc.</li>
<li>@epkolli <strong>Team:</strong> sharkbots. <strong>Project:</strong> Control the motors with an Android phone through the cloud myrobots.com</li>
<li>@chrispbarlow <strong>Team:</strong> Telemetrons. Project: Remote Simultaneous Localization and Mapping (SLAM) over cloud services.</li>
<li><strong>Team:</strong> PZero. Project: A robot that mops the kitchen floor that leaves zero dust, hair, and oil.</li>
<li>@sailindaze <strong>Team:</strong> They Might be Giants. Project: Small mobile robot to monitor pet activity.</li>
<li>@RoboticApp <strong>Team:</strong> The RoboticApp Team. Project: Our solution will feature a speech interface to interact with a robot (Roomba, Create or Mindstorms NXT), a remote control to activate the robot actuators and read its sensors, a server to periodically monitor the robot sensors and feed the data to the MyRobots dashboard, and alerts triggered using the MyRobots alerts capabilities.</li>
<li>@jeffreyarcand <strong>Team:</strong> Human Hamster Wheel. <strong>Project:</strong> Add a new remote monitoring interface to the existing Human Hamster Wheel at the Canada Science and Technology Museum in Ottawa, Ontario. http://youtu.be/NjZ4cBqJLGk</li>
<li>@RobotGrrl Team: P(A|B). Project: Mystery</li>
<li>@hferreira <strong>Team:</strong> ROAZ. <strong>Project:</strong> An autonomous surface vehicle</li>
<li>@arusaette32 <strong>Team:</strong> janakpur. <strong>Project:</strong> to make doctors works with cloud talking to treat patient</li>
<li><strong>Team:</strong> ICEBOT. <strong>Project:</strong> network cooperated robots.</li>
<li>@celiberto <strong>Team:</strong> FEIteam. <strong>Project:</strong> The idea is using heuristic to speed up the robotic applications</li>
<li>@robotfanatic <strong>Team:</strong> Robot Fanatics of Utah. <strong>Project:</strong> We plan to use the cloud to monitor the status of our custom made robotic lawnmower (just barely in the process of being built). The robot mower will attempt to mow a section of grass. It will relay its position to the cloud through a combination of GPS and accelerometer data. If it encounters an obstacle, the mowbot will report the location of the obstacle. The mowbot will also report the amount of fuel and estimated distance that it has traveled. Software interfaced with the cloud will track the amount/location of lawn that has been mowed and plot the location of obstacles found.</li>
<li>@noresiduals <strong>Team:</strong> wannasipofflipflop?. <strong>Project:</strong> Breeze powered iPhone charger</li>
<li>@chpesa <strong>Team:</strong> RoboSamurai. <strong>Project:</strong> Our idea is to develop an application in which a robot serves as a training coach that monitors when humans do excercise. Robo coach will share human activity information to the cloud, so other (cheerleaders) robots can know how well the person is doing and encourage them to train more by generating clapping motion.</li>
</ol>
<p><span class='embed-youtube' style='text-align:center; display: block;'><iframe class='youtube-player' type='text/html' width='580' height='357' src='http://www.youtube.com/embed/TSNjI_ARUGg?version=3&#038;rel=1&#038;fs=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' frameborder='0'></iframe></span></p>
<p>As you can see, the projects are very diverse and interesting, we are looking forward to see how they progress. You can follow the project updates and the <a  href="http://roboticshackathon.com/register/live/">live video update for the event on the Hackathon site</a>.</p>
<p>Stay tuned for more updates! In the meantime, which one is your favorite team? What would you do with a connected robot? Leave a comment with your thoughts below.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/2013-global-cloud-robotics-hackathon-participants-10737/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vehicle Speed, RPM, and Wheel Diameter Finder</title>
		<link>http://www.robotshop.com/blog/en/vehicle-speed-rpm-and-wheel-diameter-finder-9786</link>
		<comments>http://www.robotshop.com/blog/en/vehicle-speed-rpm-and-wheel-diameter-finder-9786#comments</comments>
		<pubDate>Mon, 11 Mar 2013 16:03:55 +0000</pubDate>
		<dc:creator>RB1</dc:creator>
				<category><![CDATA[Dynamic Tools]]></category>
		<category><![CDATA[Calculator]]></category>
		<category><![CDATA[diameter]]></category>
		<category><![CDATA[rpm]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[wheel]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=9786</guid>
		<description><![CDATA[Use this tools to compute, the resulting robot speed, the required motor RPM, and the corresponding wheel diameter. Solve for Vehicle Speed: Equation: Speed = (RPM (diameter * PI) / 60) Solve for Motor Speed: Equation: RPM = ((60 * speed) / (diameter * PI)) Solve for Wheel Diameter: Equation: Diameter = ((60 * speed) <a href="http://www.robotshop.com/blog/en/vehicle-speed-rpm-and-wheel-diameter-finder-9786" class="more-link" title="Read Vehicle Speed, RPM, and Wheel Diameter Finder">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<div id="attachment_9787" class="wp-caption aligncenter" style="width: 310px"><a  href="http://www.robotshop.com/blog/en/files/nissan-skyline-2010-rpm-1920x1200.jpg"><img class="size-medium wp-image-9787" title="Speed and RPM Gauge" alt="Speed and RPM Gauge" src="http://www.robotshop.com/blog/en/files/nissan-skyline-2010-rpm-1920x1200-300x187.jpg" width="300" height="187" /></a><p class="wp-caption-text">Speed and RPM Gauge</p></div>
<p>Use this tools to compute, the resulting robot speed, the required motor RPM, and the corresponding wheel diameter.</p>
<h3>Solve for Vehicle Speed:</h3>
<p>
<form class="form-horizontal">

    <div class="control-group">
        <label class="control-label" for="txtSpeed1">Vehicle Speed:</label>
        <div class="controls form-inline">
            <input value="0" class="uneditable-input" id="txtSpeed1" onkeyup="calculateSpeed();">
            <label for="txtSpeed1">[in/sec]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="txtRPM1">Motor Speed:</label>
        <div class="controls form-inline">
            <input value="0" id="txtRPM1" onkeyup="calculateSpeed();">
            <label for="txtRPM1">[RPM]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="txtDiam1">Wheel Diameter:</label>
        <div class="controls form-inline">
            <input value="0" id="txtDiam1" onkeyup="calculateSpeed();">
            <label for="txtDiam1">[in]</label>
        </div>
    </div>
</form>
<br />
Equation: Speed = (RPM (diameter * PI) / 60)</p>
<h3>Solve for Motor Speed:</h3>
<p>
<form class="form-horizontal">
    <div class="control-group">
        <label class="control-label" for="txtSpeed2">Vehicle Speed:</label>
        <div class="controls form-inline">
            <input value="0" id="txtSpeed2" onkeyup="calculateRPM();">
            <label for="txtSpeed2">[in/sec]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="txtRPM2">Motor Speed:</label>
        <div class="controls form-inline">
            <input class="uneditable-input" value="0" id="txtRPM2" onkeyup="calculateRPM();">
            <label for="txtRPM2">[RPM]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="txtDiam2">Wheel Diameter:</label>
        <div class="controls form-inline">
            <input value="0" id="txtDiam2" onkeyup="calculateRPM();">
            <label for="txtDiam2">[in]</label>
        </div>
    </div>
</form>
<br />
Equation: RPM = ((60 * speed) / (diameter * PI))</p>
<h3>Solve for Wheel Diameter:</h3>
<p>
<form class="form-horizontal">
    <div class="control-group">
        <label class="control-label" for="txtSpeed3">Vehicle Speed:</label>
        <div class="controls form-inline">
            <input value="0" id="txtSpeed3" onkeyup="calculateDiam();">
            <label for="txtSpeed3">[in/sec]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="txtRPM3">Motor Speed:</label>
        <div class="controls form-inline">
            <input value="0" id="txtRPM3" onkeyup="calculateDiam();">
            <label for="txtRPM3">[RPM]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="txtDiam3">Wheel Diameter:</label>
        <div class="controls form-inline">
            <input class="uneditable-input" value="0" id="txtDiam3" onkeyup="calculateDiam();">
            <label for="txtDiam3">[in]</label>
        </div>
    </div>
</form>
<br />
Equation: Diameter = ((60 * speed) / RPM / PI)</p>

<script language="javascript">
function calculateSpeed()
{
var speed = "0";
speed=(document.getElementById("txtRPM1").value*(document.getElementById("txtDiam1").value*Math.PI)/60).toFixed(3);
(document.getElementById("txtSpeed1").value)=speed;
}
function calculateRPM()
{
var rpm = "0";
rpm=((60*document.getElementById("txtSpeed2").value)/(document.getElementById("txtDiam2").value*Math.PI)).toFixed(3);
(document.getElementById("txtRPM2").value)=rpm;
}
function calculateDiam()
{
var diam = "0";
diam=((60*document.getElementById("txtSpeed3").value)/document.getElementById("txtRPM3").value/Math.PI).toFixed(3);
(document.getElementById("txtDiam3").value)=diam;
}
</script>

]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/vehicle-speed-rpm-and-wheel-diameter-finder-9786/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unit Conversion Tool</title>
		<link>http://www.robotshop.com/blog/en/unit-conversion-tool-9737</link>
		<comments>http://www.robotshop.com/blog/en/unit-conversion-tool-9737#comments</comments>
		<pubDate>Fri, 08 Mar 2013 16:32:20 +0000</pubDate>
		<dc:creator>RB1</dc:creator>
				<category><![CDATA[Dynamic Tools]]></category>
		<category><![CDATA[Calculator]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[Units]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=9737</guid>
		<description><![CDATA[Instructions: Select the appropriate unit and enter a value to be converted. * Note: Weight (force) and mass are different entities. To convert mass to weight, multiply by gravity (9.81 m/s^2 or 32f t/s^2). ** Note: Although kg-cm is used throughout the RobotShop site, it is actually kgf-cm. Similarly, oz-in should actually read ozf-in throughout <a href="http://www.robotshop.com/blog/en/unit-conversion-tool-9737" class="more-link" title="Read Unit Conversion Tool">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<div id="attachment_9738" class="wp-caption aligncenter" style="width: 310px"><a  href="http://www.robotshop.com/blog/en/files/measuring-tools.jpg"><img class="size-medium wp-image-9738" title="Unit Conversion Tool" alt="Unit Conversion Tool" src="http://www.robotshop.com/blog/en/files/measuring-tools-300x243.jpg" width="300" height="243" /></a><p class="wp-caption-text">Unit Conversion Tool</p></div>
<p>Instructions: Select the appropriate unit and enter a value to be converted.</p>

<table class="span12">
    <tbody>
        <tr>
            <td>Torque**:</td>
            <td><input class="span12" id="torqueinputvalue" onkeyup="DTCalculateTorque()" size="6"></td>
            <td>
                <select class="span12" id="torqueinputchoice" onchange="DTCalculateTorque()">
                    <option value="Inkgcm">Kgf-cm</option>
                    <option value="Ingcm">gf-cm</option>
                    <option value="Inkgm">Kgf-m</option>
                    <option value="Innm">Nm</option>
                    <option value="Inozin">ozf-in</option>
                    <option value="Inlbft">Lbf-ft</option>
                </select>
            </td>
            <td>to:</td>
            <td><input class="uneditable-input" id="torqueoutputvalue" onchange="DTCalculateTorque()"></td>
            <td>
                <select class="span12" id="torqueoutputchoice" onchange="DTCalculateTorque()">
                    <option value="Outkgcm">Kgf-cm</option>
                    <option value="Outgcm">gf-cm</option>
                    <option value="Outkgm">Kgf-m</option>
                    <option value="Outnm">Nm</option>
                    <option value="Outozin">ozf-in</option>
                    <option value="Outlbft">Lbf-ft</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>
                Length:
            </td>
            <td><input class="span12" id="lengthinputvalue" onkeyup="DTCalculateLength()" size="6"></td>
            <td>
                <select class="span12" id="lengthinputchoice" onchange="DTCalculateLength()">
                    <option value="Inmm">mm</option>
                    <option value="Incm">cm</option>
                    <option value="Inm">m</option>
                    <option value="Inkm">km</option>
                    <option value="Inin">in</option>
                    <option value="Inft">ft</option>
                    <option value="Inmi">mile</option>
                </select>
            </td>
            <td>to:</td>
            <td><input class="uneditable-input" id="lengthoutputvalue" onchange="DTCalculateLength()"></td>
            <td>
                <select class="span12" id="lengthoutputchoice" onchange="DTCalculateLength()">
                    <option value="Outmm">mm</option>
                    <option value="Outcm">cm</option>
                    <option value="Outm">m</option>
                    <option value="Outkm">km</option>
                    <option value="Outin">in</option>
                    <option value="Outft">ft</option>
                    <option value="Outmi">mile</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Mass/Weight*</td>
            <td><input class="span12" id="weightinputvalue" onkeyup="DTCalculateWeight()" size="6"></td>
            <td>
                <select class="span12" id="weightinputchoice" onchange="DTCalculateWeight()">
                    <option value="Ing">g</option>
                    <option value="Inkg">kg</option>
                    <option value="Inn">N</option>
                    <option value="Inoz">oz</option>
                    <option value="Inlb">lb</option>
                </select>
            </td>
            <td>to:</td>
            <td><input class="uneditable-input" id="weightoutputvalue" onchange="DTCalculateWeight()"></td>
            <td>
                <select class="span12" id="weightoutputchoice" onchange="DTCalculateWeight()">
                    <option value="Outg">g</option>
                    <option value="Outkg">kg</option>
                    <option value="Outn">N</option>
                    <option value="Outoz">oz</option>
                    <option value="Outlb">lb</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Speed:</td>
            <td><input class="span12" id="speedinputvalue" onkeyup="DTCalculateSpeed()" size="6"></td>
            <td>
                <select class="span12" id="speedinputchoice" onchange="DTCalculateSpeed()">
                    <option value="Inms">m/s</option>
                    <option value="Inkmh">Km/h</option>
                    <option value="Inmih">m/h</option>
                    <option value="Infts">ft/s</option>
                </select>
            </td>
            <td>to:</td>
            <td><input class="uneditable-input" id="speedoutputvalue" onchange="DTCalculateSpeed()"></td>
            <td>
                <select class="span12" id="speedoutputchoice" onchange="DTCalculateSpeed()">
                    <option value="Outms">m/s</option>
                    <option value="Outkmh">km/h</option>
                    <option value="Outmih">mi/h</option>
                    <option value="Outfts">ft/s</option>
                </select>
            </td>
        </tr>
        <tr>
            <td>Angular Vel.:</td>
            <td><input class="span12" id="angvelinputvalue" onkeyup="DTCalculateAngVel()" size="6"></td>
            <td>
                <select class="span12" id="angvelinputchoice" onchange="DTCalculateAngVel()">
                    <option value="inrads">rad/s</option>
                    <option value="inrpm">rpm</option>
                </select>
            </td>
            <td>to:</td>
            <td><input class="uneditable-input" id="angveloutputvalue" onchange="DTCalculateAngVel()"></td>
            <td>
                <select class="span12" id="angveloutputchoice" onchange="DTCalculateAngVel()">
                    <option value="outrads">rad/s</option>
                    <option value="outrpm">rpm</option>
                </select>
            </td>
        </tr>
    </tbody>
</table>

<script language="javascript">
function DTCalculateTorque()
{
    //input
    var torqueout=document.getElementById("torqueinputvalue").value;
    var tinputselection=document.getElementById("torqueinputchoice").value;
    var toutputselection=document.getElementById("torqueoutputchoice").value;
    //output (should really be in matrix form)

    if (tinputselection=="Ingcm") 
        {
            if (toutputselection=="Outkgcm") {torqueout=torqueout*0.001;}
            if (toutputselection=="Outgcm") {torqueout=torqueout*1;}
            if (toutputselection=="Outkgm") {torqueout=torqueout*0.00001;}
            if (toutputselection=="Outnm") {torqueout=torqueout*0.000098067;}
            if (toutputselection=="Outozin") {torqueout=torqueout*0.013887;}
            if (toutputselection=="Outlbft") {torqueout=torqueout*0.00007233;}
        }
    if (tinputselection=="Inkgcm") 
        {
            if (toutputselection=="Outkgcm") {torqueout=torqueout*1;}
            if (toutputselection=="Outgcm") {torqueout=torqueout*1000;}
            if (toutputselection=="Outkgm") {torqueout=torqueout*0.01;}
            if (toutputselection=="Outnm") {torqueout=torqueout*0.0980665;}
            if (toutputselection=="Outozin") {torqueout=torqueout*13.887;}
            if (toutputselection=="Outlbft") {torqueout=torqueout*0.072330;}
        }
    if (tinputselection=="Inkgm") 
        {
            if (toutputselection=="Outkgcm") {torqueout=torqueout*0.01;}
            if (toutputselection=="Outgcm") {torqueout=torqueout*100000;}
            if (toutputselection=="Outkgm") {torqueout=torqueout*1;}
            if (toutputselection=="Outnm") {torqueout=torqueout*9.80665;}
            if (toutputselection=="Outozin") {torqueout=torqueout*1388.738;}
            if (toutputselection=="Outlbft") {torqueout=torqueout*7.2330;}
        }
    if (tinputselection=="Innm") 
        {
            if (toutputselection=="Outkgcm") {torqueout=torqueout*10.197162;}
            if (toutputselection=="Outgcm") {torqueout=torqueout*10197.162;}
            if (toutputselection=="Outkgm") {torqueout=torqueout*0.10197;}
            if (toutputselection=="Outnm") {torqueout=torqueout*1;}
            if (toutputselection=="Outozin") {torqueout=torqueout*141.611;}
            if (toutputselection=="Outlbft") {torqueout=torqueout*0.73756;}
        }
    if (tinputselection=="Inozin") 
        {
            if (toutputselection=="Outkgcm") {torqueout=torqueout*0.072008;}
            if (toutputselection=="Outgcm") {torqueout=torqueout*72.008;}
            if (toutputselection=="Outkgm") {torqueout=torqueout*0.00072008;}
            if (toutputselection=="Outnm") {torqueout=torqueout*0.0070616;}
            if (toutputselection=="Outozin") {torqueout=torqueout*1;}
            if (toutputselection=="Outlbft") {torqueout=torqueout*0.0052083;}
        }
    if (tinputselection=="Inlbft") 
        {
            if (toutputselection=="Outkgcm") {torqueout=torqueout*13.8255;}
            if (toutputselection=="Outgcm") {torqueout=torqueout*13825.5;}
            if (toutputselection=="Outkgm") {torqueout=torqueout*0.13825;}
            if (toutputselection=="Outnm") {torqueout=torqueout*1.3558;}
            if (toutputselection=="Outozin") {torqueout=torqueout*192;}
            if (toutputselection=="Outlbft") {torqueout=torqueout*1;}
        }
    document.getElementById("torqueoutputvalue").value=torqueout.toPrecision(6);
}

function DTCalculateWeight()
{
    //input (for simplicity, "weight" is used as mass or weight)
    var weightout=document.getElementById("weightinputvalue").value;
    var winputselection=document.getElementById("weightinputchoice").value;
    var woutputselection=document.getElementById("weightoutputchoice").value;
    //output (should really be in matrix form)
    if (winputselection=="Ing") 
        {   
            if (woutputselection=="Outg") {weightout=weightout*1;}
            if (woutputselection=="Outkg") {weightout=weightout*0.001;}
            if (woutputselection=="Outn") {weightout=weightout*0.00980665;}
            if (woutputselection=="Outoz") {weightout=weightout*0.035274;}
            if (woutputselection=="Outlb") {weightout=weightout*0.002204;}
        }                                               
    if (winputselection=="Inkg")
        { 
            if (woutputselection=="Outg") {weightout=weightout*1000;}
            if (woutputselection=="Outkg") {weightout=weightout*1;}
            if (woutputselection=="Outn") {weightout=weightout*9.8067;}
            if (woutputselection=="Outoz") {weightout=weightout*35.273;}
            if (woutputselection=="Outlb") {weightout=weightout*2.2046;}
        }
    if (winputselection=="Inn") 
        {
            if (woutputselection=="Outg") {weightout=weightout*101.97162;}
            if (woutputselection=="Outkg") {weightout=weightout*0.101971;}
            if (woutputselection=="Outn") {weightout=weightout*1;}
            if (woutputselection=="Outoz") {weightout=weightout*3.5968;}
            if (woutputselection=="Outlb") {weightout=weightout*0.22481;}
        }
    if (winputselection=="Inoz") 
        {
            if (woutputselection=="Outg") {weightout=weightout*28.350;}
            if (woutputselection=="Outkg") {weightout=weightout*0.028349;}
            if (woutputselection=="Outn") {weightout=weightout*0.278013;}
            if (woutputselection=="Outoz") {weightout=weightout*1;}
            if (woutputselection=="Outlb") {weightout=weightout*0.0625;}
        }
    if (winputselection=="Inlb") 
        {
            if (woutputselection=="Outg") {weightout=weightout*453.592;}
            if (woutputselection=="Outkg") {weightout=weightout*0.45359;}
            if (woutputselection=="Outn") {weightout=weightout*4.44822;}
            if (woutputselection=="Outoz") {weightout=weightout*16;}
            if (woutputselection=="Outlb") {weightout=weightout*1;}
        }
    document.getElementById("weightoutputvalue").value=weightout.toPrecision(6);
}

function DTCalculateLength()
{
    //input
    var lengthout=document.getElementById("lengthinputvalue").value;
    var linputselection=document.getElementById("lengthinputchoice").value;
    var loutputselection=document.getElementById("lengthoutputchoice").value;
    //output (should really be in matrix form)
    if (linputselection=="Inmm") 
        {
            if (loutputselection=="Outmm") {lengthout=lengthout*1;}
            if (loutputselection=="Outcm") {lengthout=lengthout*0.1;}
            if (loutputselection=="Outm") {lengthout=lengthout*0.001;}
            if (loutputselection=="Outkm") {lengthout=lengthout*0.000001;}
            if (loutputselection=="Outin") {lengthout=lengthout*0.039370;}
            if (loutputselection=="Outft") {lengthout=lengthout*0.003280;}
            if (loutputselection=="Outmi") {lengthout=lengthout*0.00000062137;}
        }
    if (linputselection=="Incm") 
        {
            if (loutputselection=="Outmm") {lengthout=lengthout*10;}
            if (loutputselection=="Outcm") {lengthout=lengthout*1;}
            if (loutputselection=="Outm") {lengthout=lengthout*0.01;}
            if (loutputselection=="Outkm") {lengthout=lengthout*0.00001;}
            if (loutputselection=="Outin") {lengthout=lengthout*0.39370;}
            if (loutputselection=="Outft") {lengthout=lengthout*0.032808;}
            if (loutputselection=="Outmi") {lengthout=lengthout*0.0000062137;}
        }
    if (linputselection=="Inm") 
        {
            if (loutputselection=="Outmm") {lengthout=lengthout*1000;}
            if (loutputselection=="Outcm") {lengthout=lengthout*100;}
            if (loutputselection=="Outm") {lengthout=lengthout*1;}
            if (loutputselection=="Outkm") {lengthout=lengthout*0.001;}
            if (loutputselection=="Outin") {lengthout=lengthout*39.370;}
            if (loutputselection=="Outft") {lengthout=lengthout*3.2808;}
            if (loutputselection=="Outmi") {lengthout=lengthout*0.00062137;}
        }
    if (linputselection=="Inkm") 
        {
            if (loutputselection=="Outmm") {lengthout=lengthout*1000000;}
            if (loutputselection=="Outcm") {lengthout=lengthout*100000;}
            if (loutputselection=="Outm") {lengthout=lengthout*1000;}
            if (loutputselection=="Outkm") {lengthout=lengthout*1;}
            if (loutputselection=="Outin") {lengthout=lengthout*39370.08;}
            if (loutputselection=="Outft") {lengthout=lengthout*3280.84;}
            if (loutputselection=="Outmi") {lengthout=lengthout*0.621371;}
        }
    if (linputselection=="Inin") 
        {
            if (loutputselection=="Outmm") {lengthout=lengthout*25.4;}
            if (loutputselection=="Outcm") {lengthout=lengthout*2.54;}
            if (loutputselection=="Outm") {lengthout=lengthout*0.0254;}
            if (loutputselection=="Outkm") {lengthout=lengthout*0.0000254;}
            if (loutputselection=="Outin") {lengthout=lengthout*1;}
            if (loutputselection=="Outft") {lengthout=lengthout*0.08333;}
            if (loutputselection=="Outmi") {lengthout=lengthout*0.000015783;}
        }
    if (linputselection=="Inft") 
        {
            if (loutputselection=="Outmm") {lengthout=lengthout*304.8;}
            if (loutputselection=="Outcm") {lengthout=lengthout*30.48;}
            if (loutputselection=="Outm") {lengthout=lengthout*0.3048;}
            if (loutputselection=="Outkm") {lengthout=lengthout*0.0003048;}
            if (loutputselection=="Outin") {lengthout=lengthout*12;}
            if (loutputselection=="Outft") {lengthout=lengthout*1;}
            if (loutputselection=="Outmi") {lengthout=lengthout*0.00018939;}
        }
    if (linputselection=="Inmi") 
        {
            if (loutputselection=="Outmm") {lengthout=lengthout*1609344;}
            if (loutputselection=="Outcm") {lengthout=lengthout*160934.4;}
            if (loutputselection=="Outm") {lengthout=lengthout*1609.344;}
            if (loutputselection=="Outkm") {lengthout=lengthout*1.6093;}
            if (loutputselection=="Outin") {lengthout=lengthout*63360;}
            if (loutputselection=="Outft") {lengthout=lengthout*5280;}
            if (loutputselection=="Outmi") {lengthout=lengthout*1;}
        }
    document.getElementById("lengthoutputvalue").value=lengthout.toPrecision(6);
}

function DTCalculateSpeed()
{
    //input
    var speedout=document.getElementById("speedinputvalue").value;
    var inputselection=document.getElementById("speedinputchoice").value;
    var outputselection=document.getElementById("speedoutputchoice").value;
    //output (should really be in matrix form)
    if (inputselection=="Inms") 
        {
            if (outputselection=="Outms") {speedout=speedout*1;}
            if (outputselection=="Outkmh") {speedout=speedout*3.6;}
            if (outputselection=="Outmih") {speedout=speedout*2.237;}
            if (outputselection=="Outfts") {speedout=speedout*3.281;}
        }
    if (inputselection=="Inkmh") 
        {
            if (outputselection=="Outms") {speedout=speedout*0.2778;}
            if (outputselection=="Outkmh") {speedout=speedout*1;}
            if (outputselection=="Outmih") {speedout=speedout*0.6214;}
            if (outputselection=="Outfts") {speedout=speedout*0.9113;}
        }
    if (inputselection=="Inmih") 
        {
            if (outputselection=="Outms") {speedout=speedout*0.447;}
            if (outputselection=="Outkmh") {speedout=speedout*1.609;}
            if (outputselection=="Outmih") {speedout=speedout*1;}
            if (outputselection=="Outfts") {speedout=speedout*1.467;}
        }
    if (inputselection=="Infts") 
        {
            if (outputselection=="Outms") {speedout=speedout*0.3048;}
            if (outputselection=="Outkmh") {speedout=speedout*1.097;}
            if (outputselection=="Outmih") {speedout=speedout*0.6818;}
            if (outputselection=="Outfts") {speedout=speedout*1;}
        }
    document.getElementById("speedoutputvalue").value=speedout.toPrecision(6);
}

function DTCalculateAngVel()
{
    var angvelout=document.getElementById("angvelinputvalue").value;
    var angvelinputselection=document.getElementById("angvelinputchoice").value;
    var angveloutputselection=document.getElementById("angveloutputchoice").value;
    if (angvelinputselection=="inrads") 
        {
            if (angveloutputselection=="outrads") {angvelout=angvelout*1;}
            if (angveloutputselection=="outrpm") {angvelout=angvelout*9.5492;}
        }
    if (angvelinputselection=="inrpm") 
        {
            if (angveloutputselection=="outrads") {angvelout=angvelout*0.10472;}
            if (angveloutputselection=="outrpm") {angvelout=angvelout*1;}
        }
    document.getElementById("angveloutputvalue").value=angvelout.toPrecision(6);
}
</script>

<p>* <em>Note: Weight (force) and mass are different entities.</em><br />
<em>To convert mass to weight, multiply by gravity (9.81 m/s^2 or 32f t/s^2).</em><br />
** <em>Note: Although kg-cm is used throughout the RobotShop site, it is actually kgf-cm. Similarly, oz-in should actually read ozf-in throughout the site.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/unit-conversion-tool-9737/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Robot Arm Torque Calculator</title>
		<link>http://www.robotshop.com/blog/en/robot-arm-torque-calculator-9712</link>
		<comments>http://www.robotshop.com/blog/en/robot-arm-torque-calculator-9712#comments</comments>
		<pubDate>Fri, 08 Mar 2013 01:45:49 +0000</pubDate>
		<dc:creator>RB1</dc:creator>
				<category><![CDATA[Dynamic Tools]]></category>
		<category><![CDATA[Arm]]></category>
		<category><![CDATA[Calculator]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=9712</guid>
		<description><![CDATA[The Robot Torque Arm Calculator is intended to help you choose the right motor for each joint of your robotic arm. The torque (T) required at each joint is calculated as a worst case scenario (lifting weight at 90 degrees). Ensure your units are consistent. Most common units are kg-cm and oz-in. Take a look <a href="http://www.robotshop.com/blog/en/robot-arm-torque-calculator-9712" class="more-link" title="Read Robot Arm Torque Calculator">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<p>The Robot Torque Arm Calculator is intended to help you choose the right motor for each joint of your robotic arm. The torque (T) required at each joint is calculated as a worst case scenario (lifting weight at 90 degrees). Ensure your units are consistent. Most common units are kg-cm and oz-in. Take a look at the <a  href="http://www.robotshop.com/blog/en/?p=7152">Robot Arm Torque Tutorial</a> for more information.</p>
<ul>
<li><strong>L:</strong> length from pivot to pivot.</li>
<li><strong>M:</strong> link mass</li>
<li><strong>A:</strong> Actuator (servo or other) mass. Note: same units as for link masses.</li>
<li><strong>A1:</strong> can represent the load being lifted.</li>
</ul>
<div id="attachment_9713" class="wp-caption aligncenter" style="width: 460px"><a  href="http://www.robotshop.com/blog/en/files/robot-arm-tutorial.jpg"><img class="size-full wp-image-9713" title="Robot Arm Torque Calculator" alt="Robot Arm Torque Calculator" src="http://www.robotshop.com/blog/en/files/robot-arm-tutorial.jpg" width="450" height="400" /></a><p class="wp-caption-text">Robot Arm Torque Calculator</p></div>
<p>Use the image above to help you determine which torque corresponds to which joint. Note the numbering starts with the extremity of the arm, so the final torque is the one lifting the entire arm (start from A1 being the load you wish to carry at full reach.). The torque shown is the STALL TORQUE you can use for your search.</p>

<table>
    <tbody>
        <tr>
            <td>L:</td>
            <td>[cm]</td>
            <td>M:</td>
            <td>[kg]</td>
            <td>A:</td>
            <td>[kg]</td>
            <td>T:</td>
            <td>[kg cm]</td>
        </tr>
        <tr>
            <td>L1:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="length1"></td>
            <td>M1:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="mass1"></td>
            <td>A1:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="servo1"></td>
            <td>T1:</td>
            <td><input class="span1 uneditable-input" value="0" onkeyup="DTArmCalculate();" id="torque1"></td>
        </tr>
        <tr>
            <td>L2:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="length2"></td>
            <td>M2:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="mass2"></td>
            <td>A2:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="servo2"></td>
            <td>T2:</td>
            <td><input class="span1 uneditable-input" value="0" onkeyup="DTArmCalculate();" id="torque2"></td>
        </tr>
        <tr>
            <td>L3:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="length3"></td>
            <td>M3:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="mass3"></td>
            <td>A3:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="servo3"></td>
            <td>T3:</td>
            <td><input class="span1 uneditable-input" value="0" onkeyup="DTArmCalculate();" id="torque3"></td>
        </tr>
        <tr>
            <td>L4:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="length4"></td>
            <td>M4:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="mass4"></td>
            <td>A4:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="servo4"></td>
            <td>T4:</td>
            <td><input class="span1 uneditable-input" value="0" onkeyup="DTArmCalculate();" id="torque4"></td>
        </tr>
        <tr>
            <td>L5:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="length5"></td>
            <td>M5:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="mass5"></td>
            <td>A5:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="servo5"></td>
            <td>T5:</td>
            <td><input class="span1 uneditable-input" value="0" onkeyup="DTArmCalculate();" id="torque5"></td>
        </tr>
        <tr>
            <td>L6:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="length6"></td>
            <td>M6:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="mass6"></td>
            <td>A6:</td>
            <td><input class="span12" value="0" onkeyup="DTArmCalculate();" id="servo6"></td>
            <td>T6:</td>
            <td><input class="span1 uneditable-input" value="0" onkeyup="DTArmCalculate();" id="torque6"></td>
        </tr>
    </tbody>
</table>
<script language="javascript">
function DTArmCalculate()
{

var LEN1=(document.getElementById("length1").value);
var LEN2=(document.getElementById("length2").value);
var LEN3=(document.getElementById("length3").value);
var LEN4=(document.getElementById("length4").value);
var LEN5=(document.getElementById("length5").value);
var LEN6=(document.getElementById("length6").value);
var MAS1=document.getElementById("mass1").value;
var MAS2=document.getElementById("mass2").value;
var MAS3=document.getElementById("mass3").value;
var MAS4=document.getElementById("mass4").value;
var MAS5=document.getElementById("mass5").value;
var MAS6=document.getElementById("mass6").value;
var SER1=document.getElementById("servo1").value;
var SER2=document.getElementById("servo2").value;
var SER3=document.getElementById("servo3").value;
var SER4=document.getElementById("servo4").value;
var SER5=document.getElementById("servo5").value;
var SER6=document.getElementById("servo6").value;

LEN1 = Number(LEN1) 
LEN2 = Number(LEN2)
LEN3 = Number(LEN3)
LEN4 = Number(LEN4)
LEN5 = Number(LEN5)
LEN6 = Number(LEN6)
MAS1 = Number(MAS1)
MAS2 = Number(MAS2)
MAS3 = Number(MAS3)
MAS4 = Number(MAS4)
MAS5 = Number(MAS5)
MAS6 = Number(MAS6)
SER1 = Number(SER1)
SER2 = Number(SER2)
SER3 = Number(SER3)
SER4 = Number(SER4)
SER5 = Number(SER5)
SER6 = Number(SER6)

var TOR1=SER1*(LEN1)+MAS1*(LEN1/2);
var TOR2=SER1*((LEN2)+(LEN1))+MAS1*(LEN2+LEN1/2)+SER2*(LEN2)+MAS2*(LEN2/2);
var TOR3=SER1*(LEN3+LEN2+LEN1)+MAS1*(LEN3+LEN2+LEN1/2)+SER2*(LEN3+LEN2)+MAS2*(LEN3+LEN2/2)+SER3*(LEN3)+MAS3*(LEN3/2);
var TOR4=SER1*(LEN4+LEN3+LEN2+LEN1)+MAS1*(LEN4+LEN3+LEN2+LEN1/2)+SER2*(LEN4+LEN3+LEN2)+MAS2*(LEN4+LEN3+LEN2/2)+SER3*(LEN4+LEN3)+MAS3*(LEN4+LEN3/2)+SER4*(LEN4)+MAS4*(LEN4/2);
var TOR5=SER1*(LEN5+LEN4+LEN3+LEN2+LEN1)+MAS1*(LEN5+LEN4+LEN3+LEN2+LEN1/2)+SER2*(LEN5+LEN4+LEN3+LEN2)+MAS2*(LEN5+LEN4+LEN3+LEN2/2)+SER3*(LEN5+LEN4+LEN3)+MAS3*(LEN5+LEN4+LEN3/2)+SER4*(LEN5+LEN4)+MAS4*(LEN5+LEN4/2)+SER5*(LEN5)+MAS5*(LEN5/2);
var TOR6=SER1*(LEN6+LEN5+LEN4+LEN3+LEN2+LEN1)+MAS1*(LEN6+LEN5+LEN4+LEN3+LEN2+LEN1/2)+SER2*(LEN6+LEN5+LEN4+LEN3+LEN2)+MAS2*(LEN6+LEN5+LEN4+LEN3+LEN2/2)+SER3*(LEN6+LEN5+LEN4+LEN3)+MAS3*(LEN6+LEN5+LEN4+LEN3/2)+SER4*(LEN6+LEN5+LEN4)+MAS4*(LEN6+LEN5+LEN4/2)+SER5*(LEN6+LEN5)+MAS5*(LEN6+LEN5/2)+SER6*(LEN6)+MAS6*(LEN6/2);

if (LEN1 == 0) {TOR1=0;}
if (LEN2 == 0) {TOR2=0;}
if (LEN3 == 0) {TOR3=0;}
if (LEN4 == 0) {TOR4=0;}
if (LEN5 == 0) {TOR5=0;}
if (LEN6 == 0) {TOR6=0;}
if (SER1 == 0 & MAS1 == 0) {TOR1=0;}

document.getElementById("torque1").value=TOR1;
document.getElementById("torque2").value=TOR2;
document.getElementById("torque3").value=TOR3;
document.getElementById("torque4").value=TOR4;
document.getElementById("torque5").value=TOR5;
document.getElementById("torque6").value=TOR6;

}
</script>

]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/robot-arm-torque-calculator-9712/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Drive Motor Sizing Tool</title>
		<link>http://www.robotshop.com/blog/en/drive-motor-sizing-tool-9698</link>
		<comments>http://www.robotshop.com/blog/en/drive-motor-sizing-tool-9698#comments</comments>
		<pubDate>Thu, 07 Mar 2013 20:51:32 +0000</pubDate>
		<dc:creator>RB1</dc:creator>
				<category><![CDATA[Dynamic Tools]]></category>
		<category><![CDATA[Drive]]></category>
		<category><![CDATA[Motors]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=9698</guid>
		<description><![CDATA[The Drive Motor Sizing Tool is intended to give an idea of the type of drive motor required for your specific robot by taking known values and calculating values required when searching for a motor. DC motors are generally used for continuous rotation drive systems, though can be used for partial (angle to angle) rotation <a href="http://www.robotshop.com/blog/en/drive-motor-sizing-tool-9698" class="more-link" title="Read Drive Motor Sizing Tool">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<div id="attachment_7162" class="wp-caption aligncenter" style="width: 310px"><a  href="http://www.robotshop.com/blog/en/files/drive-motor-sizing1.jpg"><img class="size-medium wp-image-7162" title="Drive Motor Sizing" alt="Drive Motor Sizing" src="http://www.robotshop.com/blog/en/files/drive-motor-sizing1-300x213.jpg" width="300" height="213" /></a><p class="wp-caption-text">Drive Motor Sizing</p></div>
<p>The Drive Motor Sizing Tool is intended to give an idea of the type of drive motor required for your specific robot by taking known values and calculating values required when searching for a motor. DC motors are generally used for continuous rotation drive systems, though can be used for partial (angle to angle) rotation as well. They come in an almost infinite variety of speeds and torques to suite any need. Without a geardown, DC motors turn very fast (thousands of revolutions per minute (rpm)), but have little torque. To get feedback of the angle or the speed of the motor, consider a motor with an encoder option.</p>
<p>Gear motors are essentially DC motors with an added geardown. Adding a geardown both reduces the speed and increases the torque. For example, an unloaded DC motor might spin at 12000 rpm and provide 0.1 kg-cm of torque. A 225:1 geardown is added to proportionally reduce the speed and increase the torque: 12000 rpm / 225 = 53.3 rpm and 0.1 x 225 = 22.5 kg-cm. The motor will now be able to move significantly more weight at a more reasonable speed.</p>
<p>If you are not certain about what value to enter, try to make a good &#8220;educated&#8221; guess.</p>
<p>Click each link for more explanation about the effect of each input value. You are also encouraged to look at the <a  href="http://www.robotshop.com/blog/en/?p=3661">Drive Motor Sizing Tutorial</a>, where you will find all the equations used in this tool complete with explanations.</p>
<h3>Input</h3>

<form class="form-horizontal">
    <div class="control-group">
        <label class="control-label" for="va">Total mass:</label>
        <div class="controls form-inline">
            <input id="va" onkeyup="DTMotorCalculate();" value="1">
            <select id="cva" onclick="DTMotorCalculate();">
                <option selected value="cva1">Kg</option>
                <option value="cva2">lbs</option>
                <option value="cva3">g</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vb"><a href="http://www.robotshop.com/blog/en/?p=3654">Number of drive motors:</a></label>
        <div class="controls form-inline">
            <input id="vb" onkeyup="DTMotorCalculate();" value="2">
            <label for="vb">[#]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vc"><a href="http://www.robotshop.com/blog/en/?p=3653">Radius of drive wheel:</a></label>
        <div class="controls form-inline">
            <input id="vc" onkeyup="DTMotorCalculate();" value="0.03">
            <select id="cvc" onclick="DTMotorCalculate();">
                <option selected value="cvc1">m</option>
                <option value="cvc2">in</option>
                <option value="cvc3">ft</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vd"><a href="http://www.robotshop.com/blog/en/?p=3650">Robot Velocity:</a></label>
        <div class="controls form-inline">
            <input id="vd" onkeyup="DTMotorCalculate();" value="2">
            <select id="cvd" onclick="DTMotorCalculate();">
                <option selected value="cvd1">m/s</option>
                <option value="cvd2">ft/s</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="ve">Maximum incline:</label>
        <div class="controls form-inline">
            <input id="ve" onkeyup="DTMotorCalculate();" value="20">
            <label for="ve">[deg]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vf">Supply voltage:</label>
        <div class="controls form-inline">
            <input id="vf" onkeyup="DTMotorCalculate();" value="12">
            <label for="vf">[V]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vg">Desired acceleration:</label>
        <div class="controls form-inline">
            <input id="vg" onkeyup="DTMotorCalculate();" value="0.2">
            <select id="cvg" onclick="DTMotorCalculate();">
                <option selected value="cvg1">m/s2</option>
                <option value="cvg2">ft/s2</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vh">Desired operating time:</label>
        <div class="controls form-inline">
            <input id="vh" onkeyup="DTMotorCalculate();" value="1">
            <select id="cvh" onclick="DTMotorCalculate();">
                <option selected value="cvh1">min</option>
                <option value="cvh2">hs</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vi">Total efficiency:</label>
        <div class="controls form-inline">
            <input id="vi" onkeyup="DTMotorCalculate();" value="65">
            <label for="vi">[%]</label>
        </div>
    </div>
</form>

<h3>Output (for each drive motor)</h3>
<p>
<form class="form-horizontal">
    <div class="control-group">
        <label class="control-label" for="vj">Angular Velocity:</label>
        <div class="controls form-inline">
            <input class="uneditable-input" id="vj" onclick="DTMotorCalculate();" value="66.667">
            <select id="cvj" onclick="DTMotorCalculate();">
                <option selected value="cvj1">rad/s</option>
                <option value="cvj2">rev/min</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vk">Torque*:</label>
        <div class="controls form-inline">
            <input class="uneditable-input" id="vk" onclick="DTMotorCalculate();" value="0.082043">
            <select id="cvk" onclick="DTMotorCalculate();">
                <option selected value="cvk1">Nm</option>
                <option value="cvk2">kgf-cm</option>
                <option value="cvk3">ozf-in</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vl">Total Power:</label>
        <div class="controls form-inline">
            <input class="uneditable-input" id="vl" onclick="DTMotorCalculate();" value="5.4696">
            <select id="cvl" onclick="DTMotorCalculate();">
                <option selected value="cvl1">W</option>
                <option value="cvl2">hp</option>
            </select>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vm">Maximum current:</label>
        <div class="controls form-inline">
            <input class="uneditable-input" id="vm" onclick="DTMotorCalculate();" value="0.45580">
            <label for="vm">[A]</label>
        </div>
    </div>

    <div class="control-group">
        <label class="control-label" for="vn">Battery Pack</label>
        <div class="controls form-inline">
            <input class="uneditable-input" id="vn" onclick="DTMotorCalculate();" value="0.015193">
            <label for="vn">[Ah]</label>
        </div>
    </div>

</form>
<br />
* <EM>Note: Although kg-cm is used throughout the RobotShop site, it is actually kgf-cm. Similarly, oz-in should actually read ozf-in throughout the site.</EM></p>

<script language="JavaScript">
function DTMotorCalculate() 
{
    VA = document.getElementById("va").value;
    CVA = document.getElementById("cva").value;
    VB = document.getElementById("vb").value;
    VC = document.getElementById("vc").value;
    CVC = document.getElementById("cvc").value;
    VD = document.getElementById("vd").value;
    CVD = document.getElementById("cvd").value;
    VE = document.getElementById("ve").value;
    VF = document.getElementById("vf").value;
    VG = document.getElementById("vg").value;
    CVG = document.getElementById("cvg").value;
    VH = document.getElementById("vh").value;
    CVH = document.getElementById("cvh").value;
    VI = document.getElementById("vi").value;
    CVJ = document.getElementById("cvj").value;
    CVK = document.getElementById("cvk").value;
    CVL = document.getElementById("cvl").value;

    VA = Number(VA)
    VB = Number(VB)
    VC = Number(VC)
    VD = Number(VD)
    VE = Number(VE)
    VF = Number(VF)
    VG = Number(VG)
    VH = Number(VH)
    VI = Number(VI)

    if(CVA=="cva2"){VA=VA*0.45359237;}
    if(CVA=="cva3"){VA=VA*0.001;}
    if(CVC=="cvc2"){VC=VC/39.3700787;}
    if(CVC=="cvc3"){VC=VC*0.3048;}
    if(CVD=="cvd2"){VD=VD*0.3048;}
    if(CVH=="cvh1"){VH=VH/60;}
    if(CVG=="cvg2"){VG=VG*0.3048;}

    //calculations performed in metric
    VJ = (VD/VC);
    VK = (100/VI)*(VG + 9.81*(Math.sin(3.1415926*VE/180)))*VA*VC/VB;
    VL = VJ*VK;
    VM = VL/VF;
    VN = VM*VH*VB;

    if(CVJ=="cvj1"){VJ=VJ;}
    if(CVJ=="cvj2"){VJ=VJ*60/(2*3.14);}
    if(CVK=="cvk1"){VK=VK;}
    if(CVK=="cvk2"){VK=VK*100/9.81;}
    if(CVK=="cvk3"){VK=VK*141.593;}
    if(CVL=="cvl1"){VL=VL;}
    if(CVL=="cvl2"){VL=VL*0.00134102209;}

    document.getElementById("vj").value=VJ.toPrecision(5);
    document.getElementById("vk").value=VK.toPrecision(5);
    document.getElementById("vl").value=VL.toPrecision(5);
    document.getElementById("vm").value=VM.toPrecision(5);
    document.getElementById("vn").value=VN.toPrecision(5);
} 
</script>

]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/drive-motor-sizing-tool-9698/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Robot Arm Torque Tutorial</title>
		<link>http://www.robotshop.com/blog/en/robot-arm-torque-tutorial-7152</link>
		<comments>http://www.robotshop.com/blog/en/robot-arm-torque-tutorial-7152#comments</comments>
		<pubDate>Thu, 28 Feb 2013 19:10:32 +0000</pubDate>
		<dc:creator>Coleman Benson</dc:creator>
				<category><![CDATA[Dynamic Tools]]></category>
		<category><![CDATA[How To Make a Robot]]></category>
		<category><![CDATA[Mechanics]]></category>
		<category><![CDATA[Arm]]></category>
		<category><![CDATA[calculation]]></category>
		<category><![CDATA[equations]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[robot]]></category>
		<category><![CDATA[torque]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=7152</guid>
		<description><![CDATA[This tutorial is intended to complement the Robot Arm Torque Calculator found in the Dynamic Tools section of GoRobotics. The equations used in the calculator to determine the torque required at any given lifting joint (raising the arm vertically) in a robotic arm are presented here. Note that the term &#8220;actuator&#8221; is used rather than motor because <a href="http://www.robotshop.com/blog/en/robot-arm-torque-tutorial-7152" class="more-link" title="Read Robot Arm Torque Tutorial">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<p>This tutorial is intended to complement the <a  title="Robot Arm Torque Calculator" href="http://www.robotshop.com/blog/en/?p=9712">Robot Arm Torque Calculator</a> found in the Dynamic Tools section of GoRobotics. The equations used in the calculator to determine the torque required at any given lifting joint (raising the arm vertically) in a robotic arm are presented here. Note that the term &#8220;actuator&#8221; is used rather than motor because not all robotic arms necessarily use servo motors (some may use pneumatics, hydraulics, etc.).</p>
<p align="center"><img alt="" src="http://www.robotshop.com/content/images/learningcenter/robot-arm-torque.jpg" /></p>
<p>Torque (<strong>T</strong>) is defined as a turning or twisting “force” and is calculated using the following relation:</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/tfl.gif" />
<p>The force (<strong>F</strong>) acts at a length (<strong>L</strong>) from a pivot point. In a vertical plane, the force acting on an object (causing it to fall) is the acceleration due to gravity (<strong>g</strong> = 9.81m/s<sup>2</sup>) multiplied by its mass:</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/fmg.bmp" />
<p>The force above is also considered the object&#8217;s weight (<strong>W</strong>).</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/wmg.gif" />
<p>The torque required to hold a mass at a given distance from a pivot is therefore:</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/tmgl.gif" />
<p>This can be found similarly by doing a torque balance about a point. Note that the length L is the <strong>PERPENDICULAR</strong> length from the pivot to the force.</p>
<p align="center"><img alt="" src="http://www.robotshop.com/content/images/learningcenter/fdta.bmp" /></p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/stfl.gif" />
<p>Therefore, replacing F with m*g, we find the same equation above. This method is the more accurate way to find torque (using a torque balance).</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/mglta.gif" />
<p>In order to estimate the torque required at each joint, we must choose the worst case scenario.</p>
<p align="center"><img alt="" src="http://www.robotshop.com/content/images/learningcenter/fd.bmp" /></p>
<p>In the above image, a link of length L is rotated clockwise. Only the perpendicular component of length between the pivot and the force is taken into account. We observe that this distance decreases from L3 to L1 (L1 being zero). Since the equation for torque is length (or distance) multiplied by the force, the greatest value will be obtained using L3, since F does not change. You can similarly rotate the link counterclockwise and observe the same effect.</p>
<p>It can be safe to assume that the actuators in the arm will be subjected to the highest torque when the arm is stretched horizontally. Although your robot may never be designed to encounter this scenario, it should not fail under its own weight if stretched horizontally without a load.</p>
<p>The weight of the object (the &#8220;load&#8221;) being held (<strong>A1</strong> in the diagram), multiplied by the distance between its center of mass and the pivot gives the torque required at the pivot. The tool takes into consideration that the links may have a significant weight (<strong>W1</strong>, <strong>W2</strong>..) and assumes its center of mass is located at roughly the center of its length. The torques caused by these different masses must be added:</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/t1.gif" />
<p><em>Note: do not confuse &#8216;<strong>A</strong>&#8216; (the weight of the actuator or load) with &#8216;a&#8217; (acceleration).</em></p>
<p>You may note that the actuator weight <strong>A2</strong> as shown in the diagram below is not included when calculating the torque at that point. This is because the length between its center of mass and the pivot point is zero. Similarly, when calculating the torque required by the actuator <strong>A3</strong>, its own mass is not considered. The torque required at the second joint must be re-calculated with new lengths, as shown below (applied torque shown in pink):</p>
<p align="center"><img alt="" src="http://www.robotshop.com/content/images/learningcenter/arm-torque-2.bmp" /></p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/t2.gif" />
<p>Knowing that the link weight (<strong>W1, W2</strong>) are located in the center (middle) of the lengths, and the distance between actuators (<strong>L1</strong> and <strong>L3</strong> as in the diagram above) we re-write the equation as:</p>
<p><img alt="" src="http://www.robotshop.com/content/images/learningcenter/t2a.gif" /><br />
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/t2bb.gif" /></p>
<p>The tool only requires that the user enter the lengths of each link, which would be L1 and L3 above so the equation is shown accordingly. The torques at each subsequent joint can be found similarly, by re-calculating the lengths between each weight and each new pivot point.</p>
<p><em>Note: if any of the joints have two or more motors, they share the torque required evenly. Because the base of the arm is subjected to the highest torque, often two actuators are used instead of one.</em></p>
<p><em>More Advanced:</em></p>
<p>The above equations only deal with the case where the robot arm is being held horizontally (not in motion). This is not necessarily the &#8220;worst case&#8221; scenario. For the arm to move from a rest position, an acceleration is required. To solve for this added torque, it is known that the sum of torques acting at a pivot point is equal to the moment of inertia (<strong>I</strong>) multiplied by the angular acceleration (<strong>alpha</strong>):</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/tia.gif" />
<p>To calculate the extra torque required to move (i.e. create an angular acceleration) you would calculate the moment of inertia of the part from the end to the pivot using the equation (or an equation similar to):</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/imr.gif" />
<p>Note this equation calculates the moment of inertia about the center of mass. In the case of a robotic arm, the moment of inertia must take into consideration that the part is being rotated about a pivot point located a distance away from the center of mass and a second term ( <strong>+MR<sup>2</sup></strong> ) needs to be added. For each joint, the moment of inertia is calculated by adding the products of each individual mass (<strong>m<sub><em>i</em></sub></strong>) by the square of its respective length from the pivot (<strong>r<sub><em>i</em></sub></strong>). Note that the equation for calculating the moment of inertia to consider for actuator <strong>N</strong> omits the mass of the actuator at the pivot point (<strong>N-1</strong>):</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/ismiri.gif" />
<p><em>Note: The equation used to calculate the moment of inertia above (in this case multiplied by a constant value of 1/2) is not universal but rather varies from part to part (hollow vs. solid bar, cylindrical vs. rectangular cross-section etc.). The moment of inertia also differs depending on which axis is considered (Ixx, Iyy, Izz can all be different). More information about moment of inertia can be found by doing a search on the internet.</em></p>
<p>In all cases considered here, ‘r’ represents the distance from the center of mass to the pivot. Since the moment of inertia varies tremendously from part to part, angular acceleration is not taken into consideration with the Robot Arm Torque Calculator. Instead, to correct for possible angular acceleration, a “safety factor” is used and set to 2 by default. As with all dynamic tools, inefficiencies in the actuators and joints themselves must also be taken into consideration. This way, the motor at each joint will be able to provide more than the required torque to keep the arm stationary. The required torque to accelerate the weight being support by an actuator from a static position can be calculated using the following relation:</p>
<img alt="" src="http://www.robotshop.com/content/images/learningcenter/sumt.gif" />
]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/robot-arm-torque-tutorial-7152/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoRobotics Selected to be the Best Robotic Resource for Electrical Enginners</title>
		<link>http://www.robotshop.com/blog/en/gorobotics-selected-to-be-the-best-robotic-resource-for-electrical-enginners-7065</link>
		<comments>http://www.robotshop.com/blog/en/gorobotics-selected-to-be-the-best-robotic-resource-for-electrical-enginners-7065#comments</comments>
		<pubDate>Tue, 26 Feb 2013 21:31:16 +0000</pubDate>
		<dc:creator>RB1</dc:creator>
				<category><![CDATA[RobotShop]]></category>
		<category><![CDATA[Schools & Curriculum]]></category>
		<category><![CDATA[Badge]]></category>
		<category><![CDATA[Electrical Engineering]]></category>
		<category><![CDATA[resources]]></category>
		<category><![CDATA[Top 100]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=7065</guid>
		<description><![CDATA[If you have a keen sense of observation, you would have noticed the badge over to the GoRobotics logo, if not, here it is again. We are very proud to announce that GoRobotics was selected to be the Best Robotics Resource for Electrical Engineers by the Electrical Engineering Schools website, a portal focusing on educational resources for EE students. <a href="http://www.robotshop.com/blog/en/gorobotics-selected-to-be-the-best-robotic-resource-for-electrical-enginners-7065" class="more-link" title="Read GoRobotics Selected to be the Best Robotic Resource for Electrical Enginners">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<p>If you have a keen sense of observation, you would have noticed the badge over to the <a  href="http://www.robotshop.com/blog/en/robots/gorobotics">GoRobotics logo</a>, if not, here it is again.</p>
<div id="attachment_7066" class="wp-caption aligncenter" style="width: 196px"><a  href="http://www.robotshop.com/blog/en/files/top_resource_for_electrical_engineers.png"><img class="size-full wp-image-7066 " title="Top Resource for Electrical Engineers" alt="Top Resource for Electrical Engineers" src="http://www.robotshop.com/blog/en/files/top_resource_for_electrical_engineers.png" width="186" height="187" /></a><p class="wp-caption-text">Top Resource for Electrical Engineers</p></div>
<p>We are very proud to announce that GoRobotics was selected to be the <a  href="http://www.electricalengineeringschools.org/engineer-resources/#robot">Best Robotics Resource for Electrical Engineers</a> by the Electrical Engineering Schools website, a portal focusing on educational resources for EE students. We are very happy to see that our efforts in trying to provide everybody with the information need to understand and make robots are appreciated by the community.</p>
<blockquote><p>GoRobotics has everything the robotics beginners need to start their projects. With a section titled “How to build a Robot” along with forums and social networking page, those fascinated with robots will find everything here they need</p>
<p>- <a  href="http://www.electricalengineeringschools.org/engineer-resources/#robot">Electrical Engineering Schools</a></p></blockquote>
<p>We must of course thank our community for this achievement, which participates with question, suggestions, and overall interest in robotics. As long as our readers are willing to learn about robotics and create robots, we will keep working to bring you the information and resources needed to make the process easier and more enjoyable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/gorobotics-selected-to-be-the-best-robotic-resource-for-electrical-enginners-7065/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GoRobotics Merges with the RobotShop Blog</title>
		<link>http://www.robotshop.com/blog/en/gorobotics-merges-with-the-robotshop-blog-7042</link>
		<comments>http://www.robotshop.com/blog/en/gorobotics-merges-with-the-robotshop-blog-7042#comments</comments>
		<pubDate>Tue, 26 Feb 2013 20:04:54 +0000</pubDate>
		<dc:creator>RB1</dc:creator>
				<category><![CDATA[RobotShop]]></category>
		<category><![CDATA[Where to Start]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[GoRobotics]]></category>
		<category><![CDATA[Merger]]></category>
		<category><![CDATA[Revamping]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=7042</guid>
		<description><![CDATA[GoRobotics has been renewed and integrated into RobotShop blog. In the objective to keep one of the best online resources for robotic learning evolving and current, we revamped its looks, re-categorized its posts, added a bunch of new content and merged it with the RobotShop Blog. Wait what? All the resources from GoRobotics.net have been integrated along with the <a href="http://www.robotshop.com/blog/en/gorobotics-merges-with-the-robotshop-blog-7042" class="more-link" title="Read GoRobotics Merges with the RobotShop Blog">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<div id="attachment_7045" class="wp-caption aligncenter" style="width: 510px"><a  href="http://www.robotshop.com/blog/en/files/gorobotics-education.jpg"><img class="size-large wp-image-7045" title="GoRobotics Education" alt="GoRobotics Education" src="http://www.robotshop.com/blog/en/files/gorobotics-education-500x500.jpg" width="500" height="500" /></a><p class="wp-caption-text">GoRobotics Education</p></div>
<p><a  href="http://gorobotics.net" rel="nofollow">GoRobotics</a> has been renewed and integrated into RobotShop blog. In the objective to keep one of the best online resources for robotic learning evolving and current, we revamped its looks, re-categorized its posts, added a bunch of new content and merged it with the RobotShop Blog.</p>
<h3>Wait what?</h3>
<p>All the resources from GoRobotics.net have been integrated along with the older RobotShop blog, and the RobotShop Learning Center to create a new comprehensive resource about robotics news and learning. Feel free to browse the entire GoRobotics contents.</p>
<h3>So what does it change for me?</h3>
<p>You will find all the GoRobotics content by going to the old addresses you are used to, or you can simply visit the <a  title="GoRobotics Education" href="http://www.robotshop.com/blog/en/robots/gorobotics">GoRobotics category page</a>.</p>
<p>Also, if you were subscribed to the feeds, we recommend you update your  subscription and use the global feed from now now on: <a  href="http://feeds.feedburner.com/RobotshopFeeds" target="_blank">http://feeds.feedburner.com/RobotshopFeeds</a></p>
<p>By following this feed or website, you will get all the latest robotics learning material and the latest robotic news.</p>
<h3>Now what?</h3>
<p>Now you can browse, explore, discover the new GoRobotics articles and rediscover the previous material under a new light. If you like (or hate) what you see leave a comment below and share your thoughts with us.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/gorobotics-merges-with-the-robotshop-blog-7042/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Basics: How Do I Choose a Battery?</title>
		<link>http://www.robotshop.com/blog/en/how-do-i-choose-a-battery-8-3585</link>
		<comments>http://www.robotshop.com/blog/en/how-do-i-choose-a-battery-8-3585#comments</comments>
		<pubDate>Tue, 15 Jan 2013 16:33:31 +0000</pubDate>
		<dc:creator>Coleman Benson</dc:creator>
				<category><![CDATA[Electronics]]></category>
		<category><![CDATA[Schools & Curriculum]]></category>
		<category><![CDATA[battery]]></category>
		<category><![CDATA[capacity]]></category>
		<category><![CDATA[Choose]]></category>
		<category><![CDATA[current]]></category>
		<category><![CDATA[discharge]]></category>
		<category><![CDATA[voltage]]></category>

		<guid isPermaLink="false">http://www.robotshop.com/blog/en/?p=3585</guid>
		<description><![CDATA[Given the wide range of actuators and electronics which go into a robot, choosing the right battery may not be an easy task. This article guides you through the thought processes involved in choosing one or more batteries for your robot. Even if you are just starting in robotics, you may have already realized that <a href="http://www.robotshop.com/blog/en/how-do-i-choose-a-battery-8-3585" class="more-link" title="Read Basics: How Do I Choose a Battery?">&#91;...&#93;</a>]]></description>
				<content:encoded><![CDATA[<p>Given the wide range of actuators and electronics which go into a robot, choosing the right battery may not be an easy task. This article guides you through the thought processes involved in choosing one or more batteries for your robot.</p>
<a  href="http://www.robotshop.com/blog/en/files/batteries-chargers.jpg"><img class="size-full wp-image-4496 alignnone" title="batteries-chargers" alt="" src="http://www.robotshop.com/blog/en/files/batteries-chargers.jpg" width="150" height="130" /></a><a  href="http://www.robotshop.com/blog/en/files/lithium-polymer-battery-packs.jpg"><img class="aligncenter size-full wp-image-4497" title="lithium-polymer-battery-packs" alt="" src="http://www.robotshop.com/blog/en/files/lithium-polymer-battery-packs.jpg" width="150" height="130" /></a><a  href="http://www.robotshop.com/blog/en/files/standard-batteries.jpg"><img class="aligncenter size-full wp-image-4498" title="standard-batteries" alt="" src="http://www.robotshop.com/blog/en/files/standard-batteries.jpg" width="150" height="130" /></a>
<p>Even if you are just starting in robotics, you may have already realized that the components you want to use don&#8217;t all operate at the same voltage. If you look at a production robot, you start to wonder &#8220;how is everything working off just one battery?&#8221;. There are two approaches taken, and we&#8217;ll help you determine which is best for you.</p>
<h2>Multiple Batteries</h2>
<h3>Advantages</h3>
<ul>
<li>Requires less design time</li>
<li>Can be more efficient</li>
</ul>
<h3>Disadvantages</h3>
<ul>
<li>Various parts of the robot will stop working at different times</li>
<li>Multiple batteries to recharge</li>
</ul>
<p>How do you know if you need multiple batteries? Check the nominal voltage of each of the products you selected:</p>
<ul>
<li>Electronics (microcontroller,  motor controller power etc) usually operate at 9V-12V. Some operate at low as 3.3V and 5V.</li>
<li>Actuators (DC gear motors, stepper motors, servos etc) usually operate at 6V to 12V. A few operate as low as 3V</li>
<li>Sensors usually operate 5V</li>
</ul>
<p>Based on the ranges above, it&#8217;s easy to see how, wen selecting optimal components for your project, that the voltage range may differ for each type of component. Fortunately most microcontrollers has a built-in voltage regulator which provides 5V to the I/O pins, so you don&#8217;t need a dedicated 5V battery. Should you choose a normal microcontroller, it&#8217;s likely that the voltage range is 9V  to 12V. Operating a normal hobby servo motor (rated at 4.8V to 6V) from a 9V to 12V battery would quickly burn it. What to do? The easiest option would be to use a smaller 12V battery for the microcontroller, and a larger 6V battery for the servos.</p>
<h2>One Battery</h2>
<h3>Advantages</h3>
<ul>
<li>One battery to charge</li>
<li>Lighter weight</li>
</ul>
<h3>Disadvantages</h3>
<ul>
<li>(May) require voltage regulator</li>
<li>A bit more complex to understand and wire</li>
</ul>
<p>Continuing the example above, where we chose a 12V microcontroller and 4.8V to 6V hobby servos, we have the option of using one (larger) 6V battery pack and a step-up voltage regulator. A voltage regulator does exactly as the name implies; it regulates the voltage. In our case we would need one which can accept 6V input and step it up to 12V.</p>
<p>Choosing a lower motor voltage does not automatically mean the list of motors available to you will be low power. However, a high voltage motor (36V, 48V, 60V) tends to be reserved for large DC motors. The second approach is to first select the ideal motor and design your robot&#8217;s electronics system around the indicated nominal voltage. Both approaches have their advantages and disadvantages and it is up to you to choose which you prefer.</p>
<p>Voltage dividers allow you to power electromechanical devices at different voltages. Voltage dividers are purely electrical devices with no programming involved. If you do not want to use voltage dividers, most electronics operate at 5 to 9V, so choosing either 6 or 9V as your robot&#8217;s supply voltage is the best choice (never assume an electronic device operates at 6 or 9V: you always need to read the supply voltage specifications for each electronic component). The other option is to use two different power supplies: one for the motors and another (smaller one) for the electronics.</p>
<p>Should you wish to operate your robot at 9V, you can often still choose a 12V motor, though you must keep in mind the rpm will be less that that listed (estimated as a fraction of the nominal value) and the motor efficiency will be slightly reduced.</p>
<h2>Tips / Tricks</h2>
<p>Standard battery voltages are:</p>
<ul>
<li><strong>1.2V</strong>: one rechargeable NiMh AA or AAA battery (unless you want a really small robot, one cell does not do much)</li>
<li><strong>1.5V</strong>: one Alkaline AA or AAA battery(disadvantage of not being rechargeable and can&#8217;t do much on its own)</li>
<li><strong>2.4v</strong>: two rechargeable AA or AAA batteries; still can&#8217;t do much on their own, even for small robots</li>
<li><strong>3V</strong>: two alkaline AA or AAA batteries; most microcontrollers cannot operate at this voltage, let alone most actuators.</li>
<li><strong>3.6V</strong>: three rechargeable NiMh AA or AAA batteries; this is usually the minimum voltage to run certain microcontrollers</li>
<li><strong>3.7V</strong>: one LiPo battery; this is close enough to 3.6V and is the minimum to run certain microcontrollers</li>
<li><strong>4.5V</strong>: three alkaline AA or AAA batteries&#8230; why even consider non-rechargeable in robotics?</li>
<li><strong>4.8V</strong>: four AA or AAA together provide the minimum voltage to operate a standard hobby servo motor. These can be either as individual cells or as a single rechargeable battery pack.</li>
<li><strong>6V</strong>: four AA or AAA alkaline batteries, five rechargeable NiMh cells or one 6V rechargeable lead acid pack; this is the maximum (and ideal) voltage most hobby servos can handle. Use these if your servos need a bit more power.</li>
<li><strong>7.2V</strong>: six AA or AAA rechargeable NiMh batteries is perfect for 7.2V DC gear motors. These are usually in a battery pack rather than as individual cells and you will need a more specific NiMh battery pack charger.</li>
<li><strong>7.4V</strong>: two LiPo cells can often power a microcontroller and works great for 7.2V DC gear motors. Unfortunately it&#8217;s too high for most hobby servo motors.</li>
<li><strong>7.5V</strong>: five alkaline AA or AAA: almost never used because it&#8217;s simply too many single-use batteries.</li>
<li><strong>8.4V</strong>: 7x NiMh AA batteries (hard to find chargers for 7xAAA NiMh batteries). This is also not used much because it means charging 7 batteries at the same time.</li>
<li><strong>9V</strong>: 6x Alkaline batteries, one 9V (NiMh or Alkaline) battery or one 9V lead acid batteru: please avoid using 6x alkaline for the sake of the environment. A 9V single cell rectangular battery is often used to power the microcontroller in dual battery configurations. 9V lead acid batteries are a bit harder to find and although they are quite heavy, are fairly inexpensive and high capacity.</li>
<li><strong>9.6V</strong>: 7x NiMh cells, usually in a battery pack configuration. This is good for motors which operate at 9V, and also for microcontrollers (most can operate above 9V).</li>
<li><strong>11.1V</strong>: three LiPo batteries produces almost 12V and is much lighter than 10x 1.2V cells or a 12V lead acid battery pack. You need a specific LiPo charger capable of charging 3 cell LiPo packs.</li>
<li><strong>12V</strong>: 10x 1.2V cells (always configured as one NiMh battery pack) or one 12V rechargeable lead acid battery pack. 12V is ideal for a variety of DC gear motors and most microcontrollers.</li>
<li>Anything above 12V is usually reserved for very large robots. If you have a 14.4V LiPo or 18V NiMh pack from a cordless drill, keep in mind that finding motors which operate at these voltages is not easy.</li>
</ul>
<p>Robots using servo motors (legged robots or robotic arms) tend to operate at 4.8V (4x AA NiMh cells) or 6V (5x NiMh AA cells). You can use a fairly inexpensive voltage regulator to power the microcontroller, increasing the voltage from 6V to 9V.</p>
<p>Small to medium mobile robots often use a 6V, 9V or 12V NiMh battery pack, the choice of which depends on the nominal voltage of the drive motors. If the robot includes one or more servo motors (for a pan/tilt for example), the microcontroller can usually provide enough current from a 5V digital pin. If your microcontroller operates at 9V and you want to use 6V motors, you might consider a two battery solution.</p>
<p>Medium sized mobile robots tend to use one 12V battery; lead acid or single NiMh battery pack (or an 11.1V LiPo battery if weight is an issue).  Large robots use 12V or 24V from one or more lead acid battery packs.</p>
<h2>Chemistry</h2>
<p><strong>NiMh</strong>: This is by far the most common type of battery used in mobile robots. NiMh batteries are rechargeable and their value (price / capacity / weight) is hard to beat. There is almost no memory effect, meaning every charge should bring the battery up to full capacity.</p>
<p><strong>NiCd</strong>: These batteries are slowly disappearing because of their memory effect: if you don&#8217;t discharge the battery properly and then recharge it to full capacity, you lose part of the capacity each time.</p>
<p><strong>Alkaline</strong>: These are the least expensive batteries in the short term, and provide a higher voltage than NiMh, but are not great for the environment, and you constantly need to buy replacements.</p>
<p><strong>Lead Acid</strong>: Still the cheapest option for high capacity, lead acid is usually reserved for medium sized robots because of their incredibly high weight.</p>
<p><strong>LiPo</strong>: These are fast becoming the most popular type of battery because of their light weight, high discharge rates and relatively good capacity, except the voltages increase in increments of 3.7V, so you need to plan to use LiPo before selecting your electronics and actuators.</p>
<h2>Nominal Voltage</h2>
<p>A motor&#8217;s nominal voltage is the voltage at which the motor provides the best power output to efficiency ratio (rather than highest efficiency or highest power output). Operating a motor at the nominal voltage also helps to guarantee a long useful life.</p>
<h2>Capacity</h2>
<p>A battery&#8217;s capacity determines roughly how long a battery will last at a specific voltage given a specific discharge rate. For example, if you choose a 12V, 2Ah (2000mAh) battery pack (regardless of chemistry), the battery should be able to run a 12V motor consuming 2A continuously for 1 hour. Alternatively, it can run a 12V motor consuming 1A for 2 hours, or a 12V motor consuming 0.5A for 4 hours. The rule of thumb is to divide the capacity (assuming you are running an actuator at the same voltage) by the actuator&#8217;s current under normal load to get the time the motor will last.</p>
<h3>Example 1</h3>
<p>2x Drive Motors: 6V nominal, 1A each under normal load</p>
<p>1x 6V NiMh Battery Pack, 2200mAh (equivalent to 2.2Ah)</p>
<p>Note that the battery was chosen based on the motor&#8217;s nominal voltage.Should you instead operate 6V motors from a 7.2V battery, the calculations become more difficult (use the total watt-hours divided by the total watts per hour to get an idea).</p>
<p>Therefore the 6V battery pack will last:</p>
<p>2.2Ah battery / (2 motors x 1A per motor) = 1.1 hours</p>
<h3>Example 2</h3>
<p>18 servos used for a hexapod robot which operate at 6V nominal and consume 250mA under normal load*</p>
<p>1x 6V NiMh battery pack at 5Ah.</p>
<p>First, we will assume that all motors are under load at all times (i.e. worst case scenario) and therefore all 18 will be consuming a total of 4.5A</p>
<p>5Ah battery / 4.5A = 1.1 hours</p>
<p>Note again that the battery was chosen based on the motor&#8217;s nominal voltage.</p>
<h2>Discharge Rate</h2>
<p>The continuous discharge rate of a battery is very important because if you choose a battery that cannot discharge at the required current, the robot will either not work properly or not work at all.</p>
<h3>Example 1</h3>
<p>You selected four 12V motors for your 4WD outdoor mobile robot. Each motor consumes 1A under normal load, and more in the case of a slope. You decide to choose a 12V, 2Ah NiMh battery pack, not caring about the continuous discharge rate. You discover that your robot stops when it encounters even the slightest obstacle or incline. Why? In this case operating all four motors consumes ~4A while an NiMh pack can only discharge at about 1.2 times the capcity (1.2 x 2Ah = 2.4A). The current draw from the motors is therefore higher than the battery can provide.</p>
<h3>Example 2</h3>
<p>You selected two 7.2V DC gear motors which consume 1.5A each under normal load, and up to 2A each under stressful situations. This means that the battery needs to be able to provide at least 3A normally and up to 4A safely. If you choose an NiMh pack it would need to be 4A / 1.2C = 3.3Ah. The alternative would be to choose a LiPo pack because they can often discharge at 5C or higher, meaning you would be able to get away with a 4A / 5C = 0.8Ah pack. Granted the capacity is low, and you may opt for a higher capacity pack.</p>
<p>Burst Discharge Rate</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.robotshop.com/blog/en/how-do-i-choose-a-battery-8-3585/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
