General Project Information: Working on ReachBot and SpaceGripper
Thursday, August 26 - It's the last week of my summer program, so a lot of time was dedicated to finishing up my final poster and practicing my presentation.
ReachBot: Another busy ReachBot week. We met with Mark on Monday, and decided that we're going to try to get April tags mounted on the robot so we can do spatial tracking with a camera on the ceiling. Luckily, Steph from Marco Pavone's lab in back in town, so she's going to help us out with that stuff. I also commented our code a bit and sent it over to her.
Tony's also been doing a lot of work on the paper. It's been cool to watch the process. We're also working on some nice figures, which I'm coming to understand are as important if not more important than the writing.
Friday, August 20 - It's pretty crazy that the summer is almost over. Deadlines are definitely looming close, but hopefully everything will get done well.
ReachBot: Super busy this week trying to get experiments started. We ran into a couple of road blocks, but were able to get around or go through them. For example, the rocks were too round so the gripper couldn't grasp them well at floor height. We ended up getting a masonry saw from Home Depot and just cutting them in half. We also realized that doing a limit curve for the gripper doesn't make sense because the plastic fails before the spines. I'm not sure quite what we're going to do about that. We did get one experiment working: coordinated arm movement! It's not the smoothest or the prettiest motion, but there are two grippers attached to rocks and a robot translating between them. It's a good start.
SpaceGripper: I didn't do anything this week, but I saw Sam and Julia mount the gripper to the arm, which was really cool. Apparently the wiring I did was solid, because everything worked when they plugged it in :)
Wednesday, August 11 - I had my informal SURI presentation yesterday, which went fine. I also learned that our poster session is going to be virtual instead of in person. I am little bummed about that, but I guess it's okay. We are getting into manufacturing mode for ReachBot, trying to get everything put together and running as quickly as possible. I foresee some late nights :)
ReachBot: We got everything in CAD Monday, but there were some printing issues that slowed us down a bit. However, we have most of the grippers assembled now, and most of the shoulder joints. There is still some hardware missing for the shoulders, but it's coming together. With a couple more productive days, we might finally get this thing moving! (my realistic goal is end of week for assembled hardware) We also had a meeting with Stephanie from Marco Pavone's lab about how she can help us with modeling and simulation stuff.
Friday, August 6 - I gave a quick little presentation for the Da Vinci camp today, which was a lot of fun. They had some great questions. I wish it had been in person, but that's how it goes.
ReachBot: Tony and I got all the parts CADed up. I implemented the changes I needed for the gripper release design, and hopefully it will work well. I'm not super comfortable printing 4 copies of something I haven't printed before, but we are getting short enough on time I think it makes sense. Dane is awesome and started the print for us on the Charm Lab Objet, so that should be done by Monday. Tony also ordered all the parts we need to put the new grippers together.
Thursday, August 5 - The beginning of the week was filled by an amazing backpacking trip from Twin Lakes with the lab. It was super fun and a really great experience. The ReachBot paper deadline (and the end of my SURI program) are fast approaching, though, so back in the lab today hoping to get a lot done by the end of the week. I'm also giving a short presentation to the DaVinci program tomorrow that I have to do a little prep for.
ReachBot: The new print had a version with good tolerances (the .2mm works, but the .25mm is a bit nicer) that works enough to put it together and do some preliminary testing. Still, there are a number of things I should adjust: maximum back flex finger angle (with stop), finger to casing joint width, less lip on the catch claws, readjusting tolerances for the ObJet, ect.
Tony and I also drove to get some porous volcanic rock that's easy for the micro spines to grab. We should have enough now to set up some experiments.
Friday, July 30 - This week was more design work rather than arm fabrication because we are waiting on more FormLab resin to really get into multi-arm construction. Amar was also casting some fresh gecko adhesive this week, and was kind enough to show Allison and I all the steps in the process. We got to use the finished wedge pads to make some new thin film grippers for the basket ball and football demo. I think they will be useful for the Da Vinci tour next Friday. We are also presenting Reachbot for them, so I'll pull together some kind of demo or presentation for that. It should be good practice for my SURI presentation the following week.
The end of the quarter and the paper deadline are fast approaching, so I think things are going to pick up.
ReachBot: Before we printed 4 copies of the gripper, we decided to go through another design phase to make sure we had what we wanted. Two things came up that we wanted to look at. Frist, we want a compliant wrist on the gripper to allow for more mobility once it grasps a rock. Second, we wanted the trigger mechanism to activate with less force. I focused on the second aspect, came up with various designs which I drew up. |critical CAD I talked them over with Tony, and we settled on a pretty simple design that minimizes the modifications to the current gripper. I CADed it up, but got the tolerances wrong so am reprinting this weekend.
SpaceGripper: I crimped the pins onto the end of the wires that connect the motor board to the MCU board, so everything should work when we plug it in (in theory).
Wednesday, July 21 - Electronics are done, as far as makes sense before putting them on the bot. Looking forward to assembling more arms next week.ReachBot: I got all 8 servos hooked up and running, and integrated non-blocking control into the ReachBot master code. I was able to do that using a single function definition, which should make it easier to debug or change the code later. It is a much cleaner solution, so I switched to a similar structure for running the arms as well. The function of the code is the same. The only difference is that now there is a for loop that runs once for each arm rather than 4 separate functions that get called.
I also started looking at possible options for implementing a nicer UI. Right now you have to type in a string that looks something like this:
<[W,1,200,10000][S,3,250,5000][R,3,0,0][D,4,80,110]>not very intuitive and easy to get a number wrong. I don't know that we will get around to implementing it, as it will get busy again when we start into hardware, but it's been cool to think about and look into.
Monday, July 19 -
ReachBot: I tested the servo ports I'm planning to use, and didn't run into any weird issues. This gave me the confidence to cut and plug in the servo port wires, so now everything inside the box should be finalized. I also did some testing of the tape measure and winch motors, driving all four "arms" at once. There aren't actually arms attached yet, but all the motors are running as expected. We will also need to calibrate the speeds to match more closely, but I think that will be easier to do when we at least have pulleys on the winch motors.
Friday, July 16 - Lots of debugging this week. Tony has been super helpful. It was slow going, but we figured it out eventually.
ReachBot: I did get the electronics box assembled, with everything plugged in except the servos. I haven't done the servos because they aren't in the code yet, and we've had enough strange and unexpected bugs with the Teensy (some ports are initially set to high, causing uncontrollable motor movement when the program starts) that I am avoiding cutting any wires until I know that it will work.
Tuesday, July 13 - ReachBot is coming together. There are a lot of actuators, which means all of the hardware and all of the code has to have 4 independent copies. Hopefully, I'll get good at it with practice and it will start going faster.
ReachBot: My input parsing function integrated with the code pretty nicely, so we were able to get the structure of the code finished yesterday. Today I actually hooked up some hardware, and got one of the winch motors running as it should based off user input! I'm pretty excited about that, because it means that pretty soon we'll be in new territory rather than just redoing and improving on what's already been done. There is a bit of a snag in adding in the Tape measure motors, as the standard library doesn't support more than one at a time, but I think this library might work instead. For some reason, the reverse command is acting up, but Tony said he'll help me with that tomorrow. I'm setting a tentative goal to get the electronics box assembled by the end of the week, but if there's a major coding hang-up that might not happen.
Update: The library had too many issues, we are just driving the tape motors manually.
Friday, July 9 - With a lot of the preliminary work done, things are starting to come together and get exciting. Lab meeting today was also super interesting, there are so many cool projects going on. I will continue to wander around lab and ask people about their stuff whenever possible.
ReachBot: The electronics for a 4 arm version have arrived! The only thing we're still missing is the Teensy 4.1 MCU, which we couldn't order until today because it was out of stock. For now, we're testing code on a Teensy 4.0. Tony helped me cut out the sides of the electronics box on the laser cutter. The acrylic looks really nice. I'm hoping to et most of the wiring done before putting the walls on, just so it's easier to reach, but I think it will come together pretty well.
We also started reworking the code today, and it looks like it's going to take longer than we thought it would. Right now I'm working on taking in input for multiple arm commands at once, and have a lot of debugging work to do. I don't really understand how Arduino handles strings and array and such, and will have to decide how deep I want to go down that rabbit hole. Hopefully I can find some code online that is adaptable for our use case.
Wednesday, July 7 - Things were a little slow around the long weekend, but picking back up now. I got to use and improve my soldering skills a bit, and learned a little bit about project scoping. There were a couple simple projects this week that I probably spent too much time planning when I didn't need to.
ReachBot: We are ready to get to the exciting part! After successful test of the first arm, we made a list of all the electronics we need to the other 3 and went ahead and ordered those. I also got a CAD model for the electronics box done. I was originally putting a lot of time into the design, to try and get it to interface with the existing platform. However, Tony told me that it wasn't really necessary because that platform might change anyway. Once I really understood what he was looking for, pulling a simple model together was pretty trivial. I'll check the plug hole sizes when all the parts arrive (hopefully tomorrow).
SpaceGripper: Parts came in for the motor controller, and I spent most of today soldering that up. I originally was planning of routing everything via solder traces, so I did a lot of circuit planning to minimize crossed traces. However, solder traces are slow, messy, and take a lot of solder so I decided to go with jumper wires instead. They are still connected to the ports with solder traces, but way less than before. the original plan also meant I got good practice making traces, which was helpful. I'm really happy with how neat and clean the board turned out. My soldering skills are definitely improving.
Thursday, July 1 - It's been great to work with Tony the past couple of days. Integrating the encoder and programming I have done so far is really important and exciting. Also hard.
ReachBot: I worked on calibrating the encoder for the winch motor yesterday. I also somehow shorted out the motor, which is unfortunate, but Tony ordered some more. We also took the busted motor apart this morning. Really cool stuff.
On the programming side, I found out that the safestring Arduino library we've been using isn't compatible with the Teensy microcontroller we hope to switch to. We'll have to convert to using the built in Teensy functions. Hopefully it all converts nicely. I also found out that the non-blocking servo library doesn't integrate quite as nicely as I thought it would.
However, we were able to get the servo working well enough to test out some of the modifications Tony's been working on to reduce slop in the shoulder joint, and it went really well! I CADed up a couple different version of the track for the tape, and Sam's going to help me print them. They might not be significantly different, but I tried to add some features that help reduce twisting of the tape measure when extended. This twisting adds some slop, and also precedes buckling.
Update: The new tape guides were helpful. We actually found that having the tape measure closer to the ground reduces the slop inherent in the bending of the tape itself because the twisting is stopped when it hits the floor. With the chosen guide, there is about 10° of motor motion when the shoulder changes direction before there is any movement.
Tuesday, June 29 - I've been doing a lot of electronics and circuitry in the past couple of days. I've taken over Wilson's desk for the time being, and I'm starting to accumulate microcontrollers, power supplies, jumper wires, and bread boards. Slowly getting to use more tools, as Sam set me up at the soldering station yesterday and Tony gave me a quick FormLab tutorial today.
ReachBot : I wired up a breadboard with a Teensy 4.0 and downloaded the extensions I need to use it with the Arduino software. I also hooked up a motor and controller identical to the one ReachBot uses for the winch, to test out the encoder. I have a simple program working, but need to double check that the encoder library I'm using is non-blocking. I have a feeling it is, just based on the way the functions are set up.
Tony and I also made a list of all the electronics that we'll need for the 4-armed version so I can start designing an electronics box.
SpaceGripper: We got electronics! I wired a couple buttons and all the pin connectors for the Arduino to the shield, plus a mount for the motor controller. We decided that the encoders should go on a separate panel. I'm planning to start hooking the motor controller ports up to the Arduino ports tomorrow. Hopefully I can avoid creating a giant rat's nest of wires :)
Thursday, June 24 - I have gotten all the various safety training and meetings done. This week was a lot of getting caught up with ReachBot, and a little bit on an introduction to the SpaceGripper with Sam and Julia as well. I'm excited to get more involved as the summer goes on.
ReachBot: Tony shared the CAD files with me, and I created an assembly in On Shape to give a better visual of how all the pieces fit. It just has one arm at this point, but I think it gives a decent idea of how it all fits. It was also my first On Shape project, so it was really good to get practice with the software.
SpaceGripper : Had a quick meeting with Mark, Julia, and Sam on Wednesday. It looks like I'll get to do some soldering for them, and maybe some finger assembly as well. Sam showed me the system I'll be rebuilding, and also shared the code. I went through that with him, and a bit on my own, so I think I understand it now (more or less). It's not a super complicated circuit, jut a lot of connecting pins on the motor controller to the Arduino. We also talked about the separate power sources and why they are necessary.
The code is also pretty understandable. Having well-named variables is really nice.
Tuesday, June 22 - Lots of code today. I started by going through the Instructable tutorial on non-blocking programing in Arduino that Tony recommended (Instructables Link). This was really helpful in understanding the existing ReachBot code, which I looked at a bit on my own and Tony also walked me through. We talked a lot about the different types of motors used on ReachBot, and how each needs a slightly different control scheme. Right now, there is a non-blocking implimentation for the tape-measure motor and the retracting cable, but not the servos. I found a library online that I think might be useful for programming the servos in a non-blocking way (Github Link).
To test it and figure out how it works, I'm setting up a simple test platform with an extra Arduino that was lying around the lab. Right now, I have one servo and one LED hooked up.
Update: The library seems to work pretty well, servo control is non-blocking. My simple program which runs the servo and a blinking LED has loop time of about 0.35mS without the servo and 0.47mS including servo motion.
Update: We had some problems integrating the library, so didn't end up using it.
Monday, June 21 - Today was my first time in the lab, and Tony gave me a quick tour. He also introduced me to the ReachBot project, and we laid out a plan for this week to help me get up to date on the progress so far. I also attended the SURI kickoff meeting and got set up on the Wiki. After finishing up my STARS safety training, I reinstalled the Arduino software so I can start looking at the ReachBot code tomorrow.