This page lists all the parts that you need in order to build your own HexaFloorRide.
HexaFloorRide's chassis is comprised of a lower main body section with six protruding legs with 3 axis of movement. The body and legs are milled out of 6061 extruded aluminium. When fully assembed HexaFloorRide's physical dimensions are roughly:
- Height = ~ 7.5 inches when in neutral standing position.
- Length = ~ 15.5 inches when in neutral standing position.
- Weight = ~ 4.1 lbs (1856g) without battery or PCB.
HexaFloorRide's chassis is comprised of:
- 1 lower body panel
- 1 mounting post with #2-56 threaded holes on all 4 sides for mounting things
- 2 mounting brackets
- 1 battery holder
- 1 battery
- 18 servo motors
- 6 thigh components
- 6 ServoBlock assembles (for the hips)
- 6 shin components
- 6 foot components
- 6 shoe components
Qty | Name | Image |
---|---|---|
1 |
Lower body Weight 141g |
Fig.1 - Lower body |
6 |
Thigh Weight 7g |
Fig.2 - Thigh |
6 |
Shin Weight 13g |
Fig.3 - Shin |
6 |
Foot Weight 12g |
Fig.4 - Foot |
6 | Shoe Weight <0.16g | Fig.5 - Shoe |
1 |
Mounting Post Weight 133g |
Fig.6 - Mounting Post |
2 |
Mounting Bracket Weight included in Mounting Post |
Fig.7 - Mounting Bracket |
1 |
Battery Holder Weight 73g |
Fig.8 - Battery Holder |
1 |
Battery Weight 542g |
Fig.9 - Battery |
18 |
Servo motor Weight 43g |
Fig.10 - Servo Motor |
18 |
Servo Block 24T Spline horn & block 49g |
Fig.11 - Servo Block |
In addition to the parts above you will also need
- 120 #2-56 x 3/8" cap head screws
- 48 M4-0.7 x 12mm socket head cap screws
- 12 M4-07 x 8mm socket head cap screws (come with ServoBlock kit from ServoCity)
Fig.5 - Servo motor |
HexaFloorRide has a total of 18 leg joints. Each leg has a hip, knee and ankle joint. These joints are
HiTec HS-485HB servo motors which we purchased from the Robot Shop. The motors came in a bundle with aluminium 24T horns that fit the servo shafts. The applied voltage of this motor should be in range of 4.8 to 7.2V. The frequency of motor is 50 Hz and the PWM duty cycle is 20 milliseconds. This motor has 3 pins as follows:
|
Fig.7 - Motor driver |
The Hexpod robot requires a way to connect a large number of servo motors to a microcontroller with limit IO pins. To achieve this we use a pair of Adafruit PCA9685 16-channel 12-bit servo motor drivers. These motor drivers have their own onboard NXP Semiconductors PCA9685 microcontrollers that handles the details of PWM signalling to the motors so all we have to do is communicate to them via I2C which only consumes 2 IO pins. The defult I2C address for the driver is 64 (0x40). There is also an all-call address at 112 (0x70). Since HexaFloorRide has 18 motors and a single driver can only handle a maximum of 16 we need to use 2 of these drivers. Since both drivers are on the same I2C bus we need to change the I2C address of the second driver to avoid conflicts. Page 13 of the Adafruit document explains how to do this. In short, we solder A0 port on the left controller to change it's address to 0x41.
The motor controller has specific behavours. We tested these behaviours and found the following: Steps:
This resulted in all servos being compliant with no resistance to moving them. Steps:
This resulted in the servo no longer being compliant. It now tries to hold its position
Based on this testing it appears that the only way to erase past motor commends is to disconnect the console cable from the SOC. Not entirely sure what this means. Is the SOC sending continual messages to the PCA9685 via the library we are using? Cannot think what other explanation there is for this behaviour. Need to break out a scope or protocol analyzer to check on this. Will be very surprised if this is the case. |
Fig.8 - I2C bus voltage converter | Since the ESP32 microprocessor used for HexaFloorRide's brain is a 3.3VDC device and the PCA9685 microprocessor used in the motor driver board is a 5 VDC device we must use a line level converter on the I2C bus to connect between them. HexaFloorRide uses the KeeYees 4 Channel I2C Logic Level Converter Bi-Directional Module which appears to be a clone of the Sparkfun Bi-Directional Logic Level Converter. For wiring help check out the wiring guide. |
Fig.9 - ESP32 Dev Board | The brains of HexaFloorRide come courtesy of an Espressif ESP32 Software On a Chip (SOC). We are using Adafruit 28 pin variant of their Huzzah32 Feather development board for ESP32 integration into our circuit. |
Not sure if we will use this or not
The robot’s motion tracking is provided by an Invensense MPU6050 inertial measurement unit development board which combine a 3-axis microelectromechanical gyroscope and a 3-axis accelerometer on the same silicon die, together with an onboard Digital Motion Processor (DMP), which processes complex 6-axis MotionFusion algorithms.
The robot is powered by direct current provided by a Dewalt 20V 3AH lithium-ion battery. This voltage is stepped down to a 12 volt bus, a 5 volt bus and a 3.3 volt bus using a Drok LM2596 multiple output power supply.
The robot features a reset and selection button as well as a power button. These buttons feature embedded software controlled LEDs that allow for the robot to give visual queues as to what it is doing.
Not sure what display we will use yet
.
Full step by step instructions for HexaFloorRide can be found here.