Project containing drivers/classes for boards, sensors, motor controllers, mechanisms, and other hardware commonly used on IHMC robots.
This subproject contains code for etherCAT device communication and control, as well as abstract classes for creating a hardware device map and manager
- 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
This subproject contains code for monitoring and displaying the current status of the devices on the robot in a tabular form.
- 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
This subproject contains code to translate xml-formatted robot descriptions into device/mechanism settings and parameters
- 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
There are four steps to follow for basic implementation for your own robot using devices already implemented:
- 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 byXmlHardwareDescriptionLoader. An example can be found here - Create a class that extends
AbstractHardwareMapto properly create and register all devices and mechanisms - Create a class that extends
AbstractHardwareManagerto properly manage reading and writing to each device and mechanism - Create a controller that can communicate using EtherCAT. You can either extend the pre-made
EtherCATRealtimeThreadfor simplicity or implement your own EtherCAT control by implementingMasterInterface. Both classes are part of ihmc-ethercat-master.
- 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)
- Reese Peterson (rpeterson@ihmc.org)
- Stefan Fasano (sfasano@ihmc.org)
- Dexton Anderson (danderson@ihmc.org)
- Duncan Calvert (dcalvert@ihmc.org)
- Robert Griffin (rgriffin@ihmc.org)