From 7df48f08c4145b610e53a535d2d166d89b4b4ef2 Mon Sep 17 00:00:00 2001 From: Alexandros Lioulemes Date: Tue, 27 Oct 2020 11:13:42 -0400 Subject: [PATCH 01/78] Added python version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 01f3e2da..233a6410 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,7 +115,7 @@ set(exported_link_dirs ${exported_link_dirs} ${Boost_LIBRARY_DIRS}) ## Python if (WITH_PYTHON) - find_package(PythonLibs REQUIRED) + find_package(PythonLibs 2.7 REQUIRED) include_directories(${PYTHON_INCLUDE_PATH}) endif() From 68a6d0c99c684f69d6b4946bf066ac1ee6fab083 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 5 Nov 2020 14:28:18 -0500 Subject: [PATCH 02/78] Working on tactile top10 support --- include/barrett/products/tactile_puck.h | 37 ++++++----- src/products/hand.cpp | 6 +- src/products/tactile_puck.cpp | 82 ++++++++++++++++++------- 3 files changed, 86 insertions(+), 39 deletions(-) diff --git a/include/barrett/products/tactile_puck.h b/include/barrett/products/tactile_puck.h index 7fec5068..910964af 100644 --- a/include/barrett/products/tactile_puck.h +++ b/include/barrett/products/tactile_puck.h @@ -72,21 +72,28 @@ class TactilePuck : public SpecialPuck { requestFull(); receiveFull(realtime); } -// void updateTop10(bool realtime = false); +/** + * + */ + void updateTop10(bool realtime = false){ + requestTop10(); + receiveTop10(realtime); + } /** * */ const v_type& getFullData() const { return full; } - + const v_type& getTop10Data() const { return top10; } /** * */ void requestFull(); + void requestTop10(); /** * */ void receiveFull(bool realtime = false); - + void receiveTop10(bool realtime = false); /** * */ @@ -98,15 +105,17 @@ class TactilePuck : public SpecialPuck { typedef v_type result_type; static int parse(int id, int propId, result_type* result, const unsigned char* data, size_t len); }; - // TODO(dc): Implement Top10TactParser -// struct Top10TactParser { -// static int busId(int id, int propId) { -// return Puck::encodeBusId(id, PuckGroup::FGRP_TACT_TOP10); -// } -// -// typedef int result_type; -// static int parse(int id, int propId, result_type* result, const unsigned char* data, size_t len) { return 0; } -// }; +/** + * + */ + struct Top10TactParser { + static int busId(int id, int propId) { + return Puck::encodeBusId(id, PuckGroup::FGRP_TACT_TOP10); + } + + typedef v_type result_type; + static int parse(int id, int propId, result_type* result, const unsigned char* data, size_t len); + }; protected: const bus::CommunicationsBus* bus; @@ -115,8 +124,8 @@ class TactilePuck : public SpecialPuck { enum TactState tact; v_type full; -// int top10; - + v_type top10; + static const size_t NUM_FULL_MESSAGES = 5; static const size_t NUM_SENSORS_PER_FULL_MESSAGE = 5; diff --git a/src/products/hand.cpp b/src/products/hand.cpp index 49c4042f..d4a43424 100644 --- a/src/products/hand.cpp +++ b/src/products/hand.cpp @@ -208,7 +208,8 @@ void Hand::update(unsigned int sensors, bool realtime) group.sendGetPropertyRequest(group.getPropertyId(Puck::SG)); } if (hasTactSensors() && sensors & S_TACT_FULL) { - group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); + //group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); + group.setProperty(Puck::TACT, TactilePuck::TOP10_FORMAT); } @@ -242,7 +243,8 @@ void Hand::update(unsigned int sensors, bool realtime) } if (hasTactSensors() && sensors & S_TACT_FULL) { for (size_t i = 0; i < tactilePucks.size(); ++i) { - tactilePucks[i]->receiveFull(realtime); + //tactilePucks[i]->receiveFull(realtime); + tactilePucks[i]->receiveTop10(realtime); } } } diff --git a/src/products/tactile_puck.cpp b/src/products/tactile_puck.cpp index 8af7c9c8..a9e36d8e 100644 --- a/src/products/tactile_puck.cpp +++ b/src/products/tactile_puck.cpp @@ -95,29 +95,28 @@ void TactilePuck::receiveFull(bool realtime) } } -//void TactilePuck::updateTop10(bool realtime) -//{ -// int ret; -// -// if (tact == TOP10_FORMAT) { -// ret = Puck::sendGetPropertyRequest(*bus, id, propId); -// if (ret != 0) { -// (logMessage("TactilePuck::%s(): Failed to send request. " -// "Puck::sendGetPropertyRequest() returned error %d.") -// % __func__ % ret).raise(); -// } -// } else { -// tact = TOP10_FORMAT; -// p->setProperty(Puck::TACT, tact); -// } -// -// ret = Puck::receiveGetPropertyReply(*bus, id, propId, &top10, true, realtime); -// if (ret != 0) { -// (logMessage("TactilePuck::%s(): Failed to receive reply. " -// "Puck::receiveGetPropertyReply() returned error %d while receiving TOP10 TACT reply from ID=%d.") -// % __func__ % ret % id).raise(); -// } -//} +void TactilePuck::requestTop10() +{ + if (tact == TOP10_FORMAT) { + int ret = Puck::sendGetPropertyRequest(*bus, id, propId); + if (ret != 0) { + (logMessage("TactilePuck::%s(): Failed to send request. " + "Puck::sendGetPropertyRequest() returned error %d.") + % __func__ % ret).raise(); + } + } else { + tact = TOP10_FORMAT; + p->setProperty(Puck::TACT, tact); + } +} +void TactilePuck::receiveTop10(bool realtime) +{ + ret = Puck::receiveGetPropertyReply(*bus, id, propId, &top10, true, realtime); + if (ret != 0) { + (logMessage("TactilePuck::%s(): Failed to receive reply. " + "Puck::receiveGetPropertyReply() returned error %d while receiving TOP10 TACT reply from ID=%d.") + % __func__ % ret % id).raise(); +} int TactilePuck::FullTactParser::parse(int id, int propId, result_type* result, const unsigned char* data, size_t len) @@ -145,5 +144,42 @@ int TactilePuck::FullTactParser::parse(int id, int propId, result_type* result, return 0; } +int TactilePuck::Top10TactParser::parse(int id, int propId, result_type* result, const unsigned char* data, size_t len) +{ + if (len != 8) { + logMessage("%s: expected message length of 8, got message length of %d") % __func__ % len; + return 1; + } + + // Top10 Example: + // 24.....17 16......9 8......1 AAAABBBB CCCCDDDD EEEEFFFF GGGGHHHH JJJJKKKK + // [10011000] [00111010] [10000011] [01100100] [01011110] [01110111] [10110110] [10010011] + // Sensors 1, 2, 8, 10, 12, 13, 14, 20, 21, and 24 are reporting the highest pressures. + // The pressures are, respectively: 6, 4, 5, 14, 7, 7, 11, 6, 9, 3 (N/cm2) + + // I don't know how "data" is aligned, so align the data properly here... + uint64_t dat; // No initialization required + for(size_t i = 0; i < sizeof(uint64_t); i++){ + dat <<= 8; + dat |= data[i]; + } + + uint32_t map = dat >> 40; // Pick off the top 3 bytes + uint8_t *byte = (uint8_t*)&dat + 4; // Pointer to the AAAABBBB byte of dat + + // Now rotate through the map and shift out each non-zero value from the packed data + for(size_t i = 0; i < NUM_SENSORS; i++){ + if(map & 1){ + (*result)[i] = (*byte & 0xF0) >> 4; // 4-bit N/cm2 (0-15) + map >>= 1; + dat <<= 4; + }else{ + (*result)[i] = 0; // No data returned for this cell, set to zero + } + } + + return 0; +} + } From 058d91645797d85afcbb594f81bc8302e03c2a91 Mon Sep 17 00:00:00 2001 From: Aakash Rohra Date: Thu, 5 Nov 2020 16:42:53 -0500 Subject: [PATCH 03/78] Top10 is working! --- examples/ex04_display_basic_info.cpp | 5 +++-- include/barrett/products/hand.h | 3 ++- include/barrett/products/tactile_puck.h | 8 ++++---- src/products/hand.cpp | 12 ++++++++++-- src/products/tactile_puck.cpp | 10 ++++++---- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/examples/ex04_display_basic_info.cpp b/examples/ex04_display_basic_info.cpp index 173762f1..2fc31437 100644 --- a/examples/ex04_display_basic_info.cpp +++ b/examples/ex04_display_basic_info.cpp @@ -212,7 +212,8 @@ int wam_main(int argc, char** argv, ProductManager& pm, systems::Wam& wam) // Hand if (hand != NULL) { line = handY; - hand->update(); // Update all sensors + //hand->update(); // Update all sensors, includes Hand::S_TACT_FULL, if installed + hand->update(Hand::S_POSITION | Hand::S_FINGERTIP_TORQUE | Hand::S_TACT_TOP10); // Update these sensors hjp = math::saturate(hand->getInnerLinkPosition(), 9.999); mvprintw(line++,handX, "[%6.3f, %6.3f, %6.3f, %6.3f]", @@ -233,7 +234,7 @@ int wam_main(int argc, char** argv, ProductManager& pm, systems::Wam& wam) if (hand->hasTactSensors()) { for (size_t i = 0; i < tps.size(); ++i) { graphPressures(stdscr, line, i * TACT_BOARD_STRIDE, - tps[i]->getFullData()); + tps[i]->getTactileData()); } } } diff --git a/include/barrett/products/hand.h b/include/barrett/products/hand.h index b436029d..f1c74126 100644 --- a/include/barrett/products/hand.h +++ b/include/barrett/products/hand.h @@ -107,8 +107,9 @@ class Hand : public MultiPuckProduct { // Sensors static const unsigned int S_POSITION = 1 << 0; - static const unsigned int S_FINGERTIP_TORQUE = 1 << 1; + static const unsigned int S_FINGERTIP_TORQUE = 1 << 1; static const unsigned int S_TACT_FULL = 1 << 2; + static const unsigned int S_TACT_TOP10 = 1 << 3; static const unsigned int S_ALL = S_POSITION | S_FINGERTIP_TORQUE | S_TACT_FULL; /** update Method */ void update(unsigned int sensors = S_ALL, bool realtime = false); diff --git a/include/barrett/products/tactile_puck.h b/include/barrett/products/tactile_puck.h index 910964af..8904e320 100644 --- a/include/barrett/products/tactile_puck.h +++ b/include/barrett/products/tactile_puck.h @@ -82,8 +82,8 @@ class TactilePuck : public SpecialPuck { /** * */ - const v_type& getFullData() const { return full; } - const v_type& getTop10Data() const { return top10; } + const v_type& getTactileData() const { return tactile; } + //const v_type& getTop10Data() const { return top10; } /** * */ @@ -123,8 +123,8 @@ class TactilePuck : public SpecialPuck { int propId; enum TactState tact; - v_type full; - v_type top10; + v_type tactile; + //v_type top10; static const size_t NUM_FULL_MESSAGES = 5; diff --git a/src/products/hand.cpp b/src/products/hand.cpp index d4a43424..73f07cfa 100644 --- a/src/products/hand.cpp +++ b/src/products/hand.cpp @@ -208,7 +208,11 @@ void Hand::update(unsigned int sensors, bool realtime) group.sendGetPropertyRequest(group.getPropertyId(Puck::SG)); } if (hasTactSensors() && sensors & S_TACT_FULL) { - //group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); + // This should be TactilePuck::requestFull() + group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); + } + if (hasTactSensors() && sensors & S_TACT_TOP10) { + // This should be TactilePuck::requestTop10() group.setProperty(Puck::TACT, TactilePuck::TOP10_FORMAT); } @@ -243,7 +247,11 @@ void Hand::update(unsigned int sensors, bool realtime) } if (hasTactSensors() && sensors & S_TACT_FULL) { for (size_t i = 0; i < tactilePucks.size(); ++i) { - //tactilePucks[i]->receiveFull(realtime); + tactilePucks[i]->receiveFull(realtime); + } + } + if (hasTactSensors() && sensors & S_TACT_TOP10) { + for (size_t i = 0; i < tactilePucks.size(); ++i) { tactilePucks[i]->receiveTop10(realtime); } } diff --git a/src/products/tactile_puck.cpp b/src/products/tactile_puck.cpp index a9e36d8e..55e4a311 100644 --- a/src/products/tactile_puck.cpp +++ b/src/products/tactile_puck.cpp @@ -85,7 +85,7 @@ void TactilePuck::requestFull() void TactilePuck::receiveFull(bool realtime) { for (size_t i = 0 ; i < NUM_FULL_MESSAGES; ++i) { - int ret = Puck::receiveGetPropertyReply(*bus, id, propId, &full, true, realtime); + int ret = Puck::receiveGetPropertyReply(*bus, id, propId, &tactile, true, realtime); if (ret != 0) { const size_t NFM = NUM_FULL_MESSAGES; // Reserve storage for static const. (logMessage("TactilePuck::%s(): Failed to receive reply. " @@ -111,11 +111,12 @@ void TactilePuck::requestTop10() } void TactilePuck::receiveTop10(bool realtime) { - ret = Puck::receiveGetPropertyReply(*bus, id, propId, &top10, true, realtime); + int ret = Puck::receiveGetPropertyReply(*bus, id, propId, &tactile, true, realtime); if (ret != 0) { (logMessage("TactilePuck::%s(): Failed to receive reply. " "Puck::receiveGetPropertyReply() returned error %d while receiving TOP10 TACT reply from ID=%d.") % __func__ % ret % id).raise(); + } } @@ -158,7 +159,7 @@ int TactilePuck::Top10TactParser::parse(int id, int propId, result_type* result, // The pressures are, respectively: 6, 4, 5, 14, 7, 7, 11, 6, 9, 3 (N/cm2) // I don't know how "data" is aligned, so align the data properly here... - uint64_t dat; // No initialization required + uint64_t dat = 0; // No initialization required, but compiler complains otherwise for(size_t i = 0; i < sizeof(uint64_t); i++){ dat <<= 8; dat |= data[i]; @@ -168,14 +169,15 @@ int TactilePuck::Top10TactParser::parse(int id, int propId, result_type* result, uint8_t *byte = (uint8_t*)&dat + 4; // Pointer to the AAAABBBB byte of dat // Now rotate through the map and shift out each non-zero value from the packed data + // Note: result is a math::Vector[24] for(size_t i = 0; i < NUM_SENSORS; i++){ if(map & 1){ (*result)[i] = (*byte & 0xF0) >> 4; // 4-bit N/cm2 (0-15) - map >>= 1; dat <<= 4; }else{ (*result)[i] = 0; // No data returned for this cell, set to zero } + map >>= 1; } return 0; From 3893b925ea8136cc345b75d5c3487a5da6d97e8a Mon Sep 17 00:00:00 2001 From: Aakash Rohra Date: Fri, 20 Nov 2020 15:39:45 -0500 Subject: [PATCH 04/78] Changed | to + to be more readable in hand->update() --- examples/ex04_display_basic_info.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ex04_display_basic_info.cpp b/examples/ex04_display_basic_info.cpp index 2fc31437..aac584db 100644 --- a/examples/ex04_display_basic_info.cpp +++ b/examples/ex04_display_basic_info.cpp @@ -213,7 +213,7 @@ int wam_main(int argc, char** argv, ProductManager& pm, systems::Wam& wam) if (hand != NULL) { line = handY; //hand->update(); // Update all sensors, includes Hand::S_TACT_FULL, if installed - hand->update(Hand::S_POSITION | Hand::S_FINGERTIP_TORQUE | Hand::S_TACT_TOP10); // Update these sensors + hand->update(Hand::S_POSITION + Hand::S_FINGERTIP_TORQUE + Hand::S_TACT_TOP10); // Update these sensors hjp = math::saturate(hand->getInnerLinkPosition(), 9.999); mvprintw(line++,handX, "[%6.3f, %6.3f, %6.3f, %6.3f]", From 7824a1da31e541d9990ee9704cec8f8c45ec0a79 Mon Sep 17 00:00:00 2001 From: Aakash Rohra Date: Fri, 20 Nov 2020 15:53:48 -0500 Subject: [PATCH 05/78] Updated version to 1.3.0 --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 233a6410..c082c32e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 2.6) project(libbarrett) set(libbarrett_VERSION_MAJOR 1) -set(libbarrett_VERSION_MINOR 2) -set(libbarrett_VERSION_PATCH 4) +set(libbarrett_VERSION_MINOR 3) +set(libbarrett_VERSION_PATCH 0) set(libbarrett_VERSION "${libbarrett_VERSION_MAJOR}.${libbarrett_VERSION_MINOR}.${libbarrett_VERSION_PATCH}") set(libbarrett_SOVERSION "${libbarrett_VERSION_MAJOR}.${libbarrett_VERSION_MINOR}") From 9886993b42ee023f742665f0aaaf10e63689559f Mon Sep 17 00:00:00 2001 From: Aakash Rohra Date: Wed, 2 Dec 2020 16:35:48 -0500 Subject: [PATCH 06/78] Changed to getTactileData() --- sandbox/tactile_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sandbox/tactile_test.cpp b/sandbox/tactile_test.cpp index 07b31345..d2558306 100644 --- a/sandbox/tactile_test.cpp +++ b/sandbox/tactile_test.cpp @@ -191,7 +191,7 @@ for(int i = 11; i <= 14; i++){ bool firstRun = true; int numBadTransitions = 0; - const TactilePuck::v_type& pressures = tactPuck.getFullData(); + const TactilePuck::v_type& pressures = tactPuck.getTactileData(); TactilePuck::v_type pressures_1; TactilePuck::v_type tmp; From de8d8fce7a3889a211d9720e4e9b193b405d66f4 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Tue, 22 Dec 2020 19:19:15 -0500 Subject: [PATCH 07/78] Update README.txt to specify the git branch after checkout. --- README.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/README.txt b/README.txt index c06e67d1..1bb8aaea 100644 --- a/README.txt +++ b/README.txt @@ -28,6 +28,7 @@ Download and install libbarrett: $ cd ~/ $ git clone https://git.barrett.com/software/libbarrett.git $ cd libbarrett +$ git checkout devel-14.04 $ cmake . $ make $ sudo make install From f0d07898d58b0cfb4a1ff0e5900376eb92fd63e4 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Tue, 26 Jan 2021 12:30:06 -0500 Subject: [PATCH 08/78] Fixups for libconfig, Eigen, and Boost in Ubuntu 20.04 --- CMakeLists.txt | 8 +-- include/barrett/math/detail/dynamics-inl.h | 2 +- .../math/detail/first_order_filter-inl.h | 2 +- include/barrett/math/detail/kinematics-inl.h | 2 +- include/barrett/math/matrix.h | 67 +++++-------------- include/barrett/products/product_manager.h | 2 + .../systems/detail/pid_controller-inl.h | 1 + include/barrett/systems/gravity_compensator.h | 2 +- programs/autotension.cpp | 22 +++--- programs/gravitycal.cpp | 6 +- programs/zerocal.cpp | 4 +- src/products/product_manager.cpp | 8 ++- src/systems/real_time_execution_manager.cpp | 2 +- 13 files changed, 49 insertions(+), 79 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 89a4a7d1..b4c988c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -82,15 +82,11 @@ set(exported_include_dirs ${exported_include_dirs} ${GSL_INCLUDE_DIRS}) ## Boost -# Python snippet to generate version list: -#for minor in range(45, 60): -# print '"1.%d" "1.%d.0"' % (minor, minor), -set(Boost_ADDITIONAL_VERSIONS "1.45" "1.45.0" "1.46" "1.46.0" "1.47" "1.47.0" "1.48" "1.48.0" "1.49" "1.49.0" "1.50" "1.50.0" "1.51" "1.51.0" "1.52" "1.52.0" "1.53" "1.53.0" "1.54" "1.54.0" "1.55" "1.55.0" "1.56" "1.56.0" "1.57" "1.57.0" "1.58" "1.58.0" "1.59" "1.59.0") set(boost_components system thread) if (WITH_PYTHON) set(boost_components ${boost_components} python) endif() -find_package(Boost 1.45.0 REQUIRED ${boost_components}) +find_package(Boost REQUIRED ${boost_components}) include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) @@ -100,7 +96,7 @@ set(exported_link_dirs ${exported_link_dirs} ${Boost_LIBRARY_DIRS}) ## Python if (WITH_PYTHON) - find_package(PythonLibs 2.7 REQUIRED) + find_package(PythonLibs REQUIRED) include_directories(${PYTHON_INCLUDE_PATH}) endif() diff --git a/include/barrett/math/detail/dynamics-inl.h b/include/barrett/math/detail/dynamics-inl.h index a7ea467c..d3fa5575 100644 --- a/include/barrett/math/detail/dynamics-inl.h +++ b/include/barrett/math/detail/dynamics-inl.h @@ -18,7 +18,7 @@ namespace math { template Dynamics::Dynamics(const libconfig::Setting& setting) { - if (bt_dynamics_create(&impl, setting.getCSetting(), DOF)) { + if (bt_dynamics_create(&impl, (config_setting_t *)&setting /*getCSetting()*/, DOF)) { throw(std::runtime_error("(math::Dynamics::Dynamics): Couldn't initialize Dynamics struct.")); } } diff --git a/include/barrett/math/detail/first_order_filter-inl.h b/include/barrett/math/detail/first_order_filter-inl.h index 9c0fc6f5..0916e605 100644 --- a/include/barrett/math/detail/first_order_filter-inl.h +++ b/include/barrett/math/detail/first_order_filter-inl.h @@ -7,7 +7,7 @@ #include - +#include namespace barrett { namespace math { diff --git a/include/barrett/math/detail/kinematics-inl.h b/include/barrett/math/detail/kinematics-inl.h index 74705c28..b4d0066f 100644 --- a/include/barrett/math/detail/kinematics-inl.h +++ b/include/barrett/math/detail/kinematics-inl.h @@ -18,7 +18,7 @@ namespace math { template Kinematics::Kinematics(const libconfig::Setting& setting) { - if (bt_kinematics_create(&impl, setting.getCSetting(), DOF)) { + if (bt_kinematics_create(&impl, (config_setting_t *)&setting /*getCSetting()*/, DOF)) { throw(std::runtime_error("(math::Kinematics::Kinematics): Couldn't initialize Kinematics struct.")); } } diff --git a/include/barrett/math/matrix.h b/include/barrett/math/matrix.h index c2fb6051..b4d55b37 100644 --- a/include/barrett/math/matrix.h +++ b/include/barrett/math/matrix.h @@ -216,18 +216,9 @@ template struct Traits } template static - const Eigen::CwiseBinaryOp< - Eigen::internal::scalar_product_op< - typename Eigen::internal::scalar_product_traits< - typename Eigen::internal::traits::Scalar, - typename Eigen::internal::traits::Scalar - >::ReturnType - >, - const LDerived, - const RDerived - > + const typename MatrixBaseType::PlainObject mult(const Eigen::MatrixBase& l, const Eigen::MatrixBase& r) { - return l.cwiseProduct(r); + return l.cwiseProduct(r); } template static @@ -237,44 +228,31 @@ template struct Traits const RDerived > div(const Eigen::MatrixBase& l, const Eigen::MatrixBase& r) { - return l.cwiseQuotient(r); + return l.cwiseQuotient(r); } // matrix-scalar template static - const Eigen::CwiseUnaryOp< - Eigen::internal::scalar_add_op::Scalar>, - const Derived - > + const typename MatrixBaseType::PlainObject add(const Eigen::MatrixBase& l, double r) { - return l + r; + return l.array() + r; } template static - const Eigen::CwiseUnaryOp< - Eigen::internal::scalar_add_op::Scalar>, - const Derived - > - add(const double l, const Eigen::MatrixBase& r) { - return Eigen::CwiseUnaryOp::Scalar>, const Derived>(r.derived(), Eigen::internal::scalar_add_op::Scalar>(l)); - //return l + r; + const typename MatrixBaseType::PlainObject + add(double l, const Eigen::MatrixBase& r) { + return l + r.array(); } template static - const Eigen::CwiseUnaryOp< - Eigen::internal::scalar_add_op::Scalar>, - const Derived - > + const typename MatrixBaseType::PlainObject sub(const Eigen::MatrixBase& l, double r) { - return l - r; + return l.array() - r; } template static - const Eigen::CwiseUnaryOp< - Eigen::internal::scalar_opposite_op::Scalar>, - const Derived - > + const typename MatrixBaseType::PlainObject neg(const Eigen::MatrixBase& t) { return -t; } @@ -293,34 +271,25 @@ template struct Traits // > const typename MatrixBaseType::PlainObject sub(double l, const Eigen::MatrixBase& r) { - return l - r; + return l - r.array(); } template static - const Eigen::CwiseUnaryOp< - Eigen::internal::scalar_multiple_op::Scalar>, - const Derived - > + const typename MatrixBaseType::PlainObject mult(const Eigen::MatrixBase& l, double r) { - return l * r; + return l.array() * r; } template static - const Eigen::CwiseUnaryOp< - Eigen::internal::scalar_multiple_op::Scalar>, - const Derived - > + const typename MatrixBaseType::PlainObject mult(double l, const Eigen::MatrixBase& r) { - return l * r; + return l * r.array(); } template static - const Eigen::CwiseUnaryOp< - Eigen::internal::scalar_quotient1_op::Scalar>, - const Derived - > + const typename MatrixBaseType::PlainObject div(const Eigen::MatrixBase& l, double r) { - return l / r; + return l.array() / r; } template static diff --git a/include/barrett/products/product_manager.h b/include/barrett/products/product_manager.h index 43edb2e1..36c2c4a3 100644 --- a/include/barrett/products/product_manager.h +++ b/include/barrett/products/product_manager.h @@ -124,6 +124,8 @@ class ProductManager { bool verifyWamPucks(const size_t dof) const; libconfig::Config config; + char* configDir; + char* configBase; bus::CommunicationsBus* bus; bool deleteBus; std::vector pucks; diff --git a/include/barrett/systems/detail/pid_controller-inl.h b/include/barrett/systems/detail/pid_controller-inl.h index da54e9f8..664a7969 100644 --- a/include/barrett/systems/detail/pid_controller-inl.h +++ b/include/barrett/systems/detail/pid_controller-inl.h @@ -34,6 +34,7 @@ #include #include +#include #include diff --git a/include/barrett/systems/gravity_compensator.h b/include/barrett/systems/gravity_compensator.h index b598cd43..e0282ccf 100644 --- a/include/barrett/systems/gravity_compensator.h +++ b/include/barrett/systems/gravity_compensator.h @@ -60,7 +60,7 @@ class GravityCompensator : public System, const std::string& sysName = "GravityCompensator") : System(sysName), KinematicsInput(this), SingleOutput(this), impl(NULL), data() { - bt_calgrav_create(&impl, setting.getCSetting(), DOF); + bt_calgrav_create(&impl, (config_setting_t *)&setting /*getCSetting()*/, DOF); } bool setGravity(double new_grav) { diff --git a/programs/autotension.cpp b/programs/autotension.cpp index 432dff21..620ee332 100644 --- a/programs/autotension.cpp +++ b/programs/autotension.cpp @@ -347,7 +347,7 @@ std::vector AutoTension::tensionJoint(std::vector joint_list) { j1SlackPulled = 1.0; if (std::find(joint_list.begin(), joint_list.end(), 1) != joint_list.end()) j1tens = true; - wam.moveTo(jpInitial[motor], 1.2, 0.75); + wam.moveTo(jpInitial[motor], true, 1.2, 0.75); printf("\n**************************\n"); switch (joint) { case 2: @@ -359,7 +359,7 @@ std::vector AutoTension::tensionJoint(std::vector joint_list) { updateJ1Moves(2, j1tens); printf("Tensioning Joint %s\n", (j1tens && joint != 1) ? "1, 2, and 3" : "2 and 3"); // Pull tension from J2 - wam.moveTo(jpStart[1], 1.2, 0.75); + wam.moveTo(jpStart[1], true, 1.2, 0.75); puck[1]->setProperty(Puck::TENSION, true); btsleep(2.0); if (!engage(1)) { @@ -383,7 +383,7 @@ std::vector AutoTension::tensionJoint(std::vector joint_list) { updateJ1Moves(5, j1tens); printf("Tensioning Joint %s\n", (j1tens && joint != 1) ? "1, 5, and 6" : "5 and 6"); // Pull tension from J5 - wam.moveTo(jpStart[4], 1.2, 0.75); + wam.moveTo(jpStart[4], true, 1.2, 0.75); puck[4]->setProperty(Puck::TENSION, true); if (j6TangPos == 0.0) { while (!engage(5, 10.0)) { @@ -429,7 +429,7 @@ std::vector AutoTension::tensionJoint(std::vector joint_list) { break; } - wam.moveTo(jpStart[motor], 1.2, 0.75); + wam.moveTo(jpStart[motor], true, 1.2, 0.75); if (motor != 0 && j1tens) { // Engage tang and pull tension from J1 puck[0]->setProperty(Puck::TENSION, true); @@ -508,20 +508,20 @@ std::vector AutoTension::tensionJoint(std::vector joint_list) { while (rep_cnt < reps) { printf("%dx.. ", reps - rep_cnt); fflush(stdout); - wam.moveTo(jpSlack2[motor], 1.2, 0.75); - wam.moveTo(jpSlack1[motor], 1.2, 0.75); + wam.moveTo(jpSlack2[motor], true, 1.2, 0.75); + wam.moveTo(jpSlack1[motor], true, 1.2, 0.75); if (joint == 3) { - wam.moveTo(jpSlack1[1], 1.2, 0.75); - wam.moveTo(jpSlack2[1], 1.2, 0.75); + wam.moveTo(jpSlack1[1], true, 1.2, 0.75); + wam.moveTo(jpSlack2[1], true, 1.2, 0.75); } if (joint == 6) { - wam.moveTo(jpSlack1[4], 1.2, 0.75); - wam.moveTo(jpSlack2[4], 1.2, 0.75); + wam.moveTo(jpSlack1[4], true, 1.2, 0.75); + wam.moveTo(jpSlack2[4], true, 1.2, 0.75); } rep_cnt++; } printf("\n"); - wam.moveTo(jpInitial[motor], 1.2, 0.75); + wam.moveTo(jpInitial[motor], true, 1.2, 0.75); wam.moveHome(); //Remove J1 from list if enough tension pulled diff --git a/programs/gravitycal.cpp b/programs/gravitycal.cpp index d98347d8..8453183c 100644 --- a/programs/gravitycal.cpp +++ b/programs/gravitycal.cpp @@ -490,9 +490,9 @@ int wam_main(int argc, char** argv, ProductManager& pm, systems::Wam& wam) * We have vectors of torque and position * in torques[] and positions[] */ - libconfig::Setting& wamSetting = pm.getConfig().lookup(pm.getWamDefaultConfigPath()); - bt_kinematics_create(&kin, wamSetting["kinematics"].getCSetting(), n); - bt_calgrav_create(&grav, wamSetting["gravity_compensation"].getCSetting(), n); + libconfig::Setting& setting = pm.getConfig().lookup(pm.getWamDefaultConfigPath()); + bt_kinematics_create(&kin, (config_setting_t *)&setting /* wamSetting["kinematics"].getCSetting() */, n); + bt_calgrav_create(&grav, (config_setting_t *)&setting /* wamSetting["gravity_compensation"].getCSetting() */, n); /* Make the nLL matrix */ nLL = gsl_matrix_calloc(3 * num_poses, 3 + 2 * num_poses); diff --git a/programs/zerocal.cpp b/programs/zerocal.cpp index 9fbd950b..719e263d 100644 --- a/programs/zerocal.cpp +++ b/programs/zerocal.cpp @@ -200,10 +200,10 @@ class AdjustJointStep : public CalibrationStep { default: switch (k) { case K_LEFT: - digit = std::min(MAX_DIGIT, digit+1); + digit = std::min(0 /*MAX_DIGIT*/, digit+1); break; case K_RIGHT: - digit = std::max(MIN_DIGIT, digit-1); + digit = std::max(-3 /*MIN_DIGIT*/, digit-1); break; case K_UP: diff --git a/src/products/product_manager.cpp b/src/products/product_manager.cpp index dce7aaab..433e66c0 100644 --- a/src/products/product_manager.cpp +++ b/src/products/product_manager.cpp @@ -102,9 +102,11 @@ ProductManager::ProductManager(const char* configFile, bus::CommunicationsBus* _ throw std::runtime_error("Out of memory."); } - // these functions require copies of the string because they sometimes modify their argument - char* configDir = dirname(cf1); - char* configBase = basename(cf2); + // These functions require copies of the string because they sometimes modify their argument. + // Also, dirname() and basename() may EITHER perform a malloc() OR just return a pointer to a substring. + // Since we free() cf1 and cf2 later, we force a malloc() with strdup(). + configDir = strdup(dirname(cf1)); + configBase = strdup(basename(cf2)); // make @include paths in configFile relative to the containing directory ret = chdir(configDir); diff --git a/src/systems/real_time_execution_manager.cpp b/src/systems/real_time_execution_manager.cpp index b5ceacd8..5443c170 100644 --- a/src/systems/real_time_execution_manager.cpp +++ b/src/systems/real_time_execution_manager.cpp @@ -204,7 +204,7 @@ void RealTimeExecutionManager::init() delete mutex; mutex = new thread::RealTimeMutex; // ~ExecutionManager() will delete this - errorCallback = boost::bind(std::terminate); + //errorCallback = boost::bind(std::terminate); } From a8e6133d725124fffec35f67e56ae955e42e7075 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Tue, 26 Jan 2021 20:33:45 -0500 Subject: [PATCH 09/78] Updated config access for gravitycal --- programs/gravitycal.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/programs/gravitycal.cpp b/programs/gravitycal.cpp index 8453183c..73af2c0d 100644 --- a/programs/gravitycal.cpp +++ b/programs/gravitycal.cpp @@ -491,8 +491,8 @@ int wam_main(int argc, char** argv, ProductManager& pm, systems::Wam& wam) * in torques[] and positions[] */ libconfig::Setting& setting = pm.getConfig().lookup(pm.getWamDefaultConfigPath()); - bt_kinematics_create(&kin, (config_setting_t *)&setting /* wamSetting["kinematics"].getCSetting() */, n); - bt_calgrav_create(&grav, (config_setting_t *)&setting /* wamSetting["gravity_compensation"].getCSetting() */, n); + bt_kinematics_create(&kin, (config_setting_t *)&setting["kinematics"] /* wamSetting["kinematics"].getCSetting() */, n); + bt_calgrav_create(&grav, (config_setting_t *)&setting["gravity_compensation"] /* wamSetting["gravity_compensation"].getCSetting() */, n); /* Make the nLL matrix */ nLL = gsl_matrix_calloc(3 * num_poses, 3 + 2 * num_poses); From f91e81e1229e6f7cff7333a203dfc4e31539feda Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 28 Jan 2021 12:45:36 -0500 Subject: [PATCH 10/78] Reverted libconfig calls, creating a new issue --- include/barrett/math/detail/dynamics-inl.h | 2 +- include/barrett/math/detail/kinematics-inl.h | 2 +- include/barrett/systems/gravity_compensator.h | 2 +- programs/gravitycal.cpp | 4 +-- programs/install_config_files | 36 +++++++++---------- 5 files changed, 23 insertions(+), 23 deletions(-) diff --git a/include/barrett/math/detail/dynamics-inl.h b/include/barrett/math/detail/dynamics-inl.h index d3fa5575..a7ea467c 100644 --- a/include/barrett/math/detail/dynamics-inl.h +++ b/include/barrett/math/detail/dynamics-inl.h @@ -18,7 +18,7 @@ namespace math { template Dynamics::Dynamics(const libconfig::Setting& setting) { - if (bt_dynamics_create(&impl, (config_setting_t *)&setting /*getCSetting()*/, DOF)) { + if (bt_dynamics_create(&impl, setting.getCSetting(), DOF)) { throw(std::runtime_error("(math::Dynamics::Dynamics): Couldn't initialize Dynamics struct.")); } } diff --git a/include/barrett/math/detail/kinematics-inl.h b/include/barrett/math/detail/kinematics-inl.h index b4d0066f..74705c28 100644 --- a/include/barrett/math/detail/kinematics-inl.h +++ b/include/barrett/math/detail/kinematics-inl.h @@ -18,7 +18,7 @@ namespace math { template Kinematics::Kinematics(const libconfig::Setting& setting) { - if (bt_kinematics_create(&impl, (config_setting_t *)&setting /*getCSetting()*/, DOF)) { + if (bt_kinematics_create(&impl, setting.getCSetting(), DOF)) { throw(std::runtime_error("(math::Kinematics::Kinematics): Couldn't initialize Kinematics struct.")); } } diff --git a/include/barrett/systems/gravity_compensator.h b/include/barrett/systems/gravity_compensator.h index e0282ccf..b598cd43 100644 --- a/include/barrett/systems/gravity_compensator.h +++ b/include/barrett/systems/gravity_compensator.h @@ -60,7 +60,7 @@ class GravityCompensator : public System, const std::string& sysName = "GravityCompensator") : System(sysName), KinematicsInput(this), SingleOutput(this), impl(NULL), data() { - bt_calgrav_create(&impl, (config_setting_t *)&setting /*getCSetting()*/, DOF); + bt_calgrav_create(&impl, setting.getCSetting(), DOF); } bool setGravity(double new_grav) { diff --git a/programs/gravitycal.cpp b/programs/gravitycal.cpp index 73af2c0d..ddfcf2f3 100644 --- a/programs/gravitycal.cpp +++ b/programs/gravitycal.cpp @@ -491,8 +491,8 @@ int wam_main(int argc, char** argv, ProductManager& pm, systems::Wam& wam) * in torques[] and positions[] */ libconfig::Setting& setting = pm.getConfig().lookup(pm.getWamDefaultConfigPath()); - bt_kinematics_create(&kin, (config_setting_t *)&setting["kinematics"] /* wamSetting["kinematics"].getCSetting() */, n); - bt_calgrav_create(&grav, (config_setting_t *)&setting["gravity_compensation"] /* wamSetting["gravity_compensation"].getCSetting() */, n); + bt_kinematics_create(&kin, setting["kinematics"].getCSetting(), n); + bt_calgrav_create(&grav, setting["gravity_compensation"].getCSetting(), n); /* Make the nLL matrix */ nLL = gsl_matrix_calloc(3 * num_poses, 3 + 2 * num_poses); diff --git a/programs/install_config_files b/programs/install_config_files index a7ebf82f..67fad015 100755 --- a/programs/install_config_files +++ b/programs/install_config_files @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 """ Copyright 2012 Barrett Technology @@ -52,8 +52,8 @@ AUTOTENS_CONFIG_FILES = [AUTOTENS_VERS_FILE] def main(): args = parseArguments() - print ">>> Source: %s" % args.source - print ">>> Destination: %s" % args.dest + print(">>> Source: %s" % args.source) + print(">>> Destination: %s" % args.dest) backupDir = getBackupDirName(args.dest) os.mkdir(backupDir) @@ -68,7 +68,7 @@ def main(): except OSError: pass - print ">>> Done!" + print(">>> Done!") def parseArguments(): @@ -84,7 +84,7 @@ def parseArguments(): def cleanDirPath(p): p = os.path.abspath(os.path.expanduser(p)) if not os.path.isdir(p): - print "ERROR: %s is not a directory." % p + print("ERROR: %s is not a directory." % p) sys.exit(1) return p @@ -104,30 +104,30 @@ def joinPaths(a, b): def installConfig(s, d, backupDir, versFile, configFiles): - print ">>> Updating configuration group: %s" % versFile + print(">>> Updating configuration group: %s" % versFile) sVers = getConfigVers(s, versFile) if sVers == -1: - print "ERROR: \"%s\" not present in source directory." % versFile + print("ERROR: \"%s\" not present in source directory." % versFile) return dVers = getConfigVers(d, versFile) - print " --> Source version:", sVers - print " --> Destination version:", + print(" --> Source version:", sVers) + print(" --> Destination version:",) if dVers == -1: - print "(none)" + print("(none)") else: - print dVers + print(dVers) if sVers == dVers: - print " --> Group is already up to date" + print(" --> Group is already up to date") return else: # Only announce the backup if we found a versFile... if dVers != -1: - print " --> Creating backup in:", backupDir + print(" --> Creating backup in:", backupDir) # ... but perform the backup always, just in case. copyGroup(d, backupDir, configFiles, False, True) - print " --> Copying new configuration files" + print(" --> Copying new configuration files") copyGroup(s, d, configFiles, True, False) def getConfigVers(d, f): @@ -137,7 +137,7 @@ def getConfigVers(d, f): if not os.path.exists(p): return -1 if not os.path.isfile(p): - print "ERROR: %s is not a file." % p + print("ERROR: %s is not a file." % p) sys.exit(1) vers = 0 @@ -147,7 +147,7 @@ def getConfigVers(d, f): if m: if vers != 0: # Then there were two matches - print "ERROR: %s has multiple CONFIG_VERSION settings." % p + print("ERROR: %s has multiple CONFIG_VERSION settings." % p) sys.exit(1) vers = int(m.group(1)) return vers @@ -157,13 +157,13 @@ def copyGroup(src, dst, fileList, srcMustExist, dstMustNotExist): sPath = joinPaths(src, f) if not os.path.exists(sPath): if srcMustExist: - print "ERROR: %s does not exist." % sPath + print("ERROR: %s does not exist." % sPath) sys.exit(2) else: continue dPath = joinPaths(dst, f) if dstMustNotExist and os.path.exists(dPath): - print "ERROR: %s already exists." % dPath + print("ERROR: %s already exists." % dPath) sys.exit(2) copyFileOrDir(sPath, dPath) From 276e3e842c0944bac3dd4f9e91b86c9c1906a5c7 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 29 Jan 2021 13:20:58 -0500 Subject: [PATCH 11/78] Updated deps, now using timer_fd in PeriodicLoopTimer for non-RT, interleaved bhand update() requests --- include/barrett/os.h | 7 +++ scripts/install-dependencies.sh | 27 +++--------- src/bus/bus_manager.cpp | 7 +-- src/bus/communications_bus.cpp | 3 ++ src/os.cpp | 76 +++++++++++++++++++++++++++++---- src/products/hand.cpp | 43 ++++++++++++------- 6 files changed, 115 insertions(+), 48 deletions(-) diff --git a/include/barrett/os.h b/include/barrett/os.h index f0fa6685..eb027a37 100644 --- a/include/barrett/os.h +++ b/include/barrett/os.h @@ -47,6 +47,12 @@ void btsleep(double duration_s, bool realtime); */ double highResolutionSystemTime(); +struct periodic_info +{ + int timer_fd; + unsigned long long wakeups_missed; +}; + class PeriodicLoopTimer { public: explicit PeriodicLoopTimer(double period_, int threadPriority = 10); @@ -57,6 +63,7 @@ class PeriodicLoopTimer { bool firstRun; double period; double releasePoint; + periodic_info info; }; diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index f3ae3052..3dcfec4f 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -1,35 +1,22 @@ #!/usr/bin/env bash -# This script installs the following dependencies: -# -# GCC 7.4 -# Libconfig-Patched -# Boost 1.65.1 -# Eigen 3.2.10 +# This script installs libbarrett dependencies # Import the Linux Version Number Variables . /etc/lsb-release -if [ "$DISTRIB_RELEASE" == "18.04" ]; then +if [ "$DISTRIB_RELEASE" == "20.04" ]; then - sudo apt-get install -y build-essential python-dev python-argparse git cmake - sudo apt-get install -y libgsl0-dev libncurses5-dev pkg-config libboost-all-dev + sudo apt-get install -y git cmake clang net-tools can-utils + sudo apt-get install -y libgsl-dev libeigen3-dev libncurses-dev pkg-config libboost-all-dev #Download and Install patched Libconfig 1.4.5 cd ~/Downloads wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz tar -xf libconfig-1.4.5-PATCHED.tar.gz cd libconfig-1.4.5 - sudo ./configure && sudo make && sudo make install - - #Download and install Eigen 3.2.10 - cd ~/Downloads - wget https://gitlab.com/libeigen/eigen/-/archive/3.2.10/eigen-3.2.10.tar.bz2 - tar --bzip2 -xf eigen-3.2.10.tar.bz2 - cd eigen-3.2.10/ - mkdir -p build && cd build - cmake ../ && make && sudo make install - + ./configure && make && sudo make install + sudo ldconfig else - echo "This script must run under Ubuntu 18.04" + echo "This script must run under Ubuntu 20.04" fi diff --git a/src/bus/bus_manager.cpp b/src/bus/bus_manager.cpp index 467b3bb1..642264d6 100644 --- a/src/bus/bus_manager.cpp +++ b/src/bus/bus_manager.cpp @@ -92,15 +92,16 @@ int BusManager::receive(int expectedBusId, unsigned char* data, size_t& len, boo return 1; } - if ((highResolutionSystemTime() - start) > CommunicationsBus::TIMEOUT) { + double now = highResolutionSystemTime(); + if ((now - start) > CommunicationsBus::TIMEOUT) { m.unlock(); - logMessage("BusManager::receive(): timed out", true); + logMessage("BusManager::receive(): timed out. Now: %lf, Start: %lf", true) %now %start; return 2; } if (!realtime) { int lc = m.fullUnlock(); - btsleepRT(0.0001); + btsleepRT(0.0001); // Yield this thread, give CAN thread time to process data m.relock(lc); } } diff --git a/src/bus/communications_bus.cpp b/src/bus/communications_bus.cpp index d4110d7b..9d9d1510 100644 --- a/src/bus/communications_bus.cpp +++ b/src/bus/communications_bus.cpp @@ -45,6 +45,9 @@ int CommunicationsBus::receive(int expectedBusId, unsigned char* data, size_t& l int actualBusId; int ret = receiveRaw(actualBusId, data, len, blocking); + // Test to see if libbarrett ever uses this function - nope. + //logMessage("CommunicationsBus::receive()"); + if (ret != 0) { return ret; } diff --git a/src/os.cpp b/src/os.cpp index 205c7fb7..279aea28 100644 --- a/src/os.cpp +++ b/src/os.cpp @@ -38,6 +38,7 @@ #include #include #include +#include #ifdef BARRETT_XENOMAI #include @@ -95,7 +96,10 @@ namespace barrett { void btsleep(double duration_s) { - assert(duration_s > 1e-6); // Minimum duration is 1 us + // Why do we need duration_s to be > 1 us? + // This would call abort() for durations under 1 us, which seems bad! + //assert(duration_s > 1e-6); // Minimum duration is 1 us + boost::this_thread::sleep(boost::posix_time::microseconds(long(duration_s * 1e6))); } @@ -130,11 +134,58 @@ double highResolutionSystemTime() #ifdef BARRETT_XENOMAI return 1e-9 * rt_timer_read(); #else - return (boost::posix_time::microsec_clock::local_time() - START_OF_PROGRAM_TIME).total_nanoseconds() * 1e-9; + // total_nanoseconds() returns a long, which is insufficient beyond 2 seconds on a 32-bit system. + // Plus, the subtraction is performed in microseconds, so there is no advantage to converting to nano. + //return (boost::posix_time::microsec_clock::local_time() - START_OF_PROGRAM_TIME).total_nanoseconds() * 1e-9; + return (boost::posix_time::microsec_clock::local_time() - START_OF_PROGRAM_TIME).total_microseconds() * 1e-6; #endif } +// period in us +static int make_periodic (unsigned int period, struct periodic_info *info) +{ + int ret; + unsigned int ns; + unsigned int sec; + int fd; + struct itimerspec itval; + + /* Create the timer */ + fd = timerfd_create (CLOCK_MONOTONIC, 0); + info->wakeups_missed = 0; + info->timer_fd = fd; + if (fd == -1) + return fd; + + /* Make the timer periodic */ + sec = period/1000000; + ns = (period - (sec * 1000000)) * 1000; + itval.it_interval.tv_sec = sec; + itval.it_interval.tv_nsec = ns; + itval.it_value.tv_sec = sec; + itval.it_value.tv_nsec = ns; + ret = timerfd_settime (fd, 0, &itval, NULL); + return ret; +} + +static void wait_period (struct periodic_info *info) +{ + unsigned long long missed; + int ret; + /* Wait for the next timer event. If we have missed any the + number is written to "missed" */ + ret = read (info->timer_fd, &missed, sizeof (missed)); + if (ret == -1) + { + perror ("read timer"); + return; + } + + /* "missed" should always be >= 1, but just to be sure, check it is not 0 anyway */ + if (missed > 0) + info->wakeups_missed = (missed - 1); +} PeriodicLoopTimer::PeriodicLoopTimer(double period_, int threadPriority) : firstRun(true), period(period_), releasePoint(-1.0) @@ -155,6 +206,9 @@ PeriodicLoopTimer::PeriodicLoopTimer(double period_, int threadPriority) : (logMessage("PeriodicLoopTimer::%s: rt_task_set_periodic(): (%d) %s") % __func__ % -ret % strerror(-ret)).raise(); } +#else + logMessage("PeriodicLoopTimer is using timer_fd"); + make_periodic (period * 1e6, &info); #endif } @@ -170,16 +224,19 @@ unsigned long PeriodicLoopTimer::wait() return missedReleasePoints; #else - const double now = highResolutionSystemTime(); - const double remainder = releasePoint - now; - if (remainder <= 0) { - releasePoint = now + period; + wait_period(&info); + return info.wakeups_missed; +/* + const double now = highResolutionSystemTime(); // Get the current time + const double remainder = releasePoint - now; // Calculate the amount of time remaining until our next release point + if (remainder <= 0) { // If we are already past our next scheduled release point, then we missed it + releasePoint = now + period; // Schedule a new release point at period seconds into the future if (firstRun) { firstRun = false; - return 0; - } else { - return ceil(-remainder / period); + return 0; // Don't worry if we missed the very first release point + } else { // Otherwise, report the number of periods missed + return ceil(-remainder / period); // ceil() returns the smallest integer not less than arg } } else { // Calculate the new releasePoint based on the old one. @@ -188,6 +245,7 @@ unsigned long PeriodicLoopTimer::wait() btsleep(remainder); return 0; } +*/ #endif } diff --git a/src/products/hand.cpp b/src/products/hand.cpp index 73f07cfa..a6fcd6d9 100644 --- a/src/products/hand.cpp +++ b/src/products/hand.cpp @@ -199,26 +199,10 @@ void Hand::update(unsigned int sensors, bool realtime) ul.lock(); } - // Send requests if (sensors & S_POSITION) { group.sendGetPropertyRequest(group.getPropertyId(Puck::P)); - } - if (hasFingertipTorqueSensors() && sensors & S_FINGERTIP_TORQUE) { - group.sendGetPropertyRequest(group.getPropertyId(Puck::SG)); - } - if (hasTactSensors() && sensors & S_TACT_FULL) { - // This should be TactilePuck::requestFull() - group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); - } - if (hasTactSensors() && sensors & S_TACT_TOP10) { - // This should be TactilePuck::requestTop10() - group.setProperty(Puck::TACT, TactilePuck::TOP10_FORMAT); - } - - // Receive replies - if (sensors & S_POSITION) { group.receiveGetPropertyReply >(group.getPropertyId(Puck::P), encoderTmp.data(), realtime); for (size_t i = 0; i < DOF; ++i) { @@ -242,19 +226,46 @@ void Hand::update(unsigned int sensors, bool realtime) // For the spread innerJp[SPREAD_INDEX] = outerJp[SPREAD_INDEX] = motorPucks[SPREAD_INDEX].counts2rad(primaryEncoder[SPREAD_INDEX]) / SPREAD_RATIO; } + if (hasFingertipTorqueSensors() && sensors & S_FINGERTIP_TORQUE) { + group.sendGetPropertyRequest(group.getPropertyId(Puck::SG)); + group.receiveGetPropertyReply(group.getPropertyId(Puck::SG), ftt.data(), realtime); } + if (hasTactSensors() && sensors & S_TACT_FULL) { + // This should be TactilePuck::requestFull() + group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); + for (size_t i = 0; i < tactilePucks.size(); ++i) { tactilePucks[i]->receiveFull(realtime); } } + if (hasTactSensors() && sensors & S_TACT_TOP10) { + // This should be TactilePuck::requestTop10() + group.setProperty(Puck::TACT, TactilePuck::TOP10_FORMAT); + for (size_t i = 0; i < tactilePucks.size(); ++i) { tactilePucks[i]->receiveTop10(realtime); } } + +/* + // Receive replies + if (sensors & S_POSITION) { + + } + if (hasFingertipTorqueSensors() && sensors & S_FINGERTIP_TORQUE) { + + } + if (hasTactSensors() && sensors & S_TACT_FULL) { + + } + if (hasTactSensors() && sensors & S_TACT_TOP10) { + + } +*/ } /** */ From 88803230acb3109c06944e046720561ef09674fd Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 12 Feb 2021 16:28:44 -0500 Subject: [PATCH 12/78] Trimmed wamdiscover to work with Python3, added script to configure P3 pucks for BarrettCAN. --- programs/wamdiscover | 221 +------------------------------- scripts/configure_barrettcan.sh | 57 ++++++++ 2 files changed, 61 insertions(+), 217 deletions(-) create mode 100755 scripts/configure_barrettcan.sh diff --git a/programs/wamdiscover b/programs/wamdiscover index 1647c5a9..775592b6 100755 --- a/programs/wamdiscover +++ b/programs/wamdiscover @@ -1,4 +1,4 @@ -#!/usr/bin/python +#!/usr/bin/python3 """ Copyright 2012 Barrett Technology @@ -35,234 +35,21 @@ default on all Barrett systems. The WAM and the local machine must be connected to the same subnet. """ -from sys import exit, stdout -import os -import subprocess -import string -from glob import glob from socket import * -import argparse -import curses - PORT = 1337 TIMEOUT = 0.5 # seconds -SEPERATOR = '|' -DEFAULT_USERNAME = "robot" -VALID_NAME_CHARACTERS = string.ascii_letters + string.digits + " _-." -MOUNT_DIR = os.path.expanduser("~/wamdiscover/") -GVFS_GLOB_TEMPLATE = os.path.expanduser("~/.gvfs/*%s") - - -def wamStr(w, width=0): - return "%s (%s)" % (w[0].ljust(width), w[1]) - -def maxNameLen(wams): - return max(map(lambda w: len(w[0]), wams)) - -def alreadyMounted(w): - return subprocess.call("gvfs-mount --list | grep \"%s\" > /dev/null" % w[1], shell=True) == 0 - -def niceString(s): - return len(s.translate(None, VALID_NAME_CHARACTERS)) == 0 - -# curses interface -def getChoice(wams): - win = curses.initscr() - try: - curses.cbreak() - curses.noecho() - win.keypad(1) - - line = 0 - - win.addstr(line,0, "WAMDISCOVER -- Choose a WAM. Press 'x' to cancel.") - line += 3 - - WAM_Y = line - IP_X = maxNameLen(wams) + 7 - for i,w in enumerate(wams): - win.addstr(line,0, "%d) %s" % (i, w[0])) - win.addstr(line,IP_X, w[1]) - line += 1 - - line += 2 - win.addstr(line,0, "Choice: ") - C_Y,C_X = win.getyx() - - class HighlightLine: - NONE = -2 # Easier to handle arrow keys if this is < -1 - - def __init__(self): - self.line = HighlightLine.NONE - - def up(self): - self.setLine(self.line - 1) - def down(self): - self.setLine(self.line + 1) - - def setLine(self, newLine): - NONE = HighlightLine.NONE - - # Ignore bad lines - if newLine != NONE and (newLine < 0 or newLine >= len(wams)): - return False - - # If the old line is valid - if self != NONE: - win.chgat(WAM_Y + self.line,0, curses.A_NORMAL) # Make the old line normal - - if newLine != NONE: - win.chgat(WAM_Y + newLine,0, curses.A_STANDOUT) # Highlight the new line - win.addstr(C_Y,C_X, str(newLine)) # Display the number - self.line = newLine - else: # Special case: NONE means deselect - win.addstr(C_Y,C_X, " ") # Display the number - self.line = NONE - - win.refresh() - return self.line != NONE - def getLine(self): - return self.line - - chosenWam = HighlightLine() - chosenWam.setLine(0) - - while True: - k = win.getch(C_Y,C_X) - - # Handle keypad characters first - if k == curses.KEY_UP: - chosenWam.up() - elif k == curses.KEY_DOWN: - chosenWam.down() - elif k < 256: - # Then normal characters - ck = chr(k).upper() - - if k == 27 or ck == 'Q' or ck == 'X': # Escape, q, Q, x, X - chosenWam.setLine(HighlightLine.NONE) - break - if k == 10: # Enter - break - if ck.isdigit(): # 0 through 9 - if chosenWam.setLine(int(ck)): # Is choice valid? - break - # Otherwise, ignore - finally: - curses.endwin() - - return chosenWam.getLine() - - -# Parse arguments -ap = argparse.ArgumentParser(description="Find WAM-PCs or PC/104s on the local network.") -ap.add_argument("-u", "--user", default=DEFAULT_USERNAME, help="the username to login with (default: %(default)s)") -ap.add_argument("-g", "--gvfs", action="store_true", help="use gvfs-mount the mount the remote filesystem") -ap.add_argument("name", nargs=argparse.REMAINDER, help="optional: name of the WAM you want to connect to") -args = ap.parse_args() - # Broadcast sock = socket(AF_INET, SOCK_DGRAM) sock.setsockopt(SOL_SOCKET, SO_BROADCAST, 1) -sock.sendto("", ("", PORT)) - +sock.sendto(b'', ("", PORT)) # Discover +print( "Found:") sock.settimeout(TIMEOUT) -replies = [] try: while True: - replies.append(sock.recv(4096)) # Arbitrary buffer size + print(sock.recv(4096).decode('UTF-8')) except timeout: pass -wams = map(lambda r: r.split(SEPERATOR), sorted(replies, key=str.lower)) -print "Found:" -print " " + "\n ".join(map(lambda w: wamStr(w, maxNameLen(wams)), wams)) - - -# Choose -if len(args.name) > 0: # They passed a name on the command line. See if we can match it. - name = " ".join(args.name).lower() - choice = -1 - for i,w in enumerate(wams): - if w[0].lower().find(name) != -1: - # Multiple matches is an error - if choice != -1: - choice = -2 - break - else: - choice = i - if choice == -1: - print "ERROR: No WAM matching \"%s\" found." % name - elif choice == -2: - print "ERROR: More than one WAM matching \"%s\" found." % name -else: # No args, use curses - choice = getChoice(wams) -if choice not in range(len(wams)): - exit(1) -w = wams[choice] - - -# GVFS -if args.gvfs: - # See if it's already mounted - if alreadyMounted(w): - print "Remote filesystem already mounted." - else: - # Mount it - print "Mounting remote filesystem..." - stdout.flush() - try: - subprocess.call(["gvfs-mount", "sftp://" + w[1]]) - except KeyboardInterrupt: - pass - - # Did the mount succeed? - if alreadyMounted(w): - # Is the name a valid directory name? - if niceString(w[0]): - path = MOUNT_DIR + w[0] - - # Does the directory exist? - # Use normpath() to catch directories *and* files with that - # name. exists() gets confused by trailing '/' characters. - if not os.path.exists(os.path.normpath(MOUNT_DIR)): - os.makedirs(MOUNT_DIR) - - if os.path.isdir(MOUNT_DIR): # Maybe it's a file? - # If there's a link (not some other kind of file) with that name, remove it - if os.path.islink(path): - os.remove(path) - - # Is there already a file by that name? - if os.path.exists(path): - print "WARNING: Skipping symlink. The path \"%s\" already exists." % path - else: - # Different versions of GVFS use different file name conventions - gvfsPaths = glob(GVFS_GLOB_TEMPLATE % w[1]) - # Is there exactly one candidate for the GVFS directory? - if len(gvfsPaths) == 1: - # Link it! - os.symlink(gvfsPaths[0], path) - print "Remote filesystem available at:" - print " " + path - else: - print "WARNING: Skipping symlink. Couldn't find GVFS directory." - else: - print "WARNING: Skipping symlink. \"%s\" is not a directory." % MOUNT_DIR - else: - print "WARNING: Skipping symlink. WAM name contains illegal characters." - - -# Connect -print "Connecting to:" -print " " + wamStr(w, maxNameLen(wams)) -stdout.flush() - -try: - subprocess.call(["ssh", args.user + "@" + w[1]]) -except KeyboardInterrupt: - pass - diff --git a/scripts/configure_barrettcan.sh b/scripts/configure_barrettcan.sh new file mode 100755 index 00000000..91962239 --- /dev/null +++ b/scripts/configure_barrettcan.sh @@ -0,0 +1,57 @@ +#/bin/bash +# configure_barrettcan.sh + +# Wake puck (Get STATUS) +cansend can0 00$1#05 +sleep 0.1 + +# Set ROLE to 256 +cansend can0 00$1#81.00.00.01 +sleep 0.1 + +# Set GRPA to 0 +cansend can0 00$1#9A.00.00.00 +sleep 0.1 + +# Set GRPC to 4 +cansend can0 00$1#9C.00.04.00 +sleep 0.1 + +# Set JIDX to ID +cansend can0 00$1#D5.00.0$1.00 +sleep 0.1 + +if [ $1 -lt 5 ] +then # 4DOF + # Set GRPB to 1 + cansend can0 00$1#9B.00.01.00 + sleep 0.1 + + # Set PIDX to ID + cansend can0 00$1#C6.00.0$1.00 + sleep 0.1 + + # Set IPNM to 2700 + cansend can0 00$1#D6.00.8C.0A + sleep 0.1 +else # Wrist + # Set GRPB to 2 + cansend can0 00$1#9B.00.02.00 + sleep 0.1 + + # set PIDX to ID-4 + cansend can0 00$1#C6.00.0`expr $1 - 4`.00 + sleep 0.1 + if [ $1 -lt 7 ] + then # Wrist diff + # Set IPNM to 6500 + cansend can0 00$1#D6.00.64.19 + else # Wrist roll + # Set IPNM to 17474 + cansend can0 00$1#D6.00.42.44 + fi + sleep 0.1 +fi + +# Save all +cansend can0 00$1#9E.00.FF.FF From 3e8e196e992bb97a4b522fd8b8676a70a82d6aa5 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Sat, 20 Mar 2021 14:15:57 -0400 Subject: [PATCH 13/78] Improved HI timing, and modified some realtime calls --- include/barrett/products/detail/low_level_wam-inl.h | 6 ++++-- src/bus/bus_manager.cpp | 10 +++++----- src/bus/can_socket-linux.cpp | 3 +++ src/products/hand.cpp | 2 ++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/include/barrett/products/detail/low_level_wam-inl.h b/include/barrett/products/detail/low_level_wam-inl.h index e21b58f4..1885657c 100644 --- a/include/barrett/products/detail/low_level_wam-inl.h +++ b/include/barrett/products/detail/low_level_wam-inl.h @@ -291,7 +291,9 @@ void LowLevelWam::update() double now = highResolutionSystemTime(); if (noJointEncoders) { - group.getProperty >(Puck::P, pp.data(), true); + // Changing realtime to false. If this thread never yields, there is a chance the CAN request will never go out. + //group.getProperty >(Puck::P, pp.data(), true); + group.getProperty >(Puck::P, pp.data(), false); jp_motorEncoder = p2jp * pp; // Convert from Puck positions to joint positions jp_best = jp_motorEncoder; } else { @@ -303,7 +305,7 @@ void LowLevelWam::update() group.getProperty >( Puck::P, reinterpret_cast::result_type*>(pp_jep.data()), - true); + false); jp_motorEncoder = p2jp * pp_jep.col(0); for (size_t i = 0; i < DOF; ++i) { diff --git a/src/bus/bus_manager.cpp b/src/bus/bus_manager.cpp index 642264d6..2a7ec357 100644 --- a/src/bus/bus_manager.cpp +++ b/src/bus/bus_manager.cpp @@ -99,11 +99,11 @@ int BusManager::receive(int expectedBusId, unsigned char* data, size_t& len, boo return 2; } - if (!realtime) { - int lc = m.fullUnlock(); - btsleepRT(0.0001); // Yield this thread, give CAN thread time to process data - m.relock(lc); - } + //if (!realtime) { + // int lc = m.fullUnlock(); + // btsleepRT(0.0001); // Yield this thread, give CAN thread time to process data + // m.relock(lc); + //} } } diff --git a/src/bus/can_socket-linux.cpp b/src/bus/can_socket-linux.cpp index 893a0e8b..b2402181 100644 --- a/src/bus/can_socket-linux.cpp +++ b/src/bus/can_socket-linux.cpp @@ -178,6 +178,9 @@ int CANSocket::send(int busId, const unsigned char* data, size_t len) const frame.can_dlc = len; memcpy(frame.data, data, len); + // (BZ) For C++ non-experts (like me), the '::' here says to look outside of + // the present namespace for a send() function. We are not calling ourselves + // recursively, we are forcing the linker to find & use socket.h's function. int ret = ::send(handle->h, (void *) &frame, sizeof(struct can_frame), 0); if (ret < 0) { ret = -errno; // Specific error info is in errno. Save a copy. diff --git a/src/products/hand.cpp b/src/products/hand.cpp index a6fcd6d9..7ddffb04 100644 --- a/src/products/hand.cpp +++ b/src/products/hand.cpp @@ -110,9 +110,11 @@ void Hand::initialize() const for (size_t i = 0; i < DOF-1; ++i) { pucks[i]->setProperty(Puck::CMD, CMD_HI); } + btsleep(1.0); // Pucks take at least 0.5 seconds to respond to CAN messages again after cmdHI waitUntilDoneMoving(); pucks[SPREAD_INDEX]->setProperty(Puck::CMD, CMD_HI); + btsleep(1.0); waitUntilDoneMoving(); } /** doneMoving Method */ From a2440dfcc5133db70678ddb982fbbfe6234e80ba Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 2 Apr 2021 13:10:48 -0400 Subject: [PATCH 14/78] Making sensor reads more transactional using the bus mutex and yield() --- .../products/detail/low_level_wam-inl.h | 1 + include/barrett/products/detail/puck-inl.h | 9 +-- .../barrett/products/detail/puck_group-inl.h | 10 +-- scripts/install-dependencies.sh | 2 +- scripts/setup-hardware.sh | 12 +++- src/products/force_torque_sensor.cpp | 5 ++ src/products/hand.cpp | 69 +++++++++---------- src/products/property_list.cpp | 2 +- 8 files changed, 62 insertions(+), 48 deletions(-) diff --git a/include/barrett/products/detail/low_level_wam-inl.h b/include/barrett/products/detail/low_level_wam-inl.h index 1885657c..ffc22716 100644 --- a/include/barrett/products/detail/low_level_wam-inl.h +++ b/include/barrett/products/detail/low_level_wam-inl.h @@ -339,6 +339,7 @@ void LowLevelWam::setTorques(const jt_type& jt) pt = j2pt * jt; // Convert from joint torques to Puck torques size_t i = 0; + BARRETT_SCOPED_LOCK(bus.getMutex()); for (size_t g = 0; g < torqueGroups.size(); ++g) { MotorPuck::sendPackedTorques(bus, torqueGroups[g]->getId(), torquePropId, pt.data()+i, std::min(PUCKS_PER_TORQUE_GROUP, DOF-i)); i += PUCKS_PER_TORQUE_GROUP; diff --git a/include/barrett/products/detail/puck-inl.h b/include/barrett/products/detail/puck-inl.h index 04d266c0..b23cc105 100644 --- a/include/barrett/products/detail/puck-inl.h +++ b/include/barrett/products/detail/puck-inl.h @@ -86,10 +86,11 @@ int Puck::tryGetProperty(const bus::CommunicationsBus& bus, int id, int propId, template int Puck::getPropertyHelper(const bus::CommunicationsBus& bus, int id, int propId, typename Parser::result_type* result, bool blocking, bool realtime, double timeout_s) { - boost::unique_lock ul(bus.getMutex(), boost::defer_lock); - if (realtime) { - ul.lock(); - } + //boost::unique_lock ul(bus.getMutex(), boost::defer_lock); + //if (realtime) { + // ul.lock(); + //} + BARRETT_SCOPED_LOCK(bus.getMutex()); int ret = sendGetPropertyRequest(bus, id, propId); if (ret != 0) { diff --git a/include/barrett/products/detail/puck_group-inl.h b/include/barrett/products/detail/puck_group-inl.h index c2035225..4afa4083 100644 --- a/include/barrett/products/detail/puck_group-inl.h +++ b/include/barrett/products/detail/puck_group-inl.h @@ -43,11 +43,13 @@ inline void PuckGroup::getProperty(enum Puck::Property prop, int results[], bool } template void PuckGroup::getProperty(enum Puck::Property prop, typename Parser::result_type results[], bool realtime) const { - boost::unique_lock ul(bus.getMutex(), boost::defer_lock); - if (realtime) { - ul.lock(); - } + //boost::unique_lock ul(bus.getMutex(), boost::defer_lock); + //if (realtime) { + // ul.lock(); + //} + BARRETT_SCOPED_LOCK(bus.getMutex()); + int propId = getPropertyId(prop); sendGetPropertyRequest(propId); receiveGetPropertyReply(propId, results, realtime); diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index 3dcfec4f..de49f394 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -4,7 +4,7 @@ # Import the Linux Version Number Variables . /etc/lsb-release -if [ "$DISTRIB_RELEASE" == "20.04" ]; then +if [ "$DISTRIB_RELEASE" = "20.04" ]; then sudo apt-get install -y git cmake clang net-tools can-utils sudo apt-get install -y libgsl-dev libeigen3-dev libncurses-dev pkg-config libboost-all-dev diff --git a/scripts/setup-hardware.sh b/scripts/setup-hardware.sh index 38167940..6adf4b01 100755 --- a/scripts/setup-hardware.sh +++ b/scripts/setup-hardware.sh @@ -3,10 +3,18 @@ # Import the Linux Version Number Variables . /etc/lsb-release -if [ "$DISTRIB_RELEASE" == "18.04" ]; then +if [ "$DISTRIB_RELEASE" = "20.04" ]; then sudo cp reset_can_non_xenomai.sh /bin sudo cp 60-can.rules /etc/udev/rules.d sudo udevadm control --reload-rules && udevadm trigger + mydir=$(pwd) + cd + wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.11.0.tar.gz + tar xf peak-linux-driver-8.11.0.tar.gz + cd peak-linux-driver-8.11.0 + make -C driver netdev + sudo make -C driver install + cd $mydir else - echo "This script must run under Ubuntu 18.04" + echo "This script must run under Ubuntu 20.04" fi diff --git a/src/products/force_torque_sensor.cpp b/src/products/force_torque_sensor.cpp index fb300454..7c7f72c7 100644 --- a/src/products/force_torque_sensor.cpp +++ b/src/products/force_torque_sensor.cpp @@ -61,6 +61,8 @@ void ForceTorqueSensor::update(bool realtime) { int ret; + BARRETT_SCOPED_LOCK(bus->getMutex()); + ret = Puck::sendGetPropertyRequest(*bus, id, propId); if (ret != 0) { (logMessage("ForceTorqueSensor::%s(): Failed to send request. " @@ -84,6 +86,7 @@ void ForceTorqueSensor::update(bool realtime) "Puck::receiveGetPropertyReply() returned error %d while receiving FT Torque reply from ID=%d.") % __func__ % ret % id).raise(); } + boost::this_thread::yield(); } /** updateAccel Method clears stored acceleration values in each axis */ void ForceTorqueSensor::updateAccel(bool realtime) @@ -93,6 +96,7 @@ void ForceTorqueSensor::updateAccel(bool realtime) // TODO(dc): Fix this once FT sensors have working ROLE/VERS properties. int accelPropId = Puck::getPropertyId(Puck::A, Puck::PT_ForceTorque, 0); + BARRETT_SCOPED_LOCK(bus->getMutex()); ret = Puck::sendGetPropertyRequest(*bus, id, accelPropId); if (ret != 0) { (logMessage("ForceTorqueSensor::%s(): Failed to send request. " @@ -106,6 +110,7 @@ void ForceTorqueSensor::updateAccel(bool realtime) "Puck::receiveGetPropertyReply() returned error %d while receiving FT Accel reply from ID=%d.") % __func__ % ret % id).raise(); } + boost::this_thread::yield(); } /** parse Method splits data into readable format */ int ForceTorqueSensor::parse(int id, int propId, base_type* result, const unsigned char* data, size_t len, double scaleFactor) diff --git a/src/products/hand.cpp b/src/products/hand.cpp index 7ddffb04..4e728d02 100644 --- a/src/products/hand.cpp +++ b/src/products/hand.cpp @@ -196,22 +196,25 @@ void Hand::setTorqueCommand(const jt_type& jt, unsigned int whichDigits) const void Hand::update(unsigned int sensors, bool realtime) { // Do we need to lock? - boost::unique_lock ul(bus.getMutex(), boost::defer_lock); - if (realtime) { - ul.lock(); - } + //boost::unique_lock ul(bus.getMutex(), boost::defer_lock); + //if (realtime) { + // ul.lock(); + //} // Send requests if (sensors & S_POSITION) { - group.sendGetPropertyRequest(group.getPropertyId(Puck::P)); + { + BARRETT_SCOPED_LOCK(bus.getMutex()); + group.sendGetPropertyRequest(group.getPropertyId(Puck::P)); - group.receiveGetPropertyReply >(group.getPropertyId(Puck::P), encoderTmp.data(), realtime); + group.receiveGetPropertyReply >(group.getPropertyId(Puck::P), encoderTmp.data(), realtime); + } + boost::this_thread::yield(); for (size_t i = 0; i < DOF; ++i) { primaryEncoder[i] = encoderTmp[i].get<0>(); secondaryEncoder[i] = encoderTmp[i].get<1>(); } - // For the fingers for (size_t i = 0; i < DOF-1; ++i) { // If we got a reading from the secondary encoder and it's enabled... @@ -230,44 +233,38 @@ void Hand::update(unsigned int sensors, bool realtime) } if (hasFingertipTorqueSensors() && sensors & S_FINGERTIP_TORQUE) { - group.sendGetPropertyRequest(group.getPropertyId(Puck::SG)); + { + BARRETT_SCOPED_LOCK(bus.getMutex()); + group.sendGetPropertyRequest(group.getPropertyId(Puck::SG)); - group.receiveGetPropertyReply(group.getPropertyId(Puck::SG), ftt.data(), realtime); + group.receiveGetPropertyReply(group.getPropertyId(Puck::SG), ftt.data(), realtime); + } + boost::this_thread::yield(); } - if (hasTactSensors() && sensors & S_TACT_FULL) { - // This should be TactilePuck::requestFull() - group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); + + if (hasTactSensors()) { + if(sensors & S_TACT_FULL){ + BARRETT_SCOPED_LOCK(bus.getMutex()); + // This should be TactilePuck::requestFull() + group.setProperty(Puck::TACT, TactilePuck::FULL_FORMAT); - for (size_t i = 0; i < tactilePucks.size(); ++i) { - tactilePucks[i]->receiveFull(realtime); + for (size_t i = 0; i < tactilePucks.size(); ++i) { + tactilePucks[i]->receiveFull(realtime); + } } - } - if (hasTactSensors() && sensors & S_TACT_TOP10) { - // This should be TactilePuck::requestTop10() - group.setProperty(Puck::TACT, TactilePuck::TOP10_FORMAT); + if (sensors & S_TACT_TOP10) { + BARRETT_SCOPED_LOCK(bus.getMutex()); + // This should be TactilePuck::requestTop10() + group.setProperty(Puck::TACT, TactilePuck::TOP10_FORMAT); - for (size_t i = 0; i < tactilePucks.size(); ++i) { - tactilePucks[i]->receiveTop10(realtime); + for (size_t i = 0; i < tactilePucks.size(); ++i) { + tactilePucks[i]->receiveTop10(realtime); + } } + boost::this_thread::yield(); } - -/* - // Receive replies - if (sensors & S_POSITION) { - - } - if (hasFingertipTorqueSensors() && sensors & S_FINGERTIP_TORQUE) { - - } - if (hasTactSensors() && sensors & S_TACT_FULL) { - - } - if (hasTactSensors() && sensors & S_TACT_TOP10) { - - } -*/ } /** */ diff --git a/src/products/property_list.cpp b/src/products/property_list.cpp index 131306d9..58be8b0e 100644 --- a/src/products/property_list.cpp +++ b/src/products/property_list.cpp @@ -234,7 +234,7 @@ enum Puck::Property Puck::getPropertyEnum(const char* str) throw(std::invalid_argument) { enum Property prop = getPropertyEnumNoThrow(str); - if (prop == -1) { + if (prop == (enum Property) -1) { (logMessage("Puck::%s(): There is no property corresponding to \"%s\"") % __func__ % str).raise(); } From 043df393d2a30f15a681f35806b565bdc639091c Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 8 Apr 2021 14:36:50 -0400 Subject: [PATCH 15/78] Testing installation instructions --- scripts/reset_can_non_xenomai.sh | 3 --- scripts/setup-hardware.sh | 20 -------------------- 2 files changed, 23 deletions(-) delete mode 100755 scripts/reset_can_non_xenomai.sh delete mode 100755 scripts/setup-hardware.sh diff --git a/scripts/reset_can_non_xenomai.sh b/scripts/reset_can_non_xenomai.sh deleted file mode 100755 index 95ec51d8..00000000 --- a/scripts/reset_can_non_xenomai.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -sudo ip link set can0 up type can restart-ms 100 bitrate 1000000 -echo "CAN port 0 has been reset" diff --git a/scripts/setup-hardware.sh b/scripts/setup-hardware.sh deleted file mode 100755 index 6adf4b01..00000000 --- a/scripts/setup-hardware.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -# Import the Linux Version Number Variables -. /etc/lsb-release - -if [ "$DISTRIB_RELEASE" = "20.04" ]; then - sudo cp reset_can_non_xenomai.sh /bin - sudo cp 60-can.rules /etc/udev/rules.d - sudo udevadm control --reload-rules && udevadm trigger - mydir=$(pwd) - cd - wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.11.0.tar.gz - tar xf peak-linux-driver-8.11.0.tar.gz - cd peak-linux-driver-8.11.0 - make -C driver netdev - sudo make -C driver install - cd $mydir -else - echo "This script must run under Ubuntu 20.04" -fi From e3c6b604604577cf46191742cd3611fa766e18ca Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 8 Apr 2021 14:37:56 -0400 Subject: [PATCH 16/78] Testing installation --- scripts/60-can.rules | 2 +- scripts/install-dependencies.sh | 25 +++++++++++++++++++++---- scripts/reset_can.sh | 4 ++-- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/scripts/60-can.rules b/scripts/60-can.rules index b9209bb5..05719e85 100644 --- a/scripts/60-can.rules +++ b/scripts/60-can.rules @@ -1 +1 @@ -RUN+="/bin/reset_can_non_xenomai.sh" +RUN+="/bin/reset_can.sh" diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index de49f394..95caab0e 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -5,17 +5,34 @@ . /etc/lsb-release if [ "$DISTRIB_RELEASE" = "20.04" ]; then + + sudo apt update + sudo apt install -y linux-lowlatency-hwe-20.04 + sudo apt install -y git cmake clang net-tools can-utils + sudo apt install -y libgsl-dev libeigen3-dev libncurses-dev pkg-config + sudo apt install -y libboost-system-dev libboost-thread-dev libboost-python-dev + # sudo apt-get install -y libboost-all-dev - sudo apt-get install -y git cmake clang net-tools can-utils - sudo apt-get install -y libgsl-dev libeigen3-dev libncurses-dev pkg-config libboost-all-dev - - #Download and Install patched Libconfig 1.4.5 + #Download and Install patched Libconfig 1.4.5 (supporting C & C++ simultaneously) cd ~/Downloads wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz tar -xf libconfig-1.4.5-PATCHED.tar.gz cd libconfig-1.4.5 ./configure && make && sudo make install sudo ldconfig + + # Install CAN scripts + sudo cp reset_can.sh /bin + sudo cp 60-can.rules /etc/udev/rules.d + sudo udevadm control --reload-rules && udevadm trigger + + # Install PCAN driver + mydir=$(pwd) + cd && wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.11.0.tar.gz + tar xf peak-linux-driver-8.11.0.tar.gz + cd peak-linux-driver-8.11.0 && make -C driver netdev + sudo make -C driver install + cd $mydir else echo "This script must run under Ubuntu 20.04" fi diff --git a/scripts/reset_can.sh b/scripts/reset_can.sh index 714ac0f6..e3b88850 100644 --- a/scripts/reset_can.sh +++ b/scripts/reset_can.sh @@ -1,3 +1,3 @@ #!/bin/bash -/usr/xenomai/sbin/rtcanconfig rtcan0 -b 1000000 start -echo "CAN port 0 has been reset" +sudo ip link set can0 up type can restart-ms 100 bitrate 1000000 +echo "CAN port 0 has been reset" \ No newline at end of file From 22781110937e6b9f06a297369930bf2ceb8c8041 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 8 Apr 2021 16:19:08 -0400 Subject: [PATCH 17/78] Testing installation --- scripts/install-dependencies.sh | 8 -------- scripts/install-pcan.sh | 17 +++++++++++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) create mode 100644 scripts/install-pcan.sh diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index 95caab0e..1131b9a7 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -25,14 +25,6 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then sudo cp reset_can.sh /bin sudo cp 60-can.rules /etc/udev/rules.d sudo udevadm control --reload-rules && udevadm trigger - - # Install PCAN driver - mydir=$(pwd) - cd && wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.11.0.tar.gz - tar xf peak-linux-driver-8.11.0.tar.gz - cd peak-linux-driver-8.11.0 && make -C driver netdev - sudo make -C driver install - cd $mydir else echo "This script must run under Ubuntu 20.04" fi diff --git a/scripts/install-pcan.sh b/scripts/install-pcan.sh new file mode 100644 index 00000000..7b782e34 --- /dev/null +++ b/scripts/install-pcan.sh @@ -0,0 +1,17 @@ +!/usr/bin/env bash +# This script installs libbarrett dependencies + +# Import the Linux Version Number Variables +. /etc/lsb-release + +if [ "$DISTRIB_RELEASE" = "20.04" ]; then + # Install PCAN driver + mydir=$(pwd) + cd && wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.11.0.tar.gz + tar xf peak-linux-driver-8.11.0.tar.gz + cd peak-linux-driver-8.11.0 && make -C driver netdev + sudo make -C driver install + cd $mydir +else + echo "This script must run under Ubuntu 20.04" +fi From 625e3a94b057b7f47e5e604829046b979917a175 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 8 Apr 2021 17:09:00 -0400 Subject: [PATCH 18/78] Testing installation --- scripts/install-dependencies.sh | 17 ++++++++--------- scripts/install-pcan.sh | 2 +- scripts/reset_can.sh | 0 3 files changed, 9 insertions(+), 10 deletions(-) mode change 100644 => 100755 scripts/install-pcan.sh mode change 100644 => 100755 scripts/reset_can.sh diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index 1131b9a7..b7c306bb 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -5,7 +5,12 @@ . /etc/lsb-release if [ "$DISTRIB_RELEASE" = "20.04" ]; then + # Install CAN scripts + sudo cp reset_can.sh /bin + sudo cp 60-can.rules /etc/udev/rules.d + sudo udevadm control --reload-rules && udevadm trigger + # Install libbarrett dependencies sudo apt update sudo apt install -y linux-lowlatency-hwe-20.04 sudo apt install -y git cmake clang net-tools can-utils @@ -14,17 +19,11 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then # sudo apt-get install -y libboost-all-dev #Download and Install patched Libconfig 1.4.5 (supporting C & C++ simultaneously) - cd ~/Downloads - wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz + cd ~/Downloads && wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz tar -xf libconfig-1.4.5-PATCHED.tar.gz - cd libconfig-1.4.5 - ./configure && make && sudo make install + cd libconfig-1.4.5 && ./configure && make -j$(nproc) + sudo make install sudo ldconfig - - # Install CAN scripts - sudo cp reset_can.sh /bin - sudo cp 60-can.rules /etc/udev/rules.d - sudo udevadm control --reload-rules && udevadm trigger else echo "This script must run under Ubuntu 20.04" fi diff --git a/scripts/install-pcan.sh b/scripts/install-pcan.sh old mode 100644 new mode 100755 index 7b782e34..bdb70811 --- a/scripts/install-pcan.sh +++ b/scripts/install-pcan.sh @@ -9,7 +9,7 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then mydir=$(pwd) cd && wget https://www.peak-system.com/fileadmin/media/linux/files/peak-linux-driver-8.11.0.tar.gz tar xf peak-linux-driver-8.11.0.tar.gz - cd peak-linux-driver-8.11.0 && make -C driver netdev + cd peak-linux-driver-8.11.0 && make -j$(nproc) -C driver netdev sudo make -C driver install cd $mydir else diff --git a/scripts/reset_can.sh b/scripts/reset_can.sh old mode 100644 new mode 100755 From 8b79aec5e07c4a3018c6c5e579c9e3d753bef19c Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 9 Apr 2021 13:01:18 -0400 Subject: [PATCH 19/78] Fixing cmake files --- CMakeLists.txt | 34 ++++++++++++++++++++++++---------- examples/CMakeLists.txt | 4 +++- src/CMakeLists.txt | 2 +- 3 files changed, 28 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8270ea5b..47c30480 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules/") ### Options option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON) -option(OPTIMIZE_FOR_PROCESSOR "Set to ON to build binaries that are optimized for this specific computer and can't be copied to other machines" OFF) +option(OPTIMIZE_FOR_PROCESSOR "Set to ON to build binaries that are optimized for this specific computer and can't be copied to other machines" ON) option(WITH_PYTHON "Set to ON to build Python bindings for libbarrett" ON) option(INSTALL_EXAMPLES "Set to ON to copy libbarrett example programs to the current user's home folder when the library is installed" ON) option(INSTALL_SANDBOX "Set to ON to copy libbarrett sandbox programs to the current user's home folder when the library is installed" ON) @@ -80,27 +80,41 @@ find_package(GSL REQUIRED) include_directories(${GSL_INCLUDE_DIRS}) set(exported_include_dirs ${exported_include_dirs} ${GSL_INCLUDE_DIRS}) +## Python +if (WITH_PYTHON) + find_package(PythonLibs REQUIRED) + include_directories(${PYTHON_INCLUDE_PATH}) +endif() ## Boost set(boost_components system thread) if (WITH_PYTHON) - set(boost_components ${boost_components} python) + # Extract major/minor python version + string(REPLACE "." ";" VERSION_LIST ${PYTHONLIBS_VERSION_STRING}) + list(GET VERSION_LIST 0 PYTHONLIBS_VERSION_MAJOR) + list(GET VERSION_LIST 1 PYTHONLIBS_VERSION_MINOR) + + set(boost_components ${boost_components} python${PYTHONLIBS_VERSION_MAJOR}${PYTHONLIBS_VERSION_MINOR}) endif() +message(STATUS "Boost components: ${boost_components}") find_package(Boost REQUIRED ${boost_components}) + +## Translate cmake's new "Boost::blah" library naming format to a normal "libboost_blah" name that can be passed to the linker. +## TODO(bz): Hunt down anyone who makes stupid changes like this and make them suffer. +set(boost_libraries "") +foreach (prop ${Boost_LIBRARIES}) + get_target_property(lib ${prop} LOCATION) + message(STATUS "The name ${prop} has location: ${lib}.") + set(boost_libraries ${boost_libraries} ${lib}) +endforeach(prop) +set(Boost_LIBRARIES ${boost_libraries}) + include_directories(${Boost_INCLUDE_DIRS}) link_directories(${Boost_LIBRARY_DIRS}) set(exported_include_dirs ${exported_include_dirs} ${Boost_INCLUDE_DIRS}) set(exported_link_dirs ${exported_link_dirs} ${Boost_LIBRARY_DIRS}) - -## Python -if (WITH_PYTHON) - find_package(PythonLibs REQUIRED) - include_directories(${PYTHON_INCLUDE_PATH}) -endif() - - ## Eigen3 find_package(Eigen3 REQUIRED) include_directories(${Eigen_INCLUDE_DIRS}) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 3daef02d..a1cf62f9 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -11,14 +11,16 @@ endif() ## libbarrett find_package(Barrett REQUIRED) include_directories(${BARRETT_INCLUDE_DIRS}) +message(STATUS "BARRETT_INCLUDE_DIRS: ${BARRETT_INCLUDE_DIRS}") link_directories(${BARRETT_LIBRARY_DIRS}) +message(STATUS "BARRETT_LIBRARY_DIRS: ${BARRETT_LIBRARY_DIRS}") add_definitions(${BARRETT_DEFINITIONS}) +message(STATUS "BARRETT_DEFINITIONS: ${BARRETT_DEFINITIONS}") ## curses find_package(Curses REQUIRED) include_directories(${CURSES_INCLUDE_DIR}) - function(add_programs) foreach (prog ${ARGV}) add_executable(${prog} ${prog}.cpp) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1556dcf5..0ce3ba72 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -61,7 +61,7 @@ if (WITH_PYTHON) endif() -set(libs ${Boost_LIBRARIES} ${GSL_LIBRARIES} config config++) #TODO(dc): libconfig finder? +set(libs ${Boost_LIBRARIES} ${GSL_LIBRARIES} config config++ pthread) #TODO(dc): libconfig finder? if (WITH_PYTHON) set(libs ${libs} ${PYTHON_LIBRARIES}) endif() From 75eafdba4c3c34a63e1122c6faf9bac7e03a931e Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 9 Apr 2021 15:01:19 -0400 Subject: [PATCH 20/78] Fixing more installation errors --- CMakeLists.txt | 3 ++- scripts/install-dependencies.sh | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 47c30480..0866d3c5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules/") ### Options option(BUILD_SHARED_LIBS "Set to OFF to build static libraries" ON) -option(OPTIMIZE_FOR_PROCESSOR "Set to ON to build binaries that are optimized for this specific computer and can't be copied to other machines" ON) +option(OPTIMIZE_FOR_PROCESSOR "Set to ON to build binaries that are optimized for this specific computer and can't be copied to other machines" OFF) option(WITH_PYTHON "Set to ON to build Python bindings for libbarrett" ON) option(INSTALL_EXAMPLES "Set to ON to copy libbarrett example programs to the current user's home folder when the library is installed" ON) option(INSTALL_SANDBOX "Set to ON to copy libbarrett sandbox programs to the current user's home folder when the library is installed" ON) @@ -29,6 +29,7 @@ option(CONFIG_DEBIAN "Set to ON to copy standard barrett-config.cmake, required if (OPTIMIZE_FOR_PROCESSOR) # TODO(dc): Does this turn on sse2 if supported by processor? What about -mfpmath=sse? + # WARNING: This option results in frequent segfaults (why?) set(NEW_FLAGS "-march=native -mtune=native") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${NEW_FLAGS}") diff --git a/scripts/install-dependencies.sh b/scripts/install-dependencies.sh index b7c306bb..f7b615f9 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install-dependencies.sh @@ -12,11 +12,18 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then # Install libbarrett dependencies sudo apt update - sudo apt install -y linux-lowlatency-hwe-20.04 + sudo apt install -y linux-lowlatency sudo apt install -y git cmake clang net-tools can-utils sudo apt install -y libgsl-dev libeigen3-dev libncurses-dev pkg-config sudo apt install -y libboost-system-dev libboost-thread-dev libboost-python-dev - # sudo apt-get install -y libboost-all-dev + + # Pin the new kernel + sudo apt-mark hold linux-lowlatency + + # Archive the other kernels + sudo mkdir /boot/archive + sudo mv /boot/*generic /boot/archive + sudo update-grub #Download and Install patched Libconfig 1.4.5 (supporting C & C++ simultaneously) cd ~/Downloads && wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz From 23e6b38a0e3b6d587cb1237fe4a9e5ff1d07d565 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 16 Apr 2021 15:27:50 -0400 Subject: [PATCH 21/78] Setting the default kernel in grub --- ...tall-dependencies.sh => install_dependencies.sh} | 13 ++++++++----- scripts/{install-pcan.sh => install_pcan.sh} | 0 2 files changed, 8 insertions(+), 5 deletions(-) rename scripts/{install-dependencies.sh => install_dependencies.sh} (62%) rename scripts/{install-pcan.sh => install_pcan.sh} (100%) diff --git a/scripts/install-dependencies.sh b/scripts/install_dependencies.sh similarity index 62% rename from scripts/install-dependencies.sh rename to scripts/install_dependencies.sh index f7b615f9..bfe556c6 100755 --- a/scripts/install-dependencies.sh +++ b/scripts/install_dependencies.sh @@ -17,15 +17,18 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then sudo apt install -y libgsl-dev libeigen3-dev libncurses-dev pkg-config sudo apt install -y libboost-system-dev libboost-thread-dev libboost-python-dev - # Pin the new kernel + # Pin the new kernel (to avoid recompiling custom modules) sudo apt-mark hold linux-lowlatency - # Archive the other kernels - sudo mkdir /boot/archive - sudo mv /boot/*generic /boot/archive + # Set the lowlatency kernel as the default in grub (survive apt upgrades) + menu=`grep menuentry.*gnulinux-advanced /boot/grub/grub.cfg -m 1 |cut -d\' -f4` + item=`grep menuentry.*lowlatency /boot/grub/grub.cfg -m 1 |cut -d\' -f4` + sudo sed -i "s/GRUB_DEFAULT=.*/GRUB_DEFAULT='$menu>$item'/g" grub /etc/default/grub + # Workaround for the 'hwmatch' bug in grub2-efi + echo 'GRUB_GFXPAYLOAD_LINUX=keep' |sudo tee -a /etc/default/grub > /dev/null sudo update-grub - #Download and Install patched Libconfig 1.4.5 (supporting C & C++ simultaneously) + # Download and Install patched Libconfig 1.4.5 (supporting C & C++ simultaneously) cd ~/Downloads && wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz tar -xf libconfig-1.4.5-PATCHED.tar.gz cd libconfig-1.4.5 && ./configure && make -j$(nproc) diff --git a/scripts/install-pcan.sh b/scripts/install_pcan.sh similarity index 100% rename from scripts/install-pcan.sh rename to scripts/install_pcan.sh From bc354184cdf170199f0a597e7f3fa5b444acd7e5 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 16 Apr 2021 15:39:11 -0400 Subject: [PATCH 22/78] Only append gfxpayload to default/grub if it doesn't already exist --- scripts/install_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_dependencies.sh b/scripts/install_dependencies.sh index bfe556c6..96199ee8 100755 --- a/scripts/install_dependencies.sh +++ b/scripts/install_dependencies.sh @@ -25,7 +25,7 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then item=`grep menuentry.*lowlatency /boot/grub/grub.cfg -m 1 |cut -d\' -f4` sudo sed -i "s/GRUB_DEFAULT=.*/GRUB_DEFAULT='$menu>$item'/g" grub /etc/default/grub # Workaround for the 'hwmatch' bug in grub2-efi - echo 'GRUB_GFXPAYLOAD_LINUX=keep' |sudo tee -a /etc/default/grub > /dev/null + grep -qF GRUB_GFXPAYLOAD_LINUX /etc/default/grub || echo 'GRUB_GFXPAYLOAD_LINUX=keep' | sudo tee -a /etc/default/grub > /dev/null sudo update-grub # Download and Install patched Libconfig 1.4.5 (supporting C & C++ simultaneously) From 0ff67f8418ca375d7ae60e889584a4896526341a Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Wed, 21 Apr 2021 15:06:27 -0400 Subject: [PATCH 23/78] Converted ex10_haptics_visualization.py from vpython to pyOpenGL. The features we were using from visual python were abandoned for a new glowscript/webgl/jupyter browser-based system, which is not what we need. --- examples/ex10_haptics_visualization.py | 320 +++++++++++++++++++------ 1 file changed, 250 insertions(+), 70 deletions(-) mode change 100755 => 100644 examples/ex10_haptics_visualization.py diff --git a/examples/ex10_haptics_visualization.py b/examples/ex10_haptics_visualization.py old mode 100755 new mode 100644 index 4fa28849..ffc93285 --- a/examples/ex10_haptics_visualization.py +++ b/examples/ex10_haptics_visualization.py @@ -1,71 +1,251 @@ -import sys +#!/usr/bin/python3 +# +# Usage: +# ex10_haptics_visualization.py +# +# Dependencies: +# sudo apt install python3 python3-pip freeglut3 +# python3 -m pip install PyOpenGL PyOpenGL_accelerate + +import time, sys from socket import * -from time import sleep -import struct -from visual import * -import numpy - - -# args -if len(sys.argv) == 2: - remoteHost = sys.argv[1] -else: - print "Usage: %s " % sys.argv[0] - exit() - - -# set up socket -PORT_SRC = 5556 -PORT_DEST = 5557 -MSG_FORMAT = "ddd" # messages contain 3 doubles -MSG_SIZE = struct.calcsize(MSG_FORMAT) - -sock = socket(AF_INET, SOCK_DGRAM) -#sock.setblocking(0) -sock.bind(('', PORT_SRC)) -sock.connect((remoteHost,PORT_DEST)) - - -# set up visual -scene.fullscreen = True -#scene.cursor.visible = False -#scene.autocenter = True -#scene.autoscale = True -scene.center = (0,-0.4,1) -scene.scale = (1.25,1.25,1.25) - -f = frame() -f.rotate(angle = -pi/2.0, axis = (1,0,0), origin = (0,0,0)) -f.rotate(angle = -pi/2.0, axis = (0,1,0), origin = (0,0,0)) -f.rotate(angle = pi*0.2, axis = (1,0,0), origin = (0,0,0)) - -# unit vectors -#arrow(pos = (0,0,0), axis = (1,0,0), color = color.red, frame = f) -#arrow(pos = (0,0,0), axis = (0,1,0), color = color.green, frame = f) -#arrow(pos = (0,0,0), axis = (0,0,1), color = color.blue, frame = f) - -# floor -xMin,xMax = -1,1 -yMin,yMax = -1,1 -z = -0.5 -step = 0.1 - -for x in numpy.linspace(xMin, xMax, (xMax-xMin)/step): - curve(pos = [(x,yMin,z), (x,yMax,z)], frame = f) -for y in numpy.linspace(yMin, yMax, (yMax-yMin)/step): - curve(pos = [(xMin,y,z), (xMax,y,z)], frame = f) - -# haptic objects -sphere(pos = (0.4,-0.3,0), radius = 0.2, color = color.green, opacity = 0.6, frame = f) -box(pos = (0.35,0.4,0), length = 0.3, height = 0.3, width = 0.3, color = color.blue, opacity = 0.6, frame = f) - -# end point -ep = sphere(pos = (0,0,0), radius = 0.03, color = color.red, frame = f) - - -# loop! -while True: - ep.pos = struct.unpack(MSG_FORMAT, sock.recv(MSG_SIZE)) - -sock.close() - +import struct +import fcntl, os, errno + +# OpenGL (Open Graphics Library) is a cross-language, cross-platform +# application programming interface (API) for rendering 2D and 3D vector graphics. +import OpenGL +OpenGL.ERROR_ON_COPY = True # Report any performance-reducing numpy data conversions +from OpenGL.GL import * + +# GLU is the OpenGL Utility Library. +# This is a set of functions to create texture mipmaps from a base image, +# map coordinates between screen and object space, and draw quadric surfaces and NURBS. +from OpenGL.GLU import * + +# GLUT is the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs. +# It implements a simple windowing application programming interface (API) for OpenGL. +from OpenGL.GLUT import * + +_angle = 0.0 +_pos = [0.0,0.0,0.0] + +def handleResize(w,h): + glViewport(0, 0, w, h) + glMatrixMode(GL_PROJECTION) + glLoadIdentity() + gluPerspective(45.0, w / h, 1.0, 200.0) + +# Draw a checkerboard pattern +def drawFloor(): + Depth = -4.0 + + GridSizeX = 8 + GridSizeY = 8 + SizeX = 4 + SizeY = 4 + + glBegin(GL_QUADS) + glNormal3f(0, 1, 0) + for x in range(-GridSizeX//2,GridSizeX//2): + for y in range(-GridSizeY//2,GridSizeY//2): + if ((x+y) & 1): # If odd + glColor4f(0.2, 0.2, 0.2, 1.0) # Gray + else: + glColor4f(0.0,0.0,0.0,0.0) # Black + + glVertex3f( x*SizeX,Depth, y*SizeY) + glVertex3f((x+1)*SizeX,Depth, y*SizeY) + glVertex3f((x+1)*SizeX,Depth,(y+1)*SizeY) + glVertex3f( x*SizeX,Depth,(y+1)*SizeY) + glEnd() + +# The function called whenever a key is pressed. +# Note the use of Python tuples to pass in: (key, x, y) +def keyPressed(*args): + print(args[0]) + # If escape is pressed, kill everything. + if args[0] == b'\x1b': + sys.exit() + +def drawScene(): + global _angle + global _pos + + # Clear Z-Buffer + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) + + # Define material colors (R,G,B,alpha) + qaGreen = [0.0, 1.0, 0.0, 0.6] + qaRed = [1.0, 0.0, 0.0, 1.0] + qaBlue = [0.0, 0.0, 1.0, 0.6] + + qaWhite = GLfloat_4(0.0, 1.0, 1.0, 1.0) + + # Set the camera orientation + glMatrixMode(GL_MODELVIEW) + glLoadIdentity() + + # Set view distance + glTranslatef(0.0, 0.0, -25.0) + + # Rotate viewpoint up around X-axis + glRotatef(20, 1, 0, 0) # Deg, x, y, z + + glMaterialfv(GL_FRONT, GL_SPECULAR, qaWhite) + glMaterialf(GL_FRONT, GL_SHININESS, 128.0) + + # Draw the cursor (opaque objects first) + glColor4f(*qaRed) + glPushMatrix() + glTranslatef(_pos[1], _pos[2], _pos[0]) # Horizontal, Vertical, Depth + glutSolidSphere(0.3, 32, 32) # Radius, slices, stacks + glPopMatrix() + + # Draw a sphere (transparent objects second) + glColor4f(*qaGreen) + glPushMatrix() + glTranslatef(-3, 0, 4) # Horizontal, Vertical, Depth + glutSolidSphere(2, 32, 32) # Radius, slices, stacks + glPopMatrix() + + # Draw a cube + glColor4f(*qaBlue) + glPushMatrix() + glTranslatef(4, 0, 3.5) # Horizontal, Vertical, Depth + #glRotatef(_angle, 0.0, 1.0, 0.0) + glutSolidCube(3) # Length of a side + glPopMatrix() + + # Draw the floor + drawFloor() + + # Display the buffer + glutSwapBuffers() + +def glutInitialize(): + # Set background color + qaBlack = [0.0, 0.0, 0.0, 1.0] + glClearColor(*qaBlack) + + glEnable(GL_DEPTH_TEST) + + #glEnable(GL_NORMALIZE) + + glEnable(GL_COLOR_MATERIAL) + glColorMaterial(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE) + + glShadeModel(GL_SMOOTH) + + glEnable(GL_BLEND) + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) + #glMatrixMode(GL_PROJECTION) + #glOrtho(-1.0, 1.0, -1.0, 1.0, -10.0, 10.0) + + # Lighting set up + glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE) + glEnable(GL_LIGHTING) + glEnable(GL_LIGHT0) + + # Set the light position + LIGHT_POS = 7 + #glLoadIdentity() + qaLightPosition = GLfloat_4(-2 * LIGHT_POS , LIGHT_POS , 4 * LIGHT_POS , 1.0) + glLightfv(GL_LIGHT0, GL_POSITION, qaLightPosition) + + # Set lighting intensity and color + qaAmbientLight = GLfloat_4(0.2, 0.2, 0.2, 1.0) + qaDiffuseLight = GLfloat_4(0.8, 0.8, 0.8, 1.0) + qaSpecularLight = GLfloat_4(1.0, 1.0, 1.0, 1.0) + glLightfv(GL_LIGHT0, GL_AMBIENT, qaAmbientLight) + glLightfv(GL_LIGHT0, GL_DIFFUSE, qaDiffuseLight) + glLightfv(GL_LIGHT0, GL_SPECULAR, qaSpecularLight) + +def animate(value): + global _angle + _angle += 1.0 + if _angle >= 360: + _angle -= 360 + glutPostRedisplay() + glutTimerFunc(25, animate, 0) + +def receiveData(): + global _sock + global _pos + + m = 10 # Scaling factor + b = 0 # Shift amount + + MSG_FORMAT = "ddd" # messages contain 3 doubles + MSG_SIZE = struct.calcsize(MSG_FORMAT) + + try: + msg = _sock.recv(MSG_SIZE) + except OSError as e: + err = e.args[0] + if err == errno.EAGAIN or err == errno.EWOULDBLOCK: + #sleep(1) + #print('No data available') + return + else: + # a "real" error occurred + print(e) + sys.exit(1) + else: + # got a message, do something :) + raw = struct.unpack(MSG_FORMAT, msg) + _pos = [m*x+b for x in raw] # Scale and shift the data + +def main(): + # Initialize the glut system + glutInit(sys.argv) + + # Select the drawing features + glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH | GLUT_ALPHA) + + # Open a maximized window + glutInitWindowSize(glutGet(GLUT_SCREEN_WIDTH), glutGet(GLUT_SCREEN_HEIGHT)) + glutCreateWindow("Haptics Demo") + + # Initialize lighting/shading/blending + glutInitialize() + + # Set the drawing callback + glutDisplayFunc(drawScene) + + # Set the keypress callback + glutKeyboardFunc(keyPressed) + + # Set the window-resize callback + glutReshapeFunc(handleResize) + + # Add a timer function for animation + glutTimerFunc(25, animate, 0) # milliseconds, function, passed value + + # Add a callback to receive socket data when OpenGL is idle + glutIdleFunc(receiveData) + + # Execute main graphics loop + glutMainLoop() + +# Set up the network socket +def setupSocket(): + global _sock + + PORT_SRC = 5556 + PORT_DEST = 5557 + + _sock = socket(AF_INET, SOCK_DGRAM) + _sock.bind(('', PORT_SRC)) + _sock.connect((remoteHost,PORT_DEST)) + fcntl.fcntl(_sock, fcntl.F_SETFL, os.O_NONBLOCK) + +if __name__ == "__main__": + if len(sys.argv) == 2: + remoteHost = sys.argv[1] + else: + print("Usage: %s " % sys.argv[0]) + exit() + + setupSocket() + main() \ No newline at end of file From 76a22351ad15c85b0afd5f063e9d4c5edea90145 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Wed, 21 Apr 2021 15:22:22 -0400 Subject: [PATCH 24/78] Added newline to end of ex10 --- examples/ex10_haptics_visualization.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/ex10_haptics_visualization.py b/examples/ex10_haptics_visualization.py index ffc93285..3cbaa612 100644 --- a/examples/ex10_haptics_visualization.py +++ b/examples/ex10_haptics_visualization.py @@ -248,4 +248,5 @@ def setupSocket(): exit() setupSocket() - main() \ No newline at end of file + main() + \ No newline at end of file From e6fe256899395566ee7389bad25135176eb1bdbe Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Wed, 21 Apr 2021 16:01:36 -0400 Subject: [PATCH 25/78] Fixed ESC in ex10 visualization --- examples/ex10_haptics_visualization.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) mode change 100644 => 100755 examples/ex10_haptics_visualization.py diff --git a/examples/ex10_haptics_visualization.py b/examples/ex10_haptics_visualization.py old mode 100644 new mode 100755 index 3cbaa612..f769823f --- a/examples/ex10_haptics_visualization.py +++ b/examples/ex10_haptics_visualization.py @@ -1,7 +1,7 @@ #!/usr/bin/python3 # # Usage: -# ex10_haptics_visualization.py +# python3 ex10_haptics_visualization.py # # Dependencies: # sudo apt install python3 python3-pip freeglut3 @@ -66,7 +66,12 @@ def keyPressed(*args): print(args[0]) # If escape is pressed, kill everything. if args[0] == b'\x1b': - sys.exit() + try: + sys.exit() + except SystemExit as e: + glutLeaveMainLoop() + finally: + print("Done.") def drawScene(): global _angle @@ -184,7 +189,6 @@ def receiveData(): except OSError as e: err = e.args[0] if err == errno.EAGAIN or err == errno.EWOULDBLOCK: - #sleep(1) #print('No data available') return else: @@ -249,4 +253,3 @@ def setupSocket(): setupSocket() main() - \ No newline at end of file From 4d48b793ce55cd3dd949e8dc5aa3e999f7e63526 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 22 Apr 2021 13:39:52 -0400 Subject: [PATCH 26/78] Avoid compiler warning in play.cpp by using DOF directly instead of its derivative variable j --- sandbox/teach_and_play/play.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sandbox/teach_and_play/play.cpp b/sandbox/teach_and_play/play.cpp index ecf79823..f2acb69c 100644 --- a/sandbox/teach_and_play/play.cpp +++ b/sandbox/teach_and_play/play.cpp @@ -235,11 +235,11 @@ bool Play::init() { } boost::get<0>(samp) = fLine[0]; // To handle the different WAM configurations - if (j == 4) + if (DOF == 3) boost::get<1>(samp) << fLine[1], fLine[2], fLine[3]; - else if (j == 5) + else if (DOF == 4) boost::get<1>(samp) << fLine[1], fLine[2], fLine[3], fLine[4]; - else if (j == 8) + else if (DOF == 7) boost::get<1>(samp) << fLine[1], fLine[2], fLine[3], fLine[4], fLine[5], fLine[6], fLine[7]; jp_vec.push_back(samp); } From aafcae37d43be9352302cbc695ef46160d484195 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 22 Apr 2021 14:10:19 -0400 Subject: [PATCH 27/78] Removed grub test file --- scripts/install_dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install_dependencies.sh b/scripts/install_dependencies.sh index 96199ee8..0d893d30 100755 --- a/scripts/install_dependencies.sh +++ b/scripts/install_dependencies.sh @@ -23,7 +23,7 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then # Set the lowlatency kernel as the default in grub (survive apt upgrades) menu=`grep menuentry.*gnulinux-advanced /boot/grub/grub.cfg -m 1 |cut -d\' -f4` item=`grep menuentry.*lowlatency /boot/grub/grub.cfg -m 1 |cut -d\' -f4` - sudo sed -i "s/GRUB_DEFAULT=.*/GRUB_DEFAULT='$menu>$item'/g" grub /etc/default/grub + sudo sed -i "s/GRUB_DEFAULT=.*/GRUB_DEFAULT='$menu>$item'/g" /etc/default/grub # Workaround for the 'hwmatch' bug in grub2-efi grep -qF GRUB_GFXPAYLOAD_LINUX /etc/default/grub || echo 'GRUB_GFXPAYLOAD_LINUX=keep' | sudo tee -a /etc/default/grub > /dev/null sudo update-grub From c84f3cb77b29a2b4e756f5d022cb0ce2623386e5 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Mon, 26 Apr 2021 11:24:30 -0400 Subject: [PATCH 28/78] Removed boost_filesystem dependency --- sandbox/teach_and_play/CMakeLists.txt | 3 ++- sandbox/teach_and_play/play.cpp | 14 +++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/sandbox/teach_and_play/CMakeLists.txt b/sandbox/teach_and_play/CMakeLists.txt index 58fe297b..29b15aed 100644 --- a/sandbox/teach_and_play/CMakeLists.txt +++ b/sandbox/teach_and_play/CMakeLists.txt @@ -16,7 +16,8 @@ target_link_libraries(teach ${BARRETT_LIBRARIES} ${CURSES_LIBRARIES}) add_executable(play play.cpp) ## target_link_libraries(play ${BARRETT_LIBRARIES} boost_system boost_filesystem) -target_link_libraries(play ${BARRETT_LIBRARIES} boost_filesystem) +## target_link_libraries(play ${BARRETT_LIBRARIES} boost_filesystem) +target_link_libraries(play ${BARRETT_LIBRARIES}) add_executable(bt-wam-ccg calibrate_control_gains.cpp) target_link_libraries(bt-wam-ccg ${BARRETT_LIBRARIES}) diff --git a/sandbox/teach_and_play/play.cpp b/sandbox/teach_and_play/play.cpp index f2acb69c..d94e030b 100644 --- a/sandbox/teach_and_play/play.cpp +++ b/sandbox/teach_and_play/play.cpp @@ -10,12 +10,14 @@ #include #include #include -#include +//#include #include #include #include #include +#include + #include #include #include @@ -36,9 +38,11 @@ char* ctrlMode = NULL; bool vcMode = false; bool validate_args(int argc, char** argv) { + struct stat buffer; + switch (argc) { case 2: - if (boost::filesystem::exists(argv[1])) { + if (!stat(argv[1], &buffer)) { // If file exists printf("\nTrajectory to be played in current control mode: %s\n\n", argv[1]); return true; @@ -51,12 +55,12 @@ bool validate_args(int argc, char** argv) { } case 3: ctrlMode = argv[2]; - if (boost::filesystem::exists(argv[1]) + + if (!stat(argv[1], &buffer) && (strcmp(ctrlMode, "cc") == 0 || strcmp(ctrlMode, "-cc") == 0 || strcmp(ctrlMode, "vc") == 0 || strcmp(ctrlMode, "-vc") == 0)) { - printf( - "\nTrajectory to be played in %s mode: %s\n\n", + printf("\nTrajectory to be played in %s mode: %s\n\n", strcmp(ctrlMode, "vc") == 0 || strcmp(ctrlMode, "-vc") == 0 ? "voltage control" : "current control", argv[1]); From 99df0a75dda2f0caf245bc3252d4047598923ba4 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Mon, 26 Apr 2021 11:25:53 -0400 Subject: [PATCH 29/78] Removed OpenGL_accelerate dependency --- examples/ex10_haptics_visualization.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/ex10_haptics_visualization.py b/examples/ex10_haptics_visualization.py index f769823f..cd4458d4 100755 --- a/examples/ex10_haptics_visualization.py +++ b/examples/ex10_haptics_visualization.py @@ -5,7 +5,7 @@ # # Dependencies: # sudo apt install python3 python3-pip freeglut3 -# python3 -m pip install PyOpenGL PyOpenGL_accelerate +# python3 -m pip install PyOpenGL import time, sys from socket import * From 5420669f252c4bd345df7d2a5d64195e3e828fbc Mon Sep 17 00:00:00 2001 From: Amy Blank Date: Wed, 28 Apr 2021 17:04:10 -0400 Subject: [PATCH 30/78] updated version number for release --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0866d3c5..3880503e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,8 +1,8 @@ cmake_minimum_required(VERSION 2.6) project(libbarrett) -set(libbarrett_VERSION_MAJOR 1) -set(libbarrett_VERSION_MINOR 3) +set(libbarrett_VERSION_MAJOR 3) +set(libbarrett_VERSION_MINOR 0) set(libbarrett_VERSION_PATCH 0) set(libbarrett_VERSION "${libbarrett_VERSION_MAJOR}.${libbarrett_VERSION_MINOR}.${libbarrett_VERSION_PATCH}") set(libbarrett_SOVERSION "${libbarrett_VERSION_MAJOR}.${libbarrett_VERSION_MINOR}") From 59afe4ddffdb99c739185490f18c746b3dc84e4e Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 29 Apr 2021 14:42:18 +0000 Subject: [PATCH 31/78] Update README.md --- README.md | 56 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 8d528c32..2f5edb6b 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,70 @@ -# Libbarrett 2.0.0 +# Libbarrett 3.0.0 > Libbarrett is a real-time controls library written in C++ that runs Barrett Technology products (WAM and BarrettHand) -` This version of Libbarrett compiles at non-real-time kernel (standard Ubuntu 18.04 kernel) and should be used when hard real-time guarantee is not important for your application.` +` This version of Libbarrett compiles at non-real-time kernel (low-latency Ubuntu 20.04 kernel) and should be used when hard real-time guarantee is not critical for your application.` ### Download package ``` -cd ~/ -git clone https://git.barrett.com/software/libbarrett.git -cd libbarrett +cd && git clone https://git.barrett.com/software/libbarrett ``` ### Install depedencies -Navigate to the scripts folder: ``` -cd scripts +cd ~/libbarrett/scripts && ~/libbarrett/scripts/install_dependencies.sh ``` -Install the required dependencies: + +Reboot into the new kernel (after reboot, "uname -r" should show "lowlatency"): +``` +sudo reboot +``` + +### Build and install the Peak pcan driver +``` +sh ~/libbarrett/scripts/install_pcan.sh +``` + +### For PCAN-ISA only, manually configure the driver (not plug-and-play): ``` -./install-dependencies.sh +sudo tee /etc/modprobe.d/pcan.conf < Date: Thu, 29 Apr 2021 14:43:22 +0000 Subject: [PATCH 32/78] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2f5edb6b..5bbac2d3 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ cd && git clone https://git.barrett.com/software/libbarrett cd ~/libbarrett/scripts && ~/libbarrett/scripts/install_dependencies.sh ``` -Reboot into the new kernel (after reboot, "uname -r" should show "lowlatency"): +### Reboot into the new kernel (after reboot, "uname -r" should show "lowlatency"): ``` sudo reboot ``` From 86cbba2ddec830619750c7e5d08424f454bfbeec Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 29 Apr 2021 15:04:54 +0000 Subject: [PATCH 33/78] Update README.md --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index 5bbac2d3..5545fdfb 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,14 @@ sudo reboot ``` ### Build and install the Peak pcan driver +We recommend the following CAN hardware: + + - PCAN-PCI + - PCAN-PCIe + - PCAN-USB + - PCAN-ISA + +NOTE: These cards are supported by the SocketCAN driver built into Linux, however, we have found that the SocketCAN txbuffer can occasionally fail to send CAN frames without reporting an error, and this causes the WAM to E-Stop itself unexpectedly. This can happen a few seconds, a few minutes, or even several hours after starting a WAM application. Fortunately, Peak offers an alternative driver (pcan) which is still socket-based but avoids this SocketCAN bug. ``` sh ~/libbarrett/scripts/install_pcan.sh ``` From c4d67cfb5c553c9bddd0d09c8fe274187e43f90b Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 29 Apr 2021 16:45:43 +0000 Subject: [PATCH 34/78] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5545fdfb..94cfe427 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ > Libbarrett is a real-time controls library written in C++ that runs Barrett Technology products (WAM and BarrettHand) -` This version of Libbarrett compiles at non-real-time kernel (low-latency Ubuntu 20.04 kernel) and should be used when hard real-time guarantee is not critical for your application.` +` This version of Libbarrett works with a non-real-time kernel (a low-latency Ubuntu 20.04 kernel) and should only be used when a hard real-time guarantee is not critical for your application.` ### Download package From 885c55cd7fd24be3b5ee81265866a65c2e66b488 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 9 Jul 2021 01:38:51 +0000 Subject: [PATCH 35/78] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 94cfe427..1bc2e14b 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ Technology products (WAM and BarrettHand) cd && git clone https://git.barrett.com/software/libbarrett ``` -### Install depedencies +### Install dependencies ``` cd ~/libbarrett/scripts && ~/libbarrett/scripts/install_dependencies.sh ``` From 84b1bc866efb5afc7ffef5a8b802a63a79ba9494 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Mon, 19 Jul 2021 13:52:49 -0400 Subject: [PATCH 36/78] Increase significant figures saved to teachfiles --- include/barrett/log/detail/reader-inl.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/barrett/log/detail/reader-inl.h b/include/barrett/log/detail/reader-inl.h index 77266b94..60c8fe92 100644 --- a/include/barrett/log/detail/reader-inl.h +++ b/include/barrett/log/detail/reader-inl.h @@ -99,6 +99,7 @@ template inline void Reader::exportCSV(const char* outputFileName) { std::ofstream ofs(outputFileName); + ofs.precision(10); exportCSV(ofs); ofs.close(); } From a5f789cc9baa24ebaabb1bbe4fad884ef6b96ecb Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Mon, 30 Aug 2021 10:18:28 -0400 Subject: [PATCH 37/78] Added changelog --- CHANGELOG.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 CHANGELOG.md diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 00000000..ee31e2a5 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,18 @@ +# Change Log +All notable changes to this project will be documented in this file. +This project adheres to [Semantic Versioning](http://semver.org/). + +## [dev-3.0.0] + +- Python3 support +- Clang support +- Updated dependencies (Boost, Eigen, Freeglut) +- Allowed WAM loop to run while reading BHand sensors +- Converted ex10 haptics visualization from vpython to OpenGL +- Based WAM loop on a (100x) more accurate timer_fd instead of sleep() +- More robust installation script +- Improved mutex handling for non-rt operation +- Offered Top10 tactile values from BHand for higher update rates + +[dev-3.0.0]: https://git.barrett.com/software/libbarrett/-/tags/dev-3.0.0 + From 3a27a69c64d3c1974c695c4592742897f179263e Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Thu, 2 Sep 2021 16:35:02 -0400 Subject: [PATCH 38/78] Increased enumeration timeout. Fixes enumeration failure on faster computers. --- include/barrett/products/puck.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/barrett/products/puck.h b/include/barrett/products/puck.h index 613420bb..cae35f09 100644 --- a/include/barrett/products/puck.h +++ b/include/barrett/products/puck.h @@ -115,10 +115,10 @@ class Puck { template static void getProperty( const bus::CommunicationsBus& bus, int id, int propId, typename Parser::result_type* result, bool realtime = false); static int tryGetProperty(const bus::CommunicationsBus& bus, int id, int propId, - int* result, double timeout_s = 0.001); + int* result, double timeout_s = 0.005); template static int tryGetProperty( const bus::CommunicationsBus& bus, int id, int propId, typename Parser::result_type* result, - double timeout_s = 0.001); + double timeout_s = 0.005); static void setProperty(const bus::CommunicationsBus& bus, int id, int propId, int value, bool blocking = false); From 9fd6e703961633a21ff870322eade4770d542128 Mon Sep 17 00:00:00 2001 From: Brian Zenowich Date: Fri, 3 Sep 2021 20:19:33 +0000 Subject: [PATCH 39/78] Update CMakeLists.txt, CHANGELOG.md files --- CHANGELOG.md | 5 +++++ CMakeLists.txt | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ee31e2a5..93357c48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [dev-3.0.1] + +- Increased enumeration timeout from 1 ms to 5 ms + ## [dev-3.0.0] - Python3 support @@ -14,5 +18,6 @@ This project adheres to [Semantic Versioning](http://semver.org/). - Improved mutex handling for non-rt operation - Offered Top10 tactile values from BHand for higher update rates +[dev-3.0.1]: https://git.barrett.com/software/libbarrett/-/tags/dev-3.0.1 [dev-3.0.0]: https://git.barrett.com/software/libbarrett/-/tags/dev-3.0.0 diff --git a/CMakeLists.txt b/CMakeLists.txt index 3880503e..41079a0d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 2.6) project(libbarrett) set(libbarrett_VERSION_MAJOR 3) set(libbarrett_VERSION_MINOR 0) -set(libbarrett_VERSION_PATCH 0) +set(libbarrett_VERSION_PATCH 1) set(libbarrett_VERSION "${libbarrett_VERSION_MAJOR}.${libbarrett_VERSION_MINOR}.${libbarrett_VERSION_PATCH}") set(libbarrett_SOVERSION "${libbarrett_VERSION_MAJOR}.${libbarrett_VERSION_MINOR}") From d55cb3d89713cba790492b37ea906ddccbe041aa Mon Sep 17 00:00:00 2001 From: Thomas Nadovich Date: Thu, 28 Apr 2022 19:15:02 -0400 Subject: [PATCH 40/78] added in python3 wamudpd script --- programs/wamudpd | 71 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 programs/wamudpd diff --git a/programs/wamudpd b/programs/wamudpd new file mode 100644 index 00000000..d35fa7e4 --- /dev/null +++ b/programs/wamudpd @@ -0,0 +1,71 @@ +#!/usr/bin/python3 + +""" + Copyright 2022 Barrett Technology + + This file is part of libbarrett. + + This version of libbarrett is free software: you can redistribute it + and/or modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This version of libbarrett is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this version of libbarrett. If not, see + . + + Further, non-binding information about licensing is available at: + +""" + +""" +This utility can be installed on a computer to make it discoverable by the wamdiscover +program. + +The script listens for a UDP broadcast to request that any target systems identify +themselves sent by wamdiscover and responds with the systems name and IP address. +""" + +from sys import argv +from os.path import basename +from socket import socket, AF_INET, SOCK_DGRAM +from syslog import openlog, syslog, LOG_ERR + + +PORT = 1337 +NAME_FILE = "/etc/barrett/serial" +DEFAULT_NAME = "UNNAMED_WAM" + + +openlog(basename(argv[0])) + +while True: + # Make a socket, listen on PORT + sock = socket(AF_INET, SOCK_DGRAM) + sock.bind(("", PORT)) + + # Wait for a message (no data needed) + remoteAddr = sock.recvfrom(0)[1] + + # Find the name of this computer + try: + name = open(NAME_FILE).readline().strip() + except: + name = DEFAULT_NAME + + # Find the local IP address associated with the interface that is used to + # talk to remoteAddr + sock.connect(remoteAddr) + localIp = sock.getsockname()[0] + + # Reply with name and local IP address + replyStr = name + "|" + localIp + sock.send(replyStr.encode()) + syslog(LOG_ERR, "Replied to %s with \"%s\"" % (remoteAddr[0], replyStr)) + + sock.close() From 54f6446bb0340c270612e83811897ca286f23a6b Mon Sep 17 00:00:00 2001 From: Thomas Nadovich Date: Thu, 28 Apr 2022 19:20:05 -0400 Subject: [PATCH 41/78] Updated changelog --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 93357c48..3cc0bbaa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [Unreleased] + +- Added wamudpd script that makes PCs findable by the wamdiscover script. +- Updated wamudpd script to run using python3 + ## [dev-3.0.1] - Increased enumeration timeout from 1 ms to 5 ms From e0c77b298f5b6497af32951f1aebbbe53bf767cd Mon Sep 17 00:00:00 2001 From: uwarl Date: Fri, 22 Jul 2022 20:23:00 -0400 Subject: [PATCH 42/78] + custom calibration config default for wam mobile manipulator (cherry picked from uwarl/melodic commit # 1cce2e8aef7a2aecfc4bffe21ecfe16071fe8630) --- config/calibration_data/wam7w/zerocal.conf | 3 ++- config/calibration_data/wam7w/zerocal.conf.1 | 2 ++ config/calibration_data/wam7w/zerocal.conf.2 | 2 ++ config/calibration_data/wam7w/zerocal.conf.3 | 2 ++ config/calibration_data/wam7w/zerocal.conf.4 | 2 ++ config/calibration_data/wam7w/zerocal.conf.5 | 2 ++ 6 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 config/calibration_data/wam7w/zerocal.conf.1 create mode 100644 config/calibration_data/wam7w/zerocal.conf.2 create mode 100644 config/calibration_data/wam7w/zerocal.conf.3 create mode 100644 config/calibration_data/wam7w/zerocal.conf.4 create mode 100644 config/calibration_data/wam7w/zerocal.conf.5 diff --git a/config/calibration_data/wam7w/zerocal.conf b/config/calibration_data/wam7w/zerocal.conf index 858aca70..b7491850 100644 --- a/config/calibration_data/wam7w/zerocal.conf +++ b/config/calibration_data/wam7w/zerocal.conf @@ -1 +1,2 @@ -home = ( 0, -2, 0, 3.13, 0, 0, 0 ); +home = ( -0.0001095700572, -1.868457755, -0.003420908008, 3.087304199, 0.001106996437, 0.137188488, -0.006267436993 ); +zeroangle = ( 4.667903538, 4.980835618, 4.649495768, 5.850602725, 2.110757564, 0.788466125, 4.420932631 ); diff --git a/config/calibration_data/wam7w/zerocal.conf.1 b/config/calibration_data/wam7w/zerocal.conf.1 new file mode 100644 index 00000000..34c973ae --- /dev/null +++ b/config/calibration_data/wam7w/zerocal.conf.1 @@ -0,0 +1,2 @@ +home = ( -0.002812298112, -1.868322004, -0.003694580653, 3.084918007, 0.001897708183, 0.1407466909, -0.008938803402 ); +zeroangle = ( 4.566660806, 5.045262811, 4.709321019, 5.815321167, 2.2196702, 0.8590292412, 4.425534573 ); diff --git a/config/calibration_data/wam7w/zerocal.conf.2 b/config/calibration_data/wam7w/zerocal.conf.2 new file mode 100644 index 00000000..5bfc27d4 --- /dev/null +++ b/config/calibration_data/wam7w/zerocal.conf.2 @@ -0,0 +1,2 @@ +home = ( 0.002081831068, -1.866991649, 0.1780696678, 3.078696863, -0.006325693979, 0.1336302852, -0.6402032348 ); +zeroangle = ( 4.664835576, 4.92561231, 4.724660827, 5.792311455, 2.090815814, 0.8651651644, 4.621884114 ); diff --git a/config/calibration_data/wam7w/zerocal.conf.3 b/config/calibration_data/wam7w/zerocal.conf.3 new file mode 100644 index 00000000..1cf80483 --- /dev/null +++ b/config/calibration_data/wam7w/zerocal.conf.3 @@ -0,0 +1,2 @@ +home = ( 0.0003287101676, -1.873914925, -0.001778872162, 3.088497296, -0.01692123138, 0.1405885486, -0.03051522436 ); +zeroangle = ( 4.641825864, 5.194058948, 4.600408383, 5.921165841, 2.030990563, 0.8344855486, 4.466952054 ); diff --git a/config/calibration_data/wam7w/zerocal.conf.4 b/config/calibration_data/wam7w/zerocal.conf.4 new file mode 100644 index 00000000..e6187c99 --- /dev/null +++ b/config/calibration_data/wam7w/zerocal.conf.4 @@ -0,0 +1,2 @@ +home = ( 0.007195100361, -1.876548485, 0.0380404977, 3.095570652, -0.006167551634, 0.1119647834, 0.1957289615 ); +zeroangle = ( 4.855049194, 5.169515255, 4.512971478, 5.9963309, 1.909806081, 0.8943107993, 4.697049173 ); diff --git a/config/calibration_data/wam7w/zerocal.conf.5 b/config/calibration_data/wam7w/zerocal.conf.5 new file mode 100644 index 00000000..3dce57f6 --- /dev/null +++ b/config/calibration_data/wam7w/zerocal.conf.5 @@ -0,0 +1,2 @@ +home = ( -0.00102265386, -1.864466689, -0.03521254697, 3.084236238, -0.03819137736, 0.141221118, -0.006883906139 ); +zeroangle = ( 4.855049194, 5.052932715, 4.67250548, 5.803049321, 2.093883775, 1.049242859, 4.902602598 ); From 3875195dc636e6e0551bb7542040422662131e03 Mon Sep 17 00:00:00 2001 From: "Jack? (uwarl-orin)" Date: Wed, 16 Nov 2022 16:35:14 -0500 Subject: [PATCH 43/78] [auto-installation for jetson orin] --- scripts/install_dependencies.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/scripts/install_dependencies.sh b/scripts/install_dependencies.sh index 0d893d30..5653adb8 100755 --- a/scripts/install_dependencies.sh +++ b/scripts/install_dependencies.sh @@ -18,7 +18,7 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then sudo apt install -y libboost-system-dev libboost-thread-dev libboost-python-dev # Pin the new kernel (to avoid recompiling custom modules) - sudo apt-mark hold linux-lowlatency + # sudo apt-mark hold linux-lowlatency # Set the lowlatency kernel as the default in grub (survive apt upgrades) menu=`grep menuentry.*gnulinux-advanced /boot/grub/grub.cfg -m 1 |cut -d\' -f4` @@ -29,9 +29,15 @@ if [ "$DISTRIB_RELEASE" = "20.04" ]; then sudo update-grub # Download and Install patched Libconfig 1.4.5 (supporting C & C++ simultaneously) - cd ~/Downloads && wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz + cd ~/JX_Linux + wget http://web.barrett.com/support/WAM_Installer/libconfig-1.4.5-PATCHED.tar.gz tar -xf libconfig-1.4.5-PATCHED.tar.gz - cd libconfig-1.4.5 && ./configure && make -j$(nproc) + cd libconfig-1.4.5 + echo "[jx] patching kernel guesses ..." + wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' + wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' + ./configure --build=arm64-unknown-linux-gnu + make -j$(nproc) sudo make install sudo ldconfig else From 38d7f70ba113a95ea9e15cfb85b3c603a9d6d6d2 Mon Sep 17 00:00:00 2001 From: arnab Date: Wed, 14 Feb 2024 14:25:51 -0500 Subject: [PATCH 44/78] - Created a new file for reading the spline values for the WAM joints. - Need to port-over the successfully created-and-executed file for storing the WAM-teach recording. --- examples/ex08_2_play.cpp | 120 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 examples/ex08_2_play.cpp diff --git a/examples/ex08_2_play.cpp b/examples/ex08_2_play.cpp new file mode 100644 index 00000000..b9ccd40b --- /dev/null +++ b/examples/ex08_2_play.cpp @@ -0,0 +1,120 @@ +/* + * ex08_teach_and_play.cpp + * + * Created on: Sep 29, 2009 + * Author: dc + */ + +#include +#include +#include + +#include +#include +#include + +#define EIGEN_USE_NEW_STDVECTOR +#include + +#include // waitForEnter() +#include +#include +#include +#include +#include + +#include + + +using namespace barrett; +using detail::waitForEnter; +using systems::connect; +using systems::disconnect; +using systems::reconnect; + + +template +int wam_main(int argc, char** argv, ProductManager& pm, systems::Wam& wam) { + BARRETT_UNITS_TEMPLATE_TYPEDEFS(DOF); + typedef boost::tuple jp_sample_type; + + char tmpFile[] = "/tmp/btXXXXXX"; + if (mkstemp(tmpFile) == -1) { + printf("ERROR: Couldn't create temporary file!\n"); + return 1; + } + + const double T_s = pm.getExecutionManager()->getPeriod(); + + + wam.gravityCompensate(); + + systems::Ramp time(pm.getExecutionManager()); + + systems::TupleGrouper jpLogTg; + + // Record at 1/10th of the loop rate + systems::PeriodicDataLogger jpLogger(pm.getExecutionManager(), + new barrett::log::RealTimeWriter(tmpFile, 10*T_s), 10); + + + printf("Press [Enter] to start teaching.\n"); + waitForEnter(); + { + // Make sure the Systems are connected on the same execution cycle + // that the time is started. Otherwise we might record a bunch of + // samples all having t=0; this is bad because the Spline requires time + // to be monotonic. + BARRETT_SCOPED_LOCK(pm.getExecutionManager()->getMutex()); + + connect(time.output, jpLogTg.template getInput<0>()); + connect(wam.jpOutput, jpLogTg.template getInput<1>()); + connect(jpLogTg.output, jpLogger.input); + time.start(); + } + + printf("Press [Enter] to stop teaching.\n"); + waitForEnter(); + jpLogger.closeLog(); + disconnect(jpLogger.input); + + + // Build spline between recorded points + log::Reader lr(tmpFile); + std::vector > vec; + for (size_t i = 0; i < lr.numRecords(); ++i) { + vec.push_back(lr.getRecord()); + } + math::Spline spline(vec); + + printf("Press [Enter] to play back the recorded trajectory.\n"); + waitForEnter(); + + // First, move to the starting position + wam.moveTo(spline.eval(spline.initialS())); + + // Then play back the recorded motion + time.stop(); + time.setOutput(spline.initialS()); + + systems::Callback trajectory(boost::ref(spline)); + connect(time.output, trajectory.input); + wam.trackReferenceSignal(trajectory.output); + + time.start(); + + while (trajectory.input.getValue() < spline.finalS()) { + usleep(100000); + } + + + printf("Press [Enter] to idle the WAM.\n"); + waitForEnter(); + wam.idle(); + + + std::remove(tmpFile); + pm.getSafetyModule()->waitForMode(SafetyModule::IDLE); + + return 0; +} From b4217f8e8a5be3e247eea8d5eb78693e7943ed83 Mon Sep 17 00:00:00 2001 From: Arnab Joardar Date: Wed, 14 Feb 2024 14:33:34 -0500 Subject: [PATCH 45/78] - Copied over the source and executable file for the modified teach-and-play program, where the act of deleting the recorded trajectory was commented. --- examples/ex08_1_teach_and_play_tmp_file_kept | Bin 0 -> 5284925 bytes .../ex08_1_teach_and_play_tmp_file_kept.cpp | 118 ++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100755 examples/ex08_1_teach_and_play_tmp_file_kept create mode 100644 examples/ex08_1_teach_and_play_tmp_file_kept.cpp diff --git a/examples/ex08_1_teach_and_play_tmp_file_kept b/examples/ex08_1_teach_and_play_tmp_file_kept new file mode 100755 index 0000000000000000000000000000000000000000..ba72c6ef8ccabf5b1cfe303d93a878a137fd8206 GIT binary patch literal 5284925 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%0AJ#b2=Q#pU_7_6_dRx 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

sV#O@uoW8?Snj7b5(=>FFMTO<{a+cg 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