Automated Snitch

2017-9-5 (Andrew Zhang)

First Post!

2017-9-15 (Andrew Zhang)

Ultrasonic rangefinder works!

2017-9-21 (Andrew Zhang)

Finished sourcing all the parts!

Total costs so far: $371 / $600

Programming and other:

Radio and Receiver for testing quad (personal)

LiPo battery charger (personal)

Quadcopter:

Turnigy SK450 Quad Copter Powered By Multistar. A Plug And Fly Quadcopter Set + 2 batteries ($140)

Arduino Pro-Mini (personal)

CV Camera:

ELP 180 degree fisheye Raspberry Pi 1080P ($54 x 2 = $110)

Computer

Raspberry Pi 3 for manufacturing (personal) + sd card ($8)

Raspberry Pi 3 for testing ($35) + sd card ($8) + 2 backup sd cards (personal)

Snitch

USB micro magnetic quick-release connector 2-pack ($15)

Adafruit USB Micro-B Breakout Board ($5)

2x TTL to RS485 ($5x2 = $10)

PokeBall (7cm and 10cm) ($10)

Arduino Pro Mini (personal)

Ultrasonic Rangefinder (personal)

9-axis imu + backup ($15 x 2 = $30)

Thank you so much Richard from Hobbyking for helping me select parts.

[08:01:08] PS Richard: Hello, Andrew. Good day.
[08:01:17] Andrew Zhang: Hello
[08:01:40] Andrew Zhang: Oh I think you were the one who responded to my email
[08:02:26] PS Richard: I'm not sure about that. But I believe you have an inquiry regarding motors. 
[08:02:47] Andrew Zhang: yes I am looking for motors that are compatible with this frame
[08:02:47] Andrew Zhang: https://hobbyking.com/en_us/extra-large-epp-quadcopter-frame-450mm-835mm-total-width.html
[08:03:08] Andrew Zhang: ideally in the form of a kit such as this one: https://hobbyking.com/en_us/scratch-dent-ldpower-d1200-multicopter-power-system-4114-320kv-15x5-5-4-pack.html
[08:03:11] Andrew Zhang: but obviously in stock
[08:05:29] PS Richard: I can definitely help you with that. But before that, I'll also address your other questions above.
[08:05:40] Andrew Zhang: thanks
[08:07:41] PS Richard: "It describes this: 4 x 2208 1200KV or 2212 1000KV brushless motor but from my understanding I just need to buy a motor with the screwholes in the right place?" - Yes, you're correct. You'll also need to consider the motor's power, and the recommendations are good enough for it.
[08:08:30] Andrew Zhang: so I understand "1200kV" is rotations per minute per volt
[08:08:47] Andrew Zhang: but I don't understand the "2208" and "2212" parts of it
[08:09:33] Andrew Zhang: so whatever it is needs to have a 8-10" propeller and a speed faster than 1000kV
[08:09:47] PS Richard: "Not sure what "2208" and "2212" mean so if you can clarify that as well" - The first set of numbers, the "22xx", is usually the motor's diameter. The second set, "xx08" and "xx12", depends on every manufacturer. Sometimes, it can be the length, or stator count, or anything else. But usually, only the first set of numbers are being checked.
[08:10:12] Andrew Zhang: so that would also mean the screw holes
[08:11:33] PS Richard: "but I'm not sure what "350 size" means" - That is the distance between the two furthest motors, in millimeters. Same goes for 250-sized, 450-sized, etc.
[08:12:00] Andrew Zhang: so 350mm
[08:12:06] PS Richard: Correct.
[08:12:18] Andrew Zhang: okay thanks that means this frame would work
[08:12:24] Andrew Zhang: I suppose now I should ask "where can I find kits such as the motor kits I linked above, but not in the scratch and dent area where they're all out of stock"
[08:12:38] Andrew Zhang: or if you could recommend a kit
[08:14:26] PS Richard: That's where will we go right now. Let me check for possible options. One moment please.
[08:18:33] PS Richard: Our kits mostly consist of the frame itself, and hardwares only. But if you want something that needs a little assembly, you can go for a PNF, like this one: https://hobbyking.com/en_us/turnigy-sk450-quad-copter-powered-by-multistar-a-plug-and-fly-quadcopter-set-pnf.html
[08:18:55] PS Richard: It's got all the electronics required, except for the battery and a radio system.
[08:19:36] Andrew Zhang: thanks gimme a sec to check it out
[08:19:59] PS Richard: Sure.
[08:20:13] Andrew Zhang: "4 x 0845 inch propellers 2xCW 2xCCW
4 x 1045 inch propellers 2xCW 2xCCW"
[08:20:23] Andrew Zhang: so does that mean 1 set of 8 inch and 1 set of 10 inch?
[08:20:38] PS Richard: Yes, absolutely.
[08:20:53] Andrew Zhang: and it looks like this one motor is "Multistar 2213 935kv"
[08:21:08] Andrew Zhang: so if I wanted to I could transplant all the electronics onto the foam frame I linked earlier?
[08:21:46] Andrew Zhang: are there any other sets that you could recommend? This one is great, but I just want to see the next best thing to make sure.
[08:22:08] Andrew Zhang: *I can transplant the motors, and then the escs and electronics can always be ziptied in
[08:25:00] PS Richard: Yes, you can. But at the moment, this is the only available PNF multirotor that we have. 
[08:25:15] Andrew Zhang: PNF?
[08:25:32] Andrew Zhang: oh plug and fly
[08:25:50] Andrew Zhang: okay thanks
[08:26:07] PS Richard: Correct.
[08:26:11] Andrew Zhang: could I get your full name or something so I can ask for you again?
[08:26:24] Andrew Zhang: you have given me such great help
[08:26:27] Andrew Zhang: thank you
[08:26:36] Andrew Zhang: assuming you're available of course
[08:28:08] PS Richard: I wish I could, but we are not allowed to give any of our personal details. You can just contact us the same time, and I'll be here. If in case that I'm not available, my colleagues will assist you. We are open 24/7.

2017-9-25 (Andrew Zhang)

First assembly of sensor pod, developed quick-release mechanism, demonstrated TTL communication at 9600 baud to arduino over quick-release mechanism

 

2017-9-26 (Andrew Zhang)

Demonstrated transferring of arbitrary string over UDP using python

(i.e. communicate over wifi to raspberry pi)

ToDo: figure out how to get a consistent IP address, or communicate the IP address so you don't need to hardcode the IP address

2017-9-27 (Andrew Zhang)

Flashed and ran Ubuntu preinstalled with ROS onto RPi3, checked my email from it.
Installed pyserial, demonstrated communication between python program running on RPi3 and arduino. Not sure how I'm going to get the arduino to connect to the same COM port every time yet.
 
Most up-to-date instructions will be on Trello, but here's what we got right now:
Guide to Installing Software and Getting Started

things numbered 0) are tutorials (can ignore)

1) Noob Stuff: (1 hour)
============================================

Needed:
-Raspberry Pi 3
-16GB+ SD card
-Keyboard, mouse, and HDMI monitor

1) Download "Raspberry Pi 3 Ubuntu with ROS" from this page (note: it is the second item) http://www.german-robot.com/2016/05/26/raspberry-pi-sd-card-image/

2) Download "WIN32 Disk Imager 1.0" and burn the image to your SD card.

3) Plug SD card into RPi and attach monitor, keyboard, mouse, and turn on. (username: pi password: raspberry)

4) Change Keyboard to US
a) Go to System > Preferences > Hardware > Keyboard > Layouts
b) Add > By Country > United States, English(US) > Add
c) English (US) > Move Up

5) Connect to Internet

0) Terminal on ubuntu mate
============================================

1) Open terminal (Applications > System Tools > MATE Terminal)

2) Terminal stuff (5 minutes)
===========================================

1) $ sudo apt-get update (password is raspberry)

1) $ pip install --upgrade pip
2) $ python -m pip install pyserial

1) $ sudo apt-get install arduino

2) Download github repository (for checkpoint)
=======================
$ cd $HOME
$ git clone https://github.com/18-500Snitch/checkpoint

3) Test ROS (1 minute) >> NOT USING FOR CHECKPOINT
===========================================

1) $ cd catkin_ws
2) $ catkin_make
3) ensure nothing blows up

0) ROS for noobs (5 hours) >> NOT USING FOR CHECKPOINT
============================================
http://wiki.ros.org/ROS/Tutorials

1) Installing and Configuring Your ROS Environment
skip (it's already done)
2) Navigating the ROS Filesystem
Recommend but not necessary
3) Creating a ROS Package
Recommend but not necessary
4) Building a ROS Package
Recommend but not necessary
5) Understanding ROS Nodes
Recommend but not necessary
6) Understanding ROS Topics
Recommend but not necessary
7) This tutorial introduces ROS topics as well as using the rostopic and rqt_plot commandline tools.
Recommend but not nessisary
8) Understanding ROS Services and Parameters
skip (we're not using this)
9) Using rqt_console and roslaunch
Do this tutorial
10) Using rosed to edit files in ROS
skip
11) Creating a ROS msg and srv
skip (msg is needed, but I already did it. we're not using srv)
12) Writing a Simple Publisher and Subscriber (C++)
MUST DO if using C++
13) Writing a Simple Publisher and Subscriber (Python)
MUST DO if using python
14) Examining the Simple Publisher and Subscriber
MUST DO
15) Writing a Simple Service and Client (C++)
skip (we're not using this)
16) Writing a Simple Service and Client (Python)
skip (we're not using this)
17) Examining the Simple Service and Client
skip (we're not using this)
18) Recording and playing back data
skip (might be useful for debugging, but probably not)
19) Getting started with roswtf
skip (might be useful for debugging, but probably not)
20) Navigating the ROS wiki
skip
21) Where Next?
skip

2017-9-29 (Andrew Zhang, Bobby Li)

Quad is assembled, and in the air.  Some shitty calibration, but at least it works.

We broke a set of blades, should probably get guards before attempting to fly it again. 

Bobby recommends a better flight controller.

2017-10-5 (Robert Li)

Basic single camera image thresholding and segmentation finished!

Right now it can only track a single color with a single camera, but extending to multiple colors is not too difficult. In addition, I have found leads on how to synchronize usb camera frames, and will be testing methods soon.

 

 

2017-10-5 (Andrew Zhang)

Completed arduino nano PWM interface that allows RPi3 (or normal computer) to control the flight controller, including mapping.

 

#define SIGNED_GAIN 2.52 // nominally 2.52
#define SIGNED_OFFSET 93
#define UNSIGNED_GAIN 1.30 // nominally 1.30
#define UNSIGNED_OFFSET 59

 

2017-10-6 (Andrew Zhang)

RPLidar A2 provided by FRC.
Installed on drone.  Ran demo program, not sure how SDK works yet.
 
Debating abandoning the snitch idea, having people attempt to grab a quick-disconnect ball on a 1 meter long stick and the blades of the quadcopter need to be covered for safety reasons is proving to add a lot of meche work and is not worth it. Having people tackle a drone is not a good idea either.
 
CV is most powerful component if we can get it done, but also most unreliable component.  Must pivot in a way that does not require CV to be completed.  RPLidar will be a suitable replacement.

2017-10-8 (Andrew Zhang)

RPLidar: works, relies on a highly modified version of a cpp demo file, also communicates reliably to the relevant arduino node

Arduino/Python communication: can get rangefinder result, and can output pwm and control the quadcopter based on ROS messages

Control: implemented, not tested

ROS: abandoned ROS, implemented a very similar, but simpler framework, integrated everything

Remaining: remaining wiring, mounting things, and figure out remaining control

2017-10-12 Weekly update

Weekly Accomplishments

Bobby

A major component of multi camera vision is the requirement that the images from the cameras are matching in the time domain. What Robert worked on and finished this week was a library to sync frames from multiple usb cameras as close as possible. With this method, two usb cameras had at most a 10ms difference in frames when running at 30fps.

Andrew

The preliminary wiring of the quadcopter, rplidar, raspberry pi, and arduino was finished by Andrew. In addition, the code for reading data from the rplidar and controlling the quadcopter was finished. Currently, due to the fact that ros is fairly heavy tool for our system, Andrew wrote a simple system for organizing the reading and writing of data.

Nick

Updated System Diagram after some changes to the design had been made. Added communication protocols to the system diagram. Organized the Google Drive. It was decided that we would not use ROS for the mid-semester demo, but rather, would use the simpler interface Andrew wrote. As such, Nick began reviewing the code base Andrew had made so as to be able to use it.

 

The above is the current communication diagram of the system

Our current goal is to demonstrate autonomous takeoff and landing of the quadcopter for the mid-semester demo, in addition to tracking said quadcopter with computer vision.

2017-10-26 Weekly update

Weekly Accomplishments

 

We have made improvements on the code so that the main loop runs at a high frequency. This is very important for us because we need to read data from our lidar and respond to avoid obstacles.

 

Our plan for our demo now includes a basic avoidance mode on the drone, in addition to take-off and landing. To do that, we need to wire and mount our components to the quadcopter, and then test and tune our controls.

Automated Snitch

Leave a Reply