Time: ~7 Hours
I wasn’t able to finish building the physical robot, so this year I’ve been focusing more on the coding side of the project. During these 7 hours, I worked on the robot’s motor control system, including movement, motor power, direction, and stopping.
I also spent time testing and debugging the code so that when I return to the physical robot, I’ll already have a stronger software foundation ready.
I’m going to keep developing and improving the code this year, and eventually return to finishing and integrating it with the physical robot.
Today I continued working on Sentinel’s autonomous retrace system.
The goal of this system is to give it a way to recover when autonomous navigation leads it into a bad situation.
Instead of stopping, it will eventually be able to remember its recent route, retrace it, look for another path, and only return control to the user if autonomous recovery fails.
I continued connecting it’s existing autonomous navigation to the movement-history system.
it can store recent movements using:
rememberMovement()
Yesterday I focused on just testing it over obstacles
I’ve spent a lot of recent sessions improving the autonomous navigation system, failsafe logic, sensor handling, mission statistics, and the beginning of the retrace system.
I spent the session working with Sentinel’s real hardware and observing how the different systems behave outside of the Arduino IDE.
I focused on:
Today I started working on a much more advanced recovery system for the rover.
Until now, FAILSAFE has mainly been designed to stop the rover when autonomous navigation runs into a serious problem.
I don’t want stopping to always be the rovers first and only solution.
Instead, I want Sentinel to eventually remember where it came from, retrace part of its path, and search for another route.
The recovery system I’m building is designed to eventually work like this:
Dead End?
I
v
FAILSAFE
I
v
Retrace Recent Path
I
v
Scan Surroundings Again
I
v
Try Another Route
I
v
No Safe Route?
I
v
Switch to Manual Mode
today I continue improving the autonomous navigation system work better by making a better failsafe.
I improved sentinels ultrasonic sensor failure handling/
the rover now treats different situations respectively not just backing up when sensor failsafe now it will retrace its path and go a different way if there is no other way the rover will automatically switch to manual mode and your device will do a cool animation
since school started I am trying hard to balance 6 hours of school and 5 hours of work each day, so now physical and catch up days are on weekends due to having no school.
Today I focused on improving autonomous navigation and making the rover safer when something goes maybe might go wrong.
A lot of today’s work was about making sure Sentinel doesn’t just assume that every sensor reading is correct or that every direction is safe.
I added a minimum turning clearance to the rover’s settings.
Before this, Sentinel could scan both directions and simply choose whichever side had more space.
For example:
left: 8 cm
right: 12 cm
the right side has more space, but 12 cm still isn’t enough room to safely turn.
Now it checks whether a direction actually has enough clearance before choosing it.
If both directions are clear, it chooses the side with more room.
If only one direction is clear, it chooses that direction.
If neither direction is clear, it knows that it needs to try something else.
gn
yeah
I decided to make the autonomous mode safer rather than faster.
the purpose of the failsafe is if something is to ever go wrong it will know what to do.
well you heard the title, well basically what I did is that it can tell the difference between:
I also added a minimum turning distance so it doesn’t choose one side for being like 1 cm better than the other.
Example:
left: 11cm
right 12cm
Today I finally did a hardware and software day
I spent the digital part fixing my devlogs and coding the place holder awareness.
I continued working on the autonomous navigation system like:
My solder wire is leaded im cooked
I didnt like my solder work so I tried again but this time I watched a video and it said leaded is dangerous so yeah
but I connected 1 wire cut in half\
im going to colorado today for 10 days but 3 of them Im going to be in mountain so no work
Today I focused mainly on improving Sentinel’s software and project documentation.
The rover is not physically ready for full testing yet, so I used the digital work session to organize the code, fix errors, add useful debugging features, and improve how I present the project.
I expanded Sentinel’s Arduino Mega code with several new systems:
The autonomous system is designed to follow this sequence:
I added a command that can report information such as:
I also added a current-status command so I can check Sentinel’s mode, state, movement command, and latest sensor reading while debugging.
I standardized the messages Sentinel sends through the Serial Monitor.
Examples include:
MODE:MANUAL
MODE:AUTONOMOUS
STATE:DRIVING
STATE:REVERSING
STATE:SCANNING_LEFT
CMD:FORWARD
CMD:STOP
DIST:32.4
Today I focused mainly on improving Sentinel’s software and project documentation.
The rover is not physically ready for full testing yet, so I used the digital work session to organize the code, fix errors, add useful debugging features, and improve how I present the project.
I expanded Sentinel’s Arduino Mega code with several new systems:
The autonomous system is designed to follow this sequence:
I added a command that can report information such as:
I also added a current-status command so I can check Sentinel’s mode, state, movement command, and latest sensor reading while debugging.
I standardized the messages Sentinel sends through the Serial Monitor.
Examples include:
MODE:MANUAL
MODE:AUTONOMOUS
STATE:DRIVING
STATE:REVERSING
STATE:SCANNING_LEFT
CMD:FORWARD
CMD:STOP
DIST:32.4
Today I fixed a major part of the website which was the mobile part not being able to work properly
On a computer, sentinel can be controlled using the keyboard.
The main controls are (for now):
For phones, I designed a different interface, instead of trying to use small buttons to control I made a joystick .
The website automatically provides better control method depending on what device you are using.
After being away for a while, I finally made it home!
Now that I access to all my hardware again, I decided to make a mount for my servo and sensor and for the battery.
The rover needs some mount for:
My first goal is to design a bracket that can mount the ultrasonic sensor on top of the servo.
That setup will allow Sentinel to:
This is my first time trying a 3d modeling software, so Im going to start off with the basics.
Over the past few days, I worked on both the physical rover and its control system.
I completed the custom mount for Sentinel’s ultrasonic sensors.
The mount holds the sensors securely and prepares them to be mounted on the servo, allowing Sentinel to scan left, center, and right while navigating.
I also spent time building Sentinel’s web controller.
So far I have created:
Both versions are coming together nicely.
The only problem is that the mobile version isn’t displaying correctly on my phone yet, so I’ll show it off in the next devlog after I fix it.
This project is becoming much bigger than just building a rover.
I’m now working on:
It’s exciting seeing all of these skills come together in one project.
Toda I focused on the software for Sentinel.
instead of working on hardware all day I switch to digital to make the user interface easy and intuitive for everyone(me) to use without any brain power.
I added code for :
I got these from looking at my robot vac believe it or not.
I began preparing for the motors because i have to solder them to the Arduino and im a noob at it so i made self drving mode and manual mode with placeholders
those little disks roaming around houses are hard to code kudos to the engineers, but I think that I learned that sensor awarness is hard and that
anyways, Thanks for listening to my thing and following my project.
It’s definitely been longer than I planned since my last update .
I was on vacation for a while, and I honestly lost more time than I wanted to. Instead of letting that stop the project, I decided to get back on track by focusing on something that will help Sentinel in the long run: learning C++.
While I haven’t been home to work on the hardware, I’ve been spending my time learning the fundamentals of C++.
Some of the topics I’ve been working through includes:
I’ve attached a few screenshots showing what I’ve been learning.
Since I lost some time during vacay, I going to have to do 4 hours and 32 minutes a day until I reach my goal.
It won’t be easy, but I know it’ll be worth it when Sentinel finally comes together.
Even though there hasn’t been much hardware progress yet, I believe learning C++ now will save me a lot of time later because I’ll be writing and understanding my own rover software instead of relying on tutorials.
Toda I focused on the software for Sentinel.
instead of working on hardware all day I switch to digital to make the user interface easy and intuitive for everyone(me) to use without any brain power.
I added code for :
I got these from looking at my robot vac believe it or not.
I began preparing for the motors because i have to solder them to the Arduino and im a noob at it so i made self drving mode and manual mode with placeholders
those little disks roaming around houses are hard to code kudos to the engineers, but I think that I learned that sensor awarness is hard and that
anyways, Thanks for listening to my thing and following my project.
Today I fixed a major part of the website which was the mobile part not being able to work properly
On a computer, sentinel can be controlled using the keyboard.
The main controls are (for now):
For phones, I designed a different interface, instead of trying to use small buttons to control I made a joystick .
The website automatically provides better control method depending on what device you are using.