{"id":9429,"date":"2024-10-27T17:50:06","date_gmt":"2024-10-27T16:50:06","guid":{"rendered":"https:\/\/dronesonen.usn.no\/?p=9429"},"modified":"2024-10-28T12:34:22","modified_gmt":"2024-10-28T11:34:22","slug":"toyzrgone-week-6-7","status":"publish","type":"post","link":"https:\/\/dronesonen.usn.no\/?p=9429","title":{"rendered":"ToyzRgone \u2013 Week 6 &amp; 7"},"content":{"rendered":"\n<div class=\"wp-block-columns alignwide 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<p><strong>Welcome to the combined sixth and seventh ToyzRgone project blog!<\/strong> <\/p>\n\n\n\n<p>Due to a large portion of the team is focusing on resit exams and balancing commitments to other courses, we decided to merge these two weekly updates into one. We\u2019ve made steady progress toward our goal of building a fully functional self-driving robot. Below, you\u2019ll find the key highlights from our recent work and the steps we\u2019ve taken to keep moving forward.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Hamsa Hashi<\/strong> \ud83d\udcbb<\/h2>\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<p><strong>What Was Done<\/strong><\/p>\n\n\n\n<p>The past two weeks, despite exam preparations, Sokaina and I focused on improving the dataset and fine-tuning the model. Last week\u2019s testing showed the need for more varied images to distinguish target objects from other round objects. Therefore, we expanded the dataset and set up a new testing process for more accurate evaluation.<\/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<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-131-1024x848.png\" alt=\"\" class=\"wp-image-9550\" width=\"368\" height=\"305\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-131-1024x848.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-131-300x248.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-131-768x636.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-131-1536x1272.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-131.png 1724w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\" \/><figcaption class=\"wp-element-caption\"><strong>The file structure I have used for training my custom dataset with YOLOv8. https:\/\/harshavardhanyellanki.github.io\/YOLOV8_GUI\/cfg\/<\/strong><\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><\/p>\n\n\n\n<p>The previous dataset and file structure only included training(train) and validation(val) sets, which limited the model&#8217;s ability to properly test whether it had genuinely &#8220;learned&#8221; throughout the epochs. To address this, I have now added a <strong>test<\/strong> set with images, following best practices for creating a custom dataset based on the documentation. This adjustment will allow for a more accurate assessment of the model&#8217;s performance on unseen data.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>Sokaina and I took additional pictures of the blue, red, and green balls in realistic environments, using a Python script she created that connects her phone to Google Drive for automatic uploads. Great job from Sokaina! both efficient and a real time-saver, in my opinion. We also added images of other round objects to train the model to ignore them. A separate test set was created with images not included in the training set to ensure the model is truly learning to recognize objects.<\/p>\n\n\n\n<p><strong>Fine-Tuning Training Parameters<\/strong><\/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<pre class=\"wp-block-code\"><code># Tren YOLOv8-modellen med optimaliserte parametere\nresults = model.train(\n    data=os.path.join('\/content\/drive\/MyDrive\/ComputerVisionEngineer\/ObjectDetectionYolov8GoogleColab', \"google_colab_config.yaml\"),\n    epochs=50, imgsz=640, lr0=0.01, momentum=0.937, weight_decay=0.0005, augment=True, save_dir=train_results_dir\n)\n<\/code><\/pre>\n<\/div>\n<\/div>\n\n\n\n<p>Before the new training, We reviewed Ultralytics documentation and adjusted parameters to better balance accuracy and performance. The image size was set to imgsz=640, with a learning rate of lr0=0.01 and momentum=0.937 for smoother training. To prevent overfitting, I used weight_decay=0.0005, and enabled augment=True to make the model more robust.<\/p>\n\n\n\n<p><strong>Challenges with Testing and Hardware<\/strong><\/p>\n\n\n\n<p>Despite improvements, we think the model still struggled with precision under poor lighting, and the mAP results were not fully satisfactory. The Raspberry Pi 4 also faced performance issues with real-time detection, and camera stream delays made testing challenging. As a result, I moved development to my Windows machine, which offers better hardware performance for real-time detection and model testing.<\/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<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"807\" height=\"845\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-132.png\" alt=\"\" class=\"wp-image-9551\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-132.png 807w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-132-287x300.png 287w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-132-768x804.png 768w\" sizes=\"auto, (max-width: 807px) 100vw, 807px\" \/><figcaption class=\"wp-element-caption\"><strong>Part of code for Object detection using our own custom dataset <\/strong><\/figcaption><\/figure>\n<\/div>\n\n\n\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\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-147.png\" alt=\"\" class=\"wp-image-9598\" width=\"249\" height=\"331\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-147.png 445w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-147-225x300.png 225w\" sizes=\"auto, (max-width: 249px) 100vw, 249px\" \/><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-149.png\" alt=\"\" class=\"wp-image-9600\" width=\"249\" height=\"331\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-149.png 445w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-149-225x300.png 225w\" sizes=\"auto, (max-width: 249px) 100vw, 249px\" \/><\/figure>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>Moving forward, I plan to handle the more complex tasks, such as object detection, on my Windows machine to bypass the Raspberry Pi&#8217;s limitations. I will subscribe to the camera feed from the Raspberry Pi, ensuring we don&#8217;t compromise performance while still using the Pi&#8217;s camera capabilities.<\/p>\n\n\n\n<p><strong>Next week<\/strong><\/p>\n\n\n\n<p>In the coming week, I will also begin working on the <strong>robot&#8217;s movement system<\/strong> together with Philip. We will start by researching NEMA 17 stepper motors and how they can be integrated with the camera system. To begin, I\u2019ll use a game controller to test the basic functionality and ensure everything works as expected. Once confirmed, the stepper motors will receive movement commands based on the camera\u2019s x\/y coordinates. The long-term goal is to integrate LiDAR with ROS to enable SLAM (Simultaneous Localization and Mapping), allowing us to capture x, y, and z coordinates for objects the robot needs to pick up.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Sokaina Cherkane<\/strong> \ud83d\udcbb<\/h2>\n\n\n\n<p><strong>NB. Exams on both week 5 and 6.&nbsp;<\/strong><\/p>\n\n\n\n<p>&nbsp;To be more productive, Hamsa and I agreed to work on different datasets. I will train the one that I made from scratch on VS Code. Meanwhile, he will train an imported one from Roboflow directly to the Raspberrypie. <\/p>\n\n\n\n<p>Both of us met some errors and challenges, where the dataset wasn\u2019t well trained. (check the pictures below)<\/p>\n\n\n\n<p><img loading=\"lazy\" decoding=\"async\" width=\"407\" height=\"408\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdwHyKSUuDVpQS7VNc8QdzzTaL_ZAJz0GViZuTCCYGBWEfp3mM_w4OeOwPkVy3PMzuY4hdycx28JhPWDkKPEseVL-fXfV9LKImW-hKDrY2brCWcsMdmkMCVIrQC8_8r-R-UQ_O4cirdCqOZPm2CAWm06LzL?key=2AMAXoEvXRFDGa15Stb8gw\">   <\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/Screenshot-2024-09-27-at-15.13.12-1024x251.png\" alt=\"\" class=\"wp-image-9635\" width=\"637\" height=\"156\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/Screenshot-2024-09-27-at-15.13.12-1024x251.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/Screenshot-2024-09-27-at-15.13.12-300x73.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/Screenshot-2024-09-27-at-15.13.12-768x188.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/Screenshot-2024-09-27-at-15.13.12-1536x376.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/Screenshot-2024-09-27-at-15.13.12.png 1629w\" sizes=\"auto, (max-width: 637px) 100vw, 637px\" \/><\/figure>\n\n\n\n<p>The program is not precise since it mixes different colors. <strong>1 is <\/strong>meant to be<strong> red, 2 is blue and 4 is green. <\/strong>But the program is still inaccurate. Plus, the camera on the RP couldn\u2019t distinguish a human from a ball. We came to the conclusion that we must combine both his and my dataset, re-train it, and test it directly on the RP.<\/p>\n\n\n\n<p><strong>Uke 7.&nbsp;<\/strong><\/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<figure class=\"wp-block-video\"><video controls src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/IMG_9438-1.mov\"><\/video><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/image-158.png\" alt=\"\" class=\"wp-image-9614\" width=\"477\" height=\"401\" \/><figcaption class=\"wp-element-caption\"><strong>Some pictures form me and sokaina testing our new trained dataset (best.pt).<\/strong><\/figcaption><\/figure>\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<p class=\"has-text-align-center\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcFClPEf6aiu_Z5XrbW7QI4ZyqgIAYxVd1NWbG7gH5luvCP-jFlBtRRzDF78pFy3oz2uJhRwZ9xJ3c4P00gIJ_gywcxOOE0JHXOYvSqBkDQWHNGUZE-ADGSU9-i9rGP0lM-ZK5fqQNzTrxsSDqizSv4zitE?key=79XCatlKhcx-g1hKEoEZXA\" style=\"width: 250px\"><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>After almost nine hours of code debugging on the RPI and dataset adjustments, I could finally get the RPI camera to be read directly, displaying the results on the screen as shown in the videos below.&nbsp;<\/p>\n\n\n\n<p>Hamsa and I decided then to collaborate in order to achieve a more accurate and detailed data recognition, we arrived at the following results (see image).&nbsp;<\/p>\n\n\n\n<p>The day started off by making a new dataset, the pictures were taken at both our grouperoom and Dronesonen, to expose the balls to different lightning, we also made sure to include human faces to assist our program to distinguish between balls, people and other individuals\/objects. Next we filtered the pictures, annotated them and started the training process.&nbsp;<\/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<figure class=\"wp-block-image alignleft size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/confusion_matrix-1024x768.png\" alt=\"\" class=\"wp-image-9642\" width=\"317\" height=\"237\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/confusion_matrix-1024x768.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/confusion_matrix-300x225.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/confusion_matrix-768x576.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/confusion_matrix-1536x1152.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/confusion_matrix-2048x1536.png 2048w\" sizes=\"auto, (max-width: 317px) 100vw, 317px\" \/><figcaption class=\"wp-element-caption\"><strong>Confusion Matrix<\/strong><\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/mAP50.png\" alt=\"\" class=\"wp-image-9643\" width=\"358\" height=\"215\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/mAP50.png 1000w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/mAP50-300x180.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/mAP50-768x461.png 768w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><figcaption class=\"wp-element-caption\"><strong>mAP50<\/strong><\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/P_curve-1024x683.png\" alt=\"\" class=\"wp-image-9644\" width=\"335\" height=\"223\" srcset=\"https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/P_curve-1024x683.png 1024w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/P_curve-300x200.png 300w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/P_curve-768x512.png 768w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/P_curve-1536x1024.png 1536w, https:\/\/dronesonen.usn.no\/wp-content\/uploads\/2024\/10\/P_curve-2048x1365.png 2048w\" sizes=\"auto, (max-width: 335px) 100vw, 335px\" \/><figcaption class=\"wp-element-caption\"><strong>Precision Conf  Curve<\/strong><\/figcaption><\/figure>\n<\/div>\n<\/div>\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<p><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfu4w5ihkvIPSbWaX0bvCZPkhJeRlmsMmlh_FtqiUt5RBRi-LMwaeib-coSu6-uDqABiiddhiLa2rT7yVbdAO9MS7sDWhOvJWUPdjv66pOmERU_EQ_w2fslw2gEo0yv1jPn2Xd7ew9mq6sDTigEzDBQjnBE?key=79XCatlKhcx-g1hKEoEZXA\" style=\"width: 350px\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcVebcy6S9TgzETDa9aaWM0121GfVhskz-0kCI_Q2j0vna5h9y48YFtzsdqaURv9j3A4gRYApBt021ti6f1UFxq26Kiud28bS4FSVL6u02H31HuoX2hG2zYhNt1o2912cSmQIJprV9fc0McguOfIMqp24cQ?key=79XCatlKhcx-g1hKEoEZXA\" style=\"width: 300px\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXflNV1g5NhO_7kt1imixZRTAEWQ1ggQ80xH6CZdnSkGWwqiVln_CASOkFsgBsMghB8HoCFNN9Je2GebXlSvToEtrbFlfVR_wBPp9vMQTmUdVyrZogMaU3_eSRqQYRYMwNB2cnITxZjDwpLjuxCcyORspDA?key=79XCatlKhcx-g1hKEoEZXA\" style=\"width: 300px\"><\/p>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-center\"><img loading=\"lazy\" decoding=\"async\" width=\"590\" height=\"185\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeVLqD1xJaPqN8X_GyRIWko_ElagpZ1U15eXpLFBB2JFejaAw2gSqDEP9L5QRPyqX41EjF76nKaPjOQITENm7JVr9WPdY4e2w7SnkSUna7xLCJF0CHHLXiOdRju7cBgYHyuV6GLt7ELWUZUnAVc_CEppBs?key=79XCatlKhcx-g1hKEoEZXA\"><\/p>\n\n\n\n<p>We tested the dataset with a standard external camera, which was very successful. Afterward, we tested it with the Raspberry Pi\u2019s camera, where we could observe differences and improvements in our final dataset, a combination of two custom datasets and one imported from Roboflow. Now that the dataset is more precise and accurate, it\u2019s usable, and we are ready for the next step.&nbsp;<\/p>\n\n\n\n<p><span style=\"text-decoration: underline\"><strong>Next week:&nbsp;<\/strong><\/span><\/p>\n\n\n\n<p>Hamsa will be in charge of the car, and I will handle the robotic arm. I plan to dedicate next week to learning forward and inverse kinematics after testing the arm using OpenCM 9.04. It has not yet been decided if I will use ROS or not.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Philip Dahl<\/strong>  \ud83d\udd0b<\/h2>\n\n\n\n<p><strong>Converter<\/strong><\/p>\n\n\n\n<p>This week I looked into options for powering the microcontroller(s). Although a power supply\/battery pack has not been officially determined yet, we are likely using a 12 V source. The microcontroller needs 3.3V-5V(depending on what controller we use), so we need a converter.<br>I had previously designed a 12V to 5V converter in OrCad Capture in the Electronic Circuits course which I used to simulate output results.&nbsp;&nbsp;<\/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\">\n<p><kbd><img loading=\"lazy\" decoding=\"async\" width=\"605\" height=\"239\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdz8qB0GGZdWs8NzcqQvqniJMOuKPyrnOb2WTKrp1FFqWs5ZQHNF0tEVudl1QQXtdEohm1_F4_4SM49dAYtCgPvmFeOM8B8vXK4QkdoCPW8scr97y_uBnsshZixqurJzCi2q9rBlqxFOKsOCfiq2A62C63hIU9LPDVCn4oi_A?key=-5Pzf3KtGU404R0JPHXCJg\"><\/kbd><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdPk0q9I-z6nrv3lmxIsW0GfYgKKe7M66nwP8VFGaSwVo6YKB0jMEHnPslIA6IjYGboIuOw7_WAJ-voLiy7JuMG2D7mxzWJ3Ft6aKWonIsJyNMe5tEZMxBxfJowDETXR-N8rU6XZeGzJR2I27BUiJ2JaIg-eIGvzALoi8I0?key=-5Pzf3KtGU404R0JPHXCJg\" width=\"605\" height=\"249\"><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n\n<p>Picture to the Left: The signal reached 5V at around .5 ms and oscillated between 5 and 5.2 V. This would probably be good enough, but I wanted to see if the rise and peak time could be shortened as well as get a stable value closer to 5.0 V.<br>To get a lower overshoot value, the circuit needed higher damping. To the Right ^12 V power source and 12 to 5 V converter using LM3478.<\/p>\n\n\n\n<p><strong>Nema 17 Stepper Motors<\/strong><\/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<p><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdNxtvSw7Hh28ms-8X4Usdk33pdkfpFRr8hyn-WmmUwqvgnFBK3Kd2euvdqMlcoWUCu_By3SQuzHQIAmhaWzsxwpDcxqyTlt_xN2FpYf72nrlt5kgg_zknNEYe8c6M8FpXl4uEp4MzXKarGulU1oct8q0omr37xV3UJOY_q?key=-5Pzf3KtGU404R0JPHXCJg\" style=\"width: 300px\"><\/p>\n\n\n\n<p><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p>As the base for our robot was assembled with the steppers, I connected them to the drivers on a shared breadboard. This was a temporary, but more complete solution and was mostly so that we could run tests that more closely resembled the final product. I tested the steppers again now that they were mounted, just to be sure that they were still functioning.<br>I am only missing one driver and some wires to have all steppers up and running simultaneously, but this is a quick fix as soon as they are in my possession.<\/p>\n\n\n\n<p><\/p>\n<\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mikolaj Szczeblewski<\/strong> \ud83d\udd0b<\/h2>\n\n\n\n<p><strong>What was done:&nbsp;<\/strong><\/p>\n\n\n\n<p>This week I\u2019ve done more research on the Dynamixel relevant software, aside from the Dynamixel wizard 2.0 which is a crucial program for scanning both the OpenCM 9.04 board aswell as the servos. It is not \u201cthe\u201d program which helped me in installing the firmware needed for both the servos and the board. That was the R+ manager.<br><br>R+ manager (Roboplus manager 2.0) is a program that is a \u201cmust have\u201d when using the OpenCM 9.04 board. This program enables you to update Dynamixel products to their latest version. If we don\u2019t have the firmware installed to the newest version, then the Dynamixel wizard 2.0 won\u2019t detect the communication protocol from both the OpenCM and servos. Therefore I have updated both the OpenCM 9.04 and the XM430-W210-T Servos to their newest version.<\/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<p><img loading=\"lazy\" decoding=\"async\" alt=\"R+Manager\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdjMsymbpA1PO8UxVHyZko7oqRqqsapVk4EG_UhqhwhA4X0EE8ttUQGQQqDmYV-67zJELJumh77N1Gz_UQ8vnpRnrqjqA24nkk_0ulmLetKRGoaH7RI8Tg96SId1fmwKa_Aj64LV5KkaAgFpnomtshW1VEQ2k7JWsAAV0mmawQZPPzflB2mUPM?key=0_EaLxXR0IyGA6VsyUu8AQ\" width=\"441\" height=\"344\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><\/p>\n\n\n\n<p>Now you might ask, why don\u2019t I do it through the Dynamixel Wizard 2.0? It sounds like a program that should have also have the same firmware recovery feature?<br><br>Indeed it has, however OpenCM 9.04 is quite the outdated board, and Dynamixel Wizard 2.0 is not supporting a firmware recovery for that board any longer. (A variety of products from Dynamixel are discontinued which date to 8 years back)&nbsp;<\/p>\n<\/div>\n<\/div>\n\n\n\n<p>The reason why this is important to note is that I have ran example codes which didn\u2019t do anything, despite going through the compiler. However as a result, the firmware would be \u201cerased\u201d quite literally.<br><br>A lot of time has gone into this and this has given me insight into how we can prepare ourselves for the final testing phase, and how we will be able to identify potential communication failures involved with the servos.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Kevin Paulsen<\/strong> \ud83d\udee0\ufe0f<\/h2>\n\n\n\n<p><strong>What was done:<\/strong><\/p>\n\n\n\n<p>This week, I made some improvements to the robotic arm. First, I designed and added a mounting plate on top of the arm to securely attach the camera.<\/p>\n\n\n\n<p>I also worked on compressing the base of the arm further, successfully reducing unnecessary size and weight. Along with that, I added more fastening holes for screws and bolts to assemble different components inside the gripper.<\/p>\n\n\n\n<p>Although these improvements are coming along well, there are still a few areas that feel a little unclear, particularly around the gripper base and fastening, which will need more fine-tuning in the next iteration to ensure everything works smoothly<\/p>\n\n\n\n<p class=\"has-text-align-center\"><strong><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXegd9wbcs5up78rxwotEvZy1aJGRfAUIf6SwKmVBbn8Km2dD-dvyPdaFTwcpHUZUy136TRwNyy8h6eLDyR65wdt6h0Y8Y-Xhy4R7BWBQySRU_PntEV8LkXmaPzyUP13poozz1yQdW7xwoHvYbLRE-YoONG_frzx3Mp49FL2fFgQeJNZpNk4FQ?key=glmdIUwqVF8E-cHxousdKw\" width=\"370\" height=\"218\"><\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Ruben Henriksen<\/strong> \ud83d\udee0\ufe0f<\/h2>\n\n\n\n<p><strong>DONE:<\/strong><\/p>\n\n\n\n<p>This week I assembled the prototype of the base so the electronics and computer engineers would have something to work on. I redesigned the adapters for the motor and wheels and set them to print. I then traveled to Portugal to attend the European Rocketry Challenge and was unable to work too much on the project during this time.<\/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<p><img decoding=\"async\" style=\"width: 400px\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXc9ltlo-qiMzSMp4QmvcSh8DPh9nTvZzADybtVlc3tbN8ppLMO7xRBD1Ni3QBbJdN7n_RZypU-m0OliAQf-JdacyLdMnWBYWwQ0neotKK2MyGZ6pd8FPwFZjVu_5mJhVgAvPMvEOGPh7r6xpBHGZ0BwYuD_?key=mAHIU2w3Bf7KqluvMwa5rA\"><\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<p><\/p>\n\n\n\n<p><strong>TO BE DONE:<\/strong><\/p>\n\n\n\n<p>I will continue the design of the base of our robot and perform some further analysis.<\/p>\n<\/div>\n<\/div>\n\n\n\n<p><\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Welcome to the combined sixth and seventh ToyzRgone project blog! Due to a large portion of the team is focusing on resit exams and balancing commitments to other courses, we decided to merge these two weekly updates into one. We\u2019ve made steady progress toward our goal of building a fully functional self-driving robot. Below, you\u2019ll [&hellip;]<\/p>\n","protected":false},"author":108,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[100],"class_list":["post-9429","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-toyzrgone"],"_links":{"self":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/9429","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\/108"}],"replies":[{"embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=9429"}],"version-history":[{"count":7,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/9429\/revisions"}],"predecessor-version":[{"id":9647,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=\/wp\/v2\/posts\/9429\/revisions\/9647"}],"wp:attachment":[{"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=9429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=9429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dronesonen.usn.no\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=9429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}