JeVoisBase  1.20
JeVois Smart Embedded Machine Vision Toolkit Base Modules
Share this page:
BurnTest Class Reference

This is a burn test: run the quad-core saliency demo while also loading up CPU, GPU and NEON in the background. More...

Inheritance diagram for BurnTest:
Collaboration diagram for BurnTest:

Public Member Functions

 BurnTest (std::string const &instance)
 Constructor. More...
 
void postInit () override
 Set our GPU program after we are fully constructed and our Component path has been set. More...
 
void postUninit () override
 Kill our external processes on uninit. More...
 
virtual ~BurnTest ()
 Virtual destructor for safe inheritance. More...
 
virtual void process (jevois::InputFrame &&inframe, jevois::OutputFrame &&outframe) override
 Processing function. More...
 
- Public Member Functions inherited from jevois::Module
 Module (std::string const &instance)
 
virtual ~Module ()
 
virtual void process (InputFrame &&inframe)
 
virtual void process (InputFrame &&inframe, GUIhelper &helper)
 
virtual void sendSerial (std::string const &str)
 
virtual void parseSerial (std::string const &str, std::shared_ptr< UserInterface > s)
 
virtual void supportedCommands (std::ostream &os)
 
- Public Member Functions inherited from jevois::Component
 Component (std::string const &instance)
 
virtual ~Component ()
 
std::shared_ptr< Comp > addSubComponent (std::string const &instance, Args &&...args)
 
void removeSubComponent (std::shared_ptr< Comp > &component)
 
void removeSubComponent (std::string const &instance, bool warnIfNotFound=true)
 
std::shared_ptr< Comp > getSubComponent (std::string const &instance) const
 
bool isTopLevel () const
 
Engineengine () const
 
bool initialized () const
 
const std::string & className () const
 
const std::string & instanceName () const
 
std::vector< std::string > setParamVal (std::string const &paramdescriptor, T const &val)
 
void setParamValUnique (std::string const &paramdescriptor, T const &val)
 
std::vector< std::pair< std::string, T > > getParamVal (std::string const &paramdescriptor) const
 
getParamValUnique (std::string const &paramdescriptor) const
 
std::vector< std::string > setParamString (std::string const &paramdescriptor, std::string const &val)
 
void setParamStringUnique (std::string const &paramdescriptor, std::string const &val)
 
std::vector< std::pair< std::string, std::string > > getParamString (std::string const &paramdescriptor) const
 
std::string getParamStringUnique (std::string const &paramdescriptor) const
 
void freezeParam (std::string const &paramdescriptor)
 
void unFreezeParam (std::string const &paramdescriptor)
 
void freezeAllParams ()
 
void unFreezeAllParams ()
 
std::string descriptor () const
 
void setParamsFromFile (std::string const &filename)
 
std::istream & setParamsFromStream (std::istream &is, std::string const &absfile)
 
virtual void paramInfo (std::shared_ptr< UserInterface > s, std::map< std::string, std::string > &categs, bool skipFrozen, std::string const &cname="", std::string const &pfx="")
 
void foreachParam (std::function< void(std::string const &compname, ParameterBase *p)> func, std::string const &cname="")
 
std::shared_ptr< DynamicParameter< T > > addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ParameterCategory const &category)
 
std::shared_ptr< DynamicParameter< T > > addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ValidValuesSpec< T > const &validValuesSpec, ParameterCategory const &category)
 
void setDynamicParameterCallback (std::string const &name, std::function< void(T const &)> cb, bool callnow=true)
 
void removeDynamicParameter (std::string const &name)
 
void setPath (std::string const &path)
 
std::filesystem::path absolutePath (std::filesystem::path const &path="")
 
std::shared_ptr< Comp > addSubComponent (std::string const &instance, Args &&...args)
 
void removeSubComponent (std::shared_ptr< Comp > &component)
 
void removeSubComponent (std::string const &instance, bool warnIfNotFound=true)
 
std::shared_ptr< Comp > getSubComponent (std::string const &instance) const
 
bool isTopLevel () const
 
Engineengine () const
 
bool initialized () const
 
const std::string & className () const
 
const std::string & instanceName () const
 
std::vector< std::string > setParamVal (std::string const &paramdescriptor, T const &val)
 
void setParamValUnique (std::string const &paramdescriptor, T const &val)
 
std::vector< std::pair< std::string, T > > getParamVal (std::string const &paramdescriptor) const
 
getParamValUnique (std::string const &paramdescriptor) const
 
std::vector< std::string > setParamString (std::string const &paramdescriptor, std::string const &val)
 
void setParamStringUnique (std::string const &paramdescriptor, std::string const &val)
 
std::vector< std::pair< std::string, std::string > > getParamString (std::string const &paramdescriptor) const
 
std::string getParamStringUnique (std::string const &paramdescriptor) const
 
void freezeParam (std::string const &paramdescriptor)
 
void unFreezeParam (std::string const &paramdescriptor)
 
void freezeAllParams ()
 
void unFreezeAllParams ()
 
std::string descriptor () const
 
void setParamsFromFile (std::string const &filename)
 
std::istream & setParamsFromStream (std::istream &is, std::string const &absfile)
 
virtual void paramInfo (std::shared_ptr< UserInterface > s, std::map< std::string, std::string > &categs, bool skipFrozen, std::string const &cname="", std::string const &pfx="")
 
void foreachParam (std::function< void(std::string const &compname, ParameterBase *p)> func, std::string const &cname="")
 
std::shared_ptr< DynamicParameter< T > > addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ParameterCategory const &category)
 
std::shared_ptr< DynamicParameter< T > > addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ValidValuesSpec< T > const &validValuesSpec, ParameterCategory const &category)
 
void setDynamicParameterCallback (std::string const &name, std::function< void(T const &)> cb, bool callnow=true)
 
void removeDynamicParameter (std::string const &name)
 
void setPath (std::string const &path)
 
std::filesystem::path absolutePath (std::filesystem::path const &path="")
 
- Public Member Functions inherited from jevois::ParameterRegistry
virtual ~ParameterRegistry ()
 

Protected Attributes

std::shared_ptr< SaliencyitsSaliency
 
std::shared_ptr< Kalman2DitsKF
 
jevois::Timer itsTimer
 
std::future< void > itsGPUfut
 
std::shared_ptr< FilterGPUitsFilter
 
cv::Mat itsGrayImg
 
std::future< void > itsNEONfut
 
cv::Mat itsRGBAimg
 
std::atomic< bool > itsRunning
 

Additional Inherited Members

- Protected Member Functions inherited from jevois::Component
virtual void preInit ()
 
virtual void preUninit ()
 
virtual void preInit ()
 
virtual void preUninit ()
 
- Protected Member Functions inherited from jevois::ParameterRegistry
void addParameter (ParameterBase *const param)
 
void removeParameter (ParameterBase *const param)
 
void callbackInitCall ()
 

Detailed Description

This is a burn test: run the quad-core saliency demo while also loading up CPU, GPU and NEON in the background.

This burn test exercises all aspects of your JeVois smart camera to the maximum, namely:

  • launch two instances of whetstone (floating point benchmark test) running in the background
  • launch two instances of dhrystone (integer benchmark test) running in the background
  • grab frames from the camera sensor
  • run the quad-core visual attention algorithm
  • in parallel, run the NEON demo that blurs the video frames using NEON accelerated processor instructions
  • in parallel, run the GPU demo that processes the video through 4 image filters (shaders)
  • stream attention video results over USB
  • issue messages over the serial port

This burn test is useful to test JeVois hardware for any malfunction. It should run forever without crashing on JeVois hardware. Demo display layout and markings are the same as for the DemoSaliency module.

This burn test is one of the tests that every JeVois camera produced is tested with at the factory, before the unit is shipped out.

Things to try

Select the burntest video mode (note that it is 640x300 @ 10fps, while the default MicroSD card also includes a mode with 640x300 @ 60fps that runs the DemoSaliency module instead). You need to activate it (remove the leading # sign) in JEVOIS:/config/videomappings.cfg as it is disabled by default. Observe the CPU temperature at the bottom of the live video window. If it ever reaches 75C (which it should not under normal conditions given the high power fan on the JeVois smart camera), the CPU frequency shown next to the temperature will drop down below 1344 MHz, and will then come back up as the CPU temperature drops below 75C.

Connect your JeVois camera to your host computer through a USB Tester device that measures voltage, current, and power. You should reach about 3.7 Watts under the burn test, which is the maximum we have ever been able to achieve with a JeVois unit.

Author
Laurent Itti
Videomapping:
YUYV 640 300 10.0 YUYV 320 240 10.0 JeVois BurnTest
Email:
itti@usc.edu
Address:
University of Southern California, HNB-07A, 3641 Watt Way, Los Angeles, CA 90089-2520, USA
Main URL:
http://jevois.org
Support URL:
http://jevois.org/doc
Other URL:
http://iLab.usc.edu
License:
GPL v3
Distribution:
Unrestricted
Restrictions:
None

Definition at line 88 of file BurnTest.C.

Constructor & Destructor Documentation

◆ BurnTest()

BurnTest::BurnTest ( std::string const &  instance)
inline

Constructor.

Definition at line 92 of file BurnTest.C.

References itsFilter, itsKF, and itsSaliency.

◆ ~BurnTest()

virtual BurnTest::~BurnTest ( )
inlinevirtual

Virtual destructor for safe inheritance.

Definition at line 121 of file BurnTest.C.

Member Function Documentation

◆ postInit()

void BurnTest::postInit ( )
inlineoverridevirtual

Set our GPU program after we are fully constructed and our Component path has been set.

Reimplemented from jevois::Component.

Definition at line 101 of file BurnTest.C.

References itsFilter, and itsRunning.

◆ postUninit()

void BurnTest::postUninit ( )
inlineoverridevirtual

Kill our external processes on uninit.

Reimplemented from jevois::Component.

Definition at line 110 of file BurnTest.C.

References itsGPUfut, itsNEONfut, itsRunning, and system().

◆ process()

Member Data Documentation

◆ itsFilter

std::shared_ptr<FilterGPU> BurnTest::itsFilter
protected

Definition at line 291 of file BurnTest.C.

Referenced by BurnTest(), postInit(), and process().

◆ itsGPUfut

std::future<void> BurnTest::itsGPUfut
protected

Definition at line 290 of file BurnTest.C.

Referenced by postUninit(), and process().

◆ itsGrayImg

cv::Mat BurnTest::itsGrayImg
protected

Definition at line 292 of file BurnTest.C.

Referenced by process().

◆ itsKF

std::shared_ptr<Kalman2D> BurnTest::itsKF
protected

Definition at line 288 of file BurnTest.C.

Referenced by BurnTest(), and process().

◆ itsNEONfut

std::future<void> BurnTest::itsNEONfut
protected

Definition at line 293 of file BurnTest.C.

Referenced by postUninit(), and process().

◆ itsRGBAimg

cv::Mat BurnTest::itsRGBAimg
protected

Definition at line 294 of file BurnTest.C.

Referenced by process().

◆ itsRunning

std::atomic<bool> BurnTest::itsRunning
protected

Definition at line 295 of file BurnTest.C.

Referenced by postInit(), postUninit(), and process().

◆ itsSaliency

std::shared_ptr<Saliency> BurnTest::itsSaliency
protected

Definition at line 287 of file BurnTest.C.

Referenced by BurnTest(), and process().

◆ itsTimer

jevois::Timer BurnTest::itsTimer
protected

Definition at line 289 of file BurnTest.C.

Referenced by process().


The documentation for this class was generated from the following file: