
{"id":7931,"date":"2024-06-26T08:10:17","date_gmt":"2024-06-26T08:10:17","guid":{"rendered":"https:\/\/dyor.webs.upv.es\/?p=7931"},"modified":"2024-06-26T08:10:17","modified_gmt":"2024-06-26T08:10:17","slug":"english-beer-pong-robot","status":"publish","type":"post","link":"https:\/\/dyor.webs.upv.es\/en\/english-beer-pong-robot\/","title":{"rendered":"Beer Pong Robot"},"content":{"rendered":"<p><strong>Introduction<\/strong><\/p>\n<p>For our Mobile Robotics project, we decided to build a robot that plays beer pong. In other terms, it should be able to throw a ping pong ball into a cup which is standing on the same flat surface as the robot. The cup is standing about 2 to 3 meters away from the robot, but the exact distance is unknown initially.<\/p>\n<p><strong>Projectile launched at an angle<\/strong><\/p>\n<p>Throwing the ping pong ball can be modelled via one of the most fundamental and basic problems of physics, the projectile launched at an angle. Assuming that air resistance is negligible and given the speed and angle at which a projectile is launched, we can exactly predict the projectile curve. In this setting, the mass of the projectile has no influence on the projectile motion.<br \/>\nWe decided to fix the angle at 55 degrees. It is a compromise between energy needed to travel, which is smaller at more accute angles, as the balls velocity vector has a bigger horizontal component, and desired landing angle, which should be as wide as possible to land smoothly into the cup.We calculated that throwing a projectile at this angle with a velocity of 5 m\/s means that the projectile crosses the launch height at exactly 2.39 m distance from the launch position. This is a typical distance we want to cover in our application. So for the following, let us assume that without air resistance, a launch speed of around 5 m\/s is suitable.<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7988 size-large\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/flugbahn-1024x645.jpg\" alt=\"\" width=\"600\" height=\"378\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/flugbahn-1024x645.jpg 1024w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/flugbahn-300x189.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/flugbahn-768x484.jpg 768w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/flugbahn.jpg 1249w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><strong>Air Drag<\/strong><\/p>\n<p>As a ping pong ball has a relatively low mass, it will be affected by air drag already at low speeds. This effect is a lot harder to calculate than above. We researched the effect of air drag a bit and roughly estimated, including our previous results, that the launcher should be able to produce maximum launch speeds of at least 6 m\/s.<\/p>\n<p><strong>Deciding for a launch mechanism<\/strong><\/p>\n<p>Given the low mass m=2.7g of a ping pong ball, one could assume that not much power is needed to accelerate the ball to the desired speed. However, one has to keep in mind that not only the ball but the whole launching platform that the ball sits on needs to be accelerated to this velocity.<br \/>\nOur first idea was to use a long rotating arm to throw the ball. For speed and position control, we would need a control loop for the motor, meaning that a servo motor would have been suited. However, none of the cheap hobby servos were strong enough for this. Additionally, it seems like this mechanism makes it hard to exactly control the launch angle and position.<\/p>\n<p>Instead, we opted for a spring mechanism. The ball would be launched from a rod with a platform at its end for the ball to sit in. This rod is inside of a tube. The spring is located between the rod and the tube, meaning that when the rod is pulled, the spring will compress. After compressing the spring, it is released, which accelerates the launching platform to the desired speed.<\/p>\n<p><strong>Choosing the right spring\u00a0<\/strong><\/p>\n<p>To allow for the high precision that is required in our application, we need to choose a suitable spring. One requirement is that it fits into the tube and around the launching rod. This can be easily filtered when shopping springs online. However, for good precision, a longer compression range is preferable. As we still need the spring to compactly fit in our design, we tried to optimize the ratio between compression range and length of the spring. This led to a free spring length of 11 cm and a compression range of 7 cm. But, most importantly, the spring needs to have adecuate power for our application. This means it can neither be to strong, which reduces the precision, nor too weak, which may mean that the ball does not fly far enough even at full compression. Luckily, we can estimate the kinetic energy needed to accelerate our launcher to the desired speed and then choose a spring that can store this amount of energy. For this, we first made the assumption that our launcher has a mass of m = 100g, which was a reasonable guess given our first CAD prototype. We use the equations for elastic potential energy and kinetic energy:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-7955\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/kinetic-energy-formula.jpg\" alt=\"\" width=\"276\" height=\"138\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-7956\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/elastic-potential-energy-formula.jpg\" alt=\"\" width=\"232\" height=\"126\" \/><\/p>\n<p>We neglect the loss of energy through friction. Inserting the mass of the launcher and the desired speed, the result gives 1.8 Joules. Assuming a spring constant of 2000 N\/m, this same energy would be stored in the spring if it was compressed by approximately 4 cm. We filtered our search for the preceding attributes and ordered the following springs:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7957 size-full\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/springs.jpg\" alt=\"\" width=\"926\" height=\"137\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/springs.jpg 926w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/springs-300x44.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/springs-768x114.jpg 768w\" sizes=\"auto, (max-width: 926px) 100vw, 926px\" \/><\/p>\n<p>The springs have a free length of 110 mm, diameter of 32 mm, and spring constant of 1850 N\/m and 2220 N\/m respectively.<\/p>\n<p><strong>Choosing the right motor<\/strong><\/p>\n<p>Now that we have decided for which spring to use, we need a motor that is capable of compressing the spring to the right position. For this, we need a motor that is both strong enough and precise enough. Thus, we decided to use a stepper motor with a 10 cm screw, similar to the motors used for DIY 3d-printers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7977 aligncenter\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/stepper-221x300.jpg\" alt=\"\" width=\"198\" height=\"269\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/stepper-221x300.jpg 221w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/stepper.jpg 355w\" sizes=\"auto, (max-width: 198px) 100vw, 198px\" \/><\/p>\n<p>When operated correctly, they allow for high repeatability without needing a feeback loop. The motor we chose has a maximum thrust of 12.5 kg. Converting from kilogram-force to Newtons gives about 120 Newtons of maximum force, which is enough to compress the spring to about 6.6 cm. This is sufficient, considering that we only need to compress the spring between 4 and 5 cm. Another interesting thing we can calculate using the above formulas is by how much milimeters we must change the spring compression such that the ball flies either 1 cm further or 1 cm less far. Our calculations showed that this were about 0.05 mm, which, although very small, should be achievable using stepper motors, which often have repeatibility values of 0.01\u00a0 mm.<\/p>\n<p><strong>Electronic parts for the robot<\/strong><\/p>\n<p>Of course, our robot should be mobile, so we needed a wheeled vehicle to mount the launcher onto. We found a mecanum wheel kit which included four mecanum wheels, 4 DC-motors and 2 aluminium plates which form the base of the robot.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7971 aligncenter\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/mecanumwheel.jpg\" alt=\"\" width=\"331\" height=\"272\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/mecanumwheel.jpg 638w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/mecanumwheel-300x247.jpg 300w\" sizes=\"auto, (max-width: 331px) 100vw, 331px\" \/><\/p>\n<p>We used two different motor drivers to operate the wheel motors. We got a cheap Arduino Starter kit from AliExpress, which contained the Microcontroller, Arduino Uno, Breadboard and Jumper wires.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7972 alignnone\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/starterkit2-298x300.jpg\" alt=\"\" width=\"215\" height=\"216\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/starterkit2-298x300.jpg 298w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/starterkit2-150x150.jpg 150w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/starterkit2.jpg 595w\" sizes=\"auto, (max-width: 215px) 100vw, 215px\" \/> <img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7973 alignnone\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/starterkit1-300x231.jpg\" alt=\"\" width=\"254\" height=\"196\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/starterkit1-300x231.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/starterkit1.jpg 591w\" sizes=\"auto, (max-width: 254px) 100vw, 254px\" \/><\/p>\n<p>Additionally, we bought servos, sonar sensors and laser sensors. These sensors were intended for finding out the distance from the robot to the cup. For the launch mechanism, we used solenoids, which have a electromagnet that activates and pulls back a rod when powered.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7974 aligncenter\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/solenoid-300x232.jpg\" alt=\"\" width=\"263\" height=\"203\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/solenoid-300x232.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/solenoid.jpg 661w\" sizes=\"auto, (max-width: 263px) 100vw, 263px\" \/><\/p>\n<p>For these solenoids, we needed a diode to protect the components. Also, for the stepper motor driver, we needed capacitors for voltage spike protection. As the solenoids and the stepper motor driver were rated for 12 Volts, we used a 12 V power supply. For this we bought a power adapter and a battery holder, which holds 8 1.5 V batteries in series. As stepper motors draw a lot of power, we got another battery holder which we could use parallel to increase battery life. Also, we powered the solenoids using a relay module.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7978\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/battery-case-300x246.jpg\" alt=\"\" width=\"224\" height=\"183\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/battery-case-300x246.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/battery-case.jpg 386w\" sizes=\"auto, (max-width: 224px) 100vw, 224px\" \/><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7979\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-300x266.jpg\" alt=\"\" width=\"205\" height=\"182\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-300x266.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger.jpg 654w\" sizes=\"auto, (max-width: 205px) 100vw, 205px\" \/><\/p>\n<p>These are the main components of the robot.<\/p>\n<p>**** Robot Picture drivable ***<\/p>\n<p><strong>3D-Models<\/strong><\/p>\n<p>The starting concept for the launcher structure was flawed but provided a general sense of the mechanism. Over a long iterative process, we refined the models.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7980 size-full\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-1.jpg\" alt=\"\" width=\"910\" height=\"544\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-1.jpg 910w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-1-300x179.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-1-768x459.jpg 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/p>\n<p>The main problem here was that the force from the linear motor is not applied coaxial to the launcher structure, which has a bigger strain on the materials and may cause energy losses. Over a long period of time, we changed several things.<\/p>\n<ul>\n<li>The composition and structure of the launcher and the tube:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7981 size-full\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/elastic-potential-energy-formula-1.jpg\" alt=\"\" width=\"1106\" height=\"292\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/elastic-potential-energy-formula-1.jpg 1106w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/elastic-potential-energy-formula-1-300x79.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/elastic-potential-energy-formula-1-1024x270.jpg 1024w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/elastic-potential-energy-formula-1-768x203.jpg 768w\" sizes=\"auto, (max-width: 1106px) 100vw, 1106px\" \/><\/li>\n<li>The cap, which now has a defined geometry for fixing the ball, which allows for a controlled throw of the ball:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7982 size-full\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-19-203544.jpg\" alt=\"\" width=\"838\" height=\"255\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-19-203544.jpg 838w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-19-203544-300x91.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/Screenshot-2024-06-19-203544-768x234.jpg 768w\" sizes=\"auto, (max-width: 838px) 100vw, 838px\" \/><\/li>\n<li>Centralizing the stepper motor<\/li>\n<li>Small other things for better endurance and stability<\/li>\n<\/ul>\n<p>For a better understanding, of the mechanical system, the following paragraphs provide assembly instructions for the launch structure.<\/p>\n<p>In the first step, the ramp is fixed (with glue or screws) to the robot base.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7984 size-large aligncenter\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step1-1024x438.jpg\" alt=\"\" width=\"600\" height=\"257\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step1-1024x438.jpg 1024w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step1-300x128.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step1-768x329.jpg 768w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step1.jpg 1058w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/>After that the linear stepper motor and the solenoids are added.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7983 size-large aligncenter\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step2-1024x467.jpg\" alt=\"\" width=\"600\" height=\"274\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step2-1024x467.jpg 1024w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step2-300x137.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step2-768x350.jpg 768w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step2.jpg 1198w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>Then the tube and the components within it (launcher, spring, cap) have to be assembled. First, the spring has to be put in the launcher and then the cap is added on top via a thread. Next, these two assembled components go into the tube.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7985 size-large aligncenter\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-2-1024x311.jpg\" alt=\"\" width=\"600\" height=\"182\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-2-1024x311.jpg 1024w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-2-300x91.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-2-768x233.jpg 768w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-2.jpg 1454w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>The end of the launcher with the assembled components will be placed into the end of the solenoid fixture for axial guidance. After that, the tube will be fixed with a screw onto a big support structure, which is screwed or glued to the robot base. The final assembled robot looks like this:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-7986 size-large aligncenter\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-3-1024x439.jpg\" alt=\"\" width=\"600\" height=\"257\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-3-1024x439.jpg 1024w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-3-300x129.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-3-768x330.jpg 768w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-3.jpg 1524w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p><strong>Developing the app for remote control<\/strong><\/p>\n<p>We used the MIT App inventor to develop the app. We connected the Arduino to the Arduino bluetooth module to receive inputs which could remotely control the robot. As we were using non-holonomic wheels, we manually coded different movement patterns that are illustrated below.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7987 size-full\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-4.jpg\" alt=\"\" width=\"952\" height=\"519\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-4.jpg 952w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-4-300x164.jpg 300w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/charger-4-768x419.jpg 768w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\" \/><\/p>\n<p><strong>Autonomic Distance Sensing<\/strong><\/p>\n<p>As the initial distance to the cup is unknown in the beer pong scenario, we need to use sensors to detect it. Additionally, the sensors cannot be at the same height of the cup (parallel to the table) as the own players cups will omit the vision of the sensor. We planned to use a Laser Range Sensor. The Vl53l1X has can detect ranges up to 4 m with high precision, which is perfect for us. It will be attached to a tilting plate which is rotated by a small servo. Thus, it scans the table in direction of the launcher for irregularities, which would indicate a cup standing there. Using this idea, we could detect the distance to the cup as long as the robot is pointing exactly towards it. Then, we could calculate how many steps the stepper motor needs to operate to compress the spring such that the ball flies this exact distance.<\/p>\n<p><strong>Final result<\/strong><\/p>\n<p>We did not finish the beer pong mechanism yet and are still working on it. However, we have a remotely controllable mecanum wheel robot which can also use a Ultrasonic Sensor for obstacle avoidance.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-7991 size-large\" src=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/WhatsApp-Image-2024-06-19-at-21.14.17-768x1024.jpeg\" alt=\"\" width=\"600\" height=\"800\" srcset=\"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/WhatsApp-Image-2024-06-19-at-21.14.17-768x1024.jpeg 768w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/WhatsApp-Image-2024-06-19-at-21.14.17-225x300.jpeg 225w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/WhatsApp-Image-2024-06-19-at-21.14.17-1152x1536.jpeg 1152w, https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/WhatsApp-Image-2024-06-19-at-21.14.17.jpeg 1500w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/p>\n<p>&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Introduction For our Mobile Robotics project, we decided to build a robot that plays beer pong. In other terms, it should be able to throw a ping pong ball into a cup which is standing on the same flat surface as the robot. The cup is standing about 2 to 3 meters away from the [&hellip;]<\/p>\n","protected":false},"author":984,"featured_media":7983,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[81],"tags":[],"class_list":["post-7931","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"aioseo_notices":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/step2.jpg","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":8028,"url":"https:\/\/dyor.webs.upv.es\/en\/english-esp32-robot-with-motor-feedback-control\/","url_meta":{"origin":7931,"position":0},"title":"ESP32 Robot with Motor Feedback Control","author":"ElectRick","date":"Wednesday June 26th, 2024","format":false,"excerpt":"This post presents the ElectRick bot, an ESP32-based, two-wheeled mobile robot which can be controlled via an Android app. It features a manual driving mode, a line following mode and an obstacle avoidance mode. Content of the project folder: 3D Model (STEP format, 3D-printed parts as STL) ESP32 Code (.ino,\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/dyor.webs.upv.es\/en\/category\/blog\/"},"img":{"alt_text":"CAD Model of robot assembly","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/CAD2.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/CAD2.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/CAD2.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/CAD2.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":3496,"url":"https:\/\/dyor.webs.upv.es\/en\/ajuste-dyor-bped\/","url_meta":{"origin":7931,"position":1},"title":"DYOR bPED Calibration","author":"soporte","date":"Wednesday May  2nd, 2018","format":false,"excerpt":"In this post, we explain the calibration procedure for DYOR bPED robot. Assembly of DYOR bPED robot might be misaligned with respect to the home configuration. If the misalignment is not too much, we can use the following calibration procedure so that we can adjust the correct angles by software.\u2026","rel":"","context":"In &quot;DYOR bPED&quot;","block_context":{"text":"DYOR bPED","link":"https:\/\/dyor.webs.upv.es\/en\/category\/robots\/dyor-bped\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/05\/servo_axis.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/05\/servo_axis.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2018\/05\/servo_axis.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":734,"url":"https:\/\/dyor.webs.upv.es\/en\/sensor-distancia\/","url_meta":{"origin":7931,"position":2},"title":"Ultrasound sensor HC-SR04","author":"soporte","date":"Wednesday February 15th, 2017","format":false,"excerpt":"Learn how to use the ultrasound (sonar) sensor HC-SR04. DYOR robot uses this sensor to detect obstacles and measure distances. Working principle, connection diagrama and programming example with Facilino. How it works? The ultrasonic sensor HC-SR04 generates a set of ultrasonic waves using one of the membranes (capsules) and receives\u2026","rel":"","context":"In &quot;Arduino&quot;","block_context":{"text":"Arduino","link":"https:\/\/dyor.webs.upv.es\/en\/category\/electronica\/arduino\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/02\/ultrasonidos_zumbador_bb.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/02\/ultrasonidos_zumbador_bb.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/02\/ultrasonidos_zumbador_bb.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/02\/ultrasonidos_zumbador_bb.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/02\/ultrasonidos_zumbador_bb.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":1405,"url":"https:\/\/dyor.webs.upv.es\/en\/tinkercad-rueda\/","url_meta":{"origin":7931,"position":3},"title":"TinkerCAD Design of FS90R Wheel","author":"soporte","date":"Tuesday March  7th, 2017","format":false,"excerpt":"Learn how to design a simplified model of FS90R Wheel for your DYOR robot with TinkerCAD. Here we will show necessary steps to design a simplified version of FS90R wheel for your DYOR robot with TinkerCAD. The model is intended to be as simple as possible with the purpose of\u2026","rel":"","context":"In &quot;tinkercad&quot;","block_context":{"text":"tinkercad","link":"https:\/\/dyor.webs.upv.es\/en\/category\/diseno\/tinkercad\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/03\/rueda_sin_fondo.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/03\/rueda_sin_fondo.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2017\/03\/rueda_sin_fondo.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":5915,"url":"https:\/\/dyor.webs.upv.es\/en\/english-bearbot-dyor\/","url_meta":{"origin":7931,"position":4},"title":"BearBot DYOR","author":"Daniel Garcia del Buey","date":"Wednesday June 26th, 2024","format":false,"excerpt":"Bearbot is a simple and very easy to build robot that can do more things than it seems at first glance. In this post you'll see what bearBot can do and how it was build and programmed and also some useful tips that could help you do your own robot\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/dyor.webs.upv.es\/en\/category\/blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2021\/06\/IMG_20210620_154206-scaled.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2021\/06\/IMG_20210620_154206-scaled.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2021\/06\/IMG_20210620_154206-scaled.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2021\/06\/IMG_20210620_154206-scaled.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2021\/06\/IMG_20210620_154206-scaled.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2021\/06\/IMG_20210620_154206-scaled.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":7576,"url":"https:\/\/dyor.webs.upv.es\/en\/english-dyor-pasta-python\/","url_meta":{"origin":7931,"position":5},"title":"DYOR Pasta &#8211; Python","author":"wolfihno","date":"Wednesday June 26th, 2024","format":false,"excerpt":"This post describes designing and building of Python controlled DYOR Pasta. In this post, we will explain the design and programming process of our DYOR named Pasta. This work was carried out as a part of the Mobile Robotics class. The Design The template used for the robot design was\u2026","rel":"","context":"In &quot;Blog&quot;","block_context":{"text":"Blog","link":"https:\/\/dyor.webs.upv.es\/en\/category\/blog\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/IMG_0337-scaled.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/IMG_0337-scaled.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/IMG_0337-scaled.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/IMG_0337-scaled.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/IMG_0337-scaled.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/dyor.webs.upv.es\/wp-content\/uploads\/2024\/06\/IMG_0337-scaled.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]}],"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts\/7931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/users\/984"}],"replies":[{"embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/comments?post=7931"}],"version-history":[{"count":6,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts\/7931\/revisions"}],"predecessor-version":[{"id":8000,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/posts\/7931\/revisions\/8000"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/media\/7983"}],"wp:attachment":[{"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/media?parent=7931"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/categories?post=7931"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dyor.webs.upv.es\/en\/wp-json\/wp\/v2\/tags?post=7931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}