A class to interface a Rovio robot (manufactured by WowWee).
Supports: Simple motion commands, video streaming.
#include <mrpt/hwdrivers/CRovio.h>
Classes | |
| struct | TEncoders | 
| struct | TOptions | 
| struct | TRovioState | 
Public Types | |
| enum | status {  idle, driving_home, docking, executing_path, recording_path }  | 
Public Member Functions | |
| void | initialize () | 
| Establish Connection with Rovio and log in its system: Important, fill out "options" members BEFORE calling this method.  More... | |
| bool | move (char direction, int speed=5) | 
| move send Rovio the command to move in the specified direcction  More... | |
| bool | rotate (char direction, int speed=5) | 
| rotate send Rovio the command to rotate in the specified direcction 'r'->right, 'l'->left  More... | |
| bool | takeHeadUp () | 
| Head positions.  More... | |
| bool | takeHeadMiddle () | 
| bool | takeHeadDown () | 
| bool | pathRecord () | 
| bool | pathRecordAbort () | 
| bool | pathRecordSave (const std::string &path_name) | 
| bool | pathDelete (const std::string &path_name) | 
| bool | pathGetList (std::string &path_list) | 
| Get list of saved paths.  More... | |
| bool | pathRunForward () | 
| bool | pathRunBackward () | 
| bool | pathRunStop () | 
| bool | pathRunPause () | 
| bool | pathRename (const std::string &old_name, const std::string &new_name) | 
| bool | goHome (bool dock, int speed=5) | 
| goHome(bool dock) drives Rovio in front of charging station if the paremeter dock is set to false, otherwise it also docks  More... | |
| void | loadConfig (const mrpt::utils::CConfigFileBase &configSource, const std::string §ion) | 
| Loads the rovio camera calibration parameters (of leave the default ones if not found) (See CGenericSensor), then call to "loadConfig_sensorSpecific".  More... | |
| bool | retrieve_video () | 
| This function launchs a thread with the function "thread_video()" which gets frames into a buffer.  More... | |
| bool | stop_video () | 
| This function stops and joins the thread launched by "retrieve_video()".  More... | |
| bool | getNextImageSync (mrpt::obs::CObservationImagePtr &lastImage) | 
| Returns the next frame from Rovio's live video stream, after starting the live streaming with retrieve_video()  More... | |
| bool | captureImageAsync (mrpt::utils::CImage &out_img, bool recttified) | 
| Returns a snapshot from Rovio, if rectified is set true, the returned image is rectified with the parameters of intrinsic_matrix and distortion_matrix.  More... | |
| bool | isVideoStreamming () const | 
| Return true if video is streaming correctly.  More... | |
| bool | getRovioState (TRovioState &state) | 
| Returns a TRovioState with internal information of Rovio (State, Navigation Signal Strength, Wifi Signal Strength)  More... | |
| bool | getEncoders (TEncoders &encoders) | 
| Returns a TEncoders with information of Rovio encoders (since last read, it seems Rovio is continuously reading with unknown sample time)  More... | |
| bool | getPosition (mrpt::math::TPose2D &out_pose) | 
| Returns the Rovio's pose.  More... | |
| CRovio () | |
| virtual | ~CRovio () | 
Public Attributes | |
| struct mrpt::hwdrivers::CRovio::TOptions | options | 
| struct mrpt::hwdrivers::CRovio::TEncoders | encoders | 
Private Member Functions | |
| void | thread_video () | 
| This function takes a frame and waits until getLastImage ask for it, and so on.  More... | |
| bool | send_cmd_action (int act, int speed) | 
| bool | path_management (int act) | 
| bool | path_management (int act, const std::string &path_name) | 
| bool | general_command (int act, std::string &response, std::string &errormsg) | 
Private Attributes | |
| mrpt::system::TThreadHandle | m_videoThread | 
| bool | m_videothread_must_exit | 
| bool | m_videothread_initialized_done | 
| bool | m_videothread_initialized_error | 
| bool | m_videothread_finished | 
| mrpt::obs::CObservationImagePtr | buffer_img | 
| mrpt::synch::CCriticalSection | buffer_img_cs | 
| CRovio::CRovio | ( | ) | 
Definition at line 506 of file CRovio.cpp.
      
  | 
  virtual | 
Definition at line 511 of file CRovio.cpp.
References isVideoStreamming(), and stop_video().
| bool CRovio::captureImageAsync | ( | mrpt::utils::CImage & | out_img, | 
| bool | recttified | ||
| ) | 
Returns a snapshot from Rovio, if rectified is set true, the returned image is rectified with the parameters of intrinsic_matrix and distortion_matrix.
This function works asynchronously and does not need to have enabled the live video streaming.
Definition at line 350 of file CRovio.cpp.
References mrpt::hwdrivers::CRovio::TOptions::cameraParams, mrpt::format(), mrpt::utils::net::http_get(), mrpt::hwdrivers::CRovio::TOptions::IP, mrpt::utils::CImage::loadFromStreamAsJPEG(), options, mrpt::hwdrivers::CRovio::TOptions::password, mrpt::utils::CImage::rectifyImageInPlace(), and mrpt::hwdrivers::CRovio::TOptions::user.
      
  | 
  private | 
Definition at line 90 of file CRovio.cpp.
References mrpt::format(), mrpt::utils::net::http_get(), mrpt::hwdrivers::CRovio::TOptions::IP, options, mrpt::hwdrivers::CRovio::TOptions::password, and mrpt::hwdrivers::CRovio::TOptions::user.
Referenced by getEncoders(), getPosition(), getRovioState(), and pathGetList().
| bool CRovio::getEncoders | ( | CRovio::TEncoders & | encoders | ) | 
Returns a TEncoders with information of Rovio encoders (since last read, it seems Rovio is continuously reading with unknown sample time)
Definition at line 411 of file CRovio.cpp.
References convertToLong(), encoders, mrpt::obs::gnss::error, general_command(), mrpt::hwdrivers::CRovio::TEncoders::left, MRPT_UNUSED_PARAM, and mrpt::system::os::strcpy().
| bool CRovio::getNextImageSync | ( | mrpt::obs::CObservationImagePtr & | lastImage | ) | 
Returns the next frame from Rovio's live video stream, after starting the live streaming with retrieve_video()
Definition at line 331 of file CRovio.cpp.
References buffer_img, buffer_img_cs, and isVideoStreamming().
| bool CRovio::getPosition | ( | mrpt::math::TPose2D & | out_pose | ) | 
Returns the Rovio's pose.
Definition at line 470 of file CRovio.cpp.
References general_command(), mrpt::math::TPose2D::phi, mrpt::system::os::strcpy(), mrpt::math::TPose2D::x, and mrpt::math::TPose2D::y.
| bool CRovio::getRovioState | ( | CRovio::TRovioState & | status | ) | 
Returns a TRovioState with internal information of Rovio (State, Navigation Signal Strength, Wifi Signal Strength)
Definition at line 377 of file CRovio.cpp.
References mrpt::obs::gnss::error, general_command(), MRPT_UNUSED_PARAM, mrpt::system::os::strcpy(), and mrpt::math::TPose2D::x.
| bool CRovio::goHome | ( | bool | dock, | 
| int | speed = 5  | 
        ||
| ) | 
goHome(bool dock) drives Rovio in front of charging station if the paremeter dock is set to false, otherwise it also docks
Definition at line 202 of file CRovio.cpp.
References send_cmd_action().
Establish Connection with Rovio and log in its system: Important, fill out "options" members BEFORE calling this method.
| std::runtime | On errors | 
Definition at line 43 of file CRovio.cpp.
References mrpt::format(), mrpt::utils::net::http_get(), mrpt::hwdrivers::CRovio::TOptions::IP, options, mrpt::hwdrivers::CRovio::TOptions::password, THROW_EXCEPTION_FMT, and mrpt::hwdrivers::CRovio::TOptions::user.
| bool CRovio::isVideoStreamming | ( | ) | const | 
Return true if video is streaming correctly.
Definition at line 312 of file CRovio.cpp.
References mrpt::system::TThreadHandle::isClear(), m_videoThread, and m_videothread_finished.
Referenced by getNextImageSync(), stop_video(), and ~CRovio().
| void CRovio::loadConfig | ( | const mrpt::utils::CConfigFileBase & | configSource, | 
| const std::string & | section | ||
| ) | 
Loads the rovio camera calibration parameters (of leave the default ones if not found) (See CGenericSensor), then call to "loadConfig_sensorSpecific".
| This | method throws an exception with a descriptive message if some critical parameter is missing or has an invalid value. | 
Definition at line 213 of file CRovio.cpp.
References mrpt::hwdrivers::CRovio::TOptions::cameraParams, mrpt::utils::TCamera::loadFromConfigFile(), and options.
| bool CRovio::move | ( | char | direction, | 
| int | speed = 5  | 
        ||
| ) | 
move send Rovio the command to move in the specified direcction
| direction | 'f'->forward, 'b'->backward, 'r'->right, 'l'->left | 
Definition at line 102 of file CRovio.cpp.
References send_cmd_action().
      
  | 
  private | 
Definition at line 69 of file CRovio.cpp.
References mrpt::format(), mrpt::utils::net::http_get(), mrpt::hwdrivers::CRovio::TOptions::IP, options, mrpt::hwdrivers::CRovio::TOptions::password, and mrpt::hwdrivers::CRovio::TOptions::user.
Referenced by pathDelete(), pathRecord(), pathRecordAbort(), pathRecordSave(), pathRunBackward(), pathRunForward(), pathRunPause(), and pathRunStop().
      
  | 
  private | 
Definition at line 78 of file CRovio.cpp.
References mrpt::format(), mrpt::utils::net::http_get(), mrpt::hwdrivers::CRovio::TOptions::IP, options, mrpt::hwdrivers::CRovio::TOptions::password, and mrpt::hwdrivers::CRovio::TOptions::user.
| bool CRovio::pathDelete | ( | const std::string & | path_name | ) | 
Definition at line 165 of file CRovio.cpp.
References path_management().
| bool CRovio::pathGetList | ( | std::string & | path_list | ) | 
Get list of saved paths.
Definition at line 169 of file CRovio.cpp.
References mrpt::obs::gnss::error, and general_command().
| bool CRovio::pathRecord | ( | ) | 
Definition at line 153 of file CRovio.cpp.
References path_management().
| bool CRovio::pathRecordAbort | ( | ) | 
Definition at line 157 of file CRovio.cpp.
References path_management().
| bool CRovio::pathRecordSave | ( | const std::string & | path_name | ) | 
Definition at line 161 of file CRovio.cpp.
References path_management().
| bool CRovio::pathRename | ( | const std::string & | old_name, | 
| const std::string & | new_name | ||
| ) | 
Definition at line 191 of file CRovio.cpp.
References mrpt::format(), mrpt::utils::net::http_get(), mrpt::hwdrivers::CRovio::TOptions::IP, options, mrpt::hwdrivers::CRovio::TOptions::password, and mrpt::hwdrivers::CRovio::TOptions::user.
| bool CRovio::pathRunBackward | ( | ) | 
Definition at line 179 of file CRovio.cpp.
References path_management().
| bool CRovio::pathRunForward | ( | ) | 
Definition at line 175 of file CRovio.cpp.
References path_management().
| bool CRovio::pathRunPause | ( | ) | 
Definition at line 187 of file CRovio.cpp.
References path_management().
| bool CRovio::pathRunStop | ( | ) | 
Definition at line 183 of file CRovio.cpp.
References path_management().
| bool CRovio::retrieve_video | ( | ) | 
This function launchs a thread with the function "thread_video()" which gets frames into a buffer.
After calling this method, images can be obtained with getNextImageSync()
Definition at line 285 of file CRovio.cpp.
References mrpt::system::createThreadFromObjectMethod(), mrpt::system::TThreadHandle::isClear(), m_videoThread, m_videothread_finished, m_videothread_initialized_done, m_videothread_initialized_error, m_videothread_must_exit, mrpt::system::sleep(), and thread_video().
| bool CRovio::rotate | ( | char | direction, | 
| int | speed = 5  | 
        ||
| ) | 
rotate send Rovio the command to rotate in the specified direcction 'r'->right, 'l'->left
Definition at line 120 of file CRovio.cpp.
References send_cmd_action().
      
  | 
  private | 
Definition at line 58 of file CRovio.cpp.
References mrpt::format(), mrpt::utils::net::http_get(), mrpt::hwdrivers::CRovio::TOptions::IP, options, mrpt::hwdrivers::CRovio::TOptions::password, and mrpt::hwdrivers::CRovio::TOptions::user.
Referenced by goHome(), move(), rotate(), takeHeadDown(), takeHeadMiddle(), and takeHeadUp().
| bool CRovio::stop_video | ( | ) | 
This function stops and joins the thread launched by "retrieve_video()".
Definition at line 317 of file CRovio.cpp.
References isVideoStreamming(), mrpt::system::joinThread(), m_videoThread, and m_videothread_must_exit.
Referenced by ~CRovio().
| bool CRovio::takeHeadDown | ( | ) | 
Definition at line 145 of file CRovio.cpp.
References send_cmd_action().
| bool CRovio::takeHeadMiddle | ( | ) | 
Definition at line 141 of file CRovio.cpp.
References send_cmd_action().
| bool CRovio::takeHeadUp | ( | ) | 
Head positions.
Definition at line 137 of file CRovio.cpp.
References send_cmd_action().
      
  | 
  private | 
This function takes a frame and waits until getLastImage ask for it, and so on.
Definition at line 224 of file CRovio.cpp.
References buffer_img, buffer_img_cs, mrpt::hwdrivers::CRovio::TOptions::cameraParams, mrpt::hwdrivers::CFFMPEG_InputStream::close(), mrpt::format(), mrpt::hwdrivers::CRovio::TOptions::IP, m_videothread_finished, m_videothread_initialized_done, m_videothread_initialized_error, m_videothread_must_exit, mrpt::hwdrivers::CFFMPEG_InputStream::openURL(), options, mrpt::hwdrivers::CFFMPEG_InputStream::retrieveFrame(), and mrpt::system::sleep().
Referenced by retrieve_video().
      
  | 
  private | 
Definition at line 39 of file CRovio.h.
Referenced by getNextImageSync(), and thread_video().
      
  | 
  private | 
Definition at line 40 of file CRovio.h.
Referenced by getNextImageSync(), and thread_video().
| struct mrpt::hwdrivers::CRovio::TEncoders mrpt::hwdrivers::CRovio::encoders | 
Referenced by getEncoders().
      
  | 
  private | 
Definition at line 33 of file CRovio.h.
Referenced by isVideoStreamming(), retrieve_video(), and stop_video().
      
  | 
  private | 
Definition at line 37 of file CRovio.h.
Referenced by isVideoStreamming(), retrieve_video(), and thread_video().
      
  | 
  private | 
Definition at line 35 of file CRovio.h.
Referenced by retrieve_video(), and thread_video().
      
  | 
  private | 
Definition at line 36 of file CRovio.h.
Referenced by retrieve_video(), and thread_video().
      
  | 
  private | 
Definition at line 34 of file CRovio.h.
Referenced by retrieve_video(), stop_video(), and thread_video().
| struct mrpt::hwdrivers::CRovio::TOptions mrpt::hwdrivers::CRovio::options | 
Referenced by captureImageAsync(), general_command(), initialize(), loadConfig(), path_management(), pathRename(), send_cmd_action(), and thread_video().
| Page generated by Doxygen 1.8.14 for MRPT 1.5.5 Git: e06b63dbf Fri Dec 1 14:41:11 2017 +0100 at lun oct 28 01:31:35 CET 2019 |