Robocup Rescue 2015

Allikas: Digilabor

Sisukord

Meeskond

  • Hannes Haljaste
    • hhaanneess@gmail.com
    • +372 5627 3992
  • Meelik Kiik
    • kiik12@hotmail.com
    • kiik.meelik@gmail.com
    • +372 5665 6134
  • Margo Martis
    • Margo.Martis@gmail.com
    • +372 5688 1345
  • Allan Kustavus


Time Table

Päev Allan Meelik Hannes Margo
Esmaspäev 8-10, 12-14, 18- 12 -
Teisipäev 8-10, 14- 14 -
Kolmapäev 10-12; 16- 8-12, 16-19 10-12 & 16-
Neljapäev 12-14 8-9, 17- 12-14
Reede 16- 8-10, 15- 08-12 & 16-

Short description

6-legged robot

-
Rhex by Boston dynamics

The concept is a six c-shaped legs, 3 on each side.Each leg pair should be able to be moved independently. This design also works in reverse position and is able to flip itself with the help of its legs. Since good original ideas are hard to come by these days, Boston dynamics has already built something that I had in mind. Pretty sure it would survive falls and cross rather rough terrain. Here is a video: https://www.youtube.com/watch?v=ISznqY3kESI Also, jumping: https://www.youtube.com/watch?v=kV9J-oayCBU(We really need some video embedding plugin...)

Notes:

  • Legs out of fibeglass or other composite material
  • Leg design: [1]
  • Aluminum chassis with carb. fiber reinforcement
  • Brushed or brushless motors with a rather large ratio gearbox. X-Rhex has 28:1, Rhex has 18:1 (lower ratio generates more heat since motors are taxed more)
    • For brushless they use: [2] Graphite brushed, 20 W, approx. 250 EUR per motor
    • Brushless :[3] Flat design with hall sensors, 50 W, approx. 100 EUR per motor
    • The gearboxes are around 200 a pop.
    • Maybe cheaper pololu motors will work for us, they should be around 30-40 EUR, at most.[4]

Requirements

  • Moves on legs
  • Able to pass rough terrain
  • Able to move to other location by GPS


Resources

Progress

Mechanics

  • First drafts of the mechanical solution are fairing along rather nicely. Carbon fiber panels add strength and reduce weight. The hull in itself is not waterproof but it should provide some protection against moisture, certainly is not able to be submerged and survive. Since Most of the tech is still unknown, no precise parameters of the hull can not be established as of yet. Some pictures follow.
Current model status
Could be the future... (Made by Kaarel Tõnisson)


Chassis

First prototype was made of plywood, because we needed to start from somewhere. The idea is to make aluminium chassis but it was secondary concern because of strict time constraints. The idea is to make it when we have the motors we desire not servos.

Chassis
Robot proto with robotex motors



Servos

HS-805BB Servo

The robotex motors weren't strong enough. The solution was servos because they are able to lift more weight and we had them in laboratory.

We are using 6 servos and they are able to move robot. They work on 5 volts and maximum 3 amperes.
More information : https://www.servocity.com/html/hs-805bb_mega_power.html#.VXa3aEaRZ44

Pros: Easy to program

Cons: Hard to control, each servo has different startpoint where the servo holds a leg in one place. Hard to attach them to legs because we had already designed the attachments for motors and had no time to make new ones.

Tried to 3D print attachments but they were too fragile. So we resorted to ready-made nylon elements that came with the servo.


Firmware notes

[Leg.id==0]freq = 50, dc = 15 [Leg.id==1]freq = 50, dc = 1 [Leg.id==2]freq = 50, dc = 1 [Leg.id==3]freq = 50, dc = 15 [Leg.id==4]freq = 50, dc = 9 [Leg.id==5]freq = 50, dc = 12

Legs:

Leg holder preliminary design:

Soldiworks assembly


First leg prototype was made by 3d printer and was a little bit fragile. Conclusion: We need better material ("stronger").

Allan was thinking of something like carbon fiber so he searched for some days and found diolen, which has almost same qualities as carbon fiber or Kevlar but is around 3-4 times cheaper. Diolen may not be as rigid as the other materials mentioned but prices was a serious concern in this project. The diolen and epoxy was ordered and by week we got the material. We made the mold so cutting the leg to exact shape would be easier.

3d printed leg



Diolen Leg Making

Fresh Diolen leg
Diolen Bands

First you need to cut 15 bands by the width of 3 cm because there will be some material loss during the process. Our material length was the original size cut in three.

The mixture: Three of Epoxy resin and 1 of Epoxy hardener to bind the diolen fibers. Then lay the diolen fiber bands into the mixture and lay it on the mold.("all the bands one by one"). After laying the epoxy soaked layers on top of each other we needed to apply some sort of force to the mold. This is necessary to force out excess epoxy, making the legs stronger and lighter in the process. For that we used basic ventilation pipe clamps. We put a piece of flexible plastic between the diolen and clamps, then fastened the mentioned clamps with a screwdriver until the desired tension was achieved. Our process of producing legs improved over time, making higher quality legs with less surface defects and using less epoxy and diolen fibers.


With our hardener and resin we were able to make 8 legs. The first leg we made wasn't made in mold so it was hard to cut it accurately. One leg we made was too flexible and sadly it was unusable. This was most likely caused by bad mixing of the epoxy resin-hardener, resulting in a bad polymerization process in which pockets of unhardened resin remained, rendering the leg flexible. The other six legs are quite strong and are able to hold our robot. The final legs had a approximate width of 28 mm when including the two side curves. The two curves, being a result of the produced mold, helped to add strength to the leg without needing to make the whole leg wider. We are not sure how much force one leg is able to withstand because of the unique nature of each leg and the total amount of legs where we really have none to spare for such experiments.

Time: It took about 1 to 2 hours to make one leg and then it had to dry for 16 hours.

Allergy: Epoxy is a serious kind of material and there is chance to get allergic reaction when working with it so you need to use better equipment than just latex gloves. A full body suit, multiple layers of gloves and a breathing filter are recommended when working with the epoxy or cutting hardened legs.


mold
resin & hardener

Leg holders

3D model of the leg holder

We also required solid details for fixing the C-shaped legs onto our actuators. To produce such elements we used a CNC milling machine located at Nooruse-1. Above we can see the 3D-model of the detail in the design phase.

The basic design is meant for legs with a diameter of 160 mm and using a axle of 6 mm in diameter. The details were milled out of a single block of 20 mm thick aluminum. The bolts used to secure the leg onto the leg holder are M5 for extra rigidity while the axle securing bolts are M4, also for robust fastening. A 6mm milling tool was used for the whole process.

The details being milled
The 6 pieces right out of the mill

After completing the holder blanks holes needed to be drilled. flat surfaces were designed into the model for easier drilling. To align every hole properly a stencil was used since the upper M5 holes were difficult to align otherwise. The drilling and threading also took place at Nooruse-1.

After the basic holders were completed we discovered that the Pololu motors used by the Robotex football robots were too weak, so servos found in storage were used. Since the holders were not designed to work with the servos some modifications were needed. The main modification was to drill and thread 2 M3 holes onto the side of the holders so a straight servo clamp could be attached. Images of the finished holders will be added.

Time:

  • Milling out the 6 blanks took around 2 hours.
  • Drilling, threading and finishing the blanks took 2 hours.
  • Modifying the holders for servo use took 4 hours.











Electronics

Scheme[5]

The last scheme of our robot:

Last plan


Between the 3.3V Raspberry and the 5V servos we implemented a logic level converter array onto a breadboard.

5V to 3.3V LLC Schematic

Software

The ideal version of rhex robot was supposed to contain customized version of an older open source rhex libary, which has been used by other laboratories. The libary contained a flexible and modular system where functionalities were implemented as registratable modules. All of the submodules ( PWM controller communication, sensor communication, navigation units communication modules, ...) were registered under a 'Supervisor' type object, which is the first object created in the software's workflow.


The simpler version of the rhex robot which was created uses six servos which are controlled by Raspberrys software PWM, using python as the language of choice. However multiple problems arose from using such cheap methods - the six hacked servos' movement speed isn't linear ( Plus each servo works at a slightly different duty cycle ) and raspberry seems to have problems with changing the duty cycles of the 6 PWM outputs. Initially we though the problem originated from the inaccuracy of the software PWM, however, after analysing the PWM output, this was ruled out.

Price list

  • List(täpsustamisel)[6]

Videos

https://www.dropbox.com/s/wlpqbsfkc01b81q/MOV_0710.mp4?dl=0 01.06.2015

GPS substitute

Since we did't get GPS for a while, we had to make a GPS substitute system. It uses android phone to calculate GPS position and get the NMEA sentences. Then using Android app BlueNMEA it sends this data over bluetooth to the HC-05 module. This module has LVTTL UART pins (Just like our future GPS module) which is connected to Raspberry PI's Serial port.

NOTE: Some ending whitespace characters get lost in transmission which must be added for further parsing. (ie. \r\n)

Received GPS data
GPS substitute setup


GPS NMEA sentences received from the device:

$GPGGA,141316.0,5821.985251,N,02643.372558,E,1,07,1.3,-210.5,M,21.0,M,,*70 
$GPVTG,186.8,T,180.2,M,0.9,N,1.7,K,A*20
$GPRMC,141316.0,A,5821.985251,N,02643.372558,E,0.9,186.8,220315,6.6,E,A*0D
$GPGSA,A,3,13,15,17,18,22,24,28,,,,,,2.7,1.3,2.3*31
$GPGSV,4,1,16,15,55,255,24,24,25,279,22,13,49,182,20,28,55,071,18*75
$GPGSV,4,2,16,18,19,310,18,22,08,341,16,17,34,136,11,01,07,064,*7A
$GPGSV,4,3,16,04,10,037,,11,14,049,,26,49,181,,30,15,101,*76
$GPGSV,4,4,16,08,,,,32,,,,31,,,,29,,,*7E
$GPGGA,141317.0,5821.986041,N,02643.371510,E,1,06,1.4,-209.2,M,21.0,M,,*77
$GPVTG,186.8,T,180.2,M,0.9,N,1.6,K,A*21
$GPRMC,141317.0,A,5821.986041,N,02643.371510,E,0.9,186.8,220315,6.6,E,A*03

GPS - NMEA sentence information

GPS Module

One requirement for the robot was the ability to move from one location to another. In outdoor situations the best solution is to use global positioning system (GPS). For that purpose a SkyTraq Venus638 Receiver was chosen which is available on the SparkFun Venus board.

Some important features:

  1. up to 20Hz update rate
  2. -165dBm tracking sensitivity
  3. 29 second cold start TTFF (Time to First Fix)
  4. 2.5m accuracy
  5. Multipath detection and suppression
  6. Jamming detection and mitigation
  7. SBAS (WAAS / EGNOS) support

Datasheet

A UART port on the Raspberry Pi is used to receive the NMEA sentences from the GPS module.
NMEA sentence format:
${Message type}, {Data seperated by commas}, *{checksum}\r\n
Example:
$GPGSA,A,3,04,05,,09,12,,,24,,,,,2.5,1.3,2.1*39\r\n

MNEA message types used by Venus GPS receiver:

  • GGA - Global Positioning System Fix Data
    • Time, position and fix related data for a GPS receiver.
  • GLL – Latitude/Longitude
    • Latitude and longitude of current position, time, and status.
  • GSA – GNSS DOP and Active Satellites
    • GPS receiver operating mode, satellites used in the navigation solution reported by the GGA or GNS sentence and DOP values.
  • GSV – GNSS Satellites in View
    • Number of satellites (SV) in view, satellite ID numbers, elevation, azimuth, and SNR value. Four satellites maximum per transmission.
  • RMC – Recommended Minimum Specific GNSS Data
    • Time, date, position, course and speed data provided by a GNSS navigation receiver.
  • VTG – Course Over Ground and Ground Speed
    • The Actual course and speed relative to the ground.

More information from Datasheet

To process all those sentences a NMEA library was used. This library parses those sentences and returns only useful information. Some modifications to the library were made to compile on the Raspberry Pi.
NMEA library homepage

From those parsed sentences the following information can be accessed:

  • time
  • signal/fix
  • longitude in decimal minutes (+/- dddmm.mmmm)
  • latitude in decimal minutes (+/- dddmm.mmmm)
  • altitude in meters
  • speed over ground in km/h
  • dilution of precision from 0.0 to 99.9
  • direction on degrees 0 - 360

Inertia measurment unit

First test to move the robot(robotex robot at a time) with just a GPS was unsuccessful since the robot was not able to reach a sufficient speed to get accurate direction data. For this reason tilted compass were implemented using 9 degrees of freedom inertia measurement unit (IMU) chip LSM9DS0 made by STMicroelectronics.

Some important features:

  • 3 acceleration channels, 3 angular rate channels, 3 magnetic field channels
  • ±2/±4/±6/±8/±16 g linear acceleration full scale
  • ±2/±4/±8/±12 gauss magnetic full scale
  • ±245/±500/±2000 dps angular rate full scale
  • 16-bit data output
  • SPI / I2C serial interfaces
  • Programmable interrupt generators

LSM9DS0 webpage

TO DO: Since magnetic sensor gives very noisy signal some sort of filter should be implemented and/or magnetic sensor gain should be lowered.

Ultrasonic sensors

To avoid obstacles two ultrasonic sensors were used. Cheap HC-SR04 modules will do the job. Stands for the sensors were laser cut in electronics lab at Nooruse-1.

Ultrasonic sensor stand

TO DO: Since ultrasonic sensor waits max 38 microseconds some sort of interrupt and/or multi-threding code should be implemented.

What could have been ...

Here follows some ideas and points about what could have been done with the robot but due to one reason or another were never materialized from the idea stage.

Aluminum chassis

The final vision of the chassis was aluminum. The whole thing would have been milled out of solid aluminum blocks, having as few unique details and as low weight as possible.

The plans were made, tough. It mainly consisted of two massive milled out aluminum slabs making up the sides. The two sides will be joined by steel cylinders making a rather rigid roll-cage. Aluminum covers would be added and the two c-shaped ends of the chassis would be covered by simple PVC-pipe or similar. The bolts holding everything together would be protected by 3D-printed covers so falls would not destroy their heads.

The chassis did not happen tough. There was just not enough time to mill out all the parts, it would have taken around one week of intense work, if everything were o work out perfectly. But yes... the project did not exactly go as smooth as expected.

Brushless motors

Another plan was to use brushless motors for driving the legs. The initial design was also able to use them. We would have used 400 W out-runner motors being able to produce around 10 000 RPM. They would be connected to planetary gearboxes with a reduction ratio of around 12:1. This would bean that we would be able to do a little less than 1000 RPM with each leg. The gearboxes were selected for their high strength so high torque situations would not destroy their gears.

The main problem with such gearboxes is falling. Since they weigh around 500 g each, falling directly on a gearbox would be catastrophic.

Sadly the price of each gearbox, being around 160 euro, was too much and cheaper alternatives were used.

More leg materials

More leg materials would also have been advantageous. The current project used exactly one material. This sadly doesn't guarantee an optimal solution.

Other composite materials should also be tested, like Kevlar or carbon fiber. Also embedding composite elements, like foam or metal plates could provide interesting results as they have a heavy impact on the physical properties of the leg.

Simultaneous localization and mapping

Since simple algorithms like hill climbing may get stuck in local maximums, generating map to get out of those is important. But since GPS data in only at best 2.5m accurate cases may arise where the robot may end up in obstacles. Also obstacle's possible dimensions would be way out of proportion. At that end GPS and accelerometer sensor fusion should be reversed and implemented to get sub meter accuracy.

Dedicated electronics

Idea

Ideas from Allan

6-legged robot

-
Rhex by Boston dynamics

The concept is a six c-shaped legs, 3 on each side.Each leg pair should be able to be moved independently. This design also works in reverse position and is able to flip itself with the help of its legs. Since good original ideas are hard to come by these days, Boston dynamics has already built something that I had in mind. Pretty sure it would survive falls and cross rather rough terrain. Here is a video: https://www.youtube.com/watch?v=ISznqY3kESI Also, jumping: https://www.youtube.com/watch?v=kV9J-oayCBU(We really need some video embedding plugin...)

Notes:

  • Legs out of fibeglass
  • Leg design: [7]
  • Aluminum chassis with carb. fiber reinforcement
  • Brushed or brushless motors with a rather large ratio gearbox. X-Rhex has 28:1, Rhex has 18:1 (lower ratio generates more heat since motors are taxed more)
    • For brushless they use: [8] Graphite brushed, 20 W, approx. 250 EUR per motor
    • Brushless :[9] Flat design with hall sensors, 50 W, approx. 100 EUR per motor
    • The gearboxes are around 200 a pop.
    • Most likely cheaper pololu motors will work for us, they should be around 30-40 EUR, at most.[10]

Tons of treads

At robocup the use of more complex tread systems is rather popular. Such a solution can also cross difficult terrain and most likely move faster than a legged robot. Here is a picture: Robocup rescue robot example The image shown does not really work in different orientations and i am not too sure about the shock resistance, but that can also be said about the 6-legged one.

Ideas from Margo and Meelik

Sand Flea Jumping Robot

https://www.youtube.com/watch?v=6b4ZZQkcNEo

Morphex

https://www.youtube.com/watch?v=lb3Riq06fVI

Military wheels

https://www.youtube.com/watch?v=2wAvxQfusWU


Omni-Crawler

https://www.youtube.com/watch?v=BTp2UAaihaI

Personaalsed tööriistad
Navigeerimine
Käsitöö