mirror of
https://github.com/OSURoboticsClub/Rover_2017_2018.git
synced 2025-11-08 18:21:15 +00:00
Readded progress report with correct line endings. Hopefully.
This commit is contained in:
6347
cs_capstone_documents/winter_midterm_progress_report/IEEEtran.cls
Normal file
6347
cs_capstone_documents/winter_midterm_progress_report/IEEEtran.cls
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -0,0 +1,13 @@
|
|||||||
|
\section{Goals}
|
||||||
|
The summary of goals for the the Mars Rover Ground Station project are as follows:
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Create a stable, dual-monitor, full-screen GUI that runs on an Ubuntu 16.04 computer.
|
||||||
|
\item In the GUI, display video streams, Rover arm joint positions, and status information from the Rover.
|
||||||
|
\item Also in the GUI, provide a user-interactable map that includes the ability to plot and edit multiple kinds of way-points.
|
||||||
|
\item Provide control elements to enable the Rover's autonomous mode for the appropriate event during the URC competition.
|
||||||
|
\item Via various user input devices, allow the user to remotely drive and control the arm on the Rover.
|
||||||
|
\item Maintain software stability even when radio systems are dropping packets or completely disconnecting and reconnecting.
|
||||||
|
\item Keep the GUI intuitive enough that the user can focus on performing competition tasks rather than fighting the ground station software.
|
||||||
|
\item Provide enough documentation so that future Rover years may more easily build off of the code foundation.
|
||||||
|
\end{itemize}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
\lstset{ %
|
||||||
|
backgroundcolor=\color{white}, % choose the background color
|
||||||
|
basicstyle=\footnotesize, % size of fonts used for the code
|
||||||
|
breaklines=true, % automatic line breaking only at whitespace
|
||||||
|
captionpos=b, % sets the caption-position to bottom
|
||||||
|
commentstyle=\color{gray}, % comment style
|
||||||
|
escapeinside={\%*}{*)}, % if you want to add LaTeX within your code
|
||||||
|
keywordstyle=\color{blue}, % keyword style
|
||||||
|
stringstyle=\color{purple}, % string literal style
|
||||||
|
}
|
||||||
|
|
||||||
|
\section{Interesting Code}
|
||||||
|
\subsection{Joystick ROS Drive Test}
|
||||||
|
\subsubsection{Code}
|
||||||
|
\begin{lstlisting}[language=python]
|
||||||
|
rospy.init_node("drive_tester")
|
||||||
|
self.pub = rospy.Publisher("/drive/motoroneandtwo", RoverMotorDrive, queue_size=1)
|
||||||
|
|
||||||
|
def __get_controller_data(self):
|
||||||
|
if (self.controller_aquired):
|
||||||
|
events = self.gamepad.read()
|
||||||
|
|
||||||
|
for event in events:
|
||||||
|
if event.code in self.raw_mapping_to_class_mapping:
|
||||||
|
self.controller_states[self.raw_mapping_to_class_mapping[event.code]] = event.state
|
||||||
|
# print "Logitech: %s" % self.controller_states
|
||||||
|
|
||||||
|
|
||||||
|
def __broadcast_if_ready(self):
|
||||||
|
drive = RoverMotorDrive()
|
||||||
|
|
||||||
|
axis = self.controller_states["left_stick_y_axis"]
|
||||||
|
|
||||||
|
drive.first_motor_direction = 1 if axis <= 512 else 0
|
||||||
|
drive.first_motor_speed = min(abs(self.controller_states["left_stick_y_axis"] - 512) * 128, 65535)
|
||||||
|
|
||||||
|
self.pub.publish(drive)
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\subsubsection{Description}
|
||||||
|
These two methods and supporting lines above, taken from the testing class LogitechJoystick, contained in the file joystick\_drive\_test.py are the core of what is needed to get joystick data and broadcast it to the rover over a ROS topic.
|
||||||
|
These two methods are called on after another in a QThread. \_\_get\_controller\_data() reacts to motion events from the joystick and stores the current value of all axes and buttons in self.controller\_states. Then, in \_\_broadcast\_if\_ready(), and instantiation of the custom ROS message type, RoverMotorDrive, is made and values set to a scaled version of the raw values provided by the joystick. Finally, this data is published to the motor drive node and causes the ROS receiving node to see the data, send a message to the motor driver, and cause the motor to spin.
|
||||||
|
|
||||||
|
\subsection{Video Test}
|
||||||
|
\subsubsection{Code}
|
||||||
|
\begin{lstlisting}[language=python]
|
||||||
|
def toggle_video_display(self):
|
||||||
|
if self.video_enabled:
|
||||||
|
if self.video_subscriber:
|
||||||
|
self.video_subscriber.unregister()
|
||||||
|
self.new_frame = True
|
||||||
|
self.video_enabled = False
|
||||||
|
else:
|
||||||
|
new_topic = self.camera_topics[self.current_camera_settings["resolution"]]
|
||||||
|
self.video_subscriber = rospy.Subscriber(new_topic, CompressedImage, self.__image_data_received_callback)
|
||||||
|
self.video_enabled = True
|
||||||
|
\end{lstlisting}
|
||||||
|
\subsubsection{Description}
|
||||||
|
This very simple snippet is in the VideoReceiver class in VideoSystems. It is a demonstration of what is needed to properly disable the receiving of video data on a stream. Looking at the Subscriber line, you can see that there is an image callback associated with the subscription to a topic in ROS. This means that if you don't actually unsubscribe (or in this case, unregister) from a topic, as can be seen a few lines above, the data will continue being received even if you are not actively using it. Not doing this would cause unwanted bandwidth to be used.
|
||||||
8802
cs_capstone_documents/winter_midterm_progress_report/latexmk.pl
Normal file
8802
cs_capstone_documents/winter_midterm_progress_report/latexmk.pl
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,31 @@
|
|||||||
|
# This config is copied from overleaf so output there will match compiled output here
|
||||||
|
|
||||||
|
# support for the glossaries package:
|
||||||
|
add_cus_dep('glo', 'gls', 0, 'makeglossaries');
|
||||||
|
add_cus_dep('acn', 'acr', 0, 'makeglossaries');
|
||||||
|
sub makeglossaries {
|
||||||
|
system("makeglossaries \"$_[0]\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
# support for the nomencl package:
|
||||||
|
add_cus_dep('nlo', 'nls', 0, 'makenlo2nls');
|
||||||
|
sub makenlo2nls {
|
||||||
|
system("makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
# from the documentation for V. 2.03 of asymptote:
|
||||||
|
sub asy {return system("asy \"$_[0]\"");}
|
||||||
|
add_cus_dep("asy","eps",0,"asy");
|
||||||
|
add_cus_dep("asy","pdf",0,"asy");
|
||||||
|
add_cus_dep("asy","tex",0,"asy");
|
||||||
|
|
||||||
|
# metapost rule from http://tex.stackexchange.com/questions/37134
|
||||||
|
add_cus_dep('mp', '1', 0, 'mpost');
|
||||||
|
sub mpost {
|
||||||
|
my $file = $_[0];
|
||||||
|
my ($name, $path) = fileparse($file);
|
||||||
|
pushd($path);
|
||||||
|
my $return = system "mpost $name";
|
||||||
|
popd();
|
||||||
|
return $return;
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Makefile created by Corwin Perren
|
||||||
|
# Generic makefile for all LaTeX projects downloaded from overleaf
|
||||||
|
#
|
||||||
|
# All this makefile does is call perl against latexmkrc, which is
|
||||||
|
# the latex equivalent of make
|
||||||
|
|
||||||
|
LATEXMK_COMPILE_FLAGS = -pdf
|
||||||
|
LATEXMK_CLEAN_FLAGS = -c
|
||||||
|
|
||||||
|
.DEFAULT_GOAL := all
|
||||||
|
|
||||||
|
all: latexmk_output clean
|
||||||
|
|
||||||
|
latexmk_output:
|
||||||
|
perl latexmk.pl $(LATEXMK_COMPILE_FLAGS)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
perl latexmk.pl $(LATEXMK_CLEAN_FLAGS)
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
\section{Problems / Solutions}
|
||||||
|
\subsection{Mars Rover Electrical/Software Team Development Progress}
|
||||||
|
As the Mars Rover project is a very large multi-disciplinary project run by undergraduate volunteers, the team has historically had problems with being behind schedule, and this year is no different. The team lost their electrical lead last term and has been catching up since the team lead, Nick McComb, took over this position. This, plus normal delays in development have meant that many of the core systems that the capstone team needs to test against are not present, not ready to interact with in their current state, or in a few cases still in a research state. Corwin has attempted to alleviate some of this by helping assemble hardware for the electrical team and prioritizing some ground station development time for the Rover systems themselves. If need be, our capstone team could help with these other systems more if need be to help facilitate forward progress.
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{ROS / QT Learning Curves}
|
||||||
|
The Robot Operating System and QT frameworks that are at the core of the ground station project are large, involved tools that require extensive practice and training to effectively use. As these are relatively new technologies to even the main Rover software team, the learning curve has slowed initial development. Overall, we don't think this will continue to be a problem as the team gets more and more familiar with them, but it definitely impacted development time up to this point.
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
\subsection{Chris Pham}
|
||||||
|
\subsubsection{Week 1}
|
||||||
|
This first week of classes for the three of us was mostly planning on what to exactly doing for the next 10 weeks and what exactly our working times are.
|
||||||
|
We planned for Tuesdays, Thursdays, and Saturdays because that's when Ken is supposed to be down and everyone seems to be free on those days.
|
||||||
|
Another thing that did come up was that the expectation that we should go to the OSU Robotics Club's Mars Rover Meetings on Saturday at 12 in the afternoon.
|
||||||
|
Another bonus of Saturday's is that that is when the team has working hours and we can interact with the people creating the systems on the rover side.
|
||||||
|
After deciding our times, we decided on who should do what task using our Asana and dictated by the club and our client.
|
||||||
|
It was decided that I would be doing Mapping and the others doing video and connection statuses.
|
||||||
|
\\
|
||||||
|
I was first prototyping using the Google Maps Static API and Python 2.7 to grab the tile at the given GPS location.
|
||||||
|
It worked, but I ended up thinking about how to stitch this object correctly.
|
||||||
|
I was also contemplating zooming in on the image instead of using stitching to remove complexity.
|
||||||
|
I do not have my code now from testing out the API because I reformatted this computer completely to install the requirements for the project, Ubuntu 16.04 and more importantly ROS.
|
||||||
|
\subsubsection{Week 2}
|
||||||
|
On Saturday, I started working on trying to search how to stitch images using Google Images.
|
||||||
|
I was told that last year they used this class package called GooMPy that took care of that for them and I spent my time looking at this code and trying to understand what it does.
|
||||||
|
We also took a group photo and I was introduced to the software team of the Rover.
|
||||||
|
It turned out they're mostly Freshman and they did not finish their Python reviews yet, so they could not start on the rover software that we need to interact with.
|
||||||
|
\\
|
||||||
|
On Tuesday, we met up in our club room and did some basic things with Qt Designer so we would be caught up on designing that.
|
||||||
|
I had some questions about some things like the API calling limit we have for Google Maps, and it turns out we will almost never hit the API limit.
|
||||||
|
Another thing was multi-threaded performance because how this file worked was that it did a bunch of Google Maps calls and then merged them with PIL (Python Image Library) and this looked doable to multi-thread.
|
||||||
|
However, one issue we have is the effect of Qt's QThreads and the multi-threading process for Python playing nicely with each other.
|
||||||
|
After talking about that, I then made created a branch in git and then built my files based upon GooMPy and made it more class based so it makes more sense for grouping and private variables.
|
||||||
|
The troubles with the structured format of the old file makes it hard to understand with the lack of comments and weird structures that is not expected in Python.
|
||||||
|
All progress during this week was during January 18, 2018:\\
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{l l l l} \textbf{Detail} & \textbf{Author} & \textbf{Date} &\textbf{Description}\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/bb8ed586e278eaa18b1861a0949afa53a743c876}{bb8ed58} & Chris Pham & 2018-01-18 10:37:41 -0800 &Make Mapping Core (mapping.py)\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/47942ffd1dcc2b3a1e29776d00a005f5a4247ea3}{47942ff} & Chris Pham & 2018-01-18 10:40:47 -0800 &Added Imports\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/c8c8f857cd2de7d01a5c790a22ac643a6b962436}{c8c8f85} & Chris Pham & 2018-01-18 10:47:56 -0800 &Add Constants\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/a9f36af40d4c3a00bb2336852d0db329f3b5905e}{a9f36af} & Chris Pham & 2018-01-18 10:53:39 -0800 &Read key from file\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/7e593097eab330b71a54b56251a1bea11e31a72c}{7e59309} & Chris Pham & 2018-01-18 10:55:42 -0800 &Made apikey file, and fixed open error\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b82a39d3bf666abd8ed38839d6c5730b09e6ad04}{b82a39d} & Chris Pham & 2018-01-18 10:58:24 -0800 &fixed fp naming conventions\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/3570c4b5735bc2dbdf39bb5f52d34ccaa5bbee7e}{3570c4b} & Chris Pham & 2018-01-18 11:09:09 -0800 &write file intro\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/a9bf793bfc0db615d7d62bef7ac1d56f81c38d6c}{a9bf793} & Chris Pham & 2018-01-18 11:21:05 -0800 &add gmaps obj and init\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/c2bb5f6d31e6457d59e207c5f87edeeb2ac50e11}{c2bb5f6} & Chris Pham & 2018-01-18 12:14:06 -0800 &Added pixel\_to\_degrees helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/f203cee53e0a60c4dc8eed40dfae0a07e4649e59}{f203cee} & Chris Pham & 2018-01-18 12:24:01 -0800 &rebuild Google Maps API link\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/d09dbb1a02bc8883bc16e68aa8de74ee1b6ecfe6}{d09dbb1} & Chris Pham & 2018-01-18 12:43:03 -0800 &Addded \_grab\_tile helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/16f76fad49699b346e15c0fdcfc2edcb814a0123}{16f76fa} & Chris Pham & 2018-01-18 13:00:53 -0800 &added \_pixels\_to\_lon helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b7348ee897a3bbff349d2d04d7c2084bc60c46f0}{b7348ee} & Chris Pham & 2018-01-18 13:07:21 -0800 &Fix self in pixel\_to\_lon helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/400410cea4af92cb25fd1f686809f320c9cc102c}{400410c} & Chris Pham & 2018-01-18 13:21:38 -0800 &Added \_pixels\_to\_lat\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/d2f4fc38fecf903ed35d731dafe566709707601c}{d2f4fc3} & Chris Pham & 2018-01-18 13:23:48 -0800 &Add gitignore for API key\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b319118e1d32c8d655afe7a6cd084916d16f8db3}{b319118} & Chris Pham & 2018-01-18 13:26:03 -0800 &remove key\\\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
\subsubsection{Week 3}
|
||||||
|
During the meeting on Saturday, I was informed that there is a API key and signature that I should use so I don't get throttled nor limited on calls.
|
||||||
|
I was finishing up some of my helper functions for my class object and then fixed my code to fit PEP8 conventions.
|
||||||
|
Then to implement my code, I made a new file called sign.py to take in a string and then return me the correct signature to append to the string for Google to accept.
|
||||||
|
Once that was done, I built a testing script to call the object and then save the big image somewhere on my computer.
|
||||||
|
Turns out my laptop hates that and I froze my computer for 20 minutes and once that was done, I edited the .gitignore to ignore the .jpg files I was downloading from the API.
|
||||||
|
\\
|
||||||
|
On Thursday, I was trying to get my zooming to work correctly on this image, but I can't do it from the API and I would have to do it from Qt or from OpenGL.
|
||||||
|
I also made a smaller display image to display it onto the display space on the GUI and for my computer to run.
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{l l l l}
|
||||||
|
\textbf{Detail} & \textbf{Author} & \textbf{Date} &\textbf{Description}\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/995386ee89319296165900b1466b6cfc5cf060d5}{995386e} & Chris Pham & 2018-01-20 13:06:28 -0800 &Made pixels\_to\_meters helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/fee5b5537bbdb496791f7b7f323aae6995844afc}{fee5b55} & Chris Pham & 2018-01-20 13:24:32 -0800 &Added logic for num\_sqares\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/3565e7b57f1f19a81b9b34b88a8c9ef527e7c7d6}{3565e7b} & Chris Pham & 2018-01-20 13:43:47 -0800 &Rebuild grab\_tile\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/e955442131978ffd1d24aa6ced9ff2c9f899ed59}{e955442} & Chris Pham & 2018-01-20 13:57:11 -0800 &Fixed to fit PEP\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/332c751758c837cb52b3a9008ba830c5755fbf76}{332c751} & Chris Pham & 2018-01-20 14:14:44 -0800 &Append signature\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/a0601abb8db35bf4a7ebcdba81f702814c73fdf2}{a0601ab} & Chris Pham & 2018-01-20 16:32:58 -0800 &Add testing file with updated gitignore for jpgs\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/1c16cb48a1faec2e8dc157748d0f870d1253fde7}{1c16cb4} & Chris Pham & 2018-01-25 10:49:36 -0800 &Creates Big Image\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b12f8fc986912d75d018e8da9912eaa1c93b9e4b}{b12f8fc} & Chris Pham & 2018-01-25 15:01:35 -0800 &Working updates and fetching, starting on zoom functionality\\\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
\subsubsection{Week 4}
|
||||||
|
This week, I had a bunch of troubles trying to get most of my stuff working correctly.
|
||||||
|
One big issue with my code was the latitude and longitude values to pixel coordinates. For some reason my values would be pointing to the wrong locations.
|
||||||
|
From the research I did about this issue, I can explain better why these equations are used at least.
|
||||||
|
I spent around 4 hours working on this and I had to leave to do something else on the side.
|
||||||
|
\\
|
||||||
|
I was thinking it could be the skew from the center of the map towards the outsides compared to just getting the outside values at the start.
|
||||||
|
I tried to get the boundaries when generating map and then cutting the value in half to get the approximate centering.
|
||||||
|
That did not work at all and I just gave up on it for a bit and went ahead and tried to program something else like putting icons on the map correctly.
|
||||||
|
Somehow, when I copied the code from the previous function, and then used it, it provided the correct locations and I was really confused.
|
||||||
|
Then I used the function that I just made and used that to center my map to see if that worked and it did.
|
||||||
|
Once I got that part working, I then made some way of adding icons to the image to quickly prototype my way-point system.
|
||||||
|
Here are some examples of my code via images, before and after:
|
||||||
|
\begin{figure}[ht!]
|
||||||
|
\begin{minipage}[t]{.45\linewidth}\centering
|
||||||
|
\includegraphics[width=\linewidth]{figures/unzoomed}
|
||||||
|
\caption{Before, Centered at Kelly}
|
||||||
|
\end{minipage}\hfill
|
||||||
|
\begin{minipage}[t]{.45\linewidth}\centering
|
||||||
|
\includegraphics[width=\linewidth]{figures/centered}
|
||||||
|
\caption{After, Centered at Kelly and points at MU and Valley}
|
||||||
|
\end{minipage}
|
||||||
|
\end{figure}
|
||||||
|
\newline
|
||||||
|
One of the next issues I thought about was trying to reduce computation time and I was thinking of using a way-point later to control and manage any drawing on the screen.
|
||||||
|
I can make a transparent layer/image with alpha levels with icons I can inject via PIL that I can draw each time instead of using disk time to get the images again
|
||||||
|
That can be done using Qt I think, or even PIL can do it, but it might take a hit on computation times.
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{l l l l} \textbf{Detail} & \textbf{Author} & \textbf{Date} &\textbf{Description}\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/3ed2c5977e41dc8f4baee7b10d7c3114793e29d7}{3ed2c59} & Chris Pham & 2018-02-01 19:25:54 -0800 &created and fixed centering\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/5f12d8074f8fcfb799f6ac3493cb39081bb7f7c3}{5f12d80} & Chris Pham & 2018-02-01 19:55:57 -0800 &starting on map updatiing\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/75adf70d5bfba0e4b7b48bf7cefbc88feb68f4de}{75adf70} & Chris Pham & 2018-02-02 11:30:16 -0800 &define \_\_str\_\_\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/d012360da50b074efb9a1cc1f7c1e0dacda207e7}{d012360} & Chris Pham & 2018-02-02 13:11:06 -0800 &remove prints\\\hline
|
||||||
|
\hline\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
\subsubsection{Week 5}
|
||||||
|
This week was building and refactoring my object class so it had a helper class to do work for it too.
|
||||||
|
I rearranged it because I needed to use some of those function myself for building the way-point overlay system I going to implement for my system.
|
||||||
|
On Saturday, I merged my branch into the Master, but that took a bit of time because I had to rebase my branch into fitting the current master branch.
|
||||||
|
Once it was rebased to fit the master branch, I then had to do some 'git mv' to move some files around go the correct locations.
|
||||||
|
Once that was finished, I could finish my pull request and I could go on with some other tasks.
|
||||||
|
I started commenting and documenting my progress using docstrings and then applying PEP8 standard for the rest of my code, which meant that I needed to decrease the amount of characters were on a line most of the time.
|
||||||
|
After finishing up all of that, I started on making the coordinator between the class and the QObject that I needed to use to get Qt to work correctly with this object.
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{l l l l}\textbf{Detail} & \textbf{Author} & \textbf{Date} & \textbf{Description}\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/15154f912ff4204e8a3bcf48299592d1fb8bc2ca}{15154f9} & Chris Pham & 2018-02-03 12:49:43 -0800 &Merge branch 'Mapping\_Core' of https://github.com/OSURoboticsClub/Rover\_2017\_2018 into Mapping\_Core\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/07534f8487ba8a04d63e73c22385158479c3c6cc}{07534f8} & Chris Pham & 2018-02-03 13:45:51 -0800 &Starting of mapping class refactor\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/06c605ebd5780e65f1f7ad077ef5cf7a136d2a18}{06c605e} & Chris Pham & 2018-02-03 13:46:46 -0800 &remove idea file\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/e65d4e5067d4b3f9b1223a57f7666131e2c2cf6f}{e65d4e5} & Chris Pham & 2018-02-03 13:50:32 -0800 &Move new\_image function to helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/37303e3a95020e41aadea474e2d6e95c543f5af0}{37303e3} & Chris Pham & 2018-02-03 13:53:21 -0800 &Moved fast\_round to helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/0cbd593380d86ca3d479b7e40167273641c8c04d}{0cbd593} & Chris Pham & 2018-02-03 13:56:15 -0800 &Add pixels\_to\_degrees to helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/10c9dc8451a582e67e8475e2bf161054191f1d02}{10c9dc8} & Chris Pham & 2018-02-03 14:02:23 -0800 &Make static functions and self reference for helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/4a66dbc0b5954672d4377a1c9e07c53ccd1d7323}{4a66dbc} & Chris Pham & 2018-02-03 14:06:46 -0800 &Moved pixels\_to\_meters to Helper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/d17aaf5ef8343be017032c46fa391b9b27470bc2}{d17aaf5} & Chris Pham & 2018-02-03 14:37:43 -0800 &Added Docstrings for mapping.py\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b402cd12d3ab294d280cddf85c28ac263f62ce91}{b402cd1} & Chris Pham & 2018-02-03 14:40:46 -0800 &created docstrings for maphelper\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/ad51c3d7940eb1c5baa8f4ac0b72fe115c7eb776}{ad51c3d} & Chris Pham & 2018-02-03 14:51:32 -0800 &Finished move\_latlon function\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/31ad2185cb708d66cdb29dc23597a8c241622b4f}{31ad218} & Chris Pham & 2018-02-03 14:52:20 -0800 &Comment out waypoints\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/23f3554af37f18f17b1ad9c79378f5fc185ebf1a}{23f3554} & Chris Pham & 2018-02-03 15:28:45 -0800 &complying with PEP8 standard\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/89e7739f54adcf9317261f4741d1860d9c41a838}{89e7739} & Chris Pham & 2018-02-08 12:58:45 -0800 &Start of RoverMapCoordinator\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/33694343176eaedff94334df4083b831ce1bc006}{3369434} & Chris Pham & 2018-02-08 13:33:32 -0800 &Changed file names and started initer for MapCoordinator\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/f4d6835e85304f1dd43cea14ac4eb17587b14606}{f4d6835} & Chris Pham & 2018-02-08 13:50:12 -0800 &create label for left xml for map location, and remove \_get\_map.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/4455e5769389aa18ea396a3981cf3a3b989c6271}{4455e57} & Chris Pham & 2018-02-08 13:57:49 -0800 &fixed wrong size references\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/cdfc76789173155e7f6fdc8d27137149e6f41fc6}{cdfc767} & Chris Pham & 2018-02-08 14:02:43 -0800 &Corrcted bool and created the thread for the main class\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/bb3b47977b1818ff9d45c6144d134e6a34a7d316}{bb3b479} & Chris Pham & 2018-02-08 14:06:12 -0800 &Moved file to software/ground\_station\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/e9f03deaa25624aeec6509c72e782cc801fef521}{e9f03de} & Chris Pham & 2018-02-08 14:08:26 -0800 &Merge pull request \#9 from OSURoboticsClub/Mapping\_Core\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/f71bcba2b080bbc51f9d5eda2f2ae3010d332f68}{f71bcba} & Chris Pham & 2018-02-08 14:13:53 -0800 &Change the include to correct path and remove test file\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/fe53c5d5a73ac253acaef11fef448995f519cca8}{fe53c5d} & Chris Pham & 2018-02-08 14:36:12 -0800 &added init for mapping\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/79325aefdf731ab4fcadc9dee58e3359e6c3b289}{79325ae} & Chris Pham & 2018-02-08 14:39:46 -0800 &Added parenthesis\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/345c75886dfaf76865e56aedc130ec83f9dd8352}{345c758} & Chris Pham & 2018-02-08 14:40:48 -0800 &remove bang\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/8b903d1299d30611ca22aaebc5267e874de4c004}{8b903d1} & Chris Pham & 2018-02-08 14:44:20 -0800 &changed import calls and another bang\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/e64c42c45fa51556a9e4e2fba3f2e0450f75a134}{e64c42c} & Chris Pham & 2018-02-08 14:51:35 -0800 &correct super \_\_init\_\_ for map coord\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/cba5bc9b39738a42df87b09cea98ffc9599b9617}{cba5bc9} & Chris Pham & 2018-02-08 14:59:56 -0800 &Create setup\_signals for Map Coords\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/c50675b30154dfe9d87e9b7e2cb8d02caafc7397}{c50675b} & Chris Pham & 2018-02-08 15:05:31 -0800 &Add connect signals and slots to map coords\\\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
\subsubsection{Week 6}
|
||||||
|
On Saturday, I created most of the Qt interfaces by emulation from Corwin's work on his Video threading and QObject, but I still was having troubles trying to get everything else to work correctly like correct placement of calls, signals, and emitters for the system.
|
||||||
|
On Tuesday, we went to class for our Elevator Pitch class and then we had our normal work day doing the Expo Poster and it looks nice from what I think.
|
||||||
|
I also got help from Corwin on that day to fix my coordinator.
|
||||||
|
The coordinator needs to be setup correctly because the wrong line before a call would halt the system and freeze the GUI or even the computer it is running on.
|
||||||
|
The coding was done on the NUC itself, and will be a part of Corwin's Commit that I will list below.
|
||||||
|
I also was tasked to validate and see how accurate the GPS location on the map for the system.
|
||||||
|
The reason for that task is for the systems assurance test and paperwork that needs to be submitted to the competition committee to allow the club to go to the Utah event.
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{l l l l}\textbf{Detail} & \textbf{Author} & \textbf{Date} & \textbf{Description}\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/bd4deb1b2afef1159783ac5775884bccb595b245}{bd4deb1} & Chris Pham & 2018-02-10 13:37:16 -0800 &Fix QObject thread for Map Coordinator\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/c90247643f816b5add089c604804ead6e8a73b3e}{c902476} & Corwin Perren & 2018-02-12 21:03:34 -0800 &workspace\\\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
\subsection{Corwin Perren}
|
||||||
|
\subsubsection{Week 1}
|
||||||
|
The first week Chris, Ken, and I met in Graf 306 after the first capstone class of the term. During this meeting I showed them the Rover hardware, ground station hardware, and the general workspace that we'd be spending much time in for the next two terms. We then also came up with a work schedule consisting of roughly five hours or more a day on Tuesdays, Thursdays, and Saturdays. Initial tasks we're divvied up and we began work on our respective parts. My task was to continue work on the video display systems that I'd written testing code for the previous term. The primary item I got working this week was adding camera name labels to the stream so that it would be easy to tell what camera was being viewed, even if the user changed where the stream was displayed. I also added FPS counters to my development streams so I could ensure they were displaying at 30 FPS or above, and made some code adjustments for efficiency. Plans were made to begin development of the auto quality adjustment systems for subsequent weeks. During this week, only a single video stream was being displayed.
|
||||||
|
|
||||||
|
\subsubsection{Week 2}
|
||||||
|
During week 2, I continued work on the video receiving and display class, starting by testing its reliability with network disconnections and running the software for an extended period of time. Once semi-verified, I began work refactoring my prototype class into two new classes, a VideoReceiver class and VideoCoordinator class. The VideoReceiver class will handle the low level grabbing of video frames from the ROS topic, adjusting which resolution it's subscribed to, and automatic quality adjustments based on changes to frame rates. It will also allow each instance's stream to be disabled, so that network bandwidth is not being used when the stream is not being displayed.
|
||||||
|
\\
|
||||||
|
The VideoCoordinator class determines which video streams are available upon launch, and creates instantiations of the VideoReceiver classes as necessary. It also handles displaying the frames provided by the VideoReceiver classes in the QLabels on the GUI that are being used to view the streams. Users can also left-click on the stream windows to tell the VideoCoordinator to change what stream is being displayed. A right-click will allow a particular stream to be disabled to save on network bandwidth.
|
||||||
|
\\
|
||||||
|
This week I also began refactoring the core program code structure and launch file so that we would have a solid foundation to work off of, and to allow us to more easily integrate our classes as the terms progress.
|
||||||
|
|
||||||
|
\subsubsection{Week 3}
|
||||||
|
I finished work on the core program structure during the beginning of this week, and added an additional feature to ensure the Rover itself was present on the network before starting, as the GUI is useless without it. It will also make it easy to tell if the radios are functioning down the line. As part of this rework, I added a shared object to be passed around to the classes we make so they have access to GUI elements, other instances of classes, and each other. This is mainly needed to make the signal/slot connections that Qt is based around.
|
||||||
|
\\
|
||||||
|
I made significant progress on writing the VideoReceiver and VideoCoordinator classes this week. Namely, the VideoCoordinator class could successfully dynamically adjust to the number of video streams present on launch, as opposed to hard coding the cameras in. To go along with this, changing which stream was displayed became possible on all three video displays, as well as disabling streams with the right-click described before. When disabled, the video now completely kills that streams connection to the Rover, so its bandwidth usage drops to zero. In a similar vein, if the user is cycling video streams and a particular stream has not been explicitly disabled, but is not active on a video display, the stream is "sleeped" by disabling the stream. Once it is being viewed again, the stream automatically re-activates.
|
||||||
|
\\
|
||||||
|
To finish off the week, I made placeholder blocks in the GUI design files that matched our design document layout. This was so that it would be easier to drop in actually useful GUI elements as they are designed.
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\captionsetup{justification=centering}
|
||||||
|
\includegraphics[width=0.5\textwidth]{figures/video_working}
|
||||||
|
\caption{Three streams working}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsubsection{Week 4}
|
||||||
|
This week, I began a slight departure from pure ground station work as it was becoming apparent that progress on the main Rover software and electrical systems were behind. Talking with the team lead, Nick McComb, it was determined that my time for a week or two would be best spent helping write ROS nodes for the Rover or firmware for micro-controllers. With this in mind, I worked on getting the GPS and Inertial Measurement Unit attached to a Teensy 3.2 sending data to the Rover. This involved making modifications to a Modbus RTU library so that it would be compatible with the Teensys. Once the firmware was working and properly sending out data, I then wrote a receiving node for ROS to take in the GPS and IMU data over serial and broadcast it to the rest of the ROS systems. This step was particularly helpful as our team now has working GPS data to use for mapping and waypoint systems on the ground station.I also began minimal work on a mock motor driver node for the Rover, so that we could more quickly be able to test remote driving.
|
||||||
|
|
||||||
|
\subsubsection{Week 5}
|
||||||
|
Week 5 was a particularly slow week as I had midterms. Very similarly to the previous week, I decided that my time was best spent trying to help with other aspects of the team, in this case electrical. The Rover's main control board, Iris, needed to be assembled and I have extensive soldering experience so I spent 17 hours over two days assembling, testing, and fixing problems with this main control board. As everything on the Rover has to communicate through this board, it is essential to have it working both for the main software team and capstone. I wrote a simple motor driving ROS node that communicated with another Teensy microcontroller attached to a motor driver and test motor.
|
||||||
|
\begin{figure}[h!]
|
||||||
|
\centering
|
||||||
|
\captionsetup{justification=centering}
|
||||||
|
\includegraphics[width=0.5\textwidth]{figures/iris}
|
||||||
|
\caption{Iris after assembly}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\subsubsection{Week 6}
|
||||||
|
The final week, ending in this report, was mostly spent working on the rough draft of the Expo poster. Our team filled out the poster with all the major information and graphics and should only require minimal modification for the final revision. Due to having gotten a simple motor driver node working the previous week, I did write a simple example python script to read in joystick data on the ground station and broadcast it to the Rover, properly moving the motor. This was a very simple demo however, and needs a finalized version of the ROS motor driving nodes on the Rover in order to be integrated into the actual ground station software.
|
||||||
|
|
||||||
|
\subsubsection{Github Commits}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{l l l l} \textbf{Detail} & \textbf{Author} & \textbf{Date} &\textbf{Description}\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/0f8103eb2dc990541e7f181bd4ac8afa3c5b06a1}{0f8103e} & Corwin Perren & 2018-01-12 00:43 &Changed the launch file to have the correct camera names.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b2c495e6b69c4f38cd2d4e6e1ac0a48703fac9f1}{b2c495e} & Corwin Perren & 2018-01-11 16:45 &Added names to the testing images and fps counters\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/53d8de2ea80d6034f0906da0aa5e2d3df0dd6aae}{53d8de2} & Corwin Perren & 2018-01-13 21:50 &Changed one of the camera names\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/2e40a51e830b5ffffd97820d597b73360b716d12}{2e40a51} & Corwin Perren & 2018-01-14 03:01 &Updated UDEV rules for camera names\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/c49b90b038ad2b31b2b1643f9f55f86c5cdfa658}{c49b90b} & Corwin Perren & 2018-01-20 17:16 &Added thrid resolution for cameras\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/08fc436fa277f839826840774823bae37c9bc45e}{08fc436} & Corwin Perren & 2018-01-22 22:42 &Updated UI Files\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/4d071d304ed3781c89f4a5067644981131a33226}{4d071d3} & Corwin Perren & 2018-01-23 09:07 &Updated layout of the main launcher, as well as ui files.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/60ea2d9339e11a6ec749b47d5b5487ccb39d8f09}{60ea2d9} & Corwin Perren & 2018-01-23 09:27 &Added a dark stylesheet so things look nice\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/6270f7380f6fd9b73c99193c93860d4042816e7b}{6270f73} & Corwin Perren & 2018-01-23 10:22 &Launching RoverVideeoCoordinator. Added working logging... \\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/03706408d374a025982071ab5414694a2742d8ca}{0370640} & Corwin Perren & 2018-01-23 12:54 &Added check for ros master on startup. More work on video...\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/05c65645e9c4a87a6571797f7dd8680858f095f2}{05c6564} & Corwin Perren & 2018-01-23 14:44 &RoverVideoCoordinator now kind of working with VideoReceiver...\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b85319665e7fa439f4834266e504547d630671eb}{b853196} & Corwin Perren & 2018-01-23 17:08 &Got changing video sources working, along with showing the...\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/6297a2af444c42c48861fc4852042402748274e5}{6297a2a} & Corwin Perren & 2018-01-25 15:46 &Video modifications and last changes\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/fc1b41178cea41bbf1d846e0178cee1cd1d800f9}{fc1b411} & Corwin Perren & 2018-01-25 15:49 &Changed layout for organizational coherence.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/006f11af653ba82b0984a2de92f99dc3f240cdd0}{006f11a} & Corwin Perren & 2018-01-25 16:11 &Auto-sleep of background cameras works. Dynamic changing of...\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/0e72b84a930ab4a58539d535a9a177c3a0cb9f8b}{0e72b84} & Corwin Perren & 2018-01-25 16:17 &Removed workspace files\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/71aca163d60f6ea6bacbde141f42a9d693305c5d}{71aca16} & Corwin Perren & 2018-01-25 16:20 &Fixing things.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/219bc0956cbec27066b3f25de0edcc7397a7ef12}{219bc09} & Corwin Perren & 2018-01-25 17:55 &Everything ready to do sensing of frame rates to adjust quality...\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/bb8bae2f55caca5f45d0ed77e9ab8ad933ccb8fc}{bb8bae2} & Corwin Perren & 2018-02-03 15:09 &Removed ublox. Added rover\_drive\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/940d2782c361acee060488d8b07636eb3fc2eb7f}{940d278} & Corwin Perren & 2018-02-03 17:12 &Added beginnings of getting motor control working from within...\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/ad4bf7d74c408d05a6d1788f1b981c0c8380865d}{ad4bf7d} & Corwin Perren & 2018-02-11 21:18 &Some new drive code. Firmware too, but that's not up yet.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/c90247643f816b5add089c604804ead6e8a73b3e}{c902476} & Corwin Perren & 2018-02-12 21:03 &workspace\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b5be2a6f2472909ed06ee3535c4eec78f6c601ab}{b5be2a6} & Corwin Perren & 2018-02-12 21:04 &Merge branch 'video\_testing'\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/aca4c0627c3ce4ed2f6b3c4513e8ffccbb2b2277}{aca4c06} & Corwin Perren & 2018-02-13 13:20 &Map now loads. Changed launcher to match monitors.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/d13a0d2d69b27b816e33b2eade6f1e9f102bc0ef}{d13a0d2} & Corwin Perren & 2018-02-14 18:35 &Updated UI Files. Getting closer to actual layout.\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/f009383b3eb6f0868cc842b70d3430cd41be3816}{f009383} & Corwin Perren & 2018-02-14 18:39 &Added missing compass image\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/4698723bb0e747fb52d420056f2822ff04005f9d}{4698723} & Corwin Perren & 2018-02-14 18:51 &Changed right screen so it color matches\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/9b3fd50188b3a7504998bac4456ce3717f8a827b}{9b3fd50} & Corwin Perren & 2018-02-14 19:52 &Very rough joystick driving working\\\hline
|
||||||
|
\href{https://github.com/OSURoboticsClub/Rover_2017_2018/commit/b54c8c38566fa1de3f41249c2f4ac9f58b08f4ab}{b54c8c3} & Corwin Perren & 2018-02-15 18:33 &Updated README for ground station.\\\hline
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
\subsection{Ken Steinfeldt}
|
||||||
|
\subsubsection{Week 1}
|
||||||
|
On the first day of class the entire group met in the OSURC Mars Rover team lab space in Graf 306.
|
||||||
|
During this meeting we familiarized ourselves with the equipment that we would be working with in the coming weeks.
|
||||||
|
This equipment included what currently existed of the mars rover hardware stack, the ground station hardware, and general hardware available around the lab space environment.
|
||||||
|
After becoming familiar with the hardware and lab environment we sat down to plan the future of the project.
|
||||||
|
The first order of business was to decide on regular, weekly, meeting times for us to work together.
|
||||||
|
It was decided that we would meet on Tuesdays and Thursdays from about 9AM to around 3PM, weekly.
|
||||||
|
It was also the expectation that the capstone team would meet with the Mars Rover club on Saturdays at noon.
|
||||||
|
Regularly meeting in the lab and with the rest of the Mars Rover team allows us to regularly interact with the hardware stack, keep tabs on rover development, and socialize with other members of the team who are not in the capstone project.
|
||||||
|
Finally, we reviewed the tasks that needed to be completed and discussed dependencies.
|
||||||
|
After this discussion tasks were assigned to each member.
|
||||||
|
Corwin would start with video feeds, Chris with mapping, and I with system statuses.
|
||||||
|
With this decided we set about familiarizing ourselves with our tasks and made plans to complete them.
|
||||||
|
I spent the remaining time that week setting up my development environment and learning about ROS, through the official ROS tutorial, and PyQt development.
|
||||||
|
\subsubsection{Week 2}
|
||||||
|
During week 2 I started working on the StatusCore module for the first time.
|
||||||
|
The purpose of the StatusCore module is to retrieve rover status information and display it to the user via the ground station UI.
|
||||||
|
This is done utilizing some ROS abstractions called publishers and subscribers.
|
||||||
|
In this case the SystemStatus module on the rover broadcasts via publishers, and the StatusCore module in the ground station software receives these broadcasts via subscribers.
|
||||||
|
My plan is to pick up the broadcasted statuses from the rover through a series of callback functions in the StatusCore module.
|
||||||
|
I hope to then push the results directly to the GUI after performing whatever minimal logic is necessary.
|
||||||
|
I spent the week learning about publishers and subscribers.
|
||||||
|
At this time the rover software team was creating their status publishers, so I was able to work with them in order to better understand the process and formulate a prototype for my StatusCore module.
|
||||||
|
\subsubsection{Week 3}
|
||||||
|
In the beginning of week 3 I was naive enough to believe that I would finish up my first iteration of the StatusCore module.
|
||||||
|
I was unable to do so.
|
||||||
|
However, at the end of this week, and with the help of the rover software team, I had a very simple template that could use going forward.
|
||||||
|
Though not all rover publishers had yet been built, this template includes callback functions with subscribers to each publisher had been built.
|
||||||
|
With this template in place I was confident with the foundation of the StatusCore module and determined that I would spend the next week creating the necessary GUI elements.
|
||||||
|
This plan would allow me to move forward with my work while the rover software team finished their SystemStatus module.
|
||||||
|
Once the SystemStatus module is complete I can simply add the necessary subscribers, implement some simple bounds-checking logic and wrap up StatusCore.
|
||||||
|
It is worth noting that during week 3 the mars rover repository was completely reorganized by Corwin at the request of many people within the overall project.
|
||||||
|
\subsubsection{Week 4}
|
||||||
|
As noted previously, my plan for week four was to create the necessary GUI elements for StatusCore.
|
||||||
|
The beginning of the week was spent learning the PyQt framework, which proved to be somewhat more complicated than I had anticipated.
|
||||||
|
However, by midweek I felt that I had a tenuous grasp of it and proceeded to move forward.
|
||||||
|
The system status portion of the GUI calls for a clock, a very necessary tool during competition, so I set about to implement one.
|
||||||
|
Implementing the clock was somewhat trivial but did require a small amount of time to write the logic and output the time.
|
||||||
|
After completing the clock I moved onto the stopwatch.
|
||||||
|
Building the stopwatch was, for me, a nontrivial process, and took some time to complete.
|
||||||
|
However, by the end of the week I had a working stopwatch module.
|
||||||
|
Currently the stopwatch uses two pushbuttons; start and reset, to operate.
|
||||||
|
In the future I plan to remove the pushbuttons and operate only on right and left mouse clicks.
|
||||||
|
\subsubsection{Week 5}
|
||||||
|
Week five I did not anticipate accomplishing much as I had many midterm assignments in other classes to complete.
|
||||||
|
Project time this week was spent on finishing the visual framework for the system statuses.
|
||||||
|
By the end of the week I had completed a very basic and very ugly GUI for StatusCore.
|
||||||
|
However, it was later determined that we would use a different style for the GUI that is focused more on boxes and 'lights' than text, and the the UI was quickly redesigned.
|
||||||
|
\subsubsection{Week 6}
|
||||||
|
On week six the group went the the elevator pitch meeting and participated and then spend the remaining time working on the midterm report.
|
||||||
|
A poster was rough draft was completed and done in such a way that only minimal changes will be required for the final poster.
|
||||||
|
Then, of course, the midterm report was written and the video report recorded.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
\section{Progress}
|
||||||
|
\input{progress/progress_summary}
|
||||||
|
\input{progress/chris}
|
||||||
|
\input{progress/ken}
|
||||||
|
\input{progress/corwin}
|
||||||
|
\input{progress/progress_remaining}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
\subsection{Remaining Work}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Finish mapping
|
||||||
|
\item Finish system statuses
|
||||||
|
\item Finish video systems
|
||||||
|
\item HID Integration
|
||||||
|
\item Drive Coordinator
|
||||||
|
\item Waypoints Coordinator
|
||||||
|
\item Arm Visualizer
|
||||||
|
\item Arm Coordinator
|
||||||
|
\item Logging/Recording Coordinator
|
||||||
|
\end{itemize}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
\subsection{Current Progress}
|
||||||
|
\subsubsection{General}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Program layout and launcher file refactored for clean organization, easy integration
|
||||||
|
\item Program will not launch and shows error if Rover not connected
|
||||||
|
\item UI files have placeholders for all GUI elements from design document
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Mapping}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Can display a map on the main system
|
||||||
|
\item Need a GUI element to change the location
|
||||||
|
\item Embedded way-points work, but cannot remove them
|
||||||
|
\item Centering Works, need to build a toggle button
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{System Statuses}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Basic StatusCore module that subscribes to existing ROS publishers
|
||||||
|
\item Basic GUI visuals stubbed out
|
||||||
|
\item GUI stopwatch module
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\subsubsection{Video Systems}
|
||||||
|
\begin{itemize}
|
||||||
|
\item Can view one or more video streams, that dynamically change depending on how many are broadcasting
|
||||||
|
\item GUI elements can change what stream is being viewed with a left click
|
||||||
|
\item GUI elements can disable a stream with a right click
|
||||||
|
\item Resolution can be adjusted, though it is being done manually for now
|
||||||
|
\item Stream quality adjustment is ready for FPS data to do automatic adjustment
|
||||||
|
\item Video streams stop network traffic when not being viewed
|
||||||
|
\end{itemize}
|
||||||
@@ -0,0 +1,151 @@
|
|||||||
|
\documentclass[onecolumn, draftclsnofoot, 10pt, compsoc]{IEEEtran}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\graphicspath{{./figures/}}
|
||||||
|
|
||||||
|
\usepackage{url}
|
||||||
|
\usepackage{setspace}
|
||||||
|
\usepackage{multicol}
|
||||||
|
\usepackage{pdflscape}
|
||||||
|
\usepackage{pdfpages}
|
||||||
|
\usepackage[british]{babel}
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\usepackage{listings}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
\usepackage{subfig}
|
||||||
|
|
||||||
|
\usepackage{geometry}
|
||||||
|
\geometry{textheight=9.5in, textwidth=7in}
|
||||||
|
|
||||||
|
% \overfullrule=2in
|
||||||
|
|
||||||
|
% 1. Fill in these details
|
||||||
|
\def \CapstoneTeamName{ Ground Station Software Team}
|
||||||
|
\def \CapstoneTeamNumber{ 30}
|
||||||
|
\def \GroupMemberOne{ Kenneth Steinfeldt}
|
||||||
|
\def \GroupMemberTwo{ Christopher Pham}
|
||||||
|
\def \GroupMemberThree{ Corwin Perren}
|
||||||
|
\def \CapstoneProjectName{ OSU Robotics Club\\Mars Rover Ground Station}
|
||||||
|
\def \CapstoneSponsorCompany{ OSU Robotics Club}
|
||||||
|
\def \CapstoneSponsorPerson{ Nick McComb}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%Personal \newcommands
|
||||||
|
|
||||||
|
\newcommand{\functRequ}[4]{
|
||||||
|
\item #1%
|
||||||
|
\par
|
||||||
|
\begin{itemize}
|
||||||
|
\item \textit{Description:} #2.%
|
||||||
|
\item \textit{Rationale:} #3.%
|
||||||
|
\item \textit{Dependencies:} #4%
|
||||||
|
\end{itemize}
|
||||||
|
}
|
||||||
|
\definecolor{backcolor}{rgb}{0.95,0.95,0.92}
|
||||||
|
\lstset{basicstyle=\ttfamily,
|
||||||
|
backgroundcolor=\color{backcolor},
|
||||||
|
showstringspaces=false,
|
||||||
|
commentstyle=\color{red},
|
||||||
|
keywordstyle=\color{blue},
|
||||||
|
columns=fullflexible,
|
||||||
|
breaklines=true,
|
||||||
|
postbreak=\mbox{\textcolor{red}{$\hookrightarrow$}\space},
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% 2. Uncomment the appropriate line below so that the document type works
|
||||||
|
\def \DocType{ %Problem Statement
|
||||||
|
%Requirements Document
|
||||||
|
%Technology Review
|
||||||
|
%Design Document
|
||||||
|
Progress Report
|
||||||
|
}
|
||||||
|
|
||||||
|
\newcommand{\NameSigPair}[1]{
|
||||||
|
\par
|
||||||
|
\makebox[2.75in][r]{#1}
|
||||||
|
\hfill
|
||||||
|
\makebox[3.25in]{
|
||||||
|
\makebox[2.25in]{\hrulefill}
|
||||||
|
\hfill
|
||||||
|
\makebox[.75in]{\hrulefill}
|
||||||
|
}
|
||||||
|
\par\vspace{-12pt}
|
||||||
|
\textit{
|
||||||
|
\tiny\noindent
|
||||||
|
\makebox[2.75in]{}
|
||||||
|
\hfill
|
||||||
|
\makebox[3.25in]{
|
||||||
|
\makebox[2.25in][r]{Signature}
|
||||||
|
\hfill
|
||||||
|
\makebox[.75in][r]{Date}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
% 3. If the document is not to be signed, uncomment the command below
|
||||||
|
\renewcommand{\NameSigPair}[1]{#1}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{document}
|
||||||
|
\begin{titlepage}
|
||||||
|
\pagenumbering{gobble}
|
||||||
|
\begin{singlespace}
|
||||||
|
% 4. If you have a logo, use this includegraphics command to put it on the coversheet.
|
||||||
|
\begin{minipage}{7in}
|
||||||
|
\centering
|
||||||
|
\hspace*{-.7in}
|
||||||
|
$\vcenter{\hbox{\includegraphics[height=4cm]{Oregon_State_College_of_Engineering_Logo}}}$
|
||||||
|
\hspace*{.2in}
|
||||||
|
$\vcenter{\hbox{\includegraphics[height=2.5cm]{OSURCLogoOrange}}}$
|
||||||
|
\end{minipage}
|
||||||
|
|
||||||
|
\par\vspace{.35in}
|
||||||
|
\centering
|
||||||
|
\scshape{
|
||||||
|
\huge CS Capstone \DocType \par
|
||||||
|
{\large\today}\par
|
||||||
|
\vspace{.5in}
|
||||||
|
\textbf{\Huge\CapstoneProjectName}\par
|
||||||
|
\vfill
|
||||||
|
{\large Prepared for}\par
|
||||||
|
\Huge \CapstoneSponsorCompany\par
|
||||||
|
\vspace{5pt}
|
||||||
|
{\Large\NameSigPair{\CapstoneSponsorPerson}\par}
|
||||||
|
{\large Prepared by }\par
|
||||||
|
Group\CapstoneTeamNumber\par
|
||||||
|
% 5. comment out the line below this one if you do not wish to name your team
|
||||||
|
\CapstoneTeamName\par
|
||||||
|
\vspace{5pt}
|
||||||
|
{\Large
|
||||||
|
\NameSigPair{\GroupMemberOne}\par
|
||||||
|
\NameSigPair{\GroupMemberTwo}\par
|
||||||
|
\NameSigPair{\GroupMemberThree}\par
|
||||||
|
}
|
||||||
|
\vspace{20pt}
|
||||||
|
\begin{abstract}
|
||||||
|
% 6. Fill in your abstract
|
||||||
|
This document contains the summary of the purpose and goals of the ground station software, the progress our team has made during the first half of winter term, as well as problems and solutions to those problems we've encountered so far. Additionally, it contains snippets of useful code and images of our progress so far. Overall, this document provides a good overview of everything our team has accomplished up to this point in Winter term.
|
||||||
|
|
||||||
|
\end{abstract}
|
||||||
|
}
|
||||||
|
\end{singlespace}
|
||||||
|
\end{titlepage}
|
||||||
|
\newpage
|
||||||
|
\pagenumbering{arabic}
|
||||||
|
\tableofcontents
|
||||||
|
\clearpage
|
||||||
|
|
||||||
|
% Write stuff here....
|
||||||
|
\input{purpose/purpose}
|
||||||
|
\input{goals/goals}
|
||||||
|
\input{progress/progress}
|
||||||
|
\input{problems_solutions/problems_solutions}
|
||||||
|
\input{interesting_code/interesting_code}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
\section{Purpose}
|
||||||
|
The purpose of this project is to create ground station control software that will interface with the OSU Robotics Club's Mars Rover.
|
||||||
|
This software will take in controls via user input devices such as joysticks, a SpaceNav mouse, as well as traditional keyboard and mouse in order to send remote control commands.
|
||||||
|
These commands will allow a user to drive the Rover and control the Rover arm.
|
||||||
|
Additionally, this software will allow for viewing of video streams and status information being sent back to the ground station from the Rover.
|
||||||
|
The point of writing this software is to complete the package that is the Mars Rover competition robot so that it may compete in the University Rover Challenge taking place in June of 2018.
|
||||||
Reference in New Issue
Block a user