HyKim v3

From Tribotix Wiki
Jump to: navigation, search

HyKim version 3 is the first major revision (v1 to v2 was a necessity due to the phasing out of the DX-117 and the introduction of it's replacement, the RX-28). The changes & improvements made from HyKim v2 to v3 are:

  • redesign of HyInt
  • CM-iGLX module with inbuilt WLAN became available making mini-PCI based WLAN module obsolete - this allowed the physical dimensions of HyInt to be greatly reduced.
  • To further reduce the size of HyInt an extra pcb was generated so that connection to the CM-iGLX's external ports is easy. This External I/O Board allows easy access to:
  1. Ethernet,
  2. VGA,
  3. Serial port, and
  4. USB port (keyboard).
  • A USB Hub was added to HyInt - this allowed us to have 5 USB ports available. These are utilised as:
  • USB1.0: RS485 (2 channels to Dynamixels)
  • USB1.1: RS485 (to HySense & HySense Lite)
  • USB1.2: Keyboard (to external IO board)
  • USB1.3: Spare (possible use: FLASH Drive)
  • USB2: (Logitech Web Camera)
  • Adding the 2nd USB to RS485 converter allowed both Data Acquisition modules (HySense & HySense Lite) to be daisy-chained. This freed up one of the CM-iGLX's COM ports which allowed us to have a dedicated COM port on the External I/O Board. To Summarise:
  • COM1: Serial Port (to external IO board)
  • COM2: Comms to ATMega8 which looks after Power Management on HyInt
  • HyInt can now communicate with AX type Dynamixels
  • Power/Battery management is now done via an ATMega8, allowing greater flexibility for:
  • voltage and current monitoring, and
  • battery discharge monitoring, via Coulomb counting.
  • redesign of the Data Acquisition Boards, now know as HySense (Body) and HySense Lite (Head)
  • UART's have been reallocated so that there is consistency over both Data Acquisition Boards, i.e. UART1 of the ATMega128 is the serial channel used for the RS485 multi-drop connection to the CM-iGLX (making software development easier).
  • UART0 of the ATMega128 can be selected to be RS485 - this allows the ATMega128 to directly control some Dynamixels on their own sub-network. One useful application for this is for HySense Lite to control the Head/Neck Dynamixels - using data from the 6-axis IMU it is possible to implement a control system to stabilise the head during motion, reducing 'jitter' in the acquired image.
  • GPIO was reallocated so that GPIO allocation for HySense and HySense Lite were the same (making software development easier).
  • 6-axis IMU was installed replacing the 3-axis accelerometer and 1-axis gyro,
  • A Digital Compass module was installed to replace the original design with discrete components,
  • Ability to connect 2 IR Distance sensors to each Data Acquisition Board,
  • Mechanical improvements
  • HyInt is mounted horizontally and the mcu of the CM-iGLX now is thermally connected to the Aluminum frame which acts as a heat sink.

Contents

Introduction

We believe HyKim is one of the world’s most advanced commercially available legged robots, being capable of both Bipedal and Quadrupedal motion.


The design of HyKim, the 21DOF Robot Bear, was originally completed to meet the RoboCup Federation Call for Tenders: A Standard Robot Platform for Robot Soccer issued in November 2006. The design was a collaborative project between Tribotix and NUBots (The University of Newcastle, Australia) - a very successful RoboCup 4 Legged League team. More information can be found on the history of this project at Tribotix’s web site. The modular design of HyKim reflects the structure of HyKim's User Manual in that the user manual is based around the User Manuals of the modules that make up HyKim.


RobotBearCollage.jpg


HyKim is a modular design, i.e. all of the major modules within HyKim where either specifically designed or off-the-shelf modules. The modules that were specifically designed for HyKim were designed in such a way that they could be standalone products and incorporated into other robotic designs. The main modules that constitute HyKim are shown in the image below.


Modules v3.jpg
Overview of the Modules used in HyKim


We welcome any comments or questions about HyKim. If you have any comments or questions please see the Contact Us section of our web site for contact details. HyKim is a high quality research platform and we hope that the information provided on this wiki accelerates any research projects using HyKim as their basis.

What's included with HyKim

To be expanded upon ....

  • 21DOF Robot Bear
  • 2 LiPo Rechargable Batteries
  • LiPo Charger
  • 13.8V 20A Switch Mode Power Supply
  • AVRISPMkII (ATMega In-Circuit Programmer)

Documentation - Quick Find

Links to schematics, source code, firmware and/or component datasheets for HyKim v3 are shown below in the following sub-sections.

Dynamixels

RX-28 User Manual
RX-64 User Manual

HyInt

Schematics:
Datasheets:
Software:
  • ATMega8 bootloader, link to be added here ....
  • ATMega8 software, link to be added here ....
Firmware:
  • ATMega8 bootloader firmware, link to be added here ....
  • ATMega8 firmware, link to be added here ....

HySense

Schematics:
Datasheets:
Software:
  • ATMega128 bootloader, link to be added here ....
  • ATMega128 software, link to be added here ....
Firmware:
  • ATMega128 bootloader firmware, link to be added here ....
  • ATMega128 firmware, link to be added here ....

HySense Lite

Schematics:
Software:
  • ATMega128 bootloader, link to be added here ....
  • ATMega128 software, link to be added here ....
Firmware:
  • ATMega128 bootloader firmware, link to be added here ....
  • ATMega128 firmware, link to be added here ....

OLED's

Schematics:
Datasheets:

Sensor Board

Schematics:

Modules

6-axis IMU
The 6-axis IMU that can be fitted to either HySense or HySense Lite are made from 2 modules we source from Spark Fun. Using their 5-axis IMU, which consists of a 3-axis accelerometer and 2-axis gyro, and an additional Z-axis gyro allows us to create this 6-axis IMU. The schematics for their breakout boards along with the device datasheets are below:
5-axis IMU
Schematics:
Datasheets:


Z-axis Gyro
Schematics:
Datasheets:
Digital Compass
Datasheets:
Software:
IR Distance Sensors
Datasheets:

Safety Issues

SECTION to be completed ....

Handling LiPo Batteries

When compared to other types of rechargeable batteries, such as Nickel Cadmium (NiCd) and Metal Hydride (NiMH), Lithium Polymer (LiPo) batteries are much lighter, larger in capacity, and have no memory effect. But LiPo's are a new technology and can be volatile or dangerous.


So, before using and charging the LiPo's supplied as part of HyKim ALL users should read the Safety Instructions and Warning provided by the manufacturer. Failure to read and follow these instructions may result in fire, personal injury and damage to battery or property.

  • You must read these safety instructions and warnings before using or charging your batteries.
  • Lithium Polymer (LiPo) batteries are new technology and can be volatile or dangerous.
  • Tribotix, its distributors or retailers assume no liability for failures to comply with these warnings and safety guidelines.

Charging LiPo Batteries

to be completed ....

Powering HyKim

to be completed ....

Motor Positioning

to be completed ....

High Torque

to be completed ....

Small Screws

to be completed ....

HyKim's Features

Features

Hykim Features Lge2.jpg
HyKim Features - image shows HyKim v2

Design

Hykim Frnt Feet.jpg

The main features of HyKim’s design are:

  1. HyKim’s ability to move both as a biped and quadruped robot.
  2. HyKim’s torso can move laterally about the base of it’s spine, allowing for realistic bipedal and quadrupedal movements.
  3. HyKim’s can rotate about the shoulders, unlike other quadrupedal robots (such as Sony Aibo).
  4. HyKim’s body is currently made from ABS plastic, and
  5. HyKim’s front feet have an ingenious non-motorised design.This allows the front paw to be straight whilst in the bipedal position and bent as a paw would bee whilst in a quadrupedal position Another advantage of this design is that it cushions HyKim’s transition from biped to quadruped.

Processing

HyKim has a central processing module, known as HyInt, and 2 smaller mcu’s, known as HySense and HySense Lite, which provide localised data collection and basic pre-processing of the collected data.


The HyInt processing module is based around Compulab’s CM-iGLX computer module. Detailed information on the system can be found later in this document, but a brief summary of it’s features are listed below:

  • AMD Geode 500MHz mcu,
  • 256kb cache,
  • 256 Mb DDR,
  • 512Mb FLASH Disk,
  • 802.11g wireless,
  • 100Mbps Ethernet,
  • 2 COM ports (both used for communications with Data Acquisition modules),
  • 3 USB ports (1 used for Dynamixel interface,& 1 used for Webcam)
  • 1Mbps interface to Dynamixel modules, and
  • Battery monitoring circuitry.


HyInt communicates serially to each of the Data Acquisition modules, HySense and HySense Lite. The Data Acquisition modules allow data to be collected locally, pre-processed and then the results can be transferred serially to HyInt. One of the Data Acquisition modules is located in the head whilst the other is located in the body directly above HyInt. The data acquired by these modules is from a:

  • 6-axis Inertial Measurement Unit (IMU),
  • Infrared Distance Sensor, and
  • Tilt compensated Digital Compass (Body module only).


The local acquisition of data, along with 21 mcu’s within the Dynamixel modules, means that there are 23 mcu’s distributed around HyKim’s body (not including HyInt), making HyKim’s design a highly distributed processing architecture.


Both Data Acquisition modules are based around the Atmel ATMega128 mcu. Both of these mcu’s connect serially to HyInt, this serial channel can be used to either:

  1. program the ATMega via a bootloader (located within the ATMega), or
  2. transfer the information collected from the various sensors.


Detailed information on the Body Data Acquisition modules, HySense and HySense Lite can be found in the relevant section of this User Manual.

OS_coverage

Compulab’s CM-iGLX can run either:

  1. Embedded Linux,
  2. Windows CE, or
  3. Windows XP.

Tribotix have developed an embedded Linux image based around debian etch (Debian 4.0r2), Linux Kernel: 2.6.18 which includes all the required device drivers. This image may be downloaded from our web site, be aware though that this image is approximately 250Mb.

Sensors

HyKim has various sensors spread across it’s body. A detailed description of each sensor can be found later in the document, but a brief summary of available sensors follows:

  • Sensors located in HyKim's head:
  1. Logitech Pro4000 Webcam (drivers available for both Linux & Windows),
  2. 6-axis Inertial Measurement Unit (IMU),
  3. Infrared Distance Sensor,
  4. 3 Capacitive Touch Switches (under HyKim's chin).
  • Sensors located within HyKim'sbody:
  1. Tilt-Compensated Digital Compass,
  2. 6-axis Inertial Measurement Unit (IMU),
  3. Infrared Distance Sensor.

As well as the standard sensors mentioned above, both of HyKim's Data Aquisition modules, HySense and HySense Lite, have all unused GPIO, iic bus and the SPI bus from the ATMega128's brought out to IDC Headers allowing the user to add additional sensor if required.

Displays

128x128 OLED.jpg

HyKim has 2 128x128 OLED’s mounted in its head and are connected via an SDI bus to the Head Data Acquisition module, HySense Lite.

These OLED’s can either be used as ‘eyes’ or to display diagnostic information, which can be extremely useful for debugging the embedded system.

Motors

Dynamixel Module.jpg

HyKim is based around Robotis’s RX Dynamixel range of serially controlled, smart servo motors which are:

  • based around quality Swiss Maxon motors,
  • contain all metal gears to ensure durability,
  • use a bearing at the final axis to ensure that there is no efficiency degradation with high external loads on the output shaft, and
  • able to communicate at 1Mbps on a half-duplex RS485 network.

RX-28’s and RX-64’s were used for HyKim – there are 3 RX-64’s used, these are used for the top of the hind legs and also to control the lateral ‘side-to-side’ motion of torso.

A summary of the specifications for the RX module used follows:

RX Module Specifications
RX-28 RX-64

Reduction Ratio: 1/193
Holding Torque: 28.3kg-cm
Speed: 0.167sec/60°
(Specs at 12V)

Reduction Ratio: 1/200
Holding Torque: 64.0kg-cm
Speed: 0.162sec/60°
(Specs at 18V)

Power_Source

Whilst operating autonomously HyKim is powered by an 11.1V 2480mAh Lithium Polymer rechargeable battery pack. During normal operation, HyKim draws an average of 2.5~3.0A – so a fully charged battery pack should give 45~55 minutes of operation. The time period quoted is based on average power consumption, some operations (such as the transition from quadruped to biped) can draw significant large currents (up to 6A), so obviously the operational time from the battery pack will depend largely on the movements performed by HyKim .


HyKim processing system, HyInt , converts the 11.1V provided by the battery to both 5V and 3.3V. Circuitry within HyInt monitors both the battery voltage and the current drawn from the battery. Two separate voltage thresholds for the battery are set such that when the voltage from the battery starts to decay, power will be removed from the Dynamixel modules - this allows HyInt to shutdown gracefully before it loses power. Please note that Lithium Polymer (LiPo) battery packs have a very ‘sharp’ discharge curve, i.e. as the charge within the battery pack reduces, the voltage seen at the batteries terminals will fall to 0V very quickly.


Also for convenience, when developing software HyKim can be powered by a conventional lab power supply.

HyKim Modules

This section of the document will discuss each of HyKim's modules – the modular design of HyKim is one of its design strengths.

System_Overview

The diagram below shows how the modules that make up HyKim are defined and interconnected.


HyKim Block Diagram v3.jpg


There are 4 main modules with HyKim, these are:

  1. HyInt - the main processing module (includes Compulab’s CM-iGLX),
  2. HySense - the Body Data Acquisition Module,
  3. HySense_Lite- the Body Data Acquisition Module, and
  4. Network of Dynamixel motors spread around HyKim's body.


The 4 modules mentioned are connected serially (RS485) to form a Star type network, as illustrated below:

HyKim Network v3.jpg


NB. In the diagram above showing HyKim's network topology, the USB connection to the Logitech Webcam is also included for completeness.


HyInt is obviously the core system here. HyInt should be the Master in this star topology, making the decisions when it should request data and issue commands to the Slave modules. HyInt must be the Master when communicating with the Dynamixel modules, the firmware installed in the Dynamixels requires this (this cannot be changed). But, with regard to the Data Acquisition modules, communication properties (Master or Slave) can be defined by the programmer(s) as the firmware in the Data Acquisition systems can easily be changed.


HyKim Wiring v3.jpg


The diagram above again shows the Star network topology but this time in more detail.


USB port usage

The CM-iGLX has 3 USB ports, 2 of which are used by the HyInt system. CM-iGLX's USB1 goes to a 4-port USB Hub (SMSC USB2504) whilst USB2 is used for the web camera mounted in HyKim's head. Therefore, there are 5 USB ports available from HyInt and these are allocated as:

USB1.0: RS485 (2 channels to Dynamixels)
USB1.1: RS485 (to HySense & HySense Lite)
USB1.2: Keyboard (to external IO board)
USB1.3: Spare (possible use: FLASH Drive)
USB2: (Logitech Web Camera)


Serial port usage

The CM-iGLX has 2 COM ports, these are used for:

COM1: Serial Port (to external IO board)
COM2: Comms to ATMega8 which looks after Power Management on HyInt


Alternate Configuration

The diagram below shows an alternate way that the modules that make up HyKim can be interconnected.


HyKim Block Diagram v3 ALT.jpg


UART0 of HySense Lite's ATMega128 can be selected to be RS485 - this allows HySense Lite to directly control some Dynamixels on their own sub-network. One useful application for this alternate configuration is that HySense Lite is able to control the 3DOF Head & Neck Configuration. Using data that HySense Lite gathers from the 6-axis IMU it is possible to implement a control system that will stabilise the head during motion. This reduces movement induced 'jitter' in the acquired image, giving a more stable image and thus requiring less processing power to perform complex image processing techniques.


If this alternate configuration is implemented the Star type network that would result is illustrated below:


HyKim Network v3 ALT.jpg


NB. In the diagram above showing HyKim's network topology, the USB connection to the Logitech Webcam is also included for completeness.


The diagram below again shows this alternate configuration but this time in more detail.


HyKim Wiring v3 ALT.jpg

Dynamixels

Features

Dynamixel Module.jpg

HyKim is based around Robotis’s Dynamixel range of serially controlled, smart servo motors which are:

  • based around quality Swiss Maxon motors,
  • contain all metal gears to ensure durability,
  • use a bearing at the final axis to ensure that there is no efficiency degradation with high external loads on the output shaft, and
  • able to communicate at 1Mbps on a half-duplex RS485 network.

RX-28’s and RX-64’s were used for HyKim – there are 3 RX-64’s used, these are used for the top of the hind legs and also to control the lateral ‘side-to-side’ motion of torso.

A summary of the specifications for the RX module used follows:

RX Module Specifications
RX-28 RX-64

Reduction Ratio: 1/192
Holding Torque: 28.9kg-cm
Speed: 0.172sec/60°
(Specs at 12V)

Reduction Ratio: 1/200
Holding Torque: 64.0kg-cm
Speed: 0.162sec/60°
(Specs at 18V)


The Robotis Dynamixels use a 1Mbps half-duplex RS485 channel for communications to the host controller, which in this case is the HYINT module. The fact that HYINT has high-speed 2-way communication with the Dynamixels allow for many operational parameters/variables to be sent/received – this 2-way communication is what makes the Dynamixels ideal for this type of application. The main parameters/variables that are available within the Dynamixel are:

  • Clockwise (CW) rotation limit,
  • Counter-clockwise (CCW) rotation limit,
  • Maximum Temperature alarm,
  • Maximum and minimum Voltage alarm,
  • Maximum torque,
  • Compliance settings,
  • Goal Position,
  • Required moving Speed,
  • Torque Limit,
  • Present Position (10bit resolution, i.e. 0~1023),
  • Present Speed,
  • Present Load,
  • Present Temperature, and
  • Present Voltage.


As you can see from the list above, there are many parameters that can be set and variables that can be interrogated for a Dynamixel module. A comprehensive manual exists for both the RX-28 and RX-64 , these User Manuals detail the structure of the data packets exchanged between the Dynamixels and the host controller and the reader is referred to these for more detailed information.

Dynamixel ID allocation for HyKim

The allocation of network ID’s for the RX Dynamixels is detailed in the following table as well as shown in the image below.


HyKim IDAllocation.jpg
Dynamixel ID Description
0x02 2 Shoulder – rotation
0x03 3 Back – lateral movement
0x04 4 Front Left Shoulder
0x05 5 Front Right Shoulder
0x06 6 Front Left Leg Up/Down
0x07 7 Front Right Leg Up/Down
0x08 8 Front Left Elbow
0x09 9 Front Right Elbow
0x0a 10 Back Left Shoulder
0x0b 11 Back Right Shoulder
0x0c 12 Back Left Leg Up/Down
0x0d 13 Back Right Leg Up/Down
0x0e 14 Back Left Knee
0x0f 15 Back Right Knee
0x10 16 Back Left Ankle
0x11 17 Back Right Ankle
0x12 18 Back Left Foot – rotational
0x13 19 Back Right Foot – rotational
0x14 20 Neck – Up/Down
0x15 21 Head rotate
0x16 22 Head – Up/Down


NB. We have deliberately not allocated any of the Dynamixels within HyKim to ID 0x01 - this is to make it easier to replace a Dynamixel in the unlikely event that a Dynamixel should fail. ID 0x01 is the default setting for new Dynamixels, so all that is required to replace a Dynamixel is physically replace the Dynamixel then send the relevant new ID and baud rate commands to ID 0x01.



Positioning the Dynamixels in the Centre Position

During the assembly of HyKim the positioning of the centre of each Dynamixel is important so that maximum movement from each DOF may be achieved. Dynamixels have a 300° operational range which is controlled in increments of 0.25°, i.e. 1024 steps (10bit resolution). Therefore 150° or 512 is the centre position for a Dynamixel module. The image below shows HyKim in the ‘Drop Bear’ pose – this is the pose where all the Dynamixels are told to go to their centre position, i.e. 150°.


HyKim DropBear.jpg


To illustrate the positioning or centring of the Dynamixels used at the top of HyKim's legs, the diagram below shows how the Dynamixels are positioned – notice there is an offset in the rear leg, this is so that maximum movement can be achieved in both biped and quadruped mode.


HyKim DynamixelCentres.jpg

Preventing Damage to Dynamixels

Although the Dynamixels are highly durable they can be damaged and destroyed. This generally occurs when a Dynamixel is commanded to go to a position it physically can’t achieve, e.g. there is a frame preventing movement to the required position. What happens in this case is that, for some reason, the Dynamixel can’t reach the desired location BUT the Dynamixel keeps trying UNTIL it damages it’s internal H-Bridge circuit (and the smoke comes out ….).


There are 2 ways to ensure this doesn’t happen:

  1. Set the Clockwise (CW) and Counter-clockwise (CCW) rotation limits to reflect the physical constraints of the robot. This means that even if your program tries to place a Dynamixel in a position it could never achieve the Dynamixel will only move to the limit then stop - saving the Dynamixel from damage, and
  2. Monitor the temperature reading from the Dynamixel. There are a couple of ways this can be handled, the Dynamixel can turn it self off automatically if it gets too hot or the program in the host controller could make this decision and shut the robot down by moving all Dynamixel to their home positions.


It should also be noted that it is impossible to replace a Dynamixel and have the new shaft position exactly the same as the Dynamixel being replaced – this is a mechanical constraint. So when programming HyKim it is a good idea to have a table of ‘offsets’ of each of the Dynamixels from the ideal position – this way when a Dynamixel is replaced that only change to software will be in the offset table.

HyInt

Hardware

Test.jpg
HyInt v2 Module


As shown in the illustration below, the HyInt module consists of 3 pcb’s. These are:

  1. CM-iGLX: this is a prefabricated computer module supplied by Compulab.
  2. Motherboard PB0801: this board is the interface for the CM-iGLX and allows all the CM-iGLX’s ports to be brought out to the appropriate types of connectors. A USB hub is also fitted to this board, expanding the available USB ports to 5.
  3. Power Supply Board PB0803: this board is where the supply voltage is converted to 5V and 3.3V for the various electronic modules distributed around HyKim. This board also an mcu, an ATMega8, that monitors the supply voltage and current. Having an mcu perform this functions allows it to be programmed to alarm the CM-iGLX when the supplied voltage drops below a pre-determined voltage or when it calculates that the batteries charge is reaching a critical level. When the mcu determines that the battery voltage/charge is critical, the mcu can turn power to the Dynamixels off - allowing all available charge to be used to shut the CM-iGLX down gracefully.


HyInt Mounting v2.jpg
HyInt v2 Mounting within HyKim


The Illustration above shows:

  • that the HyInt system is mounted horizontally - the reasoning behind this is to provide a heat sink for the CM-iGLX's mcu. Without a heatsink we recorded temperatures for the CM-iGLX's mcu above 90°, using the Aluminum frame as a heat sink has allowed us to keep the CM-iGLX's mcu temperature within operational limits.
  • Hysense, the Body Data Acquisition module (Body Sensors), is now mounted horizontally above HyInt and communicates with HyInt via an RS485 channel.


The table below shows the allocation of the ports available to the user on the HyInt module.


Connector Port Type
PB0801 J5 Dynamixel: AX, DX or RX modules
PB0801 J6 Jumper used to select either AX or DX/RX Dynamixel modules at J5
PB0801 J7 20-way IDC Header, takes CM-iGLX signals to PB0804 (External I/O Board)
PB0801 J8 Audio In (Stereo)
PB0801 J9 Audio Out (Stereo)
PB0801 J10 USB Connector (FLASH Drive)
PB0801 J13 Signals to HySense Lite
PB0801 J14 Signals to HySense
PB0803 J1 ATMega8 expansion IO
PB0803 J2 ATMega8 AVRISP Programming
PB0803 J5~J8 Dynamixel Channel 1 - AX or DX/RX
PB0803 J8~J12 Dynamixel Channel 2 - DX/RX
PB0803 J13 Power Supply (2.5mm DC Jack)
PB0803 J14 Battery Connector


The following sub-sections will provide more specific information for each of the boards that make up HyInt.


Compulab CM-iGLX module

The CM-iGLX is a prefabricated computer module manufactured by Compulab and it’s features include:

  • AMD Geode LXMCU 500MHz x86 architecture:
    • no need for cross compilation when using Linux
  • Geode LXMCU contains a Floating Point Unit (FPU)
  • 256Mb DDR SRAM
  • 512Mb FLASH Disk
  • Used interfaces:
    • 2 x COM ports
    • USB (host and slave)
    • 100Mbps Ethernet
    • VGA
    • Mini PCI-bus
  • Small Size: 68 x 58mm
CM-iGLX.jpg


Rather than reproduce all the information that Compulab make available for the CM-iGLX in this manual it is more efficient, and accurate, to direct the reader to Compulab's CM-iGLX web site. The main links of interest to the reader will be:

  1. CM-iGLX User Manual
  2. CM-iGLX Developer User


N.B. The documentation for the CM-iGLX states that it has 4 USB ports - this is the case but only 2 USB ports are available for the hardware designer. The port designated USB3 in their documentation is used internally on the CM-iGLX board for the WLAN interface, whilst the port designated USB4 in their documentation is used internally on the CM-iGLX board for the on-board NAND FLASH.


[ASIDE]: Our original design for HyInt was to use 2 prefabricated boards based around the Intel PXA255. These were originally chosen for their low power consumption, 0.2~3W. If you assume that during normal operation the Intel PXA255 boards used 1.6W, then for 2 boards we’d have consumed 3.2W for 500MIPS (250MIPS per board) – assuming that both boards could run at 100%, i.e. not have to wait for the other processor to complete a task before continuing. Using a single AMD Geode LXMCU we can have 990MIPS plus 270Mflops for 3~5W of power consumption. So the decision to switch from a dual Intel PXA255 to a single AMD Geode LXMCU gave us a better Power vs MIPS and Mflops ratio [ref].

Motherboard (PB0801)

Motherboard Side.jpg
HyInt Motherboard (PB0801)

Schematics: Motherboard - PB0801

Software: N/A

Firmware: N/A

Sub-modules: N/A


PB0801 is the motherboard of the HyInt system as both the CM-iGLX, PB0804 (External I/O) and PB0803 (Power Supply) boards connect to it. This board not only provides a secure mounting location for the CM-iGLX but transfers all the necessary signals from the CM-iGLX to appropriate connectors.


Motherboard Top.jpg
HyInt Motherboard (PB0801) Top View


Motherboard Bot.jpg
HyInt Motherboard (PB0801) Bottom View


The connector allocation for PB0801 is shown in the table below.


Connector Port Type
PB0801 J1, J2 & J3 Connectors used for CM-iGLX
PB0801 J4
PB0801 J5 Dynamixel: AX, DX or RX modules
PB0801 J6 Jumper used to select either AX or DX/RX Dynamixel modules at J5
PB0801 J7 20-way IDC Header, takes CM-iGLX signals to PB0804 (External I/O Board)
PB0801 J8 Audio In (Stereo)
PB0801 J9 Audio Out (Stereo)
PB0801 J10 USB Connector (FLASH Drive)
PB0801 J11, J12 10-way Headers takes signals to PB0803 (Power Supply Board)
PB0801 J13 Signals to HySense Lite
PB0801 J14 Signals to HySense

Power Supply Board (PB0803)

Image Not Yet Available.jpg
HyInt v2 Power Supply Board (PB0803)


Schematics: Power Supply Board PB0803

':Software:

  • ATMega128 bootloader, link to be added here ....
  • ATMega128 software, link to be added here ....
Firmware:
  • ATMega128 bootloader firmware, link to be added here ....
  • ATMega128 firmware, link to be added here ....

Sub-modules: N/A

PB704B is the board within the HyInt system that:

  1. takes the supply voltage, from either the battery pack or the DC jack, and generates 5V and 3.3V that are used by the various sub-modules within HyKim,
  2. monitors the supply voltage/charge and current via an ATMega8, when the mcu determines that the battery voltage/charge is critical, the mcu can signal the CM-iGLX and turn power to the Dynamixels off - allowing all available charge to be used to shut the CM-iGLX down gracefully.
  3. passes the system battery voltage and current drawn to the CM-iGLX via a serial channel.
  4. provides the connectors for the Dynamixel network.


The connector allocation for PB704B is shown in the table below.


Connector Port Type
PB0803 J1 ATMega8 expansion IO
PB0803 J2 ATMega8 AVRISP Programming
PB0803 J3, J4 10-way Headers takes signals to PB0801 (MotherboardBoard)
PB0803 J5~J8 Dynamixel Channel 1 - AX or DX/RX
PB0803 J8~J12 Dynamixel Channel 2 - DX/RX
PB0803 J13 Power Supply (2.5mm DC Jack)
PB0803 J14 Battery Connector


External I/O Board (PB0804)


Expansion Side1.jpg
External I/O Board (PB0804)

Schematics: External I/O Board PB0804

Software: N/A

Firmware: N/A

Sub-modules: N/A


PB0804 is a simple board that takes a 20-pin Ribbon Cable from the Motherboard (PB0801) and breaks the signals up and takes them to standard connectors for that signal type. This was generated for 2 reasons, firstly having these connectors external to the motherboard is more convenient and secondly, it allowed us to reduce the size of the Motherboard (PB0801) to a size slightly bigger than a Credit Card.


There are 4 output connectors, these are:

  1. VGA
  2. Serial
  3. USB
  4. Ethernet

The connector allocation for PB0804 is shown in the table below.


Connector Port Type
PB0804 J1 20-way IDC Header, brings CM-iGLX signals from PB0801 (Motherboard Board)
PB0804 J2 VGA
PB0804 J3 Serial
PB0804 J4 USB
PB0804 J5 Ethernet

Software

Compulab CM-iGLX module O/S

Compulab provide Linux (Gentoo-based), Windows CE and Windows XP images for the CM-iGLX – for more detailed information on the functionality covered by each OS, the user is directed to Compulab’s Availability of O/S and Drivers for CM-iGLX web page. The actual images can be downloaded from Compulab's Developers Resources for CM-iGLX web page.


In addition to the Linux image made available by Compulab, Tribotix have developed a 250Mb embedded Linux image that includes all the device drivers required for the peripheral hardware connected to HyInt. Details of the image follow.


Linux
debian etch (Debian 4.0r2 Linux Kernel: 2.6.26)

Installed Applications:

  • apache2.0 2.2.9-10+lenny6 Apache HTTP Server metapackage
  • build-essentials (standard C compiler and make) 11.4 Informational list of build-essentials package
  • dpkg-dev (>= 1.14.18) package building tools for Debian
  • g++ (4:4.3.2-2) The GNU C++ compiler
  • gcc (4:4.3.2-2) The GNU C compiler
  • libc6-(2.7-18) GNU C Library: Shared Libraries
  • libc6-dev (2.7-18) GNU C Library: Development Libraries and Header Files
  • libc6- i686 (2.7-18) GNU C Library: Shared Libraries [i686 optimised]
  • make (3.81-5)The GNU version of the "make" utility.
  • CMU sphinx Speech Recognition
  • cpufrequtils 004-2 Utilities to deal with the cpufreq Linux kernel feature
  • erlang 1:12.b.3-dfsg-4 Concurrent, real-time, distributed functional language
  • festival 1.96~beta-7 General multi-lingual speech synthesis system
  • firmware-ralink 0.14+lenny2 Binary firmware for wireless cards
  • openCV 1.0.0-6.1 Computer Vision
  • powertop 1.10-2 Linux tool to find out what is using power on an embedded device
  • python (2.4.4-2)
  • madwifi-source (1:0.9.4+r3772.20080716-1) source for multiband Atheros Driver for wifi
  • madwifi-tools (1:0.9.4+r3685.20080531+dfsg-1) tools for multiband Atheros Driver for wifi
  • ntp deamon 1:4.2.4p4+dfsg-8ler Network Time Protocol daemon and utility program
  • openssh-server and client 1:5.1p1-5 secure server/client
  • sudo 1.6.9p17-2 Provide limited super user privilages to specific users
  • synaptic 0.62.1+nmul Graphical package manager
  • sysv-rc-conf 0.99-6 SysV init runlevel configuration tool for the terminal
  • vlc 0.8.6.h-4+lenny2 multimedia player and streamer
  • vsftpd (and configured) 2.0.7-1 The Very Secure FTP Deamon
  • webcam (3.95.dfsg.1-8) image grabber and uploader
  • wireless-tools 29-1.1 Tools for manipulating Linux Wireless Extensions
  • xawtv 3.95.dfsg.1-8 television viewer – X11 application
  • xfce4 4.4.2.1 Meta-package for the Xfce Lightweight Desktop Environment
  • xorg 1:7.3+20 X.Org X Windows System
Windows

Compulab CM-iGLX module Software

This is where we'll put sample code ....

Battery Management Software (ATMega8)

This is where we'll put software and firmware code ....

HySense

Hardware

PB0806 HySense - Body Data Acquisition Module

Image Not Yet Available.jpg
PB0806 Top View


Documentation
Schematics:
Sub-modules:
6-axis IMU
The 6-axis IMU that can be fitted to either HySense or HySense Lite are made from 2 modules we source from Spark Fun. Using their 5-axis IMU, which consists of a 3-axis accelerometer and 2-axis gyro, and an additional Z-axis gyro allows us to create this 6-axis IMU. The schematics for their breakout boards along with the device datasheets are below:
5-axis IMU
Schematics:
Datasheets:
Z-axis Gyro
Schematics:
Datasheets:
Digital Compass
Datasheets:
Software:
IR Distance Sensors
Datasheets:
Datasheets:
Software:
  • ATMega128 bootloader, link to be added here ....
  • ATMega128 software, link to be added here ....
Firmware:
  • ATMega128 bootloader firmware, link to be added here ....
  • ATMega128 firmware, link to be added here ....
Programming

An Atmel ATMega128 is used as the mcu for HySense, this mcu can be programmed 2 ways:

  1. By the In System Programmer (ISP), J1 - 6pin IDC connector. USB AVRISP’s are commercially available and can be used as one of the methods of programming via the ISP. There are many other circuits that can be built to function as an ISP.
  2. via a bootloader configured for UART1. UART1 is connected to the CM-iGLX via a multi-dropped RS485 channel, this allows the user to:
    1. generate an executable on a PC,
    2. transfer the executable wirelessly to the CM-iGLX, then
    3. transfer the executable to UART1 via CM-iGLX’s USB to RS485 converter.


The application AVRStudio (freeware) can be used to program the Atmel in C. AVRStudio can be downloaded from Atmel’s web site.

GPIO Allocation

The Atmel ATMega128 has 8 available analog inputs, this is extended to 16 by using a SDI 8-channel A2D I/O extender – TI ADS7844. Also, a PNI MicroMag3 3-Axis Magnetic Sensor Module gives another 3 analog inputs via the SDI port.


The Body Data Acquisition module acquires the following data:

  1. Tilt-Compensated Digital Compass,
  2. 6-axis Inertial Measurement Unit (IMU),
  3. Infrared Distance Sensor.


The table below describes where each analog signal is read.

Device Channel Description
ATMega128 AI0 5-axis IMU AX
AI1 5-axis IMU AY
AI2 5-axis IMU AZ
AI3 5-axis IMU REF
AI4 5-axis IMU GX
AI5 5-axis IMU GY
AI6 IR Distance Sensor
AI7 IR Distance Sensor
ADS7844 Ch0 1-axis Gyro A1 (temp)
Ch1 1-axis Gyro A2 (2.5V)
Ch2 1-axis Gyro A3 (G-Z)
Ch3 External AI3
Ch4 External AI4
Ch5 External AI5
Ch6 External AI6
Ch7
MicroMag3 AI0 MicroMag3 Compass k-X
AI1 MicroMag3 Compass k-Y
AI2 MicroMag3 Compass k-Z


To aid in programming the Body Data Acquisition module, the table below shows the complete I/O allocation for the ATMega128 and ADS7844.


HySense GPIO.jpg


A pdf document with the GPIO allocation may also be downloaded: HySense - GPIO Allocation


Software

HyInt and HySense, the Body Data Acquisition Module communicate via a multi-drop RS485 serial channel. The other node on this serial channel is HySense Lite, the Head Data Acquisition Module.

Connection: HyInt USB1 - USB to RS485 Converter - HySense UART1

Source Code and Firmware
Software:
  • ATMega128 bootloader, link to be added here ....
  • ATMega128 software, link to be added here ....
Firmware:
  • ATMega128 bootloader firmware, link to be added here ....
  • ATMega128 firmware, link to be added here ....

Protocol

HyInt communicates with the Data Acquisition Modules using a 2-wire asynchronous serial channel, the parameters for this serial channel are as follows:

  • Baud Rate: 115200Kb/s,
  • Number of Data bits: 8,
  • Parity: NO,
  • Stop Bits: 1.


The network established between HyInt and the Data Acquisition Modules is a MASTER - SLAVE topology, i.e. all commands are initiated by the MASTER, HyInt, whilst the SLAVE simply responds to these commands. For all commands issued by the MASTER, the Data Acquisition Modules will respond with an ID that is equal to the OPCODE. Please note that the Data Acquisition Modules will not respond to any illegal or corrupt packets.


The packet structure used for commands and responses is shown in the tables below:


Command Packet Structure

Length Value Description
1 <SOH> Packet Start byte
1 <ID> Device ID
2 <LEN> Data length (Not including <OPCODE>, <CRC> and <LEN>)
1 <OPCODE> Operation code
0-1024 <DATA> Data
2 <CRC16 > Two bytes CRC16 checksum


Response Packet Structure

Length Value Description
1 <SOH> Packet Start byte
1 <ID> Device ID (reserved for future usage)
2 <LEN> Data length
1 <Answer ID> Operation code
0-1024 <DATA> Data
2 <CRC16 > Two bytes CRC16 checksum


Definitions:


  • <SOH> = Start byte. (0xFF)
  • <CRC16> is the same which is used by Xmodem/Ymodem, Formula: CRC16 = x^16 + x^12 + x^5 + 1


Example:


Here is an example of the data flow, e.g. sending a ‘Get Distance’ command to head board:

SENDER: <soh> 0x02 0x01 0x00 0x00 – CRC(High) – CRC(Low)
RECEIVER: <soh> 0x02 0x01 0x00 0x04 - data(4bytes)- CRC(High) - CRC(Low)

Commands

The commands used between HyInt and HySense are very similar to HyKim CommsProtocol v1, but they are slighty different as the number and types of sensors used in v2 of the electronic system differ. This section will be completed very soon.

Debugging Tips

There is a second Uart port which is used for debug. In normal mode, you can only to see debug information through this Uart. You can also switch it to communication port, by simply type “PC” then Enter in Hyper Terminal. After that you can send command listed in the previous section to the board and even update the firmware image.

HySense Lite

Hardware

PB0805 HySense Lite - Head Data Acquisition Module


HySense Lite, the Head Acquisition module, PB0805, mounts horizontally within HyKim's as shown in the image below.


HySenseLite.jpg
PB0805 HySense Lite


HySense Lite, the Head Acquisition module, PB0805, mounts horizontally within HyKim's as shown in the image below.


Image Not Yet Available.jpg
PB0805 mounted in HyKim's Head


Documentation
Schematics:
Sub-modules:
6-axis IMU
The 6-axis IMU that can be fitted to either HySense or HySense Lite are made from 2 modules we source from Spark Fun. Using their 5-axis IMU, which consists of a 3-axis accelerometer and 2-axis gyro, and an additional Z-axis gyro allows us to create this 6-axis IMU. The schematics for their breakout boards along with the device datasheets are below:
5-axis IMU
Schematics:
Datasheets:
Z-axis Gyro
Schematics:
Datasheets:
IR Distance Sensors
Datasheets:
Datasheets:
Software:
  • ATMega128 bootloader, link to be added here ....
  • ATMega128 software, link to be added here ....
Firmware:
  • ATMega128 bootloader firmware, link to be added here ....
  • ATMega128 firmware, link to be added here ....
Programming

An Atmel ATMega128 is used as the mcu for HySense Lite, this mcu can be programmed 2 ways:

  1. By the In System Programmer (ISP), J1 - 6pin IDC connector. USB AVRISP’s are commercially available and can be used as one of the methods of programming via the ISP. There are many other circuits that can be built to function as an ISP.
  2. via a bootloader configured for UART1. UART1 is connected to the CM-iGLX via a multi-dropped RS485 channel, this allows the user to:
    1. generate an executable on a PC,
    2. transfer the executable wirelessly to the CM-iGLX, then
    3. transfer the executable to UART1 via CM-iGLX’s USB to RS485 converter.


The application AVRStudio (freeware) can be used to program the Atmel in C. AVRStudio can be downloaded from Atmel’s web site.

GPIO Allocation

The Atmel ATMega128 has 8 available analog inputs, this is extended to 16 by using a SDI 8-channel A2D I/O extender – TI ADS7844.


The Body Data Acquisition module acquires the following data:

  1. 6-axis Inertial Measurement Unit (IMU),
  2. Infrared Distance Sensor.


The table below describes where each analog signal is read.

Device Channel Description
ATMega128 AI0 5-axis IMU AX
AI1 5-axis IMU AY
AI2 5-axis IMU AZ
AI3 5-axis IMU REF
AI4 5-axis IMU GX
AI5 5-axis IMU GY
AI6 IR Distance Sensor
AI7 IR Distance Sensor
ADS7844 Ch0 1-axis Gyro A1 (temp)
Ch1 1-axis Gyro A2 (2.5V)
Ch2 1-axis Gyro A3 (G-Z)
Ch3 External AI3
Ch4 External AI4
Ch5 External AI5
Ch6 External AI6
Ch7


To aid in programming the Body Data Acquisition module, the table below shows the complete I/O allocation for the ATMega128 and ADS7844.


HySense Lite GPIO.jpg


A pdf document with the GPIO allocation may also be downloaded: HySense Lite- GPIO Allocation


Software

HyInt and HySense Lite , the Head Data Acquisition Module communicate via a multi-drop RS485 serial channel. The other node on this serial channel is HySense, the Body Data Acquisition Module.

Connection: HyInt USB1 - USB to RS485 Converter - HySense Lite UART1

Source Code and Firmware
Software:
  • ATMega128 bootloader, link to be added here ....
  • ATMega128 software, link to be added here ....
Firmware:
  • ATMega128 bootloader firmware, link to be added here ....
  • ATMega128 firmware, link to be added here ....

Protocol

HyInt communicates with the Data Acquisition Modules using a 2-wire asynchronous serial channel, the parameters for this serial channel are as follows:

  • Baud Rate: 115200Kb/s,
  • Number of Data bits: 8,
  • Parity: NO,
  • Stop Bits: 1.


The network established between HyInt and the Data Acquisition Modules is a MASTER - SLAVE topology, i.e. all commands are initiated by the MASTER, HyInt, whilst the SLAVE simply responds to these commands. For all commands issued by the MASTER, the Data Acquisition Modules will respond with an ID that is equal to the OPCODE. Please note that the Data Acquisition Modules will not respond to any illegal or corrupt packets.


The packet structure used for commands and responses is shown in the tables below:


Command Packet Structure

Length Value Description
1 <SOH> Packet Start byte
1 <ID> Device ID
2 <LEN> Data length (Not including <OPCODE>, <CRC> and <LEN>)
1 <OPCODE> Operation code
0-1024 <DATA> Data
2 <CRC16 > Two bytes CRC16 checksum


Response Packet Structure

Length Value Description
1 <SOH> Packet Start byte
1 <ID> Device ID (reserved for future usage)
2 <LEN> Data length
1 <Answer ID> Operation code
0-1024 <DATA> Data
2 <CRC16 > Two bytes CRC16 checksum


Definitions:


  • <SOH> = Start byte. (0xFF)
  • <CRC16> is the same which is used by Xmodem/Ymodem, Formula: CRC16 = x^16 + x^12 + x^5 + 1


Example:


Here is an example of the data flow, e.g. sending a ‘Get Distance’ command to head board:

SENDER: <soh> 0x02 0x01 0x00 0x00 – CRC(High) – CRC(Low)
RECEIVER: <soh> 0x02 0x01 0x00 0x04 - data(4bytes)- CRC(High) - CRC(Low)

Commands

The commands used between HyInt and HySense are very similar to HyKim CommsProtocol v1, but they are slighty different as the number and types of sensors used in v2 of the electronic system differ. This section will be completed very soon.

Debugging Tips

There is a second Uart port which is used for debug. In normal mode, you can only to see debug information through this Uart. You can also switch it to communication port, by simply type “PC” then Enter in Hyper Terminal. After that you can send command listed in the previous section to the board and even update the firmware image.

OLED_Board

PB0701 Dual OLED Board

The Dual OLED board, PB0701, is a very simple board that contains circuitry to boost the DC input voltage to 12V which is required by the OLED’s. Other than that, the board simply takes signals from the head based ATMega128 and routes these to the required pins on the OLED’s connector.

The OLED’s used for the eye’s are Univision UG-2828GXXXF01 with 128RGB x 128 pixel resolution. This particular OLED uses a SSD1339 graphics controller with built in graphic acceleration functions. Via the head based ATMega128 it is possible to display any type of information, graphics or text.


HyInt Head.jpg
Dual OLED Board mounted in HyKim's Head

Hardware

Documentation

Schematics:
Datasheets:

Sensor_Board

PB0702 Capacitive Touch sensors Board

The Sensor board, PB702, is simply 3 Capacitive Touch sensors with LED confirmation.

This board is located under HYKIM’S chin, as shown in the image below. The board uses a Quantum Research QT240-ISSG ic to detect ‘touches’, this ic provides TTL level outputs which are sent to the Head Data Acquisition module via J1.


HyKim HeadSenseButtons.jpg
PB702 mounted horizontally at the bottom of HYKIM’S head

Hardware

Documentation

Schematics:
Datasheets:

To Do (v3)

Things that need to be done to complete this document:

  1. expand What's included with HyKim section in the Introduction
  2. complete the Safety section (Section 2)
  3. add images of HyInt
  4. add links to source code and firmware for HyInt
  5. add link to latest Debian Etch image
  6. add sample code for CM-iGLX
  7. add images of HySense
  8. add links to source code and firmware for HySense
  9. add images of HySense Lite
  10. add links to source code and firmware for HySense Lite
Personal tools