{"id":12091,"date":"2025-10-27T21:05:09","date_gmt":"2025-10-27T20:05:09","guid":{"rendered":"https:\/\/dronesonen.usn.no\/?p=12091"},"modified":"2025-11-07T12:44:25","modified_gmt":"2025-11-07T11:44:25","slug":"minimuck-week-10","status":"publish","type":"post","link":"https:\/\/dronesonen.usn.no\/?p=12091","title":{"rendered":"MiniMuck \u2013 Week 10"},"content":{"rendered":"\n<p class=\"has-text-align-center\">Hello W\u00f8rld!<\/p>\n\n\n\n<p>This week from MiniMuck! The team has been in debugging hell. While producing parts, parts, and more parts. Now the whole team has full focus on the final MiniMuck robot.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Leon<\/h2>\n\n\n\n<p><strong>The transition:<\/strong><\/p>\n\n\n\n<p>When moving from the MVP to the MiniMuck (final product) the complexity of the controller gets higher. Here is a diagram showing the stack for the MVP compared to the final product.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"722\" height=\"312\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/mm_controller.drawio.png\" alt=\"\" class=\"wp-image-12210\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/mm_controller.drawio.png 722w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/mm_controller.drawio-300x130.png 300w\" sizes=\"auto, (max-width: 722px) 100vw, 722px\" \/><\/figure>\n\n\n\n<p>The biggest difference between the two is the fact that the MiniMuck needs two controllers. One for steering and driving the robot, and one for the arms\/legs of the robot. The MVP used one differential drive controller (DDC), while in the MiniMuck we are trying to get it working using an ackermann steering controller (ASC) and a joint trajectory controller (JTC). The JTC is a basic controller where the developer has to define all components. So it is basically a framework for building custom controllers, while the DDC and ASC are controllers that have parameters they expect, so they are more rigid to work with.<\/p>\n\n\n\n<p><strong>Introduction:<\/strong><\/p>\n\n\n\n<p>This week I have mainly worked on getting to a point where we can test the minimuck in Rviz with mock components. I spent most of monday on making the urdf and getting the right mesurements from the real minimuck. Later in the week I shifted focus to the launch file and minimuck_controllers.yaml file.&nbsp; the yaml file is basically a parameters file that lists all controllers with related parameters as well as the hardware used. I typically call this file the controller manager.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-273-1024x576.png\" alt=\"\" class=\"wp-image-12195\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-273-1024x576.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-273-300x169.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-273-768x432.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-273.png 1249w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Challenges:<\/strong><\/p>\n\n\n\n<p>When trying to get the minimuck working in Rviz the biggest challenge I have met and still not resolved is the fact that the odomotry is not working alongside that the robot never recives the controller input from the keyboard. I assume that this is related. To start with the ASC did not even load because my parameters did not satisfy the controller. I changed and added some parameters to see if I could get it working. That fixed the loading issue, however the odomotry issue came up and is there still.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"368\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-274-1024x368.png\" alt=\"\" class=\"wp-image-12194\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-274-1024x368.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-274-300x108.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-274-768x276.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-274.png 1248w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><strong>Moving Forward:<\/strong><\/p>\n\n\n\n<p>I have an idea of switching out the ackermann steering controller for a setup with a diffdrive controller, alongside some custom code for turning. I plan on lifting this idea on next weeks monday standup meeting so that we can discuss how to move forward. Moreover next week my plan is to get the robot running in rviz and be ready for testing with the real physical minimuck. That means that I have to resolve the challenges I have been facing as well as making a new custom hardware interface and launch file.<\/p>\n\n\n\n<p><a href=\"https:\/\/gitlab.com\/mini-muck\/mm_software_2025\/-\/tree\/control_branch?ref_type=heads\">https:\/\/gitlab.com\/mini-muck\/mm_software_2025\/-\/tree\/control_branch?ref_type=heads<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator aligncenter has-alpha-channel-opacity is-style-wide\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Herman<\/h2>\n\n\n\n<p>This week I have mainly worked on the PCB. The components were finally received, and I assembled the PCB with help and equipment from Timo (special thanks is in order). After assembly, I tested some of the functionality and solved issues with the design.<\/p>\n\n\n\n<p><strong>The Actuator and Power Supply Board (APM)<\/strong><\/p>\n\n\n\n<p>Our system uses <a href=\"https:\/\/www.raspberrypi.com\/documentation\/computers\/raspberry-pi.html\">Raspberry Pi 5<\/a> with ROS to control robotics, interpret LIDAR data and compute navigation. The Pi requires a 5V power supply, has some IO, but expansion cards are needed to control servos and motors. We are also using the <a href=\"https:\/\/emanual.robotis.com\/docs\/en\/dxl\/x\/xm430-w210\/\">Dynamixel XM<\/a> servos supplied by the university with the OpenCM 9.04 microcontroller and servo driver card. By integrating this card with the Pi, we can control the servos, but external motor drivers are still needed. By integrating the <a href=\"https:\/\/emanual.robotis.com\/docs\/en\/parts\/controller\/opencm904\/\">OpenCM 9.04<\/a>, Texas Instruments <a href=\"https:\/\/www.ti.com\/product\/DRV8231A\" data-type=\"link\" data-id=\"https:\/\/www.ti.com\/product\/DRV8231A\">DRV8231A<\/a> H-Bridge Driver, Texas Instruments <a href=\"https:\/\/www.ti.com\/product\/TPS40303\">TPS40303<\/a> based Buck Converter from three cell LiPo to 5V, a USB-C power connector and voltage sensing for battery monitoring, we integrate the vehicle with the Raspberry Pi on one circuit board. The block diagram of the circuit board is shown below.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560bd798&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"546\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-254-1024x546.png\" alt=\"\" class=\"wp-image-12094\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-254-1024x546.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-254-300x160.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-254-768x409.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-254-1536x818.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-254-2048x1091.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">MiniMuck APM Board Electrical Block Diagram<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560bdb2e&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"427\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-255-1024x427.png\" alt=\"\" class=\"wp-image-12095\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-255-1024x427.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-255-300x125.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-255-768x321.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-255-1536x641.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-255-2048x855.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">MiniMuck Electrical Block Diagram<\/figcaption><\/figure>\n\n\n\n<p><strong>Assembly<\/strong><\/p>\n\n\n\n<p>When assembling the PCB, I started with all components in bags, and the PCB and stencil for solder paste. When I ordered the components, I used the entered the reference designator (U1, R1-R4, C2, etc.) into the \u201ccustomer reference\u201d field on all lines to ease the assembly process.<\/p>\n\n\n\n<p>The stencil was used to apply soldering paste. The stencil design uses cutouts on pads to avoid excessive paste which can cause bridging.<\/p>\n\n\n\n<p>A heat-bed and hot-air was used to solder the surface mounted (SMD) components. Because I stitched the copper planes, and did not use thermal reliefs, some components were quite difficult to solder. Especially the electrolytic capacitors because of the plastic melting. Because of this, a soldering iron was used on the more fragile components in addition to the through-hole (THT) components.<\/p>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560bdf0b&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12103\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7236-768x1024.jpeg\" alt=\"\" class=\"wp-image-12103\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7236-768x1024.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7236-225x300.jpeg 225w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7236-1152x1536.jpeg 1152w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7236-1536x2048.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7236-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Packages received from JLCPCB and DigiKey<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560be21f&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12106\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7246-edited-1024x768.jpeg\" alt=\"\" class=\"wp-image-12106\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7246-edited-1024x768.jpeg 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7246-edited-300x225.jpeg 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7246-edited-768x576.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7246-edited-1536x1152.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7246-edited-2048x1536.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Stencil for solder paste application<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560be53a&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12108\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7237-768x1024.jpeg\" alt=\"\" class=\"wp-image-12108\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7237-768x1024.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7237-225x300.jpeg 225w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7237-1152x1536.jpeg 1152w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7237-1536x2048.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7237-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">The Pick and Place machine is used to place SMD components<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560be846&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12104\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7247-768x1024.jpeg\" alt=\"\" class=\"wp-image-12104\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7247-768x1024.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7247-225x300.jpeg 225w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7247-1152x1536.jpeg 1152w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7247-1536x2048.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7247-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Handsoldering of THT components<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560beb4e&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12109\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7251-768x1024.jpeg\" alt=\"\" class=\"wp-image-12109\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7251-768x1024.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7251-225x300.jpeg 225w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7251-1152x1536.jpeg 1152w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7251-1536x2048.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7251-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">First power on test<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560bee64&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12110\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7250-1024x768.jpeg\" alt=\"\" class=\"wp-image-12110\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7250-1024x768.jpeg 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7250-300x225.jpeg 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7250-768x576.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7250-1536x1152.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7250-2048x1536.jpeg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Driving servos with the board<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<p>During the assembly, I checked if the OpenCM 9.04 fit, and it did not. The microcontroller does not have pin spacing in the datasheet and by counting wrong, the header was offset by one row (2.54mm). This issue occurred due to limited measurements available on the layout of the OpenCM, and I used the breadboard for measuring. To resolve this issue, the pins of the socket header were bent outwards 90 degrees like the SMD version and soldered only on top of the pads. This is sufficient for our use but is unfortunate and should not have happened.<\/p>\n\n\n\n<p><strong>Testing Motor Driver<\/strong><\/p>\n\n\n\n<p>When the PCB was assembled, I did some measurements with the digital multimeter to ensure no shorts on power rails and the most critical nets were not shorted either. When no shorts were found, the power was turned on and the LEDs lit up. The power supply supplied 5V and the motor drivers amplified the PWM correctly, but there was a catch.<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:50%\">\n<figure class=\"wp-block-video aligncenter\" style=\"margin-top:0;margin-right:0;margin-bottom:0;margin-left:0;padding-top:0;padding-right:0;padding-bottom:0;padding-left:0\"><video controls src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/att.r4pebMh7UYTYCdEeb3dMi2KTfr0rsUS6hCMdnt1EnXc.mp4\"><\/video><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:25%\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560bf554&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"579\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-256-1024x579.png\" alt=\"\" class=\"wp-image-12096\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-256-1024x579.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-256-300x170.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-256-768x434.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-256.png 1354w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p><strong>Issue with control logic<\/strong><\/p>\n\n\n\n<p>The original design was to use PWM on one pin and a digital pin on the other and this would have worked fine with a normal H-bridge, but the IC I have implemented has special functionality which sets both outputs to High impedance (High-Z) when both inputs are low. This causes issues when the digital pin is low by blocking the motor current, which causes a voltage spike on the opposite terminal and asbsorbs all the energy. <\/p>\n\n\n\n<p>The ideal solution would be to select a different motor driver, but as a quick-fix, I use PWM on the digital pins as well, however motor driver 4 did not have this capability which was solved by soldering a wire connecting pin A5 to the motor driver IN2 and removing the socket from the header on the PCB disconnecting pin D15. A6 was originally meant for servos, but since we dont plan to use them, it was ok to use this pin for motor control instead.<\/p>\n\n\n\n<p>First i attempted to simply connect A5 and D15 and declare D15 input, but this caused issues on startup and upload where the motor would dive at max speed uncontrollably for a few seconds. Luckily the microcontroller was not damaged by this attempt, and by removing the socket from the header on D15, the issue was resolved successfully. This incident highlights the importance of reading the datasheet thoroughly and understanding the technology before implementing it.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"637\" height=\"266\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-257.png\" alt=\"\" class=\"wp-image-12097\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-257.png 637w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-257-300x125.png 300w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><figcaption class=\"wp-element-caption\">Orange = PWM signal     Blue = Output which should be low, but spikes up due to high impedance on outputs.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560bf959&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12111\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7308-768x1024.jpeg\" alt=\"\" class=\"wp-image-12111\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7308-768x1024.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7308-225x300.jpeg 225w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7308-1152x1536.jpeg 1152w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7308-1536x2048.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7308-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">One socket was removed by stripping away plastic and pulling it out while soldering<\/figcaption><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69d29560bfc59&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-large wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"768\" height=\"1024\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" data-id=\"12112\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7306-768x1024.jpeg\" alt=\"\" class=\"wp-image-12112\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7306-768x1024.jpeg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7306-225x300.jpeg 225w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7306-1152x1536.jpeg 1152w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7306-1536x2048.jpeg 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7306-scaled.jpeg 1920w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">A wire is added to connect A5 to the net where D15 used to be connected<\/figcaption><\/figure>\n<\/figure>\n\n\n\n<figure class=\"wp-block-video\"><video controls src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/IMG_7301.mov\"><\/video><figcaption class=\"wp-element-caption\">Driving motors in both directions with fix in place<\/figcaption><\/figure>\n\n\n\n<p><strong>Calibrating the voltage readings<\/strong><\/p>\n\n\n\n<p>A voltage divider is used to linearly convert the battery voltage to a voltage in the range of the ADC in the microcontroller. There is a deviation between the theoretical values and the measured values. The deviation could be caused by either the digital multimeter or the ADC, but i want the ADC readings to be calibrated to the measurements of my multimeter. Hence I used linear regression analysis in GeoGebra to find the parameters to use in software.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"902\" height=\"231\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-258.png\" alt=\"\" class=\"wp-image-12098\" style=\"width:564px;height:auto\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-258.png 902w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-258-300x77.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-258-768x197.png 768w\" sizes=\"auto, (max-width: 902px) 100vw, 902px\" \/><figcaption class=\"wp-element-caption\">Theoretical values:  a = 61.87, b = 0 in y = ax+b<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"668\" height=\"364\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-259.png\" alt=\"\" class=\"wp-image-12099\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-259.png 668w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-259-300x163.png 300w\" sizes=\"auto, (max-width: 668px) 100vw, 668px\" \/><figcaption class=\"wp-element-caption\">Regression analysis based on measured values:  a = 61.1333 and b = 2.3111 in y = ax+b<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"647\" height=\"61\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-260.png\" alt=\"\" class=\"wp-image-12100\" style=\"width:427px;height:auto\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-260.png 647w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-260-300x28.png 300w\" sizes=\"auto, (max-width: 647px) 100vw, 647px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"388\" height=\"127\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-261.png\" alt=\"\" class=\"wp-image-12101\" style=\"width:225px;height:auto\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-261.png 388w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-261-300x98.png 300w\" sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/figure>\n\n\n\n<pre class=\"wp-block-code has-foreground-color has-text-color has-background has-link-color wp-elements-20b5b0db4ef0663e82237323c351a124\" style=\"background:linear-gradient(0deg,rgb(255,244,209) 0%,rgb(255,255,255) 100%)\"><code>float batteryVoltage(){\n  float data = analogRead(PIN_VS);\n  return (data-2.3111)\/61.1333;\n}<\/code><\/pre>\n\n\n\n<p><strong>Plan for next week<\/strong><\/p>\n\n\n\n<p>The next week, i plan to test 5V Power supply properly with a rheostat or power resistors before connecting the Raspberry Pi to the power supply. I also plan to help with assembling the mechanical structure where Ask has 3D printed the remaining parts. Additionally, i hope to solder motors and wire up Mini Muck. <\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Ask<\/h2>\n\n\n\n<p>Hei Bloggen!<\/p>\n\n\n\n<p><strong>Software<\/strong><\/p>\n\n\n\n<p>As mentioned in last week\u2019s blog this week has gone to figuring out the timing issue in ros2 between slamtoolbox and LiDAR. This issue is mostly because I am working on just a part of the project. Slamtoolbox needs the odometry of the robot to make maps. I have known this since the start of working with slamtoolbox. Since I don\u2019t have the odometry (where the robot think it is in the real world) for the robot because this is a part of the minimuck controller Leon is working on, I have simulated this using this command:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"290\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-275-1024x290.png\" alt=\"\" class=\"wp-image-12198\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-275-1024x290.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-275-300x85.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-275-768x218.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-275.png 1249w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The timing issue starts here. Since this is just a static way to do this(ros2 don\u2019t expect the robot to move) it doesn\u2019t update the timestamp on the static odometry. This is something slamtoolbox doesn\u2019t like as it depends on knowing where the robot is at a particular timestamp to update the map.<\/p>\n\n\n\n<p>The solution to this is to make a publisher that I have called odomBroadcaster. This is a publisher that posts the same information as the command above but updates the timestamp in the header as well.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"612\" height=\"1024\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-276-612x1024.png\" alt=\"\" class=\"wp-image-12197\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-276-612x1024.png 612w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-276-179x300.png 179w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-276-768x1285.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-276-918x1536.png 918w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-276.png 1031w\" sizes=\"auto, (max-width: 612px) 100vw, 612px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"892\" height=\"1024\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-892x1024.jpg\" alt=\"\" class=\"wp-image-12199\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-892x1024.jpg 892w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-261x300.jpg 261w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-768x882.jpg 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image.jpg 1248w\" sizes=\"auto, (max-width: 892px) 100vw, 892px\" \/><\/figure>\n\n\n\n<p>As you can see in the view frame tree all the different frames of data is correctly attached. But it doesn\u2019t work as expected. Slamtoolbox is still hanging on Registering sensor stage. This is the next and hopefully the last stage to debug.<\/p>\n\n\n\n<p><strong>Mechanical<\/strong><\/p>\n\n\n\n<p>On the mechanical part of mini muck me and Herman have made some adjustments to hole sizes in the 3D models to fit the connectors we have decided to use and printed most of the parts we need for the mini muck. So next week we should have a finished assembly of the mini muck.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1009\" height=\"757\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-2.jpeg\" alt=\"\" class=\"wp-image-12196\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-2.jpeg 1009w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-2-300x225.jpeg 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/10\/image-2-768x576.jpeg 768w\" sizes=\"auto, (max-width: 1009px) 100vw, 1009px\" \/><\/figure>\n\n\n\n<p><strong>Next week<\/strong><\/p>\n\n\n\n<p>If all goes to plan next week the LiDAR mapping with slamtoolbox should work and the mini muck should have all the mechanical parts ready and assembled.<\/p>\n\n\n\n<p><a href=\"https:\/\/gitlab.com\/mini-muck\/mm_software_2025\/-\/tree\/LiDARBranch?ref_type=heads\">https:\/\/gitlab.com\/mini-muck\/mm_software_2025\/-\/tree\/LiDARBranch?ref_type=heads<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\" \/>\n\n\n\n<div style=\"margin-top:0;margin-bottom:0;height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image aligncenter size-medium is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"175\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/08\/mm2-300x175.png\" alt=\"\" class=\"wp-image-10524\" style=\"aspect-ratio:1.7045454545454546;width:150px;height:auto\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/08\/mm2-300x175.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2025\/08\/mm2.png 753w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><figcaption class=\"wp-element-caption\">Mini Muck 2025<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Hello W\u00f8rld! This week from MiniMuck! The team has been in debugging hell. While producing parts, parts, and more parts. Now the whole team has full focus on the final MiniMuck robot.<\/p>\n","protected":false},"author":111,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[101,102],"class_list":["post-12091","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-mini-muck","tag-smart-systems-2025"],"_links":{"self":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/12091","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/users\/111"}],"replies":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=12091"}],"version-history":[{"count":17,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/12091\/revisions"}],"predecessor-version":[{"id":12547,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/12091\/revisions\/12547"}],"wp:attachment":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=12091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=12091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=12091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}