The Way Forward?

A project log for Tote

Affordable spider robot

Radomir Dopieralski 01/29/2016 at 12:462 Comments

A lot has happened in the recent time for the hobbyist community, and I'm currently wondering where I want to take this project. Here's some random rambling on the subject, just to clear it out of my head.

  1. A Raspberry Pi Zero was released, and it's small and cheap enough to fit in Tote and provide some more advanced features, like a Python interpreter and possibly w WiFi camera. I forked #Tote Zero to explore that possibility, but it does makes things more complicated. An operating system, the need to shut it down cleanly, the need to keep it updated and properly configured, is a pain. Not to mention the booting time. Powering the Raspberry Pi is also much more involved than with Arduino -- I have to use a 2S battery, which needs a professional charger with balancing.
  2. Batteries. While it's easy to get a LiPo battery from an old cellphone or similar device, and there are lots of LiPo batteries available in shops for all those quadcopters, the technology is kinda tricky. They are not as safe as I would like, and you can damage them by over-discharging, so I need the voltage monitoring circuitry. Switching to standard NiCd or NiMH rechargeable AAA batteries seems like a good alternative. They are much heavier, but Tote can handle that. I will do some experiments in the near future.
  3. TV remote. This is the easiest and cheapest way to get remote control, so that's why I used it, but now I'm beginning to have my doubts. It turns Tote into a toy and discourages tinkering. It also requires some work if you have a different remote than mine -- you have to change all the key codes. And it's not really that great for precise control. On the other hand, bluetooth and WiFi both have some great solutions.
  4. Sensors. This is another thing that keeps Tote in the remote-controlled toy category. It needs to have more sensors by default. I have already found switches for the feet, and probably will make that standard. Unfortunately the popular and cheap distance sensors out there all require 5V to work properly, and the 3.3V versions are much more expensive, so I think I can't have them by default. Same for inertial sensors -- a good module with proper filtering simply costs too much.
  5. Micropython. I've tried multiple times to make Tote programmable in Python, and all of them turned to be sub-optimal -- either too expensive or too limiting. But there is a good chance that the ESP8266 port of Micropython will become much more usable, thanks to the Kickstarter campaign to fund its development. I'm still not sure there will be enough memory to handle everything I want, but it's certainly very exciting for me. Since the ESP8266 only has about 9 usable GPIO pins on it, and I need to control 12 servos, I would probably still keep the Arduino and offload the leg inverse kinematics calculations to it. I'm torn between this and the Pi Zero.
  6. Force feedback and compliant motion. This is a very interesting topic, and it makes the robot much more interesting, but with the current design I simply don't have enough analog pins, and their precision is also not so great. Thinking about adding some external ADC modules over I²C -- they are not very expensive. Then I would need to decide whether to measure the servo position (easy, not that useful) or the force (hacky, hard, much more interesting).
  7. Community. Right now I know about about 4 people other than me that have built a robot more or less inspired by Tote. As far as I know they do not communicate with each other and do not share experiences or ideas. I suppose I could do a lot better in this area.
  8. Open MV. I should get it in a few weeks, and I'm definitely going to try and put it on Tote or any of my other robots. But it's too expensive to be a default.


sdfgeoff wrote 03/10/2016 at 09:38 point

If you're looking for small sensors, reflective optocouplers (such as the RPR220 (my favourite) or TCRT5000) cost only a couple of cents each and can read distances on white targets up to about 30cm. I made an ible on them a while back:

I'd reccomend investigating I2C (if you haven't already) and using an external PWM driver for the servos and external ADC's for force feedback. Otherwise, I considered just using current-draw-per-leg as a way of evaluating load. An analog multiplexer is another option for getting enough ADC's.

As for #1 and 5, a good model is to keep an embedded system (Eg the arduino, a STM32, some other micro) doing the low level, high-speed processing such as leg IK and leg control and another processor for high level (eg pi zero) directional control and possibly gait-calculations.

For #2 I have an amazing solution: put the batteries in the feet. This way the robot only has to pick up one at a time so you can use heavier (eg nicad) batteries without putting much static load on the servos. My math says you can expect 2AA batteries per foot to be light enough to walk, giving you 12v at 2500mah to work with..... Try strapping an AA battery to the end of each foot and seeing what happens.

As for #7, I built a quad using a different design to tote, but definitely drew some inspiration from it. I used tin can to solder up some joints and some M3 screws (protruding out the back of the servo's) to make the whole unit a lot more rigid. 

A final thought: the thing I want to see from a small walking robot is intelligence or AI. Instead of programming it's gait manually, teach it leg IK, give it an accelerometer, punish it for large accelerations and see what happens. This is where my quad project is going.

  Are you sure? yes | no

Radomir Dopieralski wrote 03/10/2016 at 11:11 point

Thanks for your advice! It was actually so good, that I borrowed a time machine, went back in time three weeks and implemented most of it in #Tote HaD that I'm preparing for the upcoming workshops. Except for one, which I think is a very bad idea.

Putting batteries on the legs seems like a good idea initially, due to all the reasons you cited, but in fact the result is pretty bad. You a putting a large mass on a long lever on the fastest moving part of your robot. What could possibly go wrong? The inertia makes the legs move slower and the servos oscillate. Stopping the leg suddenly can even strip the plastic gears. Then you need stronger servos with metal gears, and the whole snowball effect of increasing the mass of your robot starts.

I agree that intelligence and behaviors are the interesting part of building robots. That's why I want to get the "boring" part of getting the robot to actually move out of the way.

  Are you sure? yes | no