50 #ifndef _HEK_MONITOR_H 51 #define _HEK_MONITOR_H 59 #undef HEK_HAS_SYS_BOARD 64 #define HEK_HAS_ARDUINO 66 #include <sys/types.h> 70 #include "rnr/rnrconfig.h" 71 #include "rnr/units.h" 73 #ifdef HEK_HAS_SYS_BOARD 75 #endif // HEK_HAS_SYS_BOARD 80 #include "Dynamixel/Dynamixel.h" 81 #include "Dynamixel/DynaComm.h" 82 #include "Dynamixel/DynaServo.h" 83 #include "Dynamixel/DynaChain.h" 84 #include "Dynamixel/DynaBgThread.h" 158 int open(uint_t uHekHwVer,
183 int start(
double fHz=30.0);
452 #if defined(HEK_HAS_ARDUINO) 454 #elif defined(HEK_HAS_SYS_BOARD) 457 #endif // hardware interface 490 pthread_mutex_lock(&m_mutexMon);
504 pthread_mutex_unlock(&m_mutexMon);
582 #endif // _HEK_MONITOR_H byte_t readEEGpio()
Read End Effector GPIO states.
void runWait()
Monitor thread block timed wait in run state.
pthread_mutex_t m_mutexMon
monitor mutex
bool m_bAlarmCond
alarm condition
byte_t getJointLimitBits()
Get current limit switch bit values.
HekOpticalLimit_T * getJointLimitInfo(byte_t byMask)
Get joint limits information.
void idleWait()
Monitor thread block wait in idle state.
bool m_bIsOpen
hardware is [not] open
map< int, HekJointOptical > MapOpticalLimits
Map of optical limit switches for all joints in all kinematic chains.
HekTriState getJointLimitTriState(HekRobotJoint *pJoint, int nLimit)
Get current joint limit tri-state.
HekDesc - Hekateros full robotic manipulator descripition class interface.
void markEStopCond(bool bEStopCond)
Mark emergency stop condition.
void monJointLimits()
Monitor joint (optical) limits for state transitions.
int getPoweredCond()
Get motors are powered condition.
Operational robotic joint description class.
HekUno m_hwif
arduino compatible subproc i/f
pthread_t m_threadMon
monitor pthread identifier
int stop()
Stop monitoring.
Hekateros Robot State classes interface.
void writeStartHaltingSystem()
Write system is halting.
<b><i>Hekateros</i></b> Arduino Uno compatible I/O board class interface.
void addServoChainToMonitor(DynaChain *pDynaChain)
Add servo chain to monitor for alarms and health.
HekTriState
<b><i>Hekateros</i></b> tri-state type.
void addKinematicsToMonitor(HekKinematics *pKin)
Add kinematics for safety control.
MonStateId
<b><i>Hekateros</i></b> internal monitor states.
The Hekateros kinematics and dynamics class interface.
Hekateros joint classes interfaces.
MonStateId m_eMonState
<b><i>Hekateros</i></b> monitor state
MonStateId getMonState()
Get the current monitor state.
struct timespec m_tStart
start time for next monitor work
int getEStopCond()
Get monitoring emergency stop condition.
MonThStateId m_eMonThState
monitoring thread state
struct timespec m_tPeriod
derived monitoring period
double m_fHz
monitoring hertz
HekKinematics * m_pKin
kinematics
bool m_bEStopCond
estop condition
DynaChain * m_pDynaChain
dynamixel servo chain alarms
const char * getThStateName(MonThStateId eNewState)
Get thread state name string.
int addJointLimitsToMonitor(HekSpecJoint_T *pSpecJoint, HekRobotJoint *pJoint)
Add any joint limit switches to quick look-up map.
void markAlarmCond(bool bAlarmedCond)
Mark alarm condition.
power on and/or (re)initializing
Top-level package include file.
void monEEAuxIO()
Monitor End Effector auxillary I/O.
int configEEGpioPin(byte_t byPin, char cDir)
Configure End Effector GPIO pin direction.
int close()
Close resources to monitor hardware.
static void * monThread(void *pArg)
Monitor thread.
void signalMonThread(MonThStateId eNewState)
Signal monitor thread of new state.
int open(uint_t uHekHwVer, const std::string &strDevArduino=HekDevArduino, int nBaudRateArduino=HekBaudRateArduino)
Open resources to monitor hardware.
byte_t readFwVersion()
Read firmware version.
void unlock()
Unlock the monitor thread mutex.
const int HekBaudRateArduino
arduino baudrate
HekMonitor()
Default constructor.
MapOpticalLimits m_opticalLimits
joint optical limits map
void writeStatusLED(bool bState)
Write CPU status LED.
MonThStateId
monitor thread states.
<b><i>Hekateros</i></b> power, joint limits, and alarm monitoring class.
void markPoweredCond(bool bPoweredCond)
Mark motors are powered condition.
byte_t m_byLimitBits
limit bit state
Hekateros common utilities.
void lock()
Lock the monitor thread mutex.
bool m_bPoweredCond
power to motors condition
const char *const HekDevArduino
arduino device name
byte_t readLimitSwitches()
Read joint limit switch states.
int start(double fHz=30.0)
Start monitoring added objects.
void writeAlarmLED(bool bState)
Write alarm LED.
Robotic joint specification.
byte_t readEEGpioPin(byte_t byPin)
Read one End Effector GPIO pin state.
byte_t getEEAuxBits()
Get current End Effector auxilliary bit values.
void testInterface()
Test interface.
void destroyMonThread()
Destroy the monitor thread.
<b><i>Hekateros</i></b> original system board.
int getAlarmCond()
Get monitoring alarm condition.
virtual ~HekMonitor()
Destructor.
The <b><i>Hekateros</i></b> namespace encapsulates all <b><i>Hekateros</i></b> related constructs...
void monServoAlarms()
Monitor servos for alarms.
MonThStateId m_eMonThStateOld
monitoring thread old state
pthread_cond_t m_condMon
monitor condition
int createMonThread()
Create the monitor thread.
int writeEEGpioPin(byte_t byPin, byte_t byVal)
Write state to one End Effector GPIO pin.
byte_t m_byEEAuxBits
end effector auxilliary bit state