Log
Entries are inverted! So, most recent entries are at the top!
Entries are inverted! So, most recent entries are at the top!
Week 5 Spring 2018
EECS Progress:
Met 3 times:
Mechanical meeting: April 26 2018
Networking meeting: April 26 2018
Microcontroller meeting: April 29 2018
Mark pointed out that our self-balancing tread design would need a couple more sensors on the front and the back of the chassis in order for the robot to detect stairs that go downward. This is quite a challenge to implement into the current design, so we are taking a break from the current self-balancing approach and thinking of possible new solutions.
Redesigned chassis after building tread formations. The orange will be 3D printed, and the blue slabs are acrylic laser cut. We decided the 3D print the sides + L brackets so we have fewer moving parts (otherwise, we would have slabs with many L brackets to hold things together.
Continued CAD for the chassis and got to chat with Jesse, the student org's previous president! Jesse gave great tips on where to get help, like PIB, ECE Makerspace, and reaching out to him.
Still trying to debug PID self-balancing. Tetrix parts should be arriving by next meeting, so hopefully we can get the CAD worked out with those parts available to us for measurement. We have a webcam now, so we'll try to play with that soon too :D
CAD sketch of chassis in OnShape
Started the CAD for the chassis! We are also doing layout for the electronics. Dissecting the javascript joystick application we found so we can apply it to our website. Constructed the self-balancing robot prototype for testing with the Arduino code. Something seems buggy with the wiring or code... Our MPU 6050 is also tilted way too much. Continued CAD and designing the dimensions/connections.
Drawings for iteration 3 chassis design
Over the break, we cleaned up the Javascript (server and browser) to have all its constants in one file. Before, it was difficult to keep track of which variables enumerated to what and which signals get mapped to which functions on the robot. Now, with all our constants in the browser's script file, both the browser and the server can have access to the constants. We renamed the constants to be more distinguished and understandable. Using the Map data structure also allowed us to directly use the .has() method instead of checking for whether the signal is within bounds. Now, the code properly shuttles the key up and down signals from the browser to the robot. However, the servos are still a bit glitchy and is still not very user friendly.
We also began building a self-balancing robot with the materials we could find. The MPU 6050 chip works with the library <Insert library link> so that's promising. There is also code for self-balancing online <Insert link>.
We are brainstorming the UI designs for the webpage, and a new member, Thomas, will be helping with coding.
Networking of this project looks something like this?
Mechanics: We decided to use Tetrix bc they have treads + a pretty good motor.
EECS: Started experimenting with MPU 6050 chip. Will look into how to hook up the Tetrix motor encoder to Arduino. Will continue research over winter break.
Networking: Decided to clean up networking code with exporting enums. ran into some trouble exporting and importing between client-side and server-side JS. Still working on this.
Today we realized that we could connect the DragonBoard directly to the ResNet wifi in the residential areas, eliminating the need for a router. Upon testing our old design, we realized that both the wheels and the robot chassis were too small for stair climbing; as our visiting mechanical engineer so eloquently put it: "It's like a puppy trying to climb stairs."
The good news was that we finalized the design of the robot to be a self-balancing robot with treads. The robot design may be found below (ignore the blue wheel). The robot will have two modes: moving and stair-climbing. Each side of the robot will have two sets of treads, with one set only rotated into the extended position during the stair climbing mode. The reason for having two sets of treads on each side of the robot was two fold. Firstly, the total side length of the robot needed to be at least 700mm to ensure smooth climbing of stairs. Such a side length would go against our design philosophy of a small, compact home robot. Having the fold-in set of treads allowed for a smaller robot. Secondly, we needed a mechanism for the robot to transfer from its stair climbing mode, where it lays flat on the ground, back to its self-balancing mode.
With the design finalized, we were finally able to put together a shopping list for parts . We plan to finalize the shopping list with the specifications of parts by Thanksgiving and begin work on the robot once the parts arrive.
Today, we tried looking for ethernet ports to connect our router, but had no luck. Geisel 518 has no ports. Geisel 1041 has 12 ports, but none work with our router. Tell ITS to look at those ports. We also tried some in the PC group study, but none worked (the connection light didn't come up). Will try connecting directly to UCSD-Protected or ask Resnet to make an exception for our router.
As for the design, we scraped the arm idea because we realized that the robot will need arms longer than the robot in order to pull itself up. Instead, we thought about using spoked wheels and having the robot drive up. Another idea was to make passive transforming wheels that can be controlled with a second rotatable spoke (see left whiteboard drawing that has some red in it).
Found motors and encoders to buy.
Whiteboard drawings for Nov 11, 2017. We realized that the arm design won't work bc the arm would need to be longer than the height of the robot (see lower right of the board). Unless we do make the arm that long, we could try doing a self balancing robot that has active transforming wheels (see left wheel design).
Today we thought about the new mechanical design for MeTwo because the current iteration seems to have some incapabilities, such as driving smoothly.
Because of some technical limitations with ethernet port availability, we couldn't work on code. We did, however, do a lot of good brainstorming and came up with a viable and fun design to do for our next iteration.
Some ideas we had were:
We decided on:
MeTwo is coming back! We have some new team members, and we made some design decisions during this meeting.
Robot code is cleaned up. We are trying to figure out how to use OpenCV to stream webcam data. Amer can bring a GoPro for us to test next meeting. Stair-climbing redesign is in process. Hardware and Robot-driving code algorithm teams are working together. Will need to look into how to read IR sensors.
By now, we have our second iteration of the MeTwo robot with a self-made chassis that is designed to be able to climb stairs. This version is run by a Dragonboard, which runs a linux system and can run C++ programs as a client to an eternal server running with nginx and nodejs. A browser can be connected on the local network, which makes requests to the server, which then tells the robot what to do. As seen in the latest video update, there are still mechanical design upgrades and webcam integration in order to make it a practical robot. If we were to continue working on the robot, we would like to focus on making it more robust and more easily connected to the network. This quarter has been an interesting journey, as we have continuously collected interested members to provide this hands-on opportunity to as many as possible. Looking back from what we have started with, it is quite amazing to see how far we've come. Many thanks to the team, for their dedication and enthusiasm for the project. It could not have been more fun without everyone!
$ sudo g++ pca9685.cxx -lupm-pca9685
$ ./a.out
terminate called after throwing an instance of 'std::invalid_argument'
what(): PCA9685: mraa_i2c_init() failed
Aborted
$ sudo ./a.out
terminate called after throwing an instance of 'std::runtime_error'
what(): writeByte: mraa_i2c_write_byte_data() failed
Springy metal spokes idea. The metal will tuck under the next spoke and because it is springy will allow stair climbing still.
Below: Oscilloscope reading i2c output in series with the PWM chip!
Here's our bot as of now. Looks pretty cool with custom parts!
Snapshot of meeting :D Today we also welcomed two new members!
Dragonboard + audio mezz is now outputting 5V :D
Had an ambitious plan for today, but many things didn't arrive/were closed so we weren't able to get the Dragonboard robot working. Here are some things we did accomplish:
Stair-climbing ideas, Chassis component layout, UI design
It's aliveee!!
Setting up Raspberry Pi with projector LOL. And wiring DC motors.
Electronic + Hardware design.
Software (server mostly)
Kaj is our MechE guy. Daniel will look into the electronics!