diff --git a/.gitignore b/.gitignore index 20b2fd39..293575b0 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,6 @@ .vs .DS_Store config.h -build/ +build*/ html/ __pycache__ diff --git a/CMakeLists.txt b/CMakeLists.txt index 21293240..008b5b10 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.16.3) # =================================================================== # PROJECT SETUP # =================================================================== -project(flexiv_rdk VERSION 0.9.0) +project(flexiv_rdk VERSION 0.10.0) # Configure build type if(NOT CMAKE_BUILD_TYPE) diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in index 7a20987c..e20f4c59 100755 --- a/doc/Doxyfile.in +++ b/doc/Doxyfile.in @@ -38,7 +38,7 @@ PROJECT_NAME = "Flexiv RDK APIs" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = "0.9" +PROJECT_NUMBER = "0.10" # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/example_py/basics3_primitive_execution.py b/example_py/basics3_primitive_execution.py index f2b934ba..ad8d9884 100644 --- a/example_py/basics3_primitive_execution.py +++ b/example_py/basics3_primitive_execution.py @@ -148,7 +148,6 @@ def main(): # Example to convert target quaternion [w,x,y,z] to Euler ZYX using scipy package's 'xyz' # extrinsic rotation - # NOTE: scipy uses [x,y,z,w] order to represent quaternion target_quat = [0.9185587, 0.1767767, 0.3061862, 0.1767767] # ZYX = [30, 30, 30] degrees eulerZYX_deg = quat2eulerZYX(target_quat, degree=True) diff --git a/include/flexiv/Robot.hpp b/include/flexiv/Robot.hpp index fe3a2849..6d83c587 100644 --- a/include/flexiv/Robot.hpp +++ b/include/flexiv/Robot.hpp @@ -267,7 +267,8 @@ class Robot * @brief [Blocking] Get feedback states of the currently executing * primitive. * @return Primitive states in the format of a string list. - * @throw CommException if there's no response from the robot. + * @throw CommException if there's no response from the robot or the result + * is invalid. * @throw ExecutionException if error occurred during execution. * @warning This function blocks until the reply from the robot is received. */ @@ -314,7 +315,8 @@ class Robot * @note No need to call this function if the mounted tool on the robot has * only one TCP, it'll be used by default. * @note New TCP index will take effect upon control mode switch, or upon - * sending a new primitive command. + * sending a new primitive command. However, this function has no effect in + * plan execution mode as TCP index should be defined in the plan itself. * @warning This function blocks until the request is successfully delivered * to the robot. */ @@ -465,11 +467,11 @@ class Robot * \times 1} \f$ force and \f$ \mathbb{R}^{3 \times 1} \f$ moment: \f$ [f_x, * f_y, f_z, m_x, m_y, m_z]^T \f$. Unit: \f$ [N]~[Nm] \f$. * @param[in] maxLinearVel Maximum Cartesian linear velocity when moving to - * the target pose. Default maximum linear velocity is used when set to 0. - * Unit: \f$ [m/s] \f$. + * the target pose. A safe value is provided as default. Unit: \f$ [m/s] + * \f$. * @param[in] maxAngularVel Maximum Cartesian angular velocity when moving - * to the target pose. Default maximum angular velocity is used when set to - * 0. Unit: \f$ [rad/s] \f$. + * to the target pose. A safe value is provided as default. Unit: \f$ + * [rad/s] \f$. * @throw InputException if input is invalid. * @throw LogicException if robot is not in the correct control mode. * @throw ExecutionException if error occurred during execution. @@ -492,7 +494,7 @@ class Robot */ void sendCartesianMotionForce(const std::vector& pose, const std::vector& wrench = std::vector(6), - double maxLinearVel = 0.0, double maxAngularVel = 0.0); + double maxLinearVel = 0.5, double maxAngularVel = 1.0); /** * @brief [Non-blocking] Set motion stiffness for the Cartesian motion-force @@ -558,8 +560,9 @@ class Robot * @throw LogicException if robot is not in the correct control mode. * @throw ExecutionException if error occurred during execution. * @note Applicable control modes: RT/NRT_CARTESIAN_MOTION_FORCE. - * @warning The robot will automatically reset to its nominal preferred - * joint positions upon re-entering the applicable control modes. + * @warning Upon entering the applicable control modes, the robot will + * automatically set its current joint positions as the preferred joint + * positions. * @par Null-space posture control * Similar to human arm, a robotic arm with redundant degree(s) of * freedom (DOF > 6) can change its overall posture without affecting the @@ -572,8 +575,8 @@ class Robot void setNullSpacePosture(const std::vector& preferredPositions); /** - * @brief [Non-blocking] Reset preferred joint positions to the robot's home - * posture. + * @brief [Non-blocking] Reset preferred joint positions to the ones + * automatically recorded when entering the applicable control modes. * @note Applicable control modes: RT/NRT_CARTESIAN_MOTION_FORCE. */ void resetNullSpacePosture(void); diff --git a/include/flexiv/Utility.hpp b/include/flexiv/Utility.hpp index b3fefc9d..9c56f1db 100644 --- a/include/flexiv/Utility.hpp +++ b/include/flexiv/Utility.hpp @@ -164,6 +164,10 @@ inline std::string parsePtStates( const std::vector& ptStates, const std::string& parseTarget) { for (const auto& state : ptStates) { + // Skip if empty + if (state.empty()) { + continue; + } std::stringstream ss(state); std::string buffer; std::vector parsedState; diff --git a/lib/flexiv_rdk.win_amd64.lib b/lib/flexiv_rdk.win_amd64.lib index 4ca455c9..c716001e 100644 Binary files a/lib/flexiv_rdk.win_amd64.lib and b/lib/flexiv_rdk.win_amd64.lib differ diff --git a/lib/libflexiv_rdk.aarch64-linux-gnu.a b/lib/libflexiv_rdk.aarch64-linux-gnu.a index b196b6fd..3a8b9ab3 100644 Binary files a/lib/libflexiv_rdk.aarch64-linux-gnu.a and b/lib/libflexiv_rdk.aarch64-linux-gnu.a differ diff --git a/lib/libflexiv_rdk.arm64-darwin.a b/lib/libflexiv_rdk.arm64-darwin.a index e40016ae..571541b5 100644 Binary files a/lib/libflexiv_rdk.arm64-darwin.a and b/lib/libflexiv_rdk.arm64-darwin.a differ diff --git a/lib/libflexiv_rdk.x86_64-linux-gnu.a b/lib/libflexiv_rdk.x86_64-linux-gnu.a index 7d8fd7ad..a58c05f1 100644 Binary files a/lib/libflexiv_rdk.x86_64-linux-gnu.a and b/lib/libflexiv_rdk.x86_64-linux-gnu.a differ diff --git a/lib_py/flexivrdk.cp310-win_amd64.pyd b/lib_py/flexivrdk.cp310-win_amd64.pyd index 97917936..ca4001a6 100644 Binary files a/lib_py/flexivrdk.cp310-win_amd64.pyd and b/lib_py/flexivrdk.cp310-win_amd64.pyd differ diff --git a/lib_py/flexivrdk.cp38-win_amd64.pyd b/lib_py/flexivrdk.cp38-win_amd64.pyd index 28f928e9..894580a1 100644 Binary files a/lib_py/flexivrdk.cp38-win_amd64.pyd and b/lib_py/flexivrdk.cp38-win_amd64.pyd differ diff --git a/lib_py/flexivrdk.cpython-310-aarch64-linux-gnu.so b/lib_py/flexivrdk.cpython-310-aarch64-linux-gnu.so index 57210fdc..997bcb03 100755 Binary files a/lib_py/flexivrdk.cpython-310-aarch64-linux-gnu.so and b/lib_py/flexivrdk.cpython-310-aarch64-linux-gnu.so differ diff --git a/lib_py/flexivrdk.cpython-310-darwin.so b/lib_py/flexivrdk.cpython-310-darwin.so index 6a5e6b2d..9e882341 100755 Binary files a/lib_py/flexivrdk.cpython-310-darwin.so and b/lib_py/flexivrdk.cpython-310-darwin.so differ diff --git a/lib_py/flexivrdk.cpython-310-x86_64-linux-gnu.so b/lib_py/flexivrdk.cpython-310-x86_64-linux-gnu.so index 5021cd35..f882f3d3 100755 Binary files a/lib_py/flexivrdk.cpython-310-x86_64-linux-gnu.so and b/lib_py/flexivrdk.cpython-310-x86_64-linux-gnu.so differ diff --git a/lib_py/flexivrdk.cpython-38-aarch64-linux-gnu.so b/lib_py/flexivrdk.cpython-38-aarch64-linux-gnu.so index cfb8e72d..bc06ddb0 100755 Binary files a/lib_py/flexivrdk.cpython-38-aarch64-linux-gnu.so and b/lib_py/flexivrdk.cpython-38-aarch64-linux-gnu.so differ diff --git a/lib_py/flexivrdk.cpython-38-darwin.so b/lib_py/flexivrdk.cpython-38-darwin.so index 8770a07a..c0a49bb3 100755 Binary files a/lib_py/flexivrdk.cpython-38-darwin.so and b/lib_py/flexivrdk.cpython-38-darwin.so differ diff --git a/lib_py/flexivrdk.cpython-38-x86_64-linux-gnu.so b/lib_py/flexivrdk.cpython-38-x86_64-linux-gnu.so index 31e3c0f4..112e334f 100755 Binary files a/lib_py/flexivrdk.cpython-38-x86_64-linux-gnu.so and b/lib_py/flexivrdk.cpython-38-x86_64-linux-gnu.so differ