PDA

View Full Version : Not wanting to re-invent the wheel - or foot in this case...



Brooks
05-23-2016, 08:24 PM
I have a TR hexapod, and it's making me cringe to think that the foot movements are open-loop in the sense (pardon the pun!) that it doesn't know if a foot landed on the ground, landed on a block, or dropped into a hole.

I'm thinking of replacing each foot pad with a limited-movement foot combined with an opto-sensor, giving me feedback regarding if and when the foot has touched down, and indirectly if the foot has brushed by something.

I'm thinking I would then combine this data as additional input to the pose engine, letting the engine generate an "event" if things got off onto the wrong foot (I can't resist these!).

I don't see anything like this on the Internet or here, and thought I'd ask before I got out the tools...

_ADAM_
05-23-2016, 09:24 PM
With Dynamixels it should be possible to work it out in software by making clever use of the control table elements in conjunction with an IMU. I've just started thinking about this stuff so I haven't worked it out yet, but I will, eventually.

Adding more sensors isn't a bad thing though.

Of course there will always be limits to what terrain the bot can traverse. One obvious challenge will be getting to the bot to know when it should try to climb vs when it should find another path. Some sort of vision will likely be needed on top of the gait-based sensing.

Just some thoughts...

Xevel
05-23-2016, 10:01 PM
There have been many takes on terrain adaptation, you might want to search this term.
Can't remember if any actually ended up useable and durable though.
An optoelectronic solution might give interesting results.

Zenta
05-24-2016, 01:30 PM
Hi,

Interesting topic, I assume you are thinking of terrain adaptation. The hexapods by Matt Denton demonstrates the use of only a foot-switch as a sensor. I believe additional sensors, like a distance sensor could be useful to see if the leg soon will or not hit anything, but not 100% reliable without a physical foot-sensor/switch. Sadly his work isn't open source.

Currently I'm working on TA++ too. So far using only load-readings from the AX-18 femur servos as sensor input. It's not very reliable and it require a relative slow speed. I hope to soon be able to test it on a MX-based hex. You can see a short test-demo in my last Instagram video.:D

Brooks
05-25-2016, 05:59 AM
Hi Zenta! Terrain adaptation is exactly what I'm thinking about. As well as doing a good job of integrating sensor inputs into our movement engines. Right now my forward path is focused on feet: foot sensors, forward-looking IR emitter/sensors near the foot tip for sensing near collisions, and perhaps a modification of the gait to angle the foot during forward in-air movement to better position the foot sensors.

Longer term I can see the need for both optical and physical-contact sensors surrounding the hexapod.

Xevel made a reference to durability that caught my attention, so I'm thinking of tiny bearings of the type used widely in RC Helicopters.

And of course there's the weight issue. There's no point in having feet with magnificent sensor suites if I can't get them off the ground!

KurtEck
05-25-2016, 07:57 AM
I will second that this sounds very interesting. Kåre, I enjoyed your video, but it also semi-confirmed to me that having a sensor (or force detection) going down is only part of the problem, you also need something looking forward in the direction the robot is walking.

Example in the video, your hex's foot runs into a book when it is moving forward. In your case it did not stop the bot as the book moved, but if the book was tied down it might have been a problem. Again depending on which leg and direction, you might be able to detect this with checking load on some of the servos.

Also you might take a look at the thread by Renee about creating FSR feet (http://forums.trossenrobotics.com/showthread.php?7690-DIY-FSR-Feet-for-the-HR-OS1&highlight=foot+sensor) for the HROS1.

Zenta
05-28-2016, 01:14 PM
I will second that this sounds very interesting. Kåre, I enjoyed your video, but it also semi-confirmed to me that having a sensor (or force detection) going down is only part of the problem, you also need something looking forward in the direction the robot is walking.

Example in the video, your hex's foot runs into a book when it is moving forward. In your case it did not stop the bot as the book moved, but if the book was tied down it might have been a problem. Again depending on which leg and direction, you might be able to detect this with checking load on some of the servos.


I agree. Some sort of sensor for horizontal obstacles is necessary to avoid this. Take a look at Matt Denton's demo of terrain adaptation simulation for his Mantis hexapod (https://www.facebook.com/mantisrobot/videos/10152705803980444/). You can also find some info in his build diary blog (http://mantisrobot.blogspot.no/). One solution for a small-scale hexapod is to use some sort of switch-plates that cover the tibia.

Got to go, dinner..

Brooks
05-28-2016, 07:23 PM
As a side comment, I've noticed that as the hexapod moves along it is rotating each foot while it's in contact with the terrain and has weight on the foot. Lots of friction!

My current thinking is a rubber foot on a freely rotate-able shaft, spring-loaded downward with about 3mm of up/down freedom. I'll use a black-painted retaining collar at the top of the shaft that, as it moves vertically, moves into/out-of a light-path between an IR emitter and sensor.

I can mount all this onto a piece of aluminum channel, but mounting the horizontally oriented channel to the vertically oriented legs means I need really small angle-brackets, and these are eluding me. Maybe I should look for a piece of 1-1/4" aluminum square tube stock. Or have something milled... Never mind! I found 1.25" Aluminum square tubing on Amazon

And then I get to tackle the firmware! And per-foot optical collision sensors. And more firmware! And all this is looking like 16 ADC channels. Maybe add a Pro for the extra ADCs and its gyros? Just thinking aloud (and interested in input)...

-- Brooks

Brooks
06-07-2016, 12:15 PM
Latest update: I've found someone on Etsy who can make the frames for the foot assemblies from aluminum using CNC gear. In the meantime I've hand-made one from 1-1/4" square aluminum tube stock so I can start testing once the rest of the parts show up.

I was yakking with a co-worker about this and he reminded me that the system response-time would have to be in the microseconds using the gaits that come standard with TR's firmware. Right now I'm thinking of creating a modified gait that stays high[er] as the foot returns forward, with brief sensing pauses above ground level, and when the foot should first be in contact. It's all tricky...

I'm also thinking about placing Arduino Trinkets out on the legs to simplify wiring when multiple sensors are on each foot.

And I'm thinking of an 8-channel UART shield to multiplex the legs. I need more ports!

-- Brooks

KurtEck
06-07-2016, 12:30 PM
Other option would be to do like Renee did and I played with on the FSR feet for HROS1. http://forums.trossenrobotics.com/showthread.php?7690-DIY-FSR-Feet-for-the-HR-OS1&highlight=DynamixelDevice

That is, you use something like Trinket Pro (or Teensy 3...).

For example I created little hats for these chips, with Neopixel or FSR connections, with Bioloid connectors. The device emulates a Servo, so you simply query by it's id and get information, like current FSR value...

I have code up on github (https://github.com/KurtE/DynamixelDevice) showing this and likewise board designs up in my Teensy breakout boards (https://github.com/KurtE/Teensy3.1-Breakout-Boards) project.

Brooks
06-08-2016, 06:27 AM
I did look at the FSRs, and was seriously considering them at one point. The only thing stopping me is my desire for a rotating foot. Watching it walk across a smooth surface, rotating each foot with almost two pounds of static weight on it, is painful!

Servo emulation is very interesting! Especially considering there's a servo I could chain to on each foot, with 12v power, just a few inches away. It certainly calls to my love of tidy wiring solutions! Hmmm....

Brooks
06-16-2016, 10:28 PM
Latest status: I'm having basic replacement feet supports CNC milled from aluminum. Once I receive them I'll manually attach IR emitters and sensors to the top of each one, and wire them to an Arduino Trinket Pro mounted next to the foot assembly on each leg. I will want to put more sensors on each foot (like FLIR!), so I want some (expandable) processing power at the end of each foot. And I can just run FDTI down each leg, instead of having a ton of sensor wires running all over the place.

I'll have serial data to/from each leg, plus it's maddening not having a serial port I can use for debugging, so I'm adding an Arduino Mega board with a home-brewed dual quad-UART (QUART) shield as a custom multiplexer/router. I'll have 8 more uarts on the body (from the shield). plus the Mega's own uarts.

I've chosen a QUART that has a 16-byte data FIFO and can provide FIFO threshold interrupts, so I can get 10 or more bytes per interrupt. I'll be able to run pretty high data rates up the legs, which also means my sensor response times will be just a few ms, which is very good.

I've also decided to ditch the power switch entirely, replacing it with a power MosFet and Off/On push buttons. This way I can get inactivity and low-voltage shutdowns.

This is fun!