Legacy Forum: Preserving Nearly 20 Years of Community History - A Time Capsule of Discussions, Memories, and Shared Experiences.

What to do with RN foot sensor data?

Hitec robotics including ROBONOVA humanoid, HSR-8498HB servos, MR C-3024 Controllers and RoboBasic
17 postsPage 1 of 21, 2
17 postsPage 1 of 21, 2

What to do with RN foot sensor data?

Post by NovaOne » Mon Dec 10, 2007 8:24 am

Post by NovaOne
Mon Dec 10, 2007 8:24 am

I am currently in the process of experimenting with putting foot pressure sensors on RN, however, it has become apparent, by experiment and listening to other robosavvy contributors namely i-bot, that there seems to be no form of communication fast enough (that is pre-progammed into the MRC3024). i-bot has suggested that poking values into the gyro data or adding funtions to his i2c hack :i-bot said
.....a specific device such as foot sensors, we could put the whole I2C transaction(s) into one robobasic "BYTEIN" with any maths in assembler. This is where you would save most time.

However after nearly breaking one of my gyros the other day I wondered weather it might be possible to pre-process ie normalise and sum the pressure sensor data in its analogue form using op-amps, then feed the data in to a hacked gyro board(s), or complete replacement PCB using the AD sockets for gyros#3,#4. Hence no reflashing required making it accessible to more people as just a plug and play board, that would work transparently using gyro commands.
Application at the correct times using GYROSET might be a challenge :?
I am still open minded either option, any more ideas?
I am currently in the process of experimenting with putting foot pressure sensors on RN, however, it has become apparent, by experiment and listening to other robosavvy contributors namely i-bot, that there seems to be no form of communication fast enough (that is pre-progammed into the MRC3024). i-bot has suggested that poking values into the gyro data or adding funtions to his i2c hack :i-bot said
.....a specific device such as foot sensors, we could put the whole I2C transaction(s) into one robobasic "BYTEIN" with any maths in assembler. This is where you would save most time.

However after nearly breaking one of my gyros the other day I wondered weather it might be possible to pre-process ie normalise and sum the pressure sensor data in its analogue form using op-amps, then feed the data in to a hacked gyro board(s), or complete replacement PCB using the AD sockets for gyros#3,#4. Hence no reflashing required making it accessible to more people as just a plug and play board, that would work transparently using gyro commands.
Application at the correct times using GYROSET might be a challenge :?
I am still open minded either option, any more ideas?
Last edited by NovaOne on Mon Dec 10, 2007 8:14 pm, edited 1 time in total.
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by i-Bot » Mon Dec 10, 2007 7:36 pm

Post by i-Bot
Mon Dec 10, 2007 7:36 pm

Having seen how good your foot boards are, I dare not suggest you redesign with a processor instead of the A2D. Also I think you might need the simultaneous outputs from both feet.

If you want to go this way, I would suggest to avoid analog processing, and put a PIC or AtMega168 between the feet sensors and the Gyro inputs. This could calculate the position of the centre of mass over the foot (or not !), and make a Gyro compatible output.
Having seen how good your foot boards are, I dare not suggest you redesign with a processor instead of the A2D. Also I think you might need the simultaneous outputs from both feet.

If you want to go this way, I would suggest to avoid analog processing, and put a PIC or AtMega168 between the feet sensors and the Gyro inputs. This could calculate the position of the centre of mass over the foot (or not !), and make a Gyro compatible output.
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by NovaOne » Mon Dec 10, 2007 8:00 pm

Post by NovaOne
Mon Dec 10, 2007 8:00 pm

My foot sensor designs are just prototypes for experiment, Changing them is no big deal. If I don't get satisfactory results with QTC film I will use FSR400's which will need the board layout changing anyway.

I'm glad you like the sound of preprocessing to save over stretching the RN controller. Yes, analogue processing would need a few quad opamps at least and all those adjustments pots would be a pain. How would you generate the analogue outputs to feedback into the MRC3024 using a microcontroller; high frequency PWM with filter caps?
Big question, how often would i need to read and update sensor data?

Slightly off the thread but relevant because I am integrating edge detection senors in the feet: What do you think of SFH9210 IR proxi switches (RS 497-5532) for edge detection (cost is not important, reliability is). Can you suggest any alternatives? I think it is important they have daylight cutoff filters and have a minimum range of about 1.5mm.
My foot sensor designs are just prototypes for experiment, Changing them is no big deal. If I don't get satisfactory results with QTC film I will use FSR400's which will need the board layout changing anyway.

I'm glad you like the sound of preprocessing to save over stretching the RN controller. Yes, analogue processing would need a few quad opamps at least and all those adjustments pots would be a pain. How would you generate the analogue outputs to feedback into the MRC3024 using a microcontroller; high frequency PWM with filter caps?
Big question, how often would i need to read and update sensor data?

Slightly off the thread but relevant because I am integrating edge detection senors in the feet: What do you think of SFH9210 IR proxi switches (RS 497-5532) for edge detection (cost is not important, reliability is). Can you suggest any alternatives? I think it is important they have daylight cutoff filters and have a minimum range of about 1.5mm.
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by bbrainmonkey » Mon Dec 10, 2007 9:07 pm

Post by bbrainmonkey
Mon Dec 10, 2007 9:07 pm

Is this problem due to robobasic not allowing variables, or the sensor boards being analog?
Is this problem due to robobasic not allowing variables, or the sensor boards being analog?
10 Shoot
20 Die
30 Goto 10
bbrainmonkey
Savvy Roboteer
Savvy Roboteer
Posts: 36
Joined: Thu Nov 08, 2007 3:34 am
Location: Connecticut

Post by NovaOne » Mon Dec 10, 2007 9:41 pm

Post by NovaOne
Mon Dec 10, 2007 9:41 pm

Is this problem due to robobasic not allowing variables, or the sensor boards being analog?


If RoboBasic was 1000 times faster and variables could be included in Move commands, I suppose it would still be a challenge, but possible?

calculate the position of the centre of mass over the foot (or not !), and make a Gyro compatible output.


Another advantage to pre-processing would also help differentiate between what , seems to be four states that need different responses
1. One foot on the ground, small variations in centre of mass, with a small adjustment required via gyro i/o
2. Two feet on the ground, small variations in centre of mass, with a small adjustment required via gyro i/o
3. One foot on the ground, centre of mass rapidly moves outside area of foot, requiring, a rapid fall catching maneuver eg arms out?
4. Two feet on the ground, centre of mass rapidly moves outside area of the feet requiring the robot to rapidly step, in the direction of the fall to catch the fall.
Is this problem due to robobasic not allowing variables, or the sensor boards being analog?


If RoboBasic was 1000 times faster and variables could be included in Move commands, I suppose it would still be a challenge, but possible?

calculate the position of the centre of mass over the foot (or not !), and make a Gyro compatible output.


Another advantage to pre-processing would also help differentiate between what , seems to be four states that need different responses
1. One foot on the ground, small variations in centre of mass, with a small adjustment required via gyro i/o
2. Two feet on the ground, small variations in centre of mass, with a small adjustment required via gyro i/o
3. One foot on the ground, centre of mass rapidly moves outside area of foot, requiring, a rapid fall catching maneuver eg arms out?
4. Two feet on the ground, centre of mass rapidly moves outside area of the feet requiring the robot to rapidly step, in the direction of the fall to catch the fall.
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by i-Bot » Tue Dec 11, 2007 1:38 am

Post by i-Bot
Tue Dec 11, 2007 1:38 am

Though the gyros use the AD pins they are pulses not analog. It is possible to sense the pulse from the C3024, then pulse back to simulate a Gyro.

The C3024 will pulse you every 16 millisec, for a pulse width. That will require a couple of millisec to respond. Then you can get the sensor data for the next cycle
Though the gyros use the AD pins they are pulses not analog. It is possible to sense the pulse from the C3024, then pulse back to simulate a Gyro.

The C3024 will pulse you every 16 millisec, for a pulse width. That will require a couple of millisec to respond. Then you can get the sensor data for the next cycle
i-Bot
Savvy Roboteer
Savvy Roboteer
User avatar
Posts: 1142
Joined: Wed May 17, 2006 1:00 am

Post by NovaOne » Tue Dec 11, 2007 7:49 am

Post by NovaOne
Tue Dec 11, 2007 7:49 am

Though the gyros use the AD pins they are pulses not analog. It is possible to sense the pulse from the C3024, then pulse back to simulate a Gyro.


Of course, (sorry I forgot,"Dave, my mind is going") the gyros we use are designed to plug in between the controller and a standard PWM controlled servo, changing the pulse width slightly in the direction required.

The AD7417 (and most other things on my I2C bus) operate up to 400Khz, do you think this will be fast enough if a secondary controller is used to read and process the values? ie I might try using this along with a PIC:
http://www.micromegacorp.com/umfpu-v3.html
Once I've learned how to use it, I intend to use a Parallax Propeller, to communicate with most "peripherals", I-Bot, did you say this was your intention as well, with your uOLED-96-PROP. The role of the MRC3024 would then be just a servo controller. In the longer term it would be nice to use a Gumstix as the main processor, to implement full closed loop control of the RN like JonHylands and Limor are working on with the Bioloid, As I understand it this would mean replacing the MRC3024 and starting from scratch, but thats beyond me at the moment and maybe the always will be unless they or someone posts a 500+ page step by step tutorial ) :? including Physics 101

Getting back to the thread, would you use one cog per foot or both?
Though the gyros use the AD pins they are pulses not analog. It is possible to sense the pulse from the C3024, then pulse back to simulate a Gyro.


Of course, (sorry I forgot,"Dave, my mind is going") the gyros we use are designed to plug in between the controller and a standard PWM controlled servo, changing the pulse width slightly in the direction required.

The AD7417 (and most other things on my I2C bus) operate up to 400Khz, do you think this will be fast enough if a secondary controller is used to read and process the values? ie I might try using this along with a PIC:
http://www.micromegacorp.com/umfpu-v3.html
Once I've learned how to use it, I intend to use a Parallax Propeller, to communicate with most "peripherals", I-Bot, did you say this was your intention as well, with your uOLED-96-PROP. The role of the MRC3024 would then be just a servo controller. In the longer term it would be nice to use a Gumstix as the main processor, to implement full closed loop control of the RN like JonHylands and Limor are working on with the Bioloid, As I understand it this would mean replacing the MRC3024 and starting from scratch, but thats beyond me at the moment and maybe the always will be unless they or someone posts a 500+ page step by step tutorial ) :? including Physics 101

Getting back to the thread, would you use one cog per foot or both?
Last edited by NovaOne on Wed Dec 12, 2007 7:21 am, edited 1 time in total.
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by NovaOne » Tue Dec 11, 2007 10:02 pm

Post by NovaOne
Tue Dec 11, 2007 10:02 pm

I have found this interesting paper, most of it too advanced for me, but part 3 talks about the ZMP sensor system:
http://www.gii.upv.es/download/paper-20060502160601-gbenet.pdf
figure 4 and equations (3) and (4) seem perfect ? No need to re-invent the wheel?

Plus lots and lots of other interesting ideas. If anyone else finds similar relevant papers feel free to post them in this thread...or perhaps create a wiki sections with links to the key relevant academic papers

I've been giving it some more thought and I think the using QTC or FSR would mean it is not possible to detect situations 3 and 4 i posted before ie :
3. One foot on the ground, centre of mass rapidly moves outside area of foot, requiring, a rapid fall catching maneuver eg arms out?
4. Two feet on the ground, centre of mass rapidly moves outside area of the feet requiring the robot to rapidly step, in the direction of the fall to catch the fall.


If the centre of mass is out side the foot area the robots foot sensors have already lost contact with the "ground" Therefore to detect this is would be necessary to monitor the rate of change of force, or to use additional foot edge force sensors or (potentiometer based sensing)???
I have found this interesting paper, most of it too advanced for me, but part 3 talks about the ZMP sensor system:
http://www.gii.upv.es/download/paper-20060502160601-gbenet.pdf
figure 4 and equations (3) and (4) seem perfect ? No need to re-invent the wheel?

Plus lots and lots of other interesting ideas. If anyone else finds similar relevant papers feel free to post them in this thread...or perhaps create a wiki sections with links to the key relevant academic papers

I've been giving it some more thought and I think the using QTC or FSR would mean it is not possible to detect situations 3 and 4 i posted before ie :
3. One foot on the ground, centre of mass rapidly moves outside area of foot, requiring, a rapid fall catching maneuver eg arms out?
4. Two feet on the ground, centre of mass rapidly moves outside area of the feet requiring the robot to rapidly step, in the direction of the fall to catch the fall.


If the centre of mass is out side the foot area the robots foot sensors have already lost contact with the "ground" Therefore to detect this is would be necessary to monitor the rate of change of force, or to use additional foot edge force sensors or (potentiometer based sensing)???
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by NovaOne » Sun Dec 16, 2007 5:37 pm

Post by NovaOne
Sun Dec 16, 2007 5:37 pm

After numerous efforts, I seem to be unable to create a repeatable/reliable force transducer based on QTC Film ( i-bot you were right again). So I have turned to the backup plan; Force sensing resistors (Interlink FSR402). Browsing around these are apparently quite popular, so i bought some.
:cry:
Perhaps i should have read the datasheet earlier but i've seen lots of references to bipeds with FSR's, so i foolishly assumed they were suitable for accurate measurement of force :oops: and after playing with them this afternoon, mounting them so that i get repeatable readings, looks like its is going to be more complicated than just sticking them on the base of the feet?
This explains why everyone isn't using them? Anyone used them sucessfully?

PS
This is my crude test jig I'm using, the holes allow me to place the mass "accurately" with the aid of a dowel, shown in the centre position. (There is a smooth flat plate of aluminium under the paper)

Image
After numerous efforts, I seem to be unable to create a repeatable/reliable force transducer based on QTC Film ( i-bot you were right again). So I have turned to the backup plan; Force sensing resistors (Interlink FSR402). Browsing around these are apparently quite popular, so i bought some.
:cry:
Perhaps i should have read the datasheet earlier but i've seen lots of references to bipeds with FSR's, so i foolishly assumed they were suitable for accurate measurement of force :oops: and after playing with them this afternoon, mounting them so that i get repeatable readings, looks like its is going to be more complicated than just sticking them on the base of the feet?
This explains why everyone isn't using them? Anyone used them sucessfully?

PS
This is my crude test jig I'm using, the holes allow me to place the mass "accurately" with the aid of a dowel, shown in the centre position. (There is a smooth flat plate of aluminium under the paper)

Image
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by Robo1 » Mon Dec 17, 2007 10:37 pm

Post by Robo1
Mon Dec 17, 2007 10:37 pm

Hi NovaOne

Nice to see what your upto. I have some questions and sugestions. What are wrong with the pressure sensors! As I was going to buy some it would be interesting to hear what they like and any problems your found. As to the processing, I would have one chip on each foot that took in the 4 pressure sensors and produced a X,Y coordinate of the force aswell as the pressure. I would put them through a simple filter e.g. take the average of the last 8 reading. You could then turn that into a anagloy single using a D/A convert and feed it into the control board.

As for the gumstix stuff there pritty simple after you get used to them, just like having a linux PC.


Bren
Hi NovaOne

Nice to see what your upto. I have some questions and sugestions. What are wrong with the pressure sensors! As I was going to buy some it would be interesting to hear what they like and any problems your found. As to the processing, I would have one chip on each foot that took in the 4 pressure sensors and produced a X,Y coordinate of the force aswell as the pressure. I would put them through a simple filter e.g. take the average of the last 8 reading. You could then turn that into a anagloy single using a D/A convert and feed it into the control board.

As for the gumstix stuff there pritty simple after you get used to them, just like having a linux PC.


Bren
Robo1
Savvy Roboteer
Savvy Roboteer
Posts: 501
Joined: Fri Jun 30, 2006 1:00 am
Location: UK - Bristol

Post by NovaOne » Tue Dec 18, 2007 7:35 am

Post by NovaOne
Tue Dec 18, 2007 7:35 am

Hi Bren,

What are wrong with the pressure sensors!


I have played around with strain gauges and load cells a while back, and only recently come across FSR's, expecting them to be a modern cheap equivalent, thinking i could just stick them to the base of the robots feet (assuming the walking surface was suitable) , read the data and do the calculations. As I have seen on other robots eg Bioloid.
However that is not the case, you will see what i mean if you read this data:
http://ccrma.stanford.edu/courses/250a/docs/datasheets/fsrguide.pdf

See page 8 "Start with reasonable expectations (Know your sensor)":
The FSR sensor is not a strain gauge, load cell or pressure transducer. While it can be used for dynamic
measurement, only qualitative results are generally obtainable. Force accuracy ranges from
approximately ± 5% to ± 25% depending on the consistency of the measurement and actuation system,
the repeatability tolerance held in manufacturing, and the use of part calibration.


I will persevere and just hope ± 5% is good enough. One of the most noticeable problems at the moment is drift due to what I think is the way they are mounted (ie see "Set-up a Repeatable and Reproducible Mechanical Actuation System").Maintaining a consistent force distribution by using some form of actuator pad, possibly domed in shape may solve some of my problems (QED).. Also:
If force is applied over an area which includes the adhesive, the resulting response characteristic will be drastically altered.) In an extreme case (e.g., a large, flat, hard actuator that bridges the bordering adhesive), the adhesive can prevent FSR actuation


Just a side note: I had similar problems with repeatability using my QTC sensors but I believed this was because of my crude construction. I am beginning to think a properly designed sensor integrating QTC would be better than an FSR??
Hi Bren,

What are wrong with the pressure sensors!


I have played around with strain gauges and load cells a while back, and only recently come across FSR's, expecting them to be a modern cheap equivalent, thinking i could just stick them to the base of the robots feet (assuming the walking surface was suitable) , read the data and do the calculations. As I have seen on other robots eg Bioloid.
However that is not the case, you will see what i mean if you read this data:
http://ccrma.stanford.edu/courses/250a/docs/datasheets/fsrguide.pdf

See page 8 "Start with reasonable expectations (Know your sensor)":
The FSR sensor is not a strain gauge, load cell or pressure transducer. While it can be used for dynamic
measurement, only qualitative results are generally obtainable. Force accuracy ranges from
approximately ± 5% to ± 25% depending on the consistency of the measurement and actuation system,
the repeatability tolerance held in manufacturing, and the use of part calibration.


I will persevere and just hope ± 5% is good enough. One of the most noticeable problems at the moment is drift due to what I think is the way they are mounted (ie see "Set-up a Repeatable and Reproducible Mechanical Actuation System").Maintaining a consistent force distribution by using some form of actuator pad, possibly domed in shape may solve some of my problems (QED).. Also:
If force is applied over an area which includes the adhesive, the resulting response characteristic will be drastically altered.) In an extreme case (e.g., a large, flat, hard actuator that bridges the bordering adhesive), the adhesive can prevent FSR actuation


Just a side note: I had similar problems with repeatability using my QTC sensors but I believed this was because of my crude construction. I am beginning to think a properly designed sensor integrating QTC would be better than an FSR??
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by Robo1 » Tue Dec 18, 2007 8:02 pm

Post by Robo1
Tue Dec 18, 2007 8:02 pm

I had a look at it doesn't look good. I'm thinking of getting some Flexiforce and have a play around with them. Will order some tonight so should be up and running by the end of the week.

Bren
I had a look at it doesn't look good. I'm thinking of getting some Flexiforce and have a play around with them. Will order some tonight so should be up and running by the end of the week.

Bren
Robo1
Savvy Roboteer
Savvy Roboteer
Posts: 501
Joined: Fri Jun 30, 2006 1:00 am
Location: UK - Bristol

Post by NovaOne » Tue Dec 18, 2007 8:38 pm

Post by NovaOne
Tue Dec 18, 2007 8:38 pm

Excellent, they look better (quoted repeatability ± 2.5%) , please post how you get on with them. Did you order them from the US?

The same actuator guides line seem to apply. Page 6 of the manual says:
If the footprint of the applied load is larger than the sensing area, it may be necessary to use a
"puck." A puck is a piece of rigid material (smaller than the sensing area) that is placed on the
sensing area to ensure that the entire load path goes through this sensing area.
The sensing area is the silver circle on the top of the sensor only.
The puck must not touch any of the edges of the sensing area, or these edges may support some of the load and give an
erroneous reading.


The FSR integration notes say something similar, however it suggests using a thin elastomer instead of a rigid material.
It says the elastomer can help absorb an error due to inconsistent force distribution over the sensing area....... I will try this.

Bren, good luck.
Excellent, they look better (quoted repeatability ± 2.5%) , please post how you get on with them. Did you order them from the US?

The same actuator guides line seem to apply. Page 6 of the manual says:
If the footprint of the applied load is larger than the sensing area, it may be necessary to use a
"puck." A puck is a piece of rigid material (smaller than the sensing area) that is placed on the
sensing area to ensure that the entire load path goes through this sensing area.
The sensing area is the silver circle on the top of the sensor only.
The puck must not touch any of the edges of the sensing area, or these edges may support some of the load and give an
erroneous reading.


The FSR integration notes say something similar, however it suggests using a thin elastomer instead of a rigid material.
It says the elastomer can help absorb an error due to inconsistent force distribution over the sensing area....... I will try this.

Bren, good luck.
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by NovaOne » Sun Jan 06, 2008 10:07 pm

Post by NovaOne
Sun Jan 06, 2008 10:07 pm

The excel spreadsheet link below contains my experimental data and basic processing to find the centre of mass on a RN foot based on FSR402's.

http://robosavvy.com/site/Builders/NovaOne/Foot%20sensor%20data1.xls

I have not calibrated or normalised the raw data in any way.

I have used a 3mmx6mm "puck" made from 0.08 latex (cut from a glove) not exactly precision :(

Any thoughts or mistakes?



Edited by author for spelling
The excel spreadsheet link below contains my experimental data and basic processing to find the centre of mass on a RN foot based on FSR402's.

http://robosavvy.com/site/Builders/NovaOne/Foot%20sensor%20data1.xls

I have not calibrated or normalised the raw data in any way.

I have used a 3mmx6mm "puck" made from 0.08 latex (cut from a glove) not exactly precision :(

Any thoughts or mistakes?



Edited by author for spelling
Last edited by NovaOne on Tue Jan 15, 2008 7:30 am, edited 1 time in total.
NovaOne
Savvy Roboteer
Savvy Roboteer
Posts: 405
Joined: Thu Jul 05, 2007 7:30 am

Post by Robo1 » Sun Jan 06, 2008 10:47 pm

Post by Robo1
Sun Jan 06, 2008 10:47 pm

I like what you have been doing will start soon now that I have my sensors. Have you tried placing say the, Mass X with resulting force at position X,Y and then see if you can calibrate the system to give you the correct results. e.g. keep on trying this until you can get the correct results.

The second graph looked better a more linear result for force verses resistance. What equation did you use.

Keep up the good work Bren.

P.S Can't wait to see the finished bot.
I like what you have been doing will start soon now that I have my sensors. Have you tried placing say the, Mass X with resulting force at position X,Y and then see if you can calibrate the system to give you the correct results. e.g. keep on trying this until you can get the correct results.

The second graph looked better a more linear result for force verses resistance. What equation did you use.

Keep up the good work Bren.

P.S Can't wait to see the finished bot.
Robo1
Savvy Roboteer
Savvy Roboteer
Posts: 501
Joined: Fri Jun 30, 2006 1:00 am
Location: UK - Bristol

Next
17 postsPage 1 of 21, 2
17 postsPage 1 of 21, 2