space-concordia-robotics / robotics-prototype

Teleoperated Mars rover with autonomous capabilities intended for robotics competitions.
https://spaceconcordia.github.io/robotics.html
25 stars 18 forks source link

Create Science Software Design Diagrams and skeleton for Teensy 4.0 #462

Closed MartensCedric closed 3 years ago

MartensCedric commented 4 years ago

Prior to start the science project we should have a good understanding of the different components of the system. Some documentation should exist so that the members can implement the code by consulting the documentation. Further, it will be crucial to present these to PDR

Please consult Marc's doc : https://docs.google.com/document/d/1N7tWT132qdKljGeyzkHsWxUH83sbp5s3c5rEwCJ0yC4/edit

Deliverable :

Approval

Once approved,

MartensCedric commented 4 years ago

Class Diagram v1.0 image

MartensCedric commented 4 years ago

@Laogeodritt Does this look accurate to you? Am I missing something important or do I have something wrong? Note that this is for Teensy 4.0 software (Excludes CCD as far as I understand it)

MartensCedric commented 4 years ago

@PeterGhimself @vashmata

MartensCedric commented 4 years ago

Should consult this prior to reviewing : https://docs.google.com/document/d/1N7tWT132qdKljGeyzkHsWxUH83sbp5s3c5rEwCJ0yC4/edit

MartensCedric commented 4 years ago

Physical View v1.0

image

MartensCedric commented 4 years ago

After some thought I think I should also include the list of the commands that the system should accept and their role

MartensCedric commented 4 years ago

After some thought I think I should also include the list of the commands that the system should accept and their role

List of commands : https://docs.google.com/spreadsheets/d/1bE3h0ZCqPAUhW6Gn6G0fKEoOPdopGTZnmmWK1VuVurI/edit

joshua-glazer commented 4 years ago

Physical View v1.0

image

By funnel you mean the funnel motor thing?

Does the carousel include the motor AND the limit switches? Just wondering cause you have the temperature sensors as their own thing in the diagram.

Maybe I missed it in @Laogeodritt 's doc but I don't see much about the fan control. Is it simply always on?

joshua-glazer commented 4 years ago

Class Diagram v1.0 image

The pumps wouldn't have PID control based on the current design as we don't have a way to obtain feedback. Sorta similar for the funnel (and the carousel which isn't connected to the PID), but in this case it's cause the servos have built-in pid control that we would be able to access if we use the fancy UART commands and would have no feedback for if we use them in open loop with pwm control.

Again you haven't specified the limit switches in the carousel

joshua-glazer commented 4 years ago

After some thought I think I should also include the list of the commands that the system should accept and their role

List of commands : https://docs.google.com/spreadsheets/d/1bE3h0ZCqPAUhW6Gn6G0fKEoOPdopGTZnmmWK1VuVurI/edit

How about checking the temperature values (in the 2-way commands)?

Even for the one-way commands, it would be nice to have a way to check if the command succeeded or failed. Either by having these commands two-way as well (responding with a success or error message), or having a command that asks for any error states and will receive a message with different types of errors (e.g. "command makes no sense," "invalid carousel position value," etc.

MartensCedric commented 4 years ago

Physical View v1.0 image

By funnel you mean the funnel motor thing?

Does the carousel include the motor AND the limit switches? Just wondering cause you have the temperature sensors as their own thing in the diagram.

Maybe I missed it in @Laogeodritt 's doc but I don't see much about the fan control. Is it simply always on?

This is the physical view. It's just meant to show how the physical things are related to each other.

You have a good point that I added temp sensors but didnt mention limit switches/motors. I think im just gonna remove temp sensors for this physical view because I just wanna show how the components communicate to each other (the OBC talks with the CCD, Teensy 4.0 and Basestation, while the teensy speaks with the rest)

MartensCedric commented 4 years ago

Class Diagram v1.0 image

The pumps wouldn't have PID control based on the current design as we don't have a way to obtain feedback. Sorta similar for the funnel (and the carousel which isn't connected to the PID), but in this case it's cause the servos have built-in pid control that we would be able to access if we use the fancy UART commands and would have no feedback for if we use them in open loop with pwm control.

So for the pump, we're just using a timer and don't care about PID control? So what uses a PID then? Does the fans use one to control temperature? If not ill just remove the whole PidController

Again you haven't specified the limit switches in the carousel

Yes good point

MartensCedric commented 4 years ago

After some thought I think I should also include the list of the commands that the system should accept and their role

List of commands : https://docs.google.com/spreadsheets/d/1bE3h0ZCqPAUhW6Gn6G0fKEoOPdopGTZnmmWK1VuVurI/edit

How about checking the temperature values (in the 2-way commands)?

Yes true, I'll add it. Thanks!

Even for the one-way commands, it would be nice to have a way to check if the command succeeded or failed. Either by having these commands two-way as well (responding with a success or error message), or having a command that asks for any error states and will receive a message with different types of errors (e.g. "command makes no sense," "invalid carousel position value," etc.

Yes, I could put every command in the Two-Way category. We should consult with @Laogeodritt though

joshua-glazer commented 4 years ago

this reminds me of something else, the science teensy could also keep a log of errors and timestamps for us to pull up later. Same with temperature readings or other data. Since it only responds when we poll it we're probably missing lots of info that may be useful

joshua-glazer commented 4 years ago

The pumps wouldn't have PID control based on the current design as we don't have a way to obtain feedback. Sorta similar for the funnel (and the carousel which isn't connected to the PID), but in this case it's cause the servos have built-in pid control that we would be able to access if we use the fancy UART commands and would have no feedback for if we use them in open loop with pwm control.

So for the pump, we're just using a timer and don't care about PID control? So what uses a PID then? Does the fans use one to control temperature? If not ill just remove the whole PidController

Not sure about the fans... @Laogeodritt ? But for everything else I don't think it's needed.

MartensCedric commented 4 years ago

this reminds me of something else, the science teensy could also keep a log of errors and timestamps for us to pull up later. Same with temperature readings or other data. Since it only responds when we poll it we're probably missing lots of info that may be useful

Yes, I think this is out of scope of science since it would have to be implemented on every teensy right

MartensCedric commented 4 years ago

v2.0, class diagram. I'm using PlantUML which is gonna be easier to edit as a team because it's basically code and they have a web editor. The diagram looks better but the relations are a bit harder to see unfortunately image

MartensCedric commented 4 years ago

Deployment diagram v2 The purpose of this is just so you can understand what is connected to what device (obc does CCD stuff) while the rest is on the teensy. Not meant to show what has limit switches or whatever image

joshua-glazer commented 4 years ago

Deployment diagram v2 The purpose of this is just so you can understand what is connected to what device (obc does CCD stuff) while the rest is on the teensy. Not meant to show what has limit switches or whatever image

the fan's purpose is to cool the laser assembly, up to you if you wanna keep them separate but i would put them next to each other on this diagram

MartensCedric commented 4 years ago

Deployment diagram v2 The purpose of this is just so you can understand what is connected to what device (obc does CCD stuff) while the rest is on the teensy. Not meant to show what has limit switches or whatever image

the fan's purpose is to cool the laser assembly, up to you if you wanna keep them separate but i would put them next to each other on this diagram

Honestly this diagram is just to show that the OBC controls the CCD and the teensy controls the rest. It's not really meant to show the interaction between the components. Its just so someone doesnt think we are doing CCD stuff in the teensy or using the OBC for the pump.

MartensCedric commented 4 years ago

What about the class diagram @vashmata ?

joshua-glazer commented 4 years ago

I don't think I have anything more to say, personally I might want to make it explicit that within the carousel you're interacting with limit switches because it's an electrical interface, but that's on you