Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Hey there! If you're looking at this documentation, then you're either an existing member who's reviewing a certain part, a new member who just joined, or someone who's interested in TJUAV. Whoever you are, I hope you learn something new here.
So what is TJUAV? For starters, TJUAV stands for the Thomas Jefferson Unmanned Aerial Vehicle team. Every year we work on designing, building, and programming a variety of RC and autonomous planes that are exhilarating to fly. TJUAV is a place where you can explore your aerodynamic and programming passions. Want to design your own plane completely from scratch? Want to code an epic ground station that controls the plane? Want to implement autopilot algorithms that follow waypoints while dodging obstacles? You've come to the right place!
Hopefully, this guide will help you get started and working on the fun stuff ASAP. Also feel free to scroll through GitBook to get yourself familiar with all the software, hardware, and procedures that we use, as well as documentation for anything you struggle with. Don't forget to add documentation on any problems you solve!
Throughout the year, we partake in a variety of fun RC activities, but our main goal is the annual, international, collegiate AUVSI SUAS ("aoovsi sewass") competition. The competition involves developing a plane capable of autonomous navigation, obstacle avoidance, detecting / classifying ground targets, and dropping a UGV! More in-depth documentation of the details can be found here.
When working on the competition, the team is mostly split into two subsystems, Mechanical and Programming. If you're unsure what you want to do, think about what you want to go into when you grow up, and what your passion is. Also, you can do both mechanical and programming tasks, it's up to you, just let someone (an officer or a lead) know what subsystem you want to work on and they'll properly assign you a task.
The TJUAV team competes in the annual AUVSI SUAS competition. AUVSI SUAS is an international, collegiate-level competition with many notable teams such as Harvard, Stanford, and Cornell competing. The official rules for the AUVSI SUAS 2021 Competition can be found here.
The competition is split into three sections: Technical Journal (20%), Flight Readiness Review (20%), and Mission Demonstration (60%). The Technical Journal is a 10-page technical explanation of our plane and our controls system. The Flight Readiness Review is a 15-minute video displaying our plane's development/testing, proving its capabilities, and showing that we are ready for the Mission Demonstration. The Mission Demonstration is the actual competition at the naval base in Maryland when we actually fly and perform all of the tasks.
While the tasks mostly stay the same, every couple of years a new challenge is added. This year, they introduced the map stitching task. The competition details that are documented here are specific to the 2021 rules.
Overview: The competition time is divided into three sections: setup, mission, and post-processing, with 15-minute, 30-minute, and 10-minute time limits respectively. Setup time involves reporting to the judges a summary of what we plan on achieving, extracting mission data from the interop server, and setting up all of our electronics to make our plane flight-ready. Mission time is the actual flight of the plane and is when the majority of our operations will be running. Post-processing time is time given afterward during which we can't fly (we must land before then), but we can continue processing data and submitting ODCL objects/mapping data to the interop server.
Scoring: The following formula is used to calculate our timeline score: max(0, 60 - 5 * max(0, X - 20) - Y) / 60). Basically, our timeline score starts off at 100. After 20 minutes of mission time, every extra minute of mission time causes a deduction of 8.3 of timeline points. Every minute of post-processing time causes a deduction of 1.6 of timeline points. Our final timeline score is the score that we get / 100.
Requirements / Overview: The aircraft must fly autonomously for a minimum of 3 minutes to even qualify for the competition.
Scoring: We're given a sequence of waypoints (no limit on how many), and the waypoint path can be up to 6 miles in length. For each waypoint, the ratio of points is max(0, (100ft - distance) / 100ft), which basically means that starting at 100ft away, we get an extra point for each foot we get closer. Each waypoint is worth the same. Your total score for this section is total points/max # of points.
Manual Takeover: Every manual takeover (including manual takeoff and landing) results in -10% of autonomous flight points. Every 2 minutes that you stay in manual mode results in an extra -10% penalty.
TFOA: If parts fall off the aircraft during the flight, a penalty of -25% of autonomous flight points will be given.
Crashing: Crashing results in a penalty of -50% of autonomous flight points.
Requirements / Overview: One of the prerequirements is that we can extract and upload telemetry at a constant rate (1Hz, which is once per second) to the interop server. There are two types of obstacles during flight: Stationary obstacles and moving obstacles. Stationary obstacles are large, imaginary cylinders, each with a given radius (between 30ft and 300ft) and height (no constraint). If the plane touches any part of the cylinder, it counts as hitting the obstacle. NOTE: These cylinders aren't actually there, they're just imaginary! Moving obstacles, on the other hand, are real. When we fly, there will be one or two other teams flying at the same time. We'll have access to the team's telemetry data if they decide to submit any.
Scoring: We don't gain any points for avoiding moving obstacles (other than the fact that our plane doesn't crash). There can be up to 20 stationary obstacles, and the total # of points achieved for this section is: (obstacles avoided / total obstacles) ^ 3.
Overview: At the start of the competition, we'll receive a "search zone" that contains all but one of the standard ODCL targets. The last standard ODCL target is located somewhere outside the boundary. There is also one emergent ODCL object that we are given the location of.
Standard ODCL overview: Standard ODCL targets are an alphanumeric on top of a shape, and 1 foot wide with 1-inch thick lettering. Each object has 5 characteristics: shape, shape color, alphanumeric, alphanumeric color, and alphanumeric orientation (north, east, southwest, etc.). Each target also has a geolocation (the latitude and longitude of the target). A target is considered autonomous if there was no human that helped in detection/classification/submission, and is considered actionable if it was submitted during our first flight.
Emergent ODCL overview: There is one emergent ODCL in the search zone. The emergent ODCL is a mannequin performing some task, such as putting out a fire with a watering hose. The "characteristic" for this object is a simple description of the task that it is performing.
ODCL Scoring: Each target is scored individually and has 4 sections. To submit a target, we have to submit the above aspects (characteristics, geolocation, actionable, autonomy) and also a cropped image of the target. The target must cover at least 25% of the cropped image.
40% of the target's points are achieved for characteristics (for standard ODCLs, that's 8% per correct characteristic. For emergent ODCLs, that's 40% for a correct description). 40% of points are achieved for geolocation based on the given formula: max(0, (150ft - distance) / 150ft), where 0ft (perfect geolocation) would grant all 40% and 150+ft would grant 0%. An extra 10% of points are granted if it's actionable, and the final 10% of points are granted if it's autonomous.
You can submit a target both manually and autonomously, and only the object with the higher score will count. However, if you submit the same target multiple times, or if you submit a target that doesn't match with a real target, then you get a penalty of -5% of total ODCL points.
Overview: At the start of the competition, we'll receive an area that we have to make a map of. The area will be too big to take a single picture of, so we'll have to stitch together individual images to make a large map. The map should have an aspect ratio of 16:9 and be of relatively high resolution. The map should also be in the form of WGS 84 Web Mercator Projection.
Scoring: Points will be awarded for the quality of the map. 100% of map stitching points awarded for a high-quality map (professional looking, just like Google Maps), 50% of points awarded for medium quality (minor stitch marks, varying exposures, but still usable as a map), and 0% for anything else.
Overview: The UGV drop involves dropping a car at a certain location and having the car autonomously drive to another location right after. The UGV must carry a standard 8oz water bottle. The entire UGV (including water bottle) has a weight limit of 64oz and can drive up to 10 mph.
Scoring: There are two aspects to the scoring. 50% of the points are given for the accuracy of the drop location (where the UGV lands). You get 100% of the drop location points for being within 5ft, 50% for 15ft, 25% for 40ft, and 0% for more than 40ft.
The second part is the drive location, which is the other 50% of this section's points. You get all of this section's points if the UGV drives to and stop within 10ft of the drive location, and none of this section's points if the UGV doesn't stop within 10ft of the drive location. Bonus points are achieved if you don't go out of bounds.
The last 10% of points are earned by participating as a team.
There will be two teams present at the competition, the guest team and the competition team, each containing 8 members.
Although the guest team will not be able to directly participate in the competition, their presence is vital. The guest team will help setting everything up before the competition (safety checks, interop server communication, etc.). Additionally, they get to watch everyone (including TJ) compete!
Competition Team
The competition team will do everything the same as the guest team, but when the time comes, they will be the ones to actually compete. This means they are the only ones who can perform competition tasks.
Last year (2019), there were a lot of weird rules that we discovered at the competition, which took away from our mission time and caused confusion. If you remember any important rules we learned last year, list them here.
GCS display must be in knots (not meters/second), MissionPlanner has a setting for this
The geofence must always be visible by the GCS judge (last year this meant we had to stay on the Flight Plan tab, and we were unable to view the data on the Flight Data tab
The Mission ID for the interop server is provided when you start ur setup time
The team leader needs to debrief the judges (5-ish minutes) on what tasks will be attempted during the flight
Put anything important that you see mentioned in the rules here:
UGV judge must give the go-ahead before dropping UGV
Although propulsion can't be used for UGV, using a sparrow or something like that w/o propulsion can be used as a guided glider
There will be multiple people flying at the same time, meaning crashing into another plane at the same time is a possibility
Although it is possible that the other plane will be submitting telemetry data, it is not required, and therefore we can't depend on it
The waypoint flight must be completed before attempting any other tasks. If any tasks (such as ODCL) can be completed during the waypoint flight, it is allowed as long as the plane doesn't need to steer off path to complete said task.
If there's anything important you remember from last year's competition, list it here
Make sure you have someone keeping track of time during the competition, THIS IS EXTREMELY IMPORTANT.
Setting up hardware did not take very long, what took long was getting the right MP setting and other tweaks like that, let's make sure we do this kinda stuff beforehand.
We can't be coding at the competition, or bad stuff will happen like last year :(. All code should be done before the competition, and if it's not, then it's not gonna be used during the competition.
We get to test with their interop server at the competition, so let's spend as much time as possible doing that.
If we're not the first 6 teams to go on a given day, then we can use other teams' setup times to our advantage (since they have 6 teams at the flight line at a time).
RC Transmitter / Receiver
The Power/Propulsion system encapsulates all of the electronics on the plane. It is important to know how this system works because it utilizes the electronics components to generate thrust and power the plane.
Electronics Overview
As a general overview, the electronics on the plane are powered by the flow of electrons (electricity). When it comes to electricity, there are three important aspects: voltage, current, and resistance. Let's briefly go over each.
Voltage, measured in volts (V), is the "pushing force" behind the electrons. When voltage is applied to a stream of electrons, it will cause the electrons to flow from the higher to lower voltage area. For example, electrons flow from the positive (5V, 12V, 24V, etc.) side of a battery to the negative end (0V).
Current, measured in amperes (amps), is the measure of the number of electrons moving through a given area per second (or more broadly, the net rate of flow of electrons through a given space). If we were to take a deeper look at current, we would find that electrons move incredibly fast. For instance, one coulomb (C) per second is equal to one amp. One coulomb is equal to 6.24x10¹⁸ electrons, so if there is one amp flowing through a wire, that means that there are 6.24x10¹⁸ electrons flowing through a single point every second!
Last, but certainly not least, resistance, measured in ohms (Ω), is exactly what it sounds like -- the opposition of current (essentially the "pulling force" behind the electrons). One way to think about resistance is the friction that acts on electrons as they flow through a circuit.
In summary, each aspect of electricity works together. In fact, they heavily influence each other. Here is a depiction:
In simpler terms, the relationship between them, known as Ohm's Law:
Documentation
RC Guide
Software
Parameters
Connecting
Flight Planning
Hardware
Tutorials
Mechanical Progress
Programming Progress
Master Code
There are two main subsystems: Mechanical and Programming.
Mech
Prog
Thrust Table for propellers
A Thrust table holds lots of information such as the amount of voltage, amps, watts, RPM, Temperature of the motor, thrust, throttle, and Propeller size. A thrust table is used to determine which motor is best for your plane. (More info in the motor section). It can also be used to determine what kind of propeller should be used to accommodate the motor based on its efficiency and the amount of thrust produced.
Before building your aircraft, we think it’s important to learn a little bit about how they work.
The following contains brief summaries of key aerodynamic concepts. For more comprehensive information, you can refer to this guide.
Lift:
Most RC planes have airfoils that have curvature on top and a flat bottom surface. As the wing moves through the air, it leaves gaps (or low-pressure zones) in the air behind. Imagine pushing an oar through water, as you try to move the oar, it leaves gaps where it just was which the water then rushes in to fill. The curvature of the top of the airfoil means that the area behind it isn't exposed to oncoming airflow. This means that a gap (or low-pressure zone) forms on the rear of the top of the airfoil.
As you can see, the area behind the wing is not exposed to oncoming airflow. To compensate for this pressure difference, the air flowing above the wing will rush downwards to fill this gap, this speeds up the air and therefore, decreases its pressure. (Since faster-moving particles are heated up and take up more space). In fact, the air above the wing flows much faster than the air beneath even after it leaves the airfoil.
The air flowing above the wing is less dense and has lower pressure. The air flowing below the wing will be slowed down by the bottom face of the airfoil and, therefore, compressed, creating a dense, high-pressure zone. The higher pressure below the wing pushes on the wing from beneath while the low pressure above the wing pulls on it from above. This helps generate lift.
Another important part of lift is that air beneath the wing is deflected downward by the bottom face of the wing and the air above the wing is being pulled downward by the low pressure generated by the wing, both of these actions push the wing up because every action has an equal and opposite reaction.
These two factors combined help generate lift and counteract gravity keeping the plane in the air. Lift can be increased by either going faster (as more air travels over the wings generating more lift in a specific period of time) or increasing angle of attack.
Angle of attack: When increasing the speed of a plane isn't enough or isn't an option, you can increase the angle of attack to increase lift. Increasing the angle of attack of a wing will cause it to deflect more air and create a larger pressure gradient between the top and bottom of the wing leading to more lift. However, once the angle of attack and pressure gradient get too large stall will occur. Additionally, by increasing your angle of attack you sacrifice thrust since the wings generate more drag.
Boundary layer: The boundary layer is a layer of stationary air surrounding the wing. This is how it forms: In front of the wing, the air is at about atmospheric pressure, and as it passes over the wing it speeds up and loses pressure. However, once the fast-moving air hits regular higher-pressure air behind the wing, it slows down. For the fast-moving air, the higher pressure zone is like a brick wall. The boundary layer air is held in place by this difference in pressure, along with friction with the surface of the wing, both preventing the boundary layer from moving along the wing. All wings have a boundary layer to some extent but well-engineered wings will have thinner ones. Larger pressure gradients will allow less air to pass behind the wing and enlarge the boundary layer. The boundary layer hinders lift since it acts as an extension of the wing and, therefore, simulates a lower angle of attack at the top of the wing.
How stall is caused: As I explained above, the boundary layer is a layer of stationary air surrounding the wing. As you increase angle of attack, the pressure difference between the wing and the air increases. This enlarges your boundary layer. When the boundary layer becomes too large, airflow separation occurs. Refer back to the first sketch of an airfoil above and how the air is not flowing around the wing. That's airflow separation. Airflow separation greatly reduces lift (because now only the bottom of the airfoil is generating lift) and also causes loss of control of the ailerons on the wing. This is because instead of pushing on oncoming air, the ailerons are only affecting the boundary layer (if pointing upwards).
How control surfaces maneuver the plane: Control surfaces allow the plane to pitch up or down (elevator), yaw left or right (rudder), and roll clockwise or counterclockwise (ailerons). When control surfaces are moved they deflect air in a certain direction and in doing so, move in the opposite direction. For example, if you move your elevator up, the air that would've been flowing straight is now deflected upward by the elevator. As an equal and opposite reaction, the elevator, along with the entire rear of the plane then moves down. This causes the plane to pitch up.
Ailerons: You may be wondering: How does rolling the plane with the ailerons allow you to turn? When the plane rolls, the lift vector (of the wings) is no longer perpendicular to the ground. The lift vector can be redrawn as two component vectors, one pointing horizontally and the other vertically (shown below). The horizontal vector is equivalent to a turn.
There are many factors contributing to drag on planes (such as induced drag and pressure drag), but in RC planes, you don't really have to worry about drag and efficiency. The more important thing is that your plane is structurally sound. A general tip though is to try and reduce the amount of surface area on your plane and minimize the amount of surface area perpendicular to the travel direction.
The batteries we are going to be using are Lithium-ion Polymer Batteries, otherwise known as LiPo batteries. The normal operating range of a LiPo battery is 3V to 4.2V. The more voltage the battery pack has, the more power it can supply to your vehicle. Overcharging and undercharging the battery will most likely result in irreparable damage. LiPo batteries are often deployed in products due to how effectively they can be used, drained, recharged, and used again for another battery cycle.
The typical number of cells in a LiPo battery ranges from 2 to 6 cells. This number could be as high as 20 although that is extremely rare. The discharge rating of a LiPo battery is measured in (c) and it measures the max it can supply for a set amount of time, and the maximum it can supply in general. Ampere hours refers to how much amperage one battery can supply to any product in the timeframe of 1 hour.
The connector typically used to charge batteries are the (still working)
It's fairly obvious how LiPo batteries are used, but how they are charged is a little more complicated. There is a system called Constant Charging Constant Voltage. When the charger is plugged in, it has to be made sure to distribute equal amounts of current to all the battery packs in the LiPo battery. Once the maximum amount of voltage in each pack is attained, the charger's only job is to gradually drop the current, so that the battery isn't getting overcharged, all while maintaining the maximum voltage levels in all the different packs. Making sure that each pack is discharging equal amounts of voltage while in use is extremely important. If the battery is discharging different amounts from different packs, the most likely result will be a fire. After fully charged, another process called balancing happens. What balancing does is make sure that every single cell in the battery is charged to the same level. This is also important due to the fact that if they are charged differently, they will inevitably discharge different amounts of voltage and inflict damage upon itself.
Creating and flying your own RC Plane is a delightful experience. There’s a plethora of resources and guides available all over the internet, ranging from which battery to buy to how to perform the perfect Z-Bend. But that’s the problem - these resources really are all over the place. Without someone to guide you, getting into RC as a beginner can seem near impossible considering all of the parts that must come together to perform your first successful flight.
We’re a group of RC and flight enthusiasts with a diverse set of experiences. With this guide, we hope to make the RC hobby accessible for everyone by compiling all the resources, information, and components needed to start RC in one place. We hope to ease your transition into this hobby so you can get flying!
How to tell if a propeller is CW or CCW
You can tell if a propeller is CW or CCW simply by looking at the elevated ridges of the propeller. If the elevated ridge is on the left side it is a clockwise prop and it is a counter-clockwise prop if the elevated ridge is on the right. If you think about how the propeller will displace the air/pull the air, you are going to turn in the direction of the elevated ridge.
There are four main forces of flight: Thrust, drag, lift, and weight.
In RC aircraft, thrust comes from our motors and propellers. Drag acts opposite of thrust and comes from the friction/interaction between the plane and the air. Weight is the earth’s gravity acting on the plane, and lift is an upwards force created by the plane’s wings.
Control surfaces are moveable parts of the plane that allow your plane to maneuver through the air.
Refer to thesection for an explanation of why control surfaces allow the plane to maneuver.
So that the control surface can move, you will first need to make a score cut, making sure to cut through one layer of paper but leaving the opposite layer intact. This will allow your control surface to move... but only in one direction. So that the control surface can move in both directions, you will need to make a bevel cut in the foam. A bevel cut is an angled cut in the foam that allows it to bend.
Tips: Bevel cuts take practice. For a smoother cut, cut with your blade at an angle to the foam rather than perpendicular. If you cut too shallow, you can go back and make it deeper, if you cut too deep, you will make a hole in the paper, so it's better to take your time and make shallower cuts. If you do cut too deep, you can simply reinforce the paper with scotch tape.
Servos: Angular servo motors are used along with pushrods and control horns to move control surfaces. Angular servos can be programmed to turn between 1 and 180 degrees. They have three wires coming out of them which are connected at the end. GND/negative is the black or brown wire, plus/power is the red or orange wire, and the signal/data wire is white or yellow. Most servos will have either black, red, and white wires or brown, orange, and yellow. Your transmitter will take care of converting your joystick movements into degrees for each servo to turn. While flite test may recommend 4-5 gram servos for smaller planes, 9g servos are recommended because they are more readily available. Before gluing servos into your plane, make sure they are centered so that they will have ample room to move in both directions. You can center them using an Arduino or by hooking them up to your receiver.
Control Horns: Control horns are small components that attach directly to your control surfaces and have a hole through which the pushrods go. When the servo horn moves, it pushes the push rod, which pushes the control horn, which pushes the control surface. Control horns come with flite test prefabricated kits.
Linkage stoppers: if you are using a Y-harness for your ailerons, you may find it difficult to adjust trim and endpoint values, what you can use are linkage stoppers. Linkage stoppers are screwed onto your servo and hold the pushrods on one end. They may also be used instead of z-bends.
Lift is a complex topic not easily explained in a few sentences. gives an in-depth explanation of lift if you’re interested. If not, a simplified explanation states that planes generate lift by redirecting the airflow over their wings towards the ground, creating an "equal and opposite" force upward on the plane.
Push Rods: Control surfaces are rarely attached directly to your servo because it's difficult to attach the servo horn to the foam and it is inconvenient to have to place your servos right next to your ailerons/rudder/elevator. Pushrods are used to transfer the force of the servo over longer distances. For example, you can have your servos positioned inside the fuselage while controlling a control surface on the other side of the plane. Pushrods have a Z-Bend at each end which allows them to attach to the servo horn and control horn (). Pushrods will come with flite test prefabricated kits.
Y Harnesses: Most receivers+transmitters only have one channel for the ailerons, what you can use (if you don't want to set up a ) is a y harness. This splits one servo output into two identical ones.
If you've flown before, you know that it's not easy. That's where flight simulations come in. If you don't want to worry about wrecking your plane or damaging your electronics, you can practice your flying stress-free using a variety of simulations.
Types of Flight Simulations
When it comes to flight sims, there are two main types: Flight Training Devices (FTD) and Full Flight Simulators (FFS). Full Flight Simulators are a full-size replica of a specific make or model and they have flight decks which can represent the plane in both ground and flight operations. Essentially, they are exact copies of a plane that doesn't fly. I won't go into too much detail on FFSs because they are very complicated, which is why they aren't as relevant for RC planes (their main use is for airlines).
Function of Propellers and How they work
The idea of propellers follows newton's third law: "for every action, there is an equal and opposite reaction". Propellers are built in such a way where when they start rotating, they are displacing the air and pulling it behind them. This action results in what we call thrust, and moves the propeller/plane forward. (just like newton's third law). The more pulled air will result in more thrust which in turn means the plane will speed up. The number of blades on the propeller can also be changed based on the power of the engine. If the engine is a lot stronger, there may be a need for more propeller blades to produce more thrust they carry a heavier plane (Think of a jet engine propeller).
The FAA bro...
What you need to fly: - TRUST Exam certification - Aircraft registration - Be following the rules set out by an approved Community Based Organization of your choice - Be in legal airspace
The TRUST exam is a short online training course (takes under 15 minutes speedrunning) you need to complete to legally fly. There are many approved organizations that can issue this, but I used the AMA website.
Each pilot needs to get an FAA issued registration number (which they can then put on whatever plane they want). You have to visibly write it on your plane and carry a paper or digital copy of the certificate with you when flying.
The FAA requires you to follow certain rules and safety guidelines, but they don't have any exact ones. Instead, you have to choose an approved Community-Based Organizations' rules to follow and you must be able to specify which one if a nark asks you. (Flite Test has the most lenient rules that I know of...)
If you meet the above requirements, you can basically fly anywhere, except in restricted and controlled airspace (i.e. around airports, near DC). To check what kind of airspace you're in, you can use mobile apps like B4UFly (https://play.google.com/store/apps/details?id=gov.faa.b4ufly2&hl=en_US&gl=US&pli=1). To request authorization in controlled airspace, you can use apps like Aloft (https://play.google.com/store/apps/details?id=ai.aloft.aircontrol&hl=en_US&gl=US).
If you do not already have one, register an Autodesk account before starting this step. It's the same as getting an account anywhere else.
Fusion 360 supports only Windows and OS X. Unfortunately, it does not currently support Linux & BSD distributions.
To install Fusion 360 on FCPSon laptops, visit Mr. Behling in the Prototyping lab during 8th period. We highly reccommend using a personal laptop instead of FCPSon if you can.
Go to Educational Use for Fusion 360 from the Free Trial page
Sign in to your Autodesk account and follow the instructions onscreen to obtain your license/download the installer.
Install as you would any other software.
Once the software loads, sign in using the button in the upper right corner.
Fusion 360 should now be installed.
Fusion360 is a cloud-based Computer Assisted Design software from Autodesk. At TJUAV, we utilise Fusion360 to collaborate on designs and create 3D models of our system for manufacturing, modeling, and simulation. This section of the documentation goes over the first steps for installing and beginning work in Fusion360. This is not a guide of 100% of Fusion, but if you hover over a tool you're unsure about, a description will appear. In addition, there are many tutorials online, and the members of TJUAV are always happy to explain something you don't understand. All you have to do is ask.
How to join the TJUAV Fusion Team
Once you have Fusion360 downloaded and installed, talk to one of the CAD team admins and have them add you to the team. Once you have been added (you'll need to accept the invite through email!), go to the upper left-hand corner of Fusion and click the dropdown next to your name. This will allow you to change between your individual and shared folders, and the TJ UAV files.
Sketches, located under the Create menu, are constrained drawings on a 2D plane or surface, and the first step to any CAD model. To start a sketch, you click the Create Sketch button. Afterward, select a FLAT plane (could be your origin planes, planes you created, or a face of a body). Once within a sketch, you have access to sketching tools, which differ from normal tools.
Remember to use Construction Lines to define objects without splitting faces in your sketches. To make a line a Construction Line (invisible, dotted line) click the line and then click the X key.
When making your sketches, make sure your lines are all black (this means that they are fully constrained). If the lines are blue that means the lines have some permissible range of motion, which you can see by clicking and dragging the line (note, sometimes the line or curve will not move because it is constrained in such a way that it has two unique positions; in other words, maybe it doesn't slide but it can be mirrored). If the line isn't fully constrained it may move in an unpredictable way when dimensions are changed. There are many ways to prevent this, and often times you'll need more than just one of the following tools:
You should NOT rely on the Horizontal/Vertical constraint because this defines itself based upon the arbitrary orientation of the sketch. In other words, if you constrain a rectangle's sides as horizontal and vertical, you will never be able to rotate it in the future. If you would define the right angles instead, you could rotate the rectangle based upon an angular dimension you define.
The most crucial part of sketches is dimensions. Dimensions are used to constrain sketch objects based on length, angle, etc. To open the dimension tool, the easiest thing to do is click the D key. Then, click whatever you want to dimension.
For the length of the line, click the line.
For the angle between lines, click the first line and then the second line.
For the distance between points, click the first point and then click the second point.
Instead of just defining the length of the line (or distance between two points), you can define the distance in a single or multiple dimensions. To do this, move your mouse to the side instead of directly away from the line, as pictured.
Remember to ensure you define the correct dimension in your drawing, for example, radius vs diameter.
Last updated 3/24/2021
Select the Target Body (body which has the action performed on it), then select all the tool bodies.
Join - Joins bodies into one large body as long as they are touching.
Cut - Cuts tool bodies out of the target body (especially useful when combined with Offset Face because you can make perfectly contoured holes in objects, similar to a mold).
Intersect - Keeps only the intersection of the target body and the tool bodies (useful for making wing ribs because you can first Sweep the wing shape, then Rectangle Pattern a series of rectangular prisms down its length, and finally Intersect the sweep with the prisms to get the ribs).
"Keep tools" allows your tool bodies to remain, otherwise they get merged or deleted in the Combine tool.
Using a plane, face, or profile (mostly planes) it splits a body into two pieces along that plane. This is very useful for cutting large objects into smaller pieces, such as cutting an aileron from the wing.
Making planes and axes is a must have skill for any person doing CAD. Although this menu's tools are self-explanatory, people don't know when or how to use its tools in creative ways. This, however, cannot be taught through this documentation and only is learnt through practice. See Smart CAD Tutorial (making a file) for a slight lesson on this.
CAD designs change frequently. Just as code uses variables to allow a single value to change, Fusion360 uses parameters. If a dimension changes, you can modify the value of the variable instead of altering sketches or timeline features. When setting a dimension, always set it to a parameterized value. To access parameters, click on the Modify menu, and then Change Parameters.
Parameters must match the dimensions of what they describe (you can't change this later!). Angular measurement must be made in degrees or radians, lengths in some form of meters, etc. Parameters can also be based on other parameters, and functions like add, multiply, square root, etc. can be used directly in the parameter value.
At TJUAV, we believe in upholding the founding values of this country, including the use of feet, inches, and degrees. To set your default units, go to your account at the top right and look through the Preferences. To set the units of a file, go into the Browser, as shown in the picture below, and edit the units (this will change only the visual units of the file, not your parameters).
How to format flite test plans to dxf files and laser cut them
Formatting Import your file into AutoCAD. Find the page for your plane, click Resources, then download the Full Plans. In a new file in AutoCAD, import the plans as a PDF.
Foam board is like a sandwich. The bread is the paper, and the inside is the foam. A full cut cuts through all three layers, score cut is one paper layer and the foam, leaving one layer of paper left, and a crease cut cuts through only one layer of paper, but no foam.
Disclaimer: in the image above, the regular cuts were set to red, but that is incorrect. Set them to Blue. Throughout this tutorial, score cuts were mistakenly set to blue, and full cuts were mistakenly set to red. It should be the other way around.
Your goal will be to fit all the parts within 18x24 inch rectangles and as few rectangles as possible. This is because TJ's largest laser cutters can cut 18x24 inches maximum. Your final result should be multiple dxf files that are numbered, each with only one 18x24 rectangle containing parts. Try not to have any parts sit on the edge of the rectangle, as the laser cutter's range is actually slightly less than 18x24. Cutting
Press Ctrl+P
Change the Printer/plotter name to the laser cutter you are using
Click Properties..., Advanced Settings, and adjust the color settings appropriate to your color scheme (Red: cut, Blue: score, Green/Cyan: reference) *
Change What to plot to Window, then click on two corners of the 18x24 rectangle that are not adjacent
Uncheck Fit to paper
Change Scale to 1:1
Change Plot style table to laser.ctb
Click Apply to Layout
Click Preview... to make sure your lines show up and the plot matches your format
Click OK
Put a sheet of 18x24 inch foam board into the laser cutter
Click focus and adjust the laser cutter to the correct height
Turn on the ventilation and open the air valve
Press the green button on the printer to start printing
In the Joint tool, order matters when you select two components. An example of this is the Pin-Slot joint which requires the Pin to be selected first and the Slot to be selected second.
When selecting your component, you can use snaps. If you highlight the edge of a hole you will see a snap in the center, but when you try to hover over it, it can sometimes disappear. If you hold CTRL down, Fusion will allow you to select any of the snaps on your highlighted surface by ignoring any other surfaces you may hover over.
Rigid - Just like super glue, you ain't moving that any time soon.
Revolute - Synonymous with "rotation."
Slider - It slides.
Cylindrical - Like a syringe, you can push, pull, and spin! (mixture of revolute + slider)
Pin-Slot - Like that type of chain lock that you put the bolt in the hole and slide it to the right.
Planar - Like a penguin on ice, you can slide anywhere on the plane, but you sure can't fly up or faze through it.
Ball - Lots of motion.
You first have to select the type of movement you want to constrain: Slide, Rotate, etc. Then you will select whichever constraints you want and define them. "Rest" just means whatever the default position is. The animation shows you the range of freedom.
Multiple Joints on a complex object can work together to simulate the movement of a whole system! For example, a piston turning an axle can be simulated:
Stationary surface has Revolute joint with piston housing.
Piston housing has Slider joint with piston.
Piston has Cylindrical joint with wheel on the outer radius.
Wheel has Rigid joint with axle. (Rigid joints can move and turn in space if the component they are attached to is moving/turning, they aren't permanently jointed to a certain orientation or point in space)
Axle has Revolute joint with stationary surface.
To make an assembly, drag in files from the file menu on the left and they should appear in your file. Join these together to assemble your object. Whenever you change an individual object, it will update in your assembly because the change makes its way up the file tree.
Another basic concept in Fusion is a series of events. Many different operations may need to be performed to create complex shapes, and Fusion keeps track of this in the Timeline. Different icons represent different operations, like New Sketch, Extrude, and Revolve.
Anything before the slider is what is computed by Fusion (visibility depends on your own visibility settings in the browser and nothing after the slider will be computed until you move the slider past it). As a result, when you edit something earlier in the timeline, always move the slider back first before making changes and then slowly move it back to the present to make sure that any errors along the way are relatively easy to fix. Otherwise, errors propagate more errors, so a simple fix of one error could have prevented fifteen others that appeared, but once those fifteen appear, fixing the original error doesn't do anything because it's too late.
You can drag things around to change their compute order, but you are limited by dependencies between objects. For example, an extrude based on a sketch cannot be dragged before the sketch and vice versa.
There are many different errors associated with different tools, but their fixability depends on how well you made your CAD and how volatile the tool is. Sketches with projections, for example, are virtually unfixable unless started from the beginning. Sketches without projections solely may need you to redefine their plane. Other tools may throw a temporary error but if your open them up and click OK then they may resolve. Fillets and other tools under the Modify menu are often unfixable.
Sketch tools are used to create specific features within the sketch environment. The key to correct usage of sketch tools is understanding each one's function. This page details more advanced tools and the benefits/drawbacks of using them.
Specialized
The P key, or a visit to the Create menu highlights a useful tool known as the Project tool. This tool creates a projection of any body, feature, component, etc. onto your sketch that allows you to use those lines as a reference. This is a very good tool for lazy CAD because it allows for thoughtless projecting without much understanding about properly defining things. As a result, when changing parameters, scaling objects, or doing changes backwards in the timeline, you often run into errors with your projections that cause irreparable chaos and eventually a full reCAD of that sketch and everything after it.
The Intersect tool has the same instabilities, but is used to detect the surface, line, or point with which a body, plane, or line intersects your sketch plane. Whatever you are projecting must intersect with your sketch plane.
Just like in the Solid workspace, the fillet and chamfer tools perform the same operations but within a sketch. Using them is unadvisable because although they save on computing power, editing them is a pain, they remove constraints that keep your lines black, and they perform function limited within the plane you are working in (the Solid workspace Fillet/Chamfer is much more useful because it works in 3d).
Same downsides as the Fillet/Chamfer tools. The Trim tool (shortcut T) and Break tool help clean up your sketch and remove extra line endings and other unwanted things. The Trim tool is most useful when you make a line of arbitrary length in one direction (because you don't know its exact length yet) and then intersect that line with one coming at an angle that you have already defined. Trimming that extra length of the prior line is an easy way to save a few seconds that it would take you to use the Coincident constraint on both other lines' endpoints.
The most stable tool in the Modify menu is the Offset tool (shortcut O). This simple tool is probably the only too that it much more useful within the Sketch environment than in the Solid workspace. It is very simple to use.
Helpful Habits for Fusion
At the bottom of the design workspace, for most files, you should see a timeline of all of the things added to the file. This is not the same thing as an edit history, instead, think of it more like the series of instructions the software is using to generate your objects. If your file does not have a timeline, for instance, if it's an imported file, you can create one by right-clicking the parent component in the tree and toggling timeline capture.
In Solid workspace:
S - shortcut menu (search for tools)
I - measure
J - joint
F - fillet
M - move
E - extrude
In Sketches:
S - shortcut menu
L - line
R - rectangle
C - circle
P - project
D - dimension
O - offset
T - trim
M - move
I - measure
Components allow you to make Joints & Assemblies, which are very important features in CAD.
Components allow you to organize all of your actions relating to a part together.
To activate a component, click the small dot to the right of the component you want. This will gray out any component or body that is not a subcomponent of your selection.
If something is grayed out, you cannot interact with it (AKA, Extrudes won't cut through grayed components). Keeping your CADs organized is very important, so always remember to use components wherever it makes sense to do so. A final benefit of components is that you can toggle visibility of objects more easily; for example, it is much simpler to turn on the sketches relating to a component than to sift through all your sketches in the main file to find out which ones relate to that one component.
Profiles let you save settings across projects so that you can use them again!
A star in the top right means you made unsaved changes, be sure to either "Create profile from current settings/overrides" or "Update profile from current settings/overrides"
Infill Density: 20% is standard, 50% is pretty strong and heavy, 75-80% is virtually fully filled (Note! 100% infill is a no-no because it overfills your print and causes it to warp and bulge!)
Infill Pattern: Different patterns have different strengths and weaknesses (I prefer Gyroid because of its strength in virtually every direction)
Using Git to access, edit, and publish changes
To access any repositories on your PC, the first thing you need to do is clone them.
To clone a repository, you will first need to get its clone URL. First, visit the repository page (Example: https://github.com/tj-uav/repo-name
). Then, Click on the Code
button, and copy the HTTPS URL.
To actually clone the repository, you will need to open either a Terminal or a Git Bash Console. Next, you should navigate to the directory where you want to clone the repository. Here, you should run the following command, where <url> is the repository URL you copied from the previous step.
Now, the repository is succesfully cloned to your PC in your chosen directory.
When working with a team, there are often new changes made by other team members that you will need to use to continue working. To update your cloned repository's code with the cloud, you will need to pull changes.
The simplest way to pull changes is by simply using this command:
As long as the terminal or Git Bash Console is open inside a cloned directory, the directory will be updated with the most recent changes from the cloud.
After you've made a bunch of changes to the cloned repository and want to publish them as a version, you'll need to commit. Simply use:
This will save your current changes as a version in Git. However, your changes are still not published to the repository, which will require Pushing.
After you have made one or more commits, you might want to publish them to the cloud repository on GitHub. To do this, use:
This will take all your unpublished commits and push them to the cloud.
Branches are separate copies of the source repo, used to make changes without interfering with another person's changes. You can create branches, switch to a branch (git checkout <branch>
), and merge a branch in with the main or master branch, with the official code.
If you want to work on your own version of the current repository (without having to worry about pulling), and then merge it with the actual one, you need to use forking.
On the Repository page, click the Fork
button on the top right. This will create a new repository on your account that is linked to the actual one. Now you can make your changes.
If you have made all the changes you need to make on the forked repository, you can create a pull request to merge your changes to the actual one. After an organization admin approves the pull request, conflicts will be removed and your new code will be merged in with the existing repo. You may be asked to add new features, and bugs may be reported for you to fix before your pull request is accepted. Every new commit and push to your repo will add it to the pull request, and will be merged once the pull request is approved.
Merge conflicts are one of the first errors you will run into when using Git. It may seem you messed up badly at first, but it just means that Git can't correctly reconcile the differences when two branches have merged. Instead, you would have to manually resolve the conflicting changes.
Here is how you can know where there could be one or more conflicting files:
Here is what you would see when a merge conflict happens in a file:
Everything in between the < and the = signs is the change in the current branch (the one you are merging your changes into). Everything in between the = and the > signs is the change coming from the branch you want to merge into the current branch. Now it is up to you to decide which change you would like to accept or you can edit the file to combine the changes. When you do this, remove the markers that indicate the beginning and end of the changes, leaving only the code you want:
Now you can commit the changes and the message "Resolved merge conflicts" will show. You can now push the changes to the repository with no merge conflict errors.
If you're reading this, that means you've really screwed up. Not in making a frivolous commit that contains something it shouldn't have, but rather in the time, git punishes you for such a mistake.
Now here's where you might be lucky. If you didn't push to GitHub yet, all you need to do is the following:
This here will undo that last commit, as if it never happened. The --soft
flag keeps everything that would have been pushed (i.e. pre-push state). To revert to what the previous push would have looked like without the changes you made, replace --soft
with --hard
.
Now let's say you already pushed to the GitHub ("remote") repositories. If it's a non-sensitive mistake, make another commit that fixes it. Not completely sure what constitutes a sensitive mistake? Basically no large files , passwords, or anything that reveals a major security flaw.
It's best practice to just fix the mistake, but if need be git revert
also generates an automatic commit revert. This won't remove the commit completely; rather, just undo the changes. It's an easy way of going back without loosing progress or interrupting anyone else's workflow. This means files no longer part of the repository will still be downloaded, hence why large files have to be removed with the next steps.
Any steps from here on should be additionally accompanied by a ping to everyone on Discord saying that this change has been made. This WILL affect the workflow of all users and means EVERY SINGLE PERSON will have to make sure they didn't pull what you had now since it was completely removed. And yes, this is perhaps one of the only times where it is completely appropriate to perform an @everyone ping.
This should in theory push the branch back to commit and practically destroy the very existence of the commit. There are other ways to do this but this is probably the safest method only if you know no other commits were made up to this point.
Let's say you realize that it wasn't the latest commit but instead one that's a bit older. Start out with the following, where commitID
is the ID of the commit that you want removed:
This brings up an editor with a list of all the commits made since that one.
his editor's probably vim
, which can be notoriously difficult to use sometimes. To be clear, this is not vim
which can be found rather commonly, so it might be even more unfriendly than some users realize. vim
basics still apply. Though it can be incredibly powerful, don't worry about needing to learn how to leverage it.
Use the arrow keys to put your cursor on the line that has the commit ID of the commit you want to remove, then type dd
. Don't worry, you won't add anything, as you aren't in insert mode. Then type :wq
(command, write, quit) and press enter
to exit.
Finally, force push the branch with the following command.
As mentioned earlier, an @everyone ping is appropriate to ensure all programmers pull this edit and make sure your force push doesn't break their code. To be clear force pushing should be reserved for the most terrible of situations.
Head to Ultimaker's website here, click on "Download for free", download the .exe installer and install as you would any other program.
Head to Ultimaker's website here, click on "Download for free", download the installer and install as you would any other program.
Cura has excellent support for all distributions. If you wish to install via the .AppImage method instead of your distribution's package management system, head to the Other Distributions Section.
Simply run apt install cura
as root to install the latest version.
Simply run pacman -S cura
to install Cura.
Other Distributions
Check if your distribution has a Cura package before following this method. This allows Cura to automatically update when you when update your packages.
Head to Ultimaker's website here, click on "Download for free", download the .AppImage.
Run chmod +x [filename]
to allow the .AppData to be executed
If you wish to allow Cura to be activated as a command, run mv [filename] /usr/bin/cura
as root.
Layer Height: A smaller layer height is a fine print, but it takes longer! (I stick to the default options generally that are found in the dropdown right above this one labeled "Profiles")
Initial Layer Height: I've found no reason to mess with this, but it may help with adhesion for some people.
Line Width (and subsettings): Normally the width of your nozzle. (I've never found a reason to play with this either.)
I've never used most of these, but here are the important ones:
Wall Thickness: Line Width (Quality) * Wall Line Count. Basically, the outer shell of the 3D print has a certain thickness before the Infill starts, you get to set this thickness with this setting. A higher wall thickness would lead to a stronger print.
Top/Bottom Thickness: Same idea, do I really have to explain this?
Top/Bottom Pattern: The pattern of the layer creation (I've never changed this, but maybe Concentric would be better for circular parts)
Enable Ironing: This is a really non-important setting, but it literally just makes the print slower and maybe marginally smoother. I tried it once but wasn't noticing any major differences. It works by using the hot extruder to remelt the plastic of the top layer to smoothen the layer lines, purely aesthetic, no structural use.
In general, more speed = less precision
Depends on your printer. In general if you experience poor bed adhesion you should increase the bed temperature or decrease the print speed of the initial layers.
Temperature depends on your FILAMENT BRAND, not your plastic type. Check the package carefully for the temperature range and pick a number in the middle. PLA tends to run around 200C while ABS is around 245C.
The build plate temperature for PLA is around 60C and around 110C for ABS.
Don't mess with the flow rate until you are so proficient with the 3D printer that you know more than this tutorial's writer.
When you first get Cura, you'll be asked to add a printer. Choosing the printer does not matter as long as you set up the size dimensions of the build volume based on specifications you can find online. (my Ender Pro 3 is 220mm*220mm*250mm)
Now, I'll walk you through the tabs and tell you the important stuff in the coming pages.
Here, only the type really matters.
Skirt: A distance away from your print it makes a ring a few lines thick to purge old filament to prime the extruder. HIGHLY RECOMMENDED TO USE INSTEAD OF "NONE"
Brim: Exactly like Skirt but this TOUCHES your prints so that they don't separate from the bed as often. ALSO PRETTY RECOMMENDED
Raft: Makes a thick, slow, wasteful, costly, stupid platform under your whole print. DO NOT USE
You just have to click "Generate Support" and then play around with the first 3 settings.
Support Overhang Angle: if the angle between layers is greater than this it will generate supports. This is measured from the normal (vertical).
Support Pattern: Zig Zag is very good for easily removable supports. Under the Experimental Tab, Tree Support is very good for easy to remove, lightweight, quick supports.
Don't do anything here.
Facebook actually has documented all of the steps needed to completely deploy a React app on GitHub pages on their deployment page. Doing this would make the site accessible at https://tjuav.github.io/site1/
. We might want to change that using CNAME at some point following this guide on the GitHub docs.
Setup and troubleshooting for RFD900x communications
Intro
The RFD900x is a radio modem (receiver and transmitter) made by RFDesign. It operates at a frequency ~900 MHz.
You can get one for $100 - https://store.rfdesign.com.au/rfd-900x-modem/
Official documentation (detailed pinout, power levels, performance data) - https://files.rfdesign.com.au/Files/documents/RFD900x%20DataSheet%20V1.2.pdf
LEDs
The RFD900x has two LEDs - one green and one red. The lights are indicators for the status of the device.
Blinking Green - the RFD is ready to connect
Solid Green - the RFD is connected
Blinking Red - if the RFD is blinking red after being successfully connected, it is transmitting data. If it's blinking red immediately after being powered, something is broken. See the Flashing section below.
Solid Red - the RFD is in firmware update mode
No light - underpowered cable or you forgot to plug it in
Usage
You can operate an RFD using a Windows computer and a Pixhawk flight controller. You will need to have Mission Planner installed on your computer. Always keep the heatsink exposed to open air and the antennas vertical and horizontal as shown below. The signal will be strongest in the direction of the blue line.
To access the RFD from a computer, you will need an FTDI cable with IO pins configured for 3.3V. On an FTDI cable, the orange and yellow wires are output and input, respectively. Please double check the voltage on these wires to make sure the RFD won't be damaged via overvoltage. Pixhawk I/O on TELEM1 and TELEM2 is 3.3V by default.
Once both RFDs are blinking green, you are ready to connect. Open Ardupilot, select a COM# port in the top right, set the baud rate to 57600 and press connect.
Flashing
Flashing is the process of uploading new firmware to a device. It's necessary when the old firmware is broken, outdated, or missing. If the RFD is blinking red, it could mean the firmware needs to be replaced. Follow the steps below to flash the modem
Download firmware at https://files.rfdesign.com.au/firmware/
Download RFDTools at https://files.rfdesign.com.au/tools/
Open RFDTools.exe, then connect to your modem over an FTDI cable rated for 3.3V IO.
Short pads 9&16:
The modem's upper LED will light solid red.
Select the correct COM Port and set Baud to 57600, then click Connect. Keep the pads shorted as you start uploading firmware. If everything goes right, power cycle the modem and it should blink green.
Have fun! 😉
Cool kids only!
Tree Support: Unclick "Generate Supports" in the Supports section and then click this box. The support options should reappear in the Supports section. Tree supports are awesome because of their speed, efficacy, and material saving.
Draft Shield: For people printing ABS without an enclosure and are having warping or delamination, a draft shield builds a wall around your 3D print with minimal plastic that protects it very well.
Adaptive Layers: Maximizes the speed of your print and detail by making layers with curvature much thinner while making straight faces have thicker layers. In other words, each layer is a different size depending on the detail needed.
The Sony α5000 (known as the a5000) is a 20.1 MP camera developed by Sony using an APS-C sensor (1.53x sensor crop).
The α5100 is another APS-C mirrorless camera that is dimensionally identical to the α5000 but has a slightly higher resolution 24.3MP sensor, and supports liveview download
Both cameras can be controlled using .
The a5000 can take images up to 5456x3632 in resolution, while the a5100 can take images up to 6000x4000 in resolution. Both can take up to 1080p60 video, up to a 30 minutes in length.
This guide is using an a5100 because that is what we should be using over the a5000 for flights. If, for some reason, the a5100 breaks and we need to use the a5000, the steps are the same except that you need to press the center dial button when you see the "Running on NTSC" screen at startup and that you don't need to worry about digital zoom. I recommend keeping the second camera that is not on the plane on charge so that you can swap the batteries between the two if the battery on the plane camera runs out.
Making sure the PCB is switched off with the switch on the edge of the board, remove the PCB from the gimbal by unscrewing the M3x12mm screw on it and sliding it out of its slot.
Insert the camera into the gimbal frame and fasten with the 1/4"-20 x 1/2 inch bolt in the tripod mount. Plug the microUSB cable into the camera.
Remove the lens cap on the camera. Keep the lens cap somewhere safe, and be careful not to scratch or smudge the lens while it is exposed
4. If a flight is about to happen, turn on the camera with the power switch on the shutter release. The lens should extend outwards. Do not power the camera on unless a flight is going to happen soon, because the battery will drain while it is powered, even if it is plugged into USB. Keep the camera off between flights and repeat the steps below each time when turning it back on. Periodically check the battery percentage, and swap the battery out or take the camera out and charge if needed.
5. Make sure the exposure settings are set properly. We want aperture auto mode, ISO 800, and aperture F10. If these settings are not displayed as they are in the image below, press the DISP button (up on the dial) until they are.
6. If exposure mode reads something other than A, press the center button on the dial and turn the dial until it reads Aperture Priority, then press the center button again to select and return to the main display
7. If aperture reads anything other than F10, turn the dial while on the main display until it does read F10.
8. If ISO reads anything other than 800, press the ISO button (left on the dial) and use the up and down on the dial until 800 is selected, then press center to return to the main display.
9. Optionally, or if flight software is not working properly, you may set an exposure compensation manually. This is necessary to make sure the targets are not washed out. Press the exposure comp button (down on the dial) and use the left and right dial buttons to select an exposure comp setting. My guess at a good setting is around -2, but change as needed between or during flights
10. Set zoom to 50mm with NO DIGITAL ZOOM. Use the W/T power zoom switch to move the zoom so that the display reads 50mm but does not show a magnifying lens icon with an x1.(something) number. The bar should be about halfway between W and T
11. Set focus distance to anywhere around 5-50m (doesnt really matter because of the F10 aperture). Twist the outer ring on the lens until the bar in the bottom of the display reads a distance between 5 and 50m
12. Now that all settings are set, slot the gimbal PCB back into the slot and fasten it with the M3x12mm bolt. Hand tight is fine. Be extremely careful not to bump any of the controls, like the W/T switch or the focus ring.
13. On the gimbal PCB, flick the power switch on the edge of the board to turn it on and enable stabilization. If you need to remove the PCB to access the camera again, remember to turn it off first.
The camera is now ready for flight. After the flight finishes or if a period of waiting is anticipated, turn off the camera to save battery and redo all these steps above after turning it back on. If the images are too blurry from motion blur, you may choose to set a slightly lower F number aperture or a higher ISO. Avoid going over 1250 ISO or F8 aperture, as a rule of thumb. REMEMBER TO PUT THE LENS CAP BACK ON THE CAMERA.
The lens should retract when you turn the camera off. If it doesn't, this indicates that the camera is still processing something, and if it doesnt for a long time then the camera has probably frozen. Taking the battery out and putting it back in, then turning the camera back on and off tends to fix this.
Several settings in the camera must be set before using with gphoto2. First, the camera must be set to connect to USB by PTP mode to be controlled by gphoto. The camera should be placed in aperture auto exposure mode and manual focus mode, as autofocus takes several seconds at each capture.
Menu > Setup > 2nd tab > USB Connection > PC Remote
Menu > Camera Settings > 3rd tab > Focus mode > Manual Focus
Some extra settings I recommend changing are to disable the Audio Signals and Auto Review
Menu > Setup > 1st tab > Audio signals > Off
Menu > Custom Settings > 1st tab > Auto Review > Off
Higher ISOs mean a grainier but brighter image. Experimentally, Sony APS-Cs do well at up to 1250 ISO, past which the grain becomes quite noticeable.
Aperture is the size of the opening in the lens. Larger f-numbers (the measure of aperture) mean a smaller opening, less light coming through, but a larger depth of focus. A wide aperture shot will have a much blurrier background than a small aperture shot. For our purposes, we prefer small aperture (larger f-numbers), because we want images to be in focus even if the set focus distance varies from the actual distance. At F/10, for example, 10 meter focus distance is still able to capture a target 50 meters away in focus.
Shutter speed is the amount of time (in seconds) that the shutter is open and exposing light onto the camera sensor. Slower shutter speeds mean more light, but more motion blur. We prefer fast shutter speeds so that the aircraft and camera gimbal's movements do not show in the image.
Remember that for CV purposes, we prefer underexposed (darker) images over overexposed images, as overexposure destroys the contrast between colors on a target.
The a5000 and a5100 do not charge while powered on, which means their batteries will drain even when connected to the Pi over USB. There is no way to avoid this except good battery management.
Sometimes the camera takes a second or two longer between a couple captures every 30 or 40 images or so at 0.5 seconds per image
Although most aspects of the camera can be controlled using gphoto2, it is impossible to focus and zoom an attached lens.
The camera can be switched to Autofocus-S (Single Shot Autofocus) then back to manual after taking a photo to refocus the camera if necessary.
There is no known method of zooming/retracting an attached lens remotely even if the lens allows powered (i.e. not done by hand) zooming. There is a zoom value in gphoto2 when tethered but it doesn't do anything
The a5100 has an obnoxiously loud shutter, because the camera plays an artificial shutter sound on its speakers. It is not possible to disable this without firmware tweaks
Looping and saving using Python's library may cause the α5000 to reboot.
Gphoto2 has several options for capturing and downloading images from these cameras. There is a command line interface, and a python library as a wrapper.
From the command line interface, the user can call --capture-image to trigger an image capture not not download it, and --capture-image-and-download to capture an image and download it from the camera onto the computer, however the download process takes around two seconds before the next image can be taken, as the camera stores the image on the SD card first. The a5100 has the option of liveview image download through --capture-preview, which instantly captures and downloads a 720p image.
The python library, called python-gphoto2, wraps most of the functions of the command line interface and allows better control of the camera in code. The best way to capture images using the python wrapper is to trigger capture using trigger_capture
, and download it directly from the camera, bypassing the SD card, using the wait_for_event
function, which waits for an event (such as a new image file appearing in the camera). See this example, and add a trigger_capture
call before the wait_for_event
call. A more refined version is implemented in flightsoftware, which waits until 0.5 seconds after the previous image capture to trigger the next capture, to keep the image capture interval more consistent.
battery monitor is a 10k/100k voltage divider connected to a 6.6v adc pin with a 20k resistance to ground, so the voltage divider ratio in pixhawk is 16, and the pin number is 15, currently set to the batt2 monitor (batt1 is ebay battery)
The Arducam 4 is a third-party version of the Raspberry Pi V2 Camera Module in possession by TJUAV.
The technical specifications for this standard can be found here.
Don't do anything here.
The See3Cam_CU135 (colloquially known as the "See3Cam") is a 13 MP camera developed by e-con Systems, featuring a 1/3.2" sensor. It supports all M10/S-mount lenses, typically used on CCTV systems, provided that the lens supports it's given sensor size or larger. Although this camera is typically shipped with a USB-C port, our camera uses the micro-USB3 (standard micro-usb but wider). It is generally recommended to always use this camera on a USB3 port to ensure maximum throughput.
General specifications can be found here.
If you are using python-opencv
, you must set resolutions before capturing frames:
Get all possible resolutions of camera in a Linux Terminal:
Set Exposure Command
The datasheets about the board are labeled as the USB-C model. Please disregard this, for our model actually uses the micro-USB3 standard.
The Lens Datasheet is for the included lens currently on the See3Cam.
Setup and troubleshooting for Bullet and Powerbeam M2 transmissions over TCP sockets.
Reference
I refer to this as the M2
I refer to this as the dish
INITIAL SETUP
First, power the M2 and Dish using PoE injectors. Generally, you want to use a battery-powered injector for the M2 and an AC powered injector for the Dish. The leftmost LED should be green. Wait for 30 seconds to see if the rest of the M2 & Dish LEDs light up. If they do, skip to the next section.
If nothing happens, it means the Bullet hasn’t connected to the Dish’s Access Point yet. First, you should check all available Wi-Fi connections. If something like TJ-AP or TJ-GS shows up, the Dish is doing its job. Otherwise, you want to access the Dish’s configuration page. On the computer that's connected to the Dish via ethernet, type 192.168.1.20 in a browser. If this doesn't work, you need to set a static IP for the Dish. On a linux computer, use the following command:
sudo ifconfig eth0 192.168.1.7 netmask 255.255.255.0
Click on Properties, then click Use the following IP Address.
Set the IP address to 192.168.1.7 or 192.168.1.x where x is any number except for 20.
You should now be able to access 192.168.1.20 in a browser. If you don’t know the login, ask around. If absolutely no one in the club knows the login, you must factory reset the M2 and repeat above steps. The default login is ubnt for both user and password. Click on the Systems tab and in the bottom right, click on “Upload Configuration”. Upload the Dish configuration file from our GCS repo.
Now access the Bullet M2’s configuration in a browser. Upload the Bullet M2 configuration file from our GCS repo.
ONCE ALL LEDS ARE LIT
You can now attempt python socket connections. Find the IP address you statically assigned to the Dish (most likely 192.168.1.7). On the Ground Station computer connected to the Dish, you must bind to yourself and wait for connections:
import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((DISH_IP,PORT))
conn,addr=s.accept()
On the flight companion computer connected to the M2, connect to the GS’s open socket:
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((DISH_IP, PORT))
You can now transmit & receive data over the air.
Not working?
Try pinging the Dish’s IP from both computers
Make sure you are connecting over the same port
Don’t attempt multiple connections over the same socket; kill both scripts and try again.
Bullet randomly disconnecting from ethernet? Run this shell script in the background:
This is a schematic of the wiring. Check the link below for the most updated version and read ahead for an explanation of the components.
Important Information:
The Kill Switch kills the power to both of the servos and (unfortunately) the telemetry module. It was necessary in the case that the SPARTA would "go rogue" and make it impossible to stop until the battery would die.
The Telemetry module draws power from the Servo Rail instead of the Pixhawk because we thought that our GPS issues may have been due to the power draw from the Telemetry module. In hindsight, maybe they were to some extent, but we don't know for certain. A consequence of this, however, is that when the servos draw too much power, we have telemetry brownouts. Solution? Bigger battery (won't fit in the current design so we'll make use without it).
The BEC heats up like crazy so don't touch it. I swear I could make boiled eggs with it.
This is the current (as of 3/14/2021) drop mechanism for SPARTA (and hopefully future UGVs too). For a detailed view of the inner workings, check the CAD file and play around with the animation.
Basics:
An angular servo manipulates two opposing steel bars in a linear fashion.
These bars, when in the closed position, stick into the hole of the sled tip seen in .
This tip is held in by the frictional forces of the pin (also seen in ).
The tip also holds the parachute strings.
When the UGV touches the ground, the sled will swing backward when it starts driving, so the pin will then be pushed out of the hole and SPARTA will ditch its parachute (otherwise, the high winds at the competition will drag the UGV like Mary Poppins and her umbrella)
This mechanism box will be mounted directly onto the wing spars.
Testing: So far, the pin has a 100% success rate at holding the parachute under normal conditions, a 100% success rate at popping out on a relatively even surface (grass testing needed), and the box has a 100% success rate for holding and dropping the UGV.
Link to the holy grail of UGVs (images & videos):
On a windows computer, go to Start Menu > Control Panel > Network and Sharing Center or Network and Internet > Network and Sharing Center. Click on Change Adapter Settings in the left panel. A list of connections will be displayed. Right click on the Ethernet connection with the description “Unidentified Network”. Click on Properties, then find Internet Protocol Version 4 (TCP/IPv4) in the scrolling menu. Should look like this:
Servo Powered Autonomous Rough Terrain Automobile
This is SPARTA (as of 3/14/2021), a heavy, 3D-printed Unmanned Ground Vehicle and dropping mechanism. If you desire a more in-depth view of the design, check out the CAD latest CAD file (make sure you turn the visibility on for the correct parts).
Design Rationale:
Big wheels spanning the whole UGV cushion falls and make driving over rough terrain easier (it still has trouble because of how small and comparatively light it is).
Sled (and pin) in the back acts as a parachute attachment point and a stabilizer so that the inner body doesn't rotate instead of the wheels.
ABS plastic allows for non-brittle impact resistance and wear-proof parts.
Velcro permits the simple reorientation of any components while achieving a strong bond nevertheless.
Heavy-duty metallic servos provide a huge amount of torque and a strong connection point for the wheels.
Small screws provide strong connection points while allowing the simple disassembly of SPARTA.
The back wing (not shown in the picture) is an addition to the sled that prevents it from sinking into tall grass and mud by increasing the surface area.
Previous Versions: Check the old CAD files to see the progression of wheel designs, all of which ultimately failed. Or check out the Google Slideshow linked here.
The Avalon Mk.1 was TJUAV's first attempt at building a plane for AUVSI SUAS. Although the plane ultimately turned out to be too heavy/complex to feasibly construct for the competition (resulting in a switch to the Razgriz midway through the year), it was a great learning experience for the team.
The Speed Car Super Speed (SCSS) is was a four-wheeled prototype UGV which took 10 minutes to build and 50 hours to figure out how to use and debug. Much of the Mission Planner documentation and this page are a testament to the tough work of getting things to function as expected. Some key takeaways are described at the bottom of this page.
Takeaways:
4 wheels are not the move because it's not space effective, prone to bottoming out, low to the ground, and more!
The placement of the GPS in such a tight space is super important, but the location also matters. Some places at certain times just don't have a good connection. Always place the GPS away from other components and as high as possible.
The battery and the bottle are the heaviest objects and almost entirely influence the COM.
For small vehicles, grass is the main enemy. Even short grass can create a soft bed on which it is impossible to progress. Mesh wheels do not work. Compliant wheels do not work. Hard wheels do not work. See the SPARTA page to learn more about how we partially solve this.
The wiring is basically standard, so you shouldn't need to change anything between one UGV and another.
The transmitter/receiver is very strong, so you shouldn't worry about losing connection with it.
Things that interfere with GPS signals include rough terrain, buildings, anything that visually blocks your line of sight of the sky. This GPS module has peaked around 17 or 18 satellites, with 10 being the bare minimum to have the accuracy we desire.