Skip to content

ihmcrobotics/ihmc-common-hardware

Repository files navigation

ihmc-common-hardware

Project containing drivers/classes for boards, sensors, motor controllers, mechanisms, and other hardware commonly used on IHMC robots.

ihmc-common-hardware-devices

This subproject contains code for etherCAT device communication and control, as well as abstract classes for creating a hardware device map and manager

Structure

  • commonHardware: Main directory, contains abstract classes for creating a hardware map and manager
    • devices: Contains code for commonly used devices (IMU, encoder, load cell) and interfaces for easy integration of new devices into the system
    • mechanisms: Contains code for managing actuation mechanisms and interfaces for integration of new types into the system. Currently, only cycloids have a full implementation

ihmc-hardware-status-ui

This subproject contains code for monitoring and displaying the current status of the devices on the robot in a tabular form.

Structure

  • hardwareStatusUI: Main directory
    • controllerSide: Holding the current status of a device and providing it for the visualizer
    • visualizerSide: Creating the table visualization and implementing it within SCS2

ihmc-hardware-xml-toolkit

This subproject contains code to translate xml-formatted robot descriptions into device/mechanism settings and parameters

Structure

  • hardwareXmlToolkit: Main directory, contains classes for a general hardware description and the loader used to translate descriptions
    • devices: Translating device descriptions from xml formatting
    • joints: Translating joint descriptions from xml formatting
    • priority: Translating thread priority settings from xml formatting
    • settings: Translating communication (EtherCAT, ROS2) settings from xml formatting
    • transmissions: Translating transmission settings from xml formatting

How to Implement for your own robot

There are four steps to follow for basic implementation for your own robot using devices already implemented:

  1. Format the xml files describing the robot to match XmlHardwareDescription, and make sure the description of each device and mechanism is formatted so that they can be properly loaded by XmlHardwareDescriptionLoader. An example can be found here
  2. Create a class that extends AbstractHardwareMap to properly create and register all devices and mechanisms
  3. Create a class that extends AbstractHardwareManager to properly manage reading and writing to each device and mechanism
  4. Create a controller that can communicate using EtherCAT. You can either extend the pre-made EtherCATRealtimeThread for simplicity or implement your own EtherCAT control by implementing MasterInterface. Both classes are part of ihmc-ethercat-master.

Making a Release

  • Bump the version in group.product.properties
  • Follow the remaining steps here (skip the version bump step in that guide, since you have already done it)

Maintainers

About

Project containing drivers/classes for boards, sensors, motor controllers, mechanisms, and other hardware commonly used on IHMC robots.

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages