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::TThreadHandle::clear(), 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 mrpt::system::TThreadHandle::clear(), 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.7 Git: 5902e14cc Wed Apr 24 15:04:01 2019 +0200 at lun oct 28 01:39:17 CET 2019 |