Kinematics Animation Multithread
exoskeleton.cpp
Go to the documentation of this file.
1#include "../include/exoskeleton.h"
2
10void Exoskeleton::initialize(const std::string& serial_com,
11 unsigned int serial_baudrate)
12{
13 // Generate serial communication channel
14 m_serial = std::make_shared<SerialCOM>(serial_com, serial_baudrate);
15
16 // Initialize stream
17 m_serial->initialize_stream();
18
19 // Initialize asychronous function
21}
22
37std::vector<double> Exoskeleton::incoming_data_callback(void)
38{
39 while(!m_return_value)
40 {
43 }
44 return m_raw_sensor_data;
45}
46
54std::vector<double> Exoskeleton::get_joint_angles(void)
55{
56 // Set termination flag for asychronous function
58
59 // Get joint angles from future function
60 std::vector<double> joint_angles = m_future_fun.get();
61
62 // Convert to rad
63 for (size_t i = 0; i < joint_angles.size(); i++)
64 {
65 joint_angles.at(i) = Utils::deg2rad(joint_angles.at(i));
66 }
67
68 // Reinitialize async function
71
72 return joint_angles;
73}
void initialize(const std::string &serial_com, unsigned int serial_baudrate)
Initialize.
Definition: exoskeleton.cpp:10
std::vector< double > get_joint_angles(void)
Get joint angles.
Definition: exoskeleton.cpp:54
std::vector< double > m_raw_sensor_data
Sensors data vector (raw)
Definition: exoskeleton.h:40
std::shared_ptr< SerialCOM > m_serial
Serial communication handler.
Definition: exoskeleton.h:45
bool m_return_value
Termination flag for callback function.
Definition: exoskeleton.h:51
std::future< std::vector< double > > m_future_fun
Future function handle.
Definition: exoskeleton.h:48
std::vector< double > incoming_data_callback(void)
Read incoming data.
Definition: exoskeleton.cpp:37
static std::vector< double > analog_str_buf_to_double_vec(const std::string &str)
Convert comma-delimited string to double vector of analog values.
Definition: utils.cpp:34
static double deg2rad(double deg)
Convert degrees to rad.
Definition: utils.h:28