{"id":187,"date":"2025-05-07T14:43:25","date_gmt":"2025-05-07T14:43:25","guid":{"rendered":"https:\/\/michael-stinger.com\/?p=187"},"modified":"2025-07-22T20:30:04","modified_gmt":"2025-07-22T20:30:04","slug":"garp-motor-selection","status":"publish","type":"post","link":"https:\/\/michael-stinger.com\/index.php\/2025\/05\/07\/garp-motor-selection\/","title":{"rendered":"GARP Motor Selection"},"content":{"rendered":"\n<p>This article reviews the process used to identify the motor used in the GARP Alpha development stage. Primarily intended to support GARP integration and requirements refinement, design assumptions and speed and torque performance parameters are estimated based on two threshold and objective use cases. Adjacent factors such as encoder resolution, driver\/ESC availability, and mounting are discussed. Finally a subset of available motors is presented and the ES Motors 42PG-4260BL with 25:1 planetary gear is selected for use in the GARP&#8217;s Alpha development stage.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">GARP Article Series<\/h2>\n\n\n\n<p>The Ground Autonomy Research Platform (GARP) is a home-grown UGV designed and built to support independent learning of robotics and autonomy through a full stack from hardware to behavioral autonomy and HMI. To document the implementation of GARP, I&#8217;m capturing the process in a series of articles that I&#8217;ll link here as they&#8217;re completed:<\/p>\n\n\n\n<details class=\"wp-block-details has-background has-medium-font-size is-layout-flow wp-block-details-is-layout-flow\" style=\"background-color:#eef4ee\"><summary>GARP Article Map<\/summary>\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/04\/28\/motivations-and-design-of-a-ugv-for-robotics-research\/\">Motivations and Design of a UGV for Robotics Research<\/a><\/li>\n\n\n\n<li>GARP Power Subsystem\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/04\/30\/wheeled-robot-with-canopen-and-ros2-control-garp-power-subsystem-design\/\">Design<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/garp-power-subsystem-monitoring-part-1-hardware\/\" data-type=\"link\" data-id=\"https:\/\/michael-stinger.com\/index.php\/garp-power-subsystem-monitoring-part-1-hardware\/\">Hardware<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/garp-power-subsystem-monitoring-part-2-software\/\">Software<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>GARP Mobility Subsystem\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/05\/07\/garp-motor-selection\/\" data-type=\"link\" data-id=\"https:\/\/michael-stinger.com\/index.php\/2025\/05\/07\/garp-motor-selection\/\">Motor Selection<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/04\/28\/wheeled-robot-with-canopen-and-ros2-control-garp-mobility-subsystem-design\/\" data-type=\"post\" data-id=\"36\">Subsystem Design<\/a><\/li>\n\n\n\n<li>Motor Controller\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/04\/28\/wheeled-robot-with-canopen-and-ros2-control-garp-motor-controller\/\" data-type=\"link\" data-id=\"https:\/\/michael-stinger.com\/index.php\/2025\/04\/28\/wheeled-robot-with-canopen-and-ros2-control-garp-motor-controller\/\">Design<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/06\/13\/a-hardware-abstraction-layer-hal-for-the-raspberry-pi-pico2-rp2350-for-garp-testing\/\">Hardware Abstraction Layer (HAL)<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/07\/24\/a-motor-controller-software-interface-for-the-garp\/\">Motor Controller Interfaces<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/michael-stinger.com\/index.php\/2025\/05\/02\/garp-motor-controller-alpha\/\" data-type=\"link\" data-id=\"https:\/\/michael-stinger.com\/index.php\/2025\/05\/02\/garp-motor-controller-alpha\/\">Alpha Implementation<\/a><\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>C&amp;DH\n<ul class=\"wp-block-list\">\n<li>Design<\/li>\n\n\n\n<li>Alpha Implementation<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>GARP E-Stop\n<ul class=\"wp-block-list\">\n<li>Design<\/li>\n\n\n\n<li>Alpha Implementation<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/details>\n\n\n\n<h2 class=\"wp-block-heading\">Requirements and Constraints<\/h2>\n\n\n\n<p>I don&#8217;t have any hard-and-fast performance requirements for the GARP, so I&#8217;ll take an iterative motor selection strategy for GARP. I&#8217;ll aim for an initial motor selection with emphasis on ease, integrate it, and then use the resultant performance of the integrated platform to help refine requirements and select a more capable motor. That said, I&#8217;ll want to select a cheaper motor initially as (1) I&#8217;m buying four, and (2) I expect to trade them out for another model in the future.<\/p>\n\n\n\n<p>To make the initial motor selection, I&#8217;ll make a few basic assumptions about the design of GARP and draw up some rough estimates of the motor specifications needed. This will help seed the search (and will likely provide a comical review once the GARP is integrated and rolling.) The starting list of assumptions are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GARP will use a wheel with diameter of 6&#8243; (152.4 mm)<\/li>\n\n\n\n<li>GARP will use one motor per wheel (i.e. no differentials, etc.)<\/li>\n\n\n\n<li>GARP will weigh 50 lbs (23 kg)<\/li>\n\n\n\n<li>GARP will have a ground speed threshold of 1 m\/s (2.2 MPH) and an objective speed of 2 m\/s (4.5 MPH); This puts GARP between a Clearpath Jackal and Husky<\/li>\n\n\n\n<li>GARP will have a target acceleration of 1 m\/s<sup>2<\/sup> (i.e. will reach maximum speed in 1-2 seconds)<\/li>\n<\/ul>\n\n\n\n<p>Furthermore, I&#8217;ll neglect loss of traction, and assume no losses in the drive train.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Torque<\/h3>\n\n\n\n<p>To arrive at a torque target, I&#8217;ll need to make some further assumptions about the use cases of the GARP. To make things easy at this initial motor selection, as a threshold use case, I&#8217;ll assume GARP is operating in grass with a rolling friction factor of 0.15, and on level terrain. For an objective use case, I&#8217;ll have GARP push a reel mower (because adding rapidly spinning blades to the front of a robot really ups the stakes.) Beginning with the threshold case, this means that the body-centered force required to move the GARP is 33.4 N:<\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-429d9f55879eae12708b7127ac410a13_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#70;&#95;&#76;&#94;&#123;&#40;&#84;&#41;&#125;&#32;&#61;&#32;&#102;&#95;&#123;&#103;&#114;&#97;&#115;&#115;&#125;&#32;&#70;&#95;&#87;&#32;&#61;&#32;&#48;&#46;&#49;&#53;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#50;&#51;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#107;&#103;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#57;&#46;&#56;&#49;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#109;&#125;&#47;&#92;&#116;&#101;&#120;&#116;&#123;&#115;&#125;&#94;&#50;&#32;&#61;&#32;&#51;&#51;&#46;&#52;&#32;&#78;\" title=\"Rendered by QuickLaTeX.com\" height=\"25\" width=\"399\" style=\"vertical-align: -6px;\"\/><\/p>\n\n\n\n<p>This is 8.3 N per wheel and with 6&#8243; wheels, is 0.64 Nm of torque per wheel:<\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-c571fc5075da37462826c958b5d1fd11_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#95;&#123;&#119;&#104;&#101;&#101;&#108;&#125;&#94;&#123;&#40;&#84;&#41;&#125;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#52;&#125;&#32;&#70;&#95;&#76;&#94;&#123;&#40;&#84;&#41;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#48;&#46;&#49;&#53;&#50;&#52;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#109;&#125;&#125;&#123;&#50;&#125;&#32;&#61;&#32;&#48;&#46;&#54;&#52;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#78;&#109;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"25\" width=\"276\" style=\"vertical-align: -6px;\"\/><\/p>\n\n\n\n<p>For the accelerating case, the force required to accelerate the GARP at 1 m\/s<sup>2<\/sup> is 23 N, or 5.8 N per wheel, and an additional 0.43 Nm of torque per wheel (assuming the rolling friction is independent of velocity and acceleration):<\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-6518cfe8267a4d722afcc63f8e4b8091_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#84;&#95;&#123;&#119;&#104;&#101;&#101;&#108;&#125;&#94;&#123;&#65;&#99;&#99;&#101;&#108;&#44;&#32;&#40;&#84;&#41;&#125;&#32;&#61;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#52;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#50;&#51;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#107;&#103;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#49;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#109;&#125;&#47;&#92;&#116;&#101;&#120;&#116;&#123;&#115;&#125;&#94;&#50;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#48;&#46;&#49;&#53;&#50;&#52;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#109;&#125;&#125;&#123;&#50;&#125;&#32;&#61;&#32;&#48;&#46;&#52;&#51;&#50;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#78;&#109;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"25\" width=\"395\" style=\"vertical-align: -6px;\"\/><\/p>\n\n\n\n<p>Summing these values places the estimated required torque per wheel at 1.1 Nm.<\/p>\n\n\n\n<p>For the objective case of GARP pushing a reel mower, assume the coefficient of rolling friction for the reel mower is twice that of the GARP (i.e. 0.3), and that the weight of the reel mower is 52 lbs. This weight is from the <a href=\"https:\/\/www.fiskars.com\/en-us\/gardening-and-yard-care\/products\/reel-mowers\/staysharp-max-reel-mower-362050-1002\" target=\"_blank\" rel=\"noopener\" title=\"\">Fiskars Staysharp 18&#8243; Reel Mower<\/a> (but the doubled rolling friction is entirely arbitrary). In this case the static torque required per wheel is 1.96 Nm (an additional 1.3 Nm), the dynamic torque is 0.88 Nm (+0.45 Nm), and the total torque required per wheel is 2.8 Nm (+1.8 Nm).<\/p>\n\n\n\n<p>In summary, the torque required per wheel for the constant velocity and accelerating cases is:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Constant Velocity<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Accelerating<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Total<\/strong><\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>Threshold (GARP only)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">0.64 Nm<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.43 Nm<\/td><td class=\"has-text-align-center\" data-align=\"center\">1.1 Nm<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>Objective (GARP and Reel Mower)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">2.0 Nm<\/td><td class=\"has-text-align-center\" data-align=\"center\">0.88 Nm<\/td><td class=\"has-text-align-center\" data-align=\"center\">2.8 Nm<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Speed<\/h3>\n\n\n\n<p>Assuming the GARP has a wheel diameter of 6&#8243;, the circumference becomes 0.48 meters or inversely 2.1 revolutions per meter, and the threshold and objective wheel rotational speeds (1 and 2 m\/s, respectively) in revolutions per second become 2.1 and 4.2 RPS:<\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-a3fa5e38be2a3c100761233b6ed5623d_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#40;&#84;&#41;&#125;&#32;&#61;&#32;&#118;&#94;&#123;&#40;&#84;&#41;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#49;&#125;&#123;&#92;&#112;&#105;&#32;&#68;&#125;&#32;&#61;&#32;&#49;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#109;&#125;&#125;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#115;&#125;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#50;&#46;&#49;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#114;&#101;&#118;&#125;&#125;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#109;&#125;&#125;&#32;&#61;&#32;&#50;&#46;&#49;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#114;&#101;&#118;&#125;&#125;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#115;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"297\" style=\"vertical-align: -6px;\"\/><\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-af108043970907bd792bd1fabe1372fb_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#92;&#111;&#109;&#101;&#103;&#97;&#94;&#123;&#40;&#79;&#41;&#125;&#32;&#61;&#32;&#50;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#109;&#125;&#125;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#115;&#125;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#50;&#46;&#49;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#114;&#101;&#118;&#125;&#125;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#109;&#125;&#125;&#32;&#61;&#32;&#52;&#46;&#50;&#32;&#92;&#102;&#114;&#97;&#99;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#114;&#101;&#118;&#125;&#125;&#123;&#92;&#116;&#101;&#120;&#116;&#123;&#115;&#125;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"22\" width=\"207\" style=\"vertical-align: -6px;\"\/><\/p>\n\n\n\n<p>In summary:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Threshold (1 m\/s)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Objective (2 m\/s)<\/strong><\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>Rotational Velocity<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">2.1 RPS<\/td><td class=\"has-text-align-center\" data-align=\"center\">4.2 RPS<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Mounting<\/h3>\n\n\n\n<p>While not a performance requirement, mounting of the selected motor will need to be considered. A matched mounting option is desirable, but is secondary to other considerations, and the introduction of pillow blocks is expected.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Electrical Characteristics<\/h3>\n\n\n\n<p>When selecting a motor, several electrical characteristics will need to be considered. The motor assembly will need to include an encoder and a driver or electronic speed control (ESC) so when selecting a motor, a motor driver will need to be identified as well. I expect to make the motor controller as a learning experience, so a matched\/OEM motor controller isn&#8217;t necessary.<\/p>\n\n\n\n<p>The motors are expected to dominate the GARP&#8217;s power budget (with the possible exception of the Perception Subsystem that will likely include a GPU); To support the power budget calculations and Power Subsystem design, we can calculate the power and currents consumed by the motors at various voltage levels. A rough estimate of the power for the motor can be estimated as:<\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-d774385f3062f5777f9b6a36df2e5b2b_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#80;&#32;&#61;&#32;&#50;&#32;&#92;&#112;&#105;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#84;&#32;&#91;&#92;&#116;&#101;&#120;&#116;&#123;&#78;&#109;&#125;&#93;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#92;&#111;&#109;&#101;&#103;&#97;&#32;&#91;&#92;&#116;&#101;&#120;&#116;&#123;&#82;&#80;&#83;&#125;&#93;\" title=\"Rendered by QuickLaTeX.com\" height=\"18\" width=\"188\" style=\"vertical-align: -5px;\"\/><\/p>\n\n\n\n<p>which for the threshold and objective cases become:<\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-95334ef0d2c6bf821e0f8ba076ad3357_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#80;&#94;&#123;&#40;&#84;&#125;&#125;&#32;&#61;&#32;&#50;&#92;&#112;&#105;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#49;&#46;&#49;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#78;&#109;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#50;&#46;&#49;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#82;&#80;&#83;&#125;&#32;&#61;&#32;&#49;&#52;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#87;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"284\" style=\"vertical-align: 0px;\"\/><\/p>\n\n\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/michael-stinger.com\/wp-content\/ql-cache\/quicklatex.com-aa0f44132642243a73a218dd2780d424_l3.png\" class=\"ql-img-inline-formula quicklatex-auto-format\" alt=\"&#80;&#94;&#123;&#40;&#79;&#41;&#125;&#32;&#61;&#32;&#50;&#92;&#112;&#105;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#50;&#46;&#56;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#78;&#109;&#125;&#32;&#92;&#99;&#100;&#111;&#116;&#32;&#52;&#46;&#50;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#82;&#80;&#83;&#125;&#32;&#61;&#32;&#55;&#52;&#32;&#92;&#116;&#101;&#120;&#116;&#123;&#32;&#87;&#125;\" title=\"Rendered by QuickLaTeX.com\" height=\"16\" width=\"290\" style=\"vertical-align: 0px;\"\/><\/p>\n\n\n\n<p>The size (and cost) of the power converters used to produce the GARP&#8217;s motor voltage rail is expected to scale with the current drawn from the converters. To understand the magnitudes of current draw (neglecting conversion efficiencies) the threshold and objective powers become:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-right\" data-align=\"right\"><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>@48 V<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>@24 V<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>@12 V<\/strong><\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>Threshold (4 x 14 W)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">1.2 A<\/td><td class=\"has-text-align-center\" data-align=\"center\">2.4 A<\/td><td class=\"has-text-align-center\" data-align=\"center\">4.8 A<\/td><\/tr><tr><td class=\"has-text-align-right\" data-align=\"right\"><strong>Objective (4 x 74 W)<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\">6.1 A<\/td><td class=\"has-text-align-center\" data-align=\"center\">12 A<\/td><td class=\"has-text-align-center\" data-align=\"center\">25 A<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Encoder<\/h3>\n\n\n\n<p>The motor assembly will need to include an encoder (1) to support speed control, and (2) to drive odometry feedback. In general, higher numbers of encoder ticks per motor output shaft revolution are desired. Its assumed that encoders with resolutions high enough to out-pace a simple microcontroller used to implement the motor controller will be too expensive for the  initial motor selection. To get a rough estimate of the resolutions needed (at least for the motor controller speed control), consider the maximum PID controller rate and number of resolvable velocities as a function of encoder counts per revolution. The max PID controller rate is determined as the rate at which a single encoder tick arrives per loop while the motor is spinning at its maximum velocity. The number of resolvable velocities is determined as the number of encoder ticks arriving per PID loop at the motor&#8217;s maximum speed:<\/p>\n\n\n\n<figure class=\"wp-block-table aligncenter\"><table class=\"has-fixed-layout\"><tbody><tr><td class=\"has-text-align-center\" data-align=\"center\"><strong>Encoder CPR<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Max Motor Speed<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong>Max PID Rate<\/strong><\/td><td class=\"has-text-align-center\" data-align=\"center\"><strong># of Speeds<\/strong><\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">60 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">125 RPM (Threshold)<\/td><td class=\"has-text-align-center\" data-align=\"center\">12.5 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">10<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">60 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">251 RPM (Objective)<\/td><td class=\"has-text-align-center\" data-align=\"center\">25.1 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">10<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">60 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">125 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">20 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">6<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">60 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">251 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">20 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">12<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">120 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">125 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">25.1 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">10<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">120 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">251 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">50.1 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">10<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">120 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">125 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">20 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">12<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">120 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">251 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">20 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">25<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">360 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">125 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">75.2 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">10<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">360 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">251 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">150.4 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">10<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">360 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">125 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">20 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">37<\/td><\/tr><tr><td class=\"has-text-align-center\" data-align=\"center\">360 CPR<\/td><td class=\"has-text-align-center\" data-align=\"center\">251 RPM<\/td><td class=\"has-text-align-center\" data-align=\"center\">20 Hz<\/td><td class=\"has-text-align-center\" data-align=\"center\">75<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Cost<\/h3>\n\n\n\n<p>As mentioned, cost should be minimized within reason to facilitate an iterative motor selection. Based on a quick survey of motors available, the threshold value is &lt;$100, and the objective is &lt;$50.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Initial Selection<\/h2>\n\n\n\n<p>An initial survey of brushless DC (BLDC) motors available on mouser.com and digikey.com did not yield promising results:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"606\" height=\"341\" src=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/image.png\" alt=\"\" class=\"wp-image-216\" style=\"width:840px;height:auto\" srcset=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/image.png 606w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/image-300x169.png 300w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/image-600x338.png 600w\" sizes=\"auto, (max-width: 606px) 100vw, 606px\" \/><\/figure>\n\n\n\n<p>In general, motors were significantly more expensive (and over-powered), with the cheapest being in the $300-$500\/ea range, and with rated speeds in the right range (e.g. 133 RPM), but with vastly high torques (e.g. 20 kNm+). There were also significant frequencies of misrepresented values like motors with a torque value entered in units of Nm, but the spec sheet reporting the same value in mNm.<\/p>\n\n\n\n<p>To combat this, I searched specifically for robotics motors, robotics vendors, and for several of the First Robotics approved motors&#8217; vendors. While significantly more time-consuming, it did yield useful information:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"761\" height=\"439\" src=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/sample-motors-rpm-vs-torque.png\" alt=\"\" class=\"wp-image-217\" style=\"width:840px;height:auto\" srcset=\"https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/sample-motors-rpm-vs-torque.png 761w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/sample-motors-rpm-vs-torque-300x173.png 300w, https:\/\/michael-stinger.com\/wp-content\/uploads\/2025\/05\/sample-motors-rpm-vs-torque-600x346.png 600w\" sizes=\"auto, (max-width: 761px) 100vw, 761px\" \/><\/figure>\n\n\n\n<p>From the range shown, the cheapest option with (published) performance above the threshold value was the <a href=\"https:\/\/www.robotshop.com\/products\/e-s-motor-42d-brushless-dc-planetary-gear-motor-24v-300rpm?qd=7892953edcb7a949e58db3b531302761\" target=\"_blank\" rel=\"noopener\" title=\"\">ES Motors 4260BL<\/a>. This motor is generally in the middle of the threshold-objective range, but also includes a built-in driver removing the need for an external ESC. With the <a href=\"https:\/\/cdn.robotshop.com\/rbm\/a00a7635-653b-4220-aac9-b0c23c5c5e2c\/2\/2b5e5322-92d7-4075-aea9-2694a92f1e9e\/da6c9a5a_42PG-4260BL-24V.pdf\" target=\"_blank\" rel=\"noopener\" title=\"\">25:1 planetary gear configuration<\/a> the motor has a (published) rated speed of 175 RPM and 25 kg cm (2.5 Nm) of torque. That said, the published rated speed and torque values are 58% and 42% of the stall values which indicates this is not a fair comparison to motors for which the 80%\/20% approximation was used and furthermore, introduces risk that the motors may not perform as desired. Regardless, for an initial motor to support integration and drive requirements refinement, the ES Motors 42PG-4260BL was selected. The motor runs on 24 VDC at a rated current of less than 2.8 A, and produces 300 encoder ticks per output motor shaft revolution. The motor is rated to 50 W, which means temperature tracking will likely be important for any extended use. As an added convenience, the motor has a mounting bracket available and retails for $65-$70.<\/p>\n\n\n\n<p>The comparison data has offered an initial look at the range of motors available, and once better estimates of the motor torque and speed needed are identified in the Beta and v1.0 development stages, this survey will be revisited and with more resolution to select a long-term motor for the GARP. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p>This article reviewed the process identifying the motor used to support initial Alpha development stage integration of the GARP. Design assumptions were summarized, and required speed and torque performance parameters were estimated based on use cases encompassing the GARP and GARP with reel mower in grass. Several other factors such as encoder resolution and availability of driver\/ESC and physical mounting were discussed. Finally a subset of available motors was presented and the selected ES Motors 42PG-4260BL with 25:1 planetary gear was described.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This article reviews the process used to identify the motor used in the GARP Alpha development stage. Primarily intended to support GARP integration and requirements refinement, design assumptions and speed and torque performance parameters are estimated based on two threshold and objective use cases. Adjacent factors such as encoder resolution, driver\/ESC availability, and mounting are [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":221,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-187","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-garp"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts\/187","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/comments?post=187"}],"version-history":[{"count":29,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts\/187\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/posts\/187\/revisions\/218"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/media\/221"}],"wp:attachment":[{"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/media?parent=187"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/categories?post=187"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michael-stinger.com\/index.php\/wp-json\/wp\/v2\/tags?post=187"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}