Skip to content

Commit

Permalink
Version bump to 0.8.22-alpha
Browse files Browse the repository at this point in the history
	- Added driver library for JY901 sensor
	- Added controller application for JY901 sensor
	- Added covariance measurement possibility for
	  athmospheric pressure
	- Variance function exposed as a template
	- Template namespace fix
  • Loading branch information
twdragon committed Aug 22, 2022
1 parent 083074d commit be7ebb7
Show file tree
Hide file tree
Showing 7 changed files with 963 additions and 42 deletions.
23 changes: 19 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,12 +67,12 @@ add_library(witmotion-wt31n SHARED
${MOC_WT31N}
src/wt31n-uart.cpp
)
target_link_libraries(witmotion-wt31n witmotion-uart)
target_link_libraries(witmotion-wt31n witmotion-uart Qt5::Core)
add_executable(witmotionctl-wt31n
${MOC_WT31N}
src/wt31n-control.cpp
)
target_link_libraries(witmotionctl-wt31n witmotion-wt31n)
target_link_libraries(witmotionctl-wt31n witmotion-wt31n Qt5::Core)

# WT901
qt5_wrap_cpp(MOC_WT901
Expand All @@ -82,12 +82,27 @@ add_library(witmotion-wt901 SHARED
${MOC_WT901}
src/wt901-uart.cpp
)
target_link_libraries(witmotion-wt901 witmotion-uart)
target_link_libraries(witmotion-wt901 witmotion-uart Qt5::Core)
add_executable(witmotionctl-wt901
${MOC_WT901}
src/wt901-control.cpp
)
target_link_libraries(witmotionctl-wt901 witmotion-wt901)
target_link_libraries(witmotionctl-wt901 witmotion-wt901 Qt5::Core)

# JY901
qt5_wrap_cpp(MOC_JY901
include/witmotion/jy901-uart.h
)
add_library(witmotion-jy901 SHARED
${MOC_JY01}
src/jy901-uart.cpp
)
target_link_libraries(witmotion-jy901 witmotion-wt901 Qt5::Core)
add_executable(witmotionctl-jy901
${MOC_JY901}
src/jy901-control.cpp
)
target_link_libraries(witmotionctl-jy901 witmotion-jy901 Qt5::Core)

# EXAMPLES
if(BUILD_EXAMPLES)
Expand Down
44 changes: 44 additions & 0 deletions include/witmotion/jy901-uart.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#ifndef WITMOTION_JY901
#define WITMOTION_JY901

#include <QSerialPort>
#include <QSerialPortInfo>

#include <iostream>
#include <string>
#include <cmath>

#include <unistd.h>

#include "witmotion/types.h"
#include "witmotion/util.h"
#include "witmotion/serial.h"
#include "witmotion/wt901-uart.h"

namespace witmotion
{
namespace jy901
{

class QWitmotionJY901Sensor: public witmotion::wt901::QWitmotionWT901Sensor
{ Q_OBJECT
private:
static const std::set<witmotion_packet_id> registered_types;
public:
virtual const std::set<witmotion_packet_id>* RegisteredPacketTypes();
virtual void SetMeasurements(const bool realtime_clock = false,
const bool acceleration = true,
const bool angular_velocity = true,
const bool euler_angles = true,
const bool magnetometer = true,
const bool orientation = false,
const bool port_status = false,
const bool altimeter = true);
QWitmotionJY901Sensor(const QString device,
const QSerialPort::BaudRate rate,
const uint32_t polling_period = 50);
};

}
}
#endif
13 changes: 13 additions & 0 deletions include/witmotion/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -89,5 +89,18 @@ void decode_gps_accuracy(const witmotion_datapacket& packet,
float& local_accuracy,
float& horizontal_accuracy,
float& vertical_accuracy);

/* MISCELLANEOUS UTILITIES */
template<typename T> T variance(const std::vector<T>& array)
{
T sum = std::accumulate(array.begin(), array.end(), 0.f);
T mean = sum / static_cast<T>(array.size());
T sq_dif = 0.f;
for(auto i = array.begin(); i != array.end(); i++)
sq_dif += std::pow((*i) - mean, 2);
sq_dif /= (array.size() > 1) ? static_cast<T>(array.size() - 1) : 1.f;
return std::sqrt(sq_dif);
}

}
#endif
Loading

0 comments on commit be7ebb7

Please sign in to comment.