43 qbmoveResearch::qbmoveResearch(std::shared_ptr<Communication> communication, std::string name, std::string serial_port, uint8_t
id,
bool init_params, std::unique_ptr<Device::Params> params)
44 :
Device(
std::move(communication),
std::move(name),
std::move(serial_port), id, init_params,
std::move(params)) {}
47 std::vector<int8_t> data_in;
55 auto const data_out = Communication::vectorSwapAndCast<int8_t, int16_t>({position, stiffness});
67 std::vector<int8_t> param_buffer;
71 Params::getParameter<uint8_t>(14, param_buffer, rate_limiter);
76 int set_fail =
setParameter(14, Communication::vectorSwapAndCast<int8_t, uint8_t>({rate_limiter}));
78 params_->rate_limiter = rate_limiter;
101 if (!set_fail && param_type != 1) {
110 std::for_each( control_references.begin(), control_references.end(), [](int16_t &x){ x *= -1; } );
116 std::this_thread::sleep_for(std::chrono::milliseconds(3));
127 std::for_each( encoder_offsets.begin(), encoder_offsets.end(), [](int16_t &x){ x *= -1; } );
132 uint8_t previous_id =
params_->id;
143 std::vector<int16_t> legacy_offsets = encoder_offsets;
145 legacy_offsets.at(2) *= -1;
150 std::vector<int16_t> positions;
154 std::vector<int16_t> offsets;
159 std::transform(offsets.begin(), offsets.end(), positions.begin(), offsets.begin(), std::plus<int16_t>());