diff --git a/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_BRAKES_NO-VISION_URDF_ARM_V01.urdf b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_BRAKES_NO-VISION_URDF_ARM_V01.urdf
new file mode 100644
index 00000000..0f041e1b
--- /dev/null
+++ b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_BRAKES_NO-VISION_URDF_ARM_V01.urdf
@@ -0,0 +1,416 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_BRAKES_VISION_URDF_ARM_V01.urdf b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_BRAKES_VISION_URDF_ARM_V01.urdf
new file mode 100644
index 00000000..e4ecefa1
--- /dev/null
+++ b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_BRAKES_VISION_URDF_ARM_V01.urdf
@@ -0,0 +1,456 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_NO-VISION_URDF_ARM_V01.urdf b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_NO-VISION_URDF_ARM_V01.urdf
index 960ae01c..8960e386 100644
--- a/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_NO-VISION_URDF_ARM_V01.urdf
+++ b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_NO-VISION_URDF_ARM_V01.urdf
@@ -1,205 +1,211 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_VISION_URDF_ARM_V01.urdf b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_VISION_URDF_ARM_V01.urdf
index 89b673eb..5971469f 100644
--- a/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_VISION_URDF_ARM_V01.urdf
+++ b/kortex_description/arms/gen3/6dof/urdf/GEN3-6DOF_VISION_URDF_ARM_V01.urdf
@@ -1,226 +1,229 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF-NOVISION_FOR_URDF_ARM_V12.urdf b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF-NOVISION_FOR_URDF_ARM_V12.urdf
new file mode 100644
index 00000000..69f69258
--- /dev/null
+++ b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF-NOVISION_FOR_URDF_ARM_V12.urdf
@@ -0,0 +1,240 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kortex_description/arms/gen3/7dof/urdf/GEN3_URDF_V12.urdf b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF-VISION_ARM_URDF_V12.urdf
similarity index 55%
rename from kortex_description/arms/gen3/7dof/urdf/GEN3_URDF_V12.urdf
rename to kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF-VISION_ARM_URDF_V12.urdf
index 43044418..c3638cc6 100644
--- a/kortex_description/arms/gen3/7dof/urdf/GEN3_URDF_V12.urdf
+++ b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF-VISION_ARM_URDF_V12.urdf
@@ -1,234 +1,258 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF_BRAKES_NO-VISION_URDF_ARM_V01.urdf b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF_BRAKES_NO-VISION_URDF_ARM_V01.urdf
new file mode 100644
index 00000000..bfa95c5a
--- /dev/null
+++ b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF_BRAKES_NO-VISION_URDF_ARM_V01.urdf
@@ -0,0 +1,472 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF_BRAKES_VISION_URDF_ARM_V01.urdf b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF_BRAKES_VISION_URDF_ARM_V01.urdf
new file mode 100644
index 00000000..b0fca7a2
--- /dev/null
+++ b/kortex_description/arms/gen3/7dof/urdf/GEN3-7DOF_BRAKES_VISION_URDF_ARM_V01.urdf
@@ -0,0 +1,511 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/kortex_driver/conanfile.py b/kortex_driver/conanfile.py
index e30328ff..a7756573 100644
--- a/kortex_driver/conanfile.py
+++ b/kortex_driver/conanfile.py
@@ -6,4 +6,4 @@
class ROSKortexConan(ConanFile):
def requirements(self):
- self.requires("kortex_api_cpp/2.3.0-r.34@kortex/stable")
+ self.requires("kortex_api_cpp/2.6.0-r.3@kortex/stable")
diff --git a/kortex_driver/include/kortex_driver/generated/interfaces/base_services_interface.h b/kortex_driver/include/kortex_driver/generated/interfaces/base_services_interface.h
index e26e9a8b..50fc2972 100644
--- a/kortex_driver/include/kortex_driver/generated/interfaces/base_services_interface.h
+++ b/kortex_driver/include/kortex_driver/generated/interfaces/base_services_interface.h
@@ -186,6 +186,10 @@
#include "kortex_driver/ComputeForwardKinematics.h"
#include "kortex_driver/ComputeInverseKinematics.h"
#include "kortex_driver/ValidateWaypointList.h"
+#include "kortex_driver/SetWifiEnableState.h"
+#include "kortex_driver/GetWifiEnableState.h"
+#include "kortex_driver/SetBluetoothEnableState.h"
+#include "kortex_driver/GetBluetoothEnableState.h"
#include "kortex_driver/KortexError.h"
#include "kortex_driver/SetDeviceID.h"
@@ -363,6 +367,10 @@ class IBaseServices
virtual bool ComputeForwardKinematics(kortex_driver::ComputeForwardKinematics::Request &req, kortex_driver::ComputeForwardKinematics::Response &res) = 0;
virtual bool ComputeInverseKinematics(kortex_driver::ComputeInverseKinematics::Request &req, kortex_driver::ComputeInverseKinematics::Response &res) = 0;
virtual bool ValidateWaypointList(kortex_driver::ValidateWaypointList::Request &req, kortex_driver::ValidateWaypointList::Response &res) = 0;
+ virtual bool SetWifiEnableState(kortex_driver::SetWifiEnableState::Request &req, kortex_driver::SetWifiEnableState::Response &res) = 0;
+ virtual bool GetWifiEnableState(kortex_driver::GetWifiEnableState::Request &req, kortex_driver::GetWifiEnableState::Response &res) = 0;
+ virtual bool SetBluetoothEnableState(kortex_driver::SetBluetoothEnableState::Request &req, kortex_driver::SetBluetoothEnableState::Response &res) = 0;
+ virtual bool GetBluetoothEnableState(kortex_driver::GetBluetoothEnableState::Request &req, kortex_driver::GetBluetoothEnableState::Response &res) = 0;
protected:
ros::NodeHandle m_node_handle;
@@ -547,5 +555,9 @@ class IBaseServices
ros::ServiceServer m_serviceComputeForwardKinematics;
ros::ServiceServer m_serviceComputeInverseKinematics;
ros::ServiceServer m_serviceValidateWaypointList;
+ ros::ServiceServer m_serviceSetWifiEnableState;
+ ros::ServiceServer m_serviceGetWifiEnableState;
+ ros::ServiceServer m_serviceSetBluetoothEnableState;
+ ros::ServiceServer m_serviceGetBluetoothEnableState;
};
#endif
diff --git a/kortex_driver/include/kortex_driver/generated/robot/base_proto_converter.h b/kortex_driver/include/kortex_driver/generated/robot/base_proto_converter.h
index c8b68fee..3a7ee1fd 100644
--- a/kortex_driver/include/kortex_driver/generated/robot/base_proto_converter.h
+++ b/kortex_driver/include/kortex_driver/generated/robot/base_proto_converter.h
@@ -81,6 +81,9 @@
#include "kortex_driver/IPv4Configuration.h"
#include "kortex_driver/IPv4Information.h"
#include "kortex_driver/FullIPv4Configuration.h"
+#include "kortex_driver/WifiEnableState.h"
+#include "kortex_driver/BluetoothEnableState.h"
+#include "kortex_driver/RFConfiguration.h"
#include "kortex_driver/WifiInformation.h"
#include "kortex_driver/WifiInformationList.h"
#include "kortex_driver/WifiConfiguration.h"
@@ -249,6 +252,9 @@ int ToProtoData(kortex_driver::NetworkHandle input, Kinova::Api::Base::NetworkHa
int ToProtoData(kortex_driver::IPv4Configuration input, Kinova::Api::Base::IPv4Configuration *output);
int ToProtoData(kortex_driver::IPv4Information input, Kinova::Api::Base::IPv4Information *output);
int ToProtoData(kortex_driver::FullIPv4Configuration input, Kinova::Api::Base::FullIPv4Configuration *output);
+int ToProtoData(kortex_driver::WifiEnableState input, Kinova::Api::Base::WifiEnableState *output);
+int ToProtoData(kortex_driver::BluetoothEnableState input, Kinova::Api::Base::BluetoothEnableState *output);
+int ToProtoData(kortex_driver::RFConfiguration input, Kinova::Api::Base::RFConfiguration *output);
int ToProtoData(kortex_driver::WifiInformation input, Kinova::Api::Base::WifiInformation *output);
int ToProtoData(kortex_driver::WifiInformationList input, Kinova::Api::Base::WifiInformationList *output);
int ToProtoData(kortex_driver::WifiConfiguration input, Kinova::Api::Base::WifiConfiguration *output);
diff --git a/kortex_driver/include/kortex_driver/generated/robot/base_ros_converter.h b/kortex_driver/include/kortex_driver/generated/robot/base_ros_converter.h
index f1e2b4a8..8017f157 100644
--- a/kortex_driver/include/kortex_driver/generated/robot/base_ros_converter.h
+++ b/kortex_driver/include/kortex_driver/generated/robot/base_ros_converter.h
@@ -81,6 +81,9 @@
#include "kortex_driver/IPv4Configuration.h"
#include "kortex_driver/IPv4Information.h"
#include "kortex_driver/FullIPv4Configuration.h"
+#include "kortex_driver/WifiEnableState.h"
+#include "kortex_driver/BluetoothEnableState.h"
+#include "kortex_driver/RFConfiguration.h"
#include "kortex_driver/WifiInformation.h"
#include "kortex_driver/WifiInformationList.h"
#include "kortex_driver/WifiConfiguration.h"
@@ -249,6 +252,9 @@ int ToRosData(Kinova::Api::Base::NetworkHandle input, kortex_driver::NetworkHand
int ToRosData(Kinova::Api::Base::IPv4Configuration input, kortex_driver::IPv4Configuration &output);
int ToRosData(Kinova::Api::Base::IPv4Information input, kortex_driver::IPv4Information &output);
int ToRosData(Kinova::Api::Base::FullIPv4Configuration input, kortex_driver::FullIPv4Configuration &output);
+int ToRosData(Kinova::Api::Base::WifiEnableState input, kortex_driver::WifiEnableState &output);
+int ToRosData(Kinova::Api::Base::BluetoothEnableState input, kortex_driver::BluetoothEnableState &output);
+int ToRosData(Kinova::Api::Base::RFConfiguration input, kortex_driver::RFConfiguration &output);
int ToRosData(Kinova::Api::Base::WifiInformation input, kortex_driver::WifiInformation &output);
int ToRosData(Kinova::Api::Base::WifiInformationList input, kortex_driver::WifiInformationList &output);
int ToRosData(Kinova::Api::Base::WifiConfiguration input, kortex_driver::WifiConfiguration &output);
diff --git a/kortex_driver/include/kortex_driver/generated/robot/base_services.h b/kortex_driver/include/kortex_driver/generated/robot/base_services.h
index 499a811c..8a93a1bd 100644
--- a/kortex_driver/include/kortex_driver/generated/robot/base_services.h
+++ b/kortex_driver/include/kortex_driver/generated/robot/base_services.h
@@ -193,6 +193,10 @@ class BaseRobotServices : public IBaseServices
virtual bool ComputeForwardKinematics(kortex_driver::ComputeForwardKinematics::Request &req, kortex_driver::ComputeForwardKinematics::Response &res) override;
virtual bool ComputeInverseKinematics(kortex_driver::ComputeInverseKinematics::Request &req, kortex_driver::ComputeInverseKinematics::Response &res) override;
virtual bool ValidateWaypointList(kortex_driver::ValidateWaypointList::Request &req, kortex_driver::ValidateWaypointList::Response &res) override;
+ virtual bool SetWifiEnableState(kortex_driver::SetWifiEnableState::Request &req, kortex_driver::SetWifiEnableState::Response &res) override;
+ virtual bool GetWifiEnableState(kortex_driver::GetWifiEnableState::Request &req, kortex_driver::GetWifiEnableState::Response &res) override;
+ virtual bool SetBluetoothEnableState(kortex_driver::SetBluetoothEnableState::Request &req, kortex_driver::SetBluetoothEnableState::Response &res) override;
+ virtual bool GetBluetoothEnableState(kortex_driver::GetBluetoothEnableState::Request &req, kortex_driver::GetBluetoothEnableState::Response &res) override;
private:
uint32_t m_current_device_id;
diff --git a/kortex_driver/include/kortex_driver/generated/simulation/base_services.h b/kortex_driver/include/kortex_driver/generated/simulation/base_services.h
index 0d9e4826..d50f579b 100644
--- a/kortex_driver/include/kortex_driver/generated/simulation/base_services.h
+++ b/kortex_driver/include/kortex_driver/generated/simulation/base_services.h
@@ -338,6 +338,14 @@ class BaseSimulationServices : public IBaseServices
virtual bool ComputeInverseKinematics(kortex_driver::ComputeInverseKinematics::Request &req, kortex_driver::ComputeInverseKinematics::Response &res) override;
std::function ValidateWaypointListHandler = nullptr;
virtual bool ValidateWaypointList(kortex_driver::ValidateWaypointList::Request &req, kortex_driver::ValidateWaypointList::Response &res) override;
+ std::function SetWifiEnableStateHandler = nullptr;
+ virtual bool SetWifiEnableState(kortex_driver::SetWifiEnableState::Request &req, kortex_driver::SetWifiEnableState::Response &res) override;
+ std::function GetWifiEnableStateHandler = nullptr;
+ virtual bool GetWifiEnableState(kortex_driver::GetWifiEnableState::Request &req, kortex_driver::GetWifiEnableState::Response &res) override;
+ std::function SetBluetoothEnableStateHandler = nullptr;
+ virtual bool SetBluetoothEnableState(kortex_driver::SetBluetoothEnableState::Request &req, kortex_driver::SetBluetoothEnableState::Response &res) override;
+ std::function GetBluetoothEnableStateHandler = nullptr;
+ virtual bool GetBluetoothEnableState(kortex_driver::GetBluetoothEnableState::Request &req, kortex_driver::GetBluetoothEnableState::Response &res) override;
};
#endif
diff --git a/kortex_driver/msg/generated/actuator_config/SafetyIdentifierBankA.msg b/kortex_driver/msg/generated/actuator_config/SafetyIdentifierBankA.msg
index 8af8dc2b..e9995055 100644
--- a/kortex_driver/msg/generated/actuator_config/SafetyIdentifierBankA.msg
+++ b/kortex_driver/msg/generated/actuator_config/SafetyIdentifierBankA.msg
@@ -54,3 +54,7 @@ uint32 UNRELIABLE_CAPACITIVE_SENSOR = 16777216
uint32 UNEXPECTED_GEAR_RATIO = 33554432
uint32 HALL_MAGNETIC_MISMATCH = 67108864
+
+uint32 BRAKE_DRIVE_FAULT = 134217728
+
+uint32 BRAKE_RELEASE_MOTION_OUT_OF_RANGE = 268435456
diff --git a/kortex_driver/msg/generated/base/Base_SafetyIdentifier.msg b/kortex_driver/msg/generated/base/Base_SafetyIdentifier.msg
index b33eefbb..12146931 100644
--- a/kortex_driver/msg/generated/base/Base_SafetyIdentifier.msg
+++ b/kortex_driver/msg/generated/base/Base_SafetyIdentifier.msg
@@ -17,7 +17,7 @@ uint32 REACHED_MAXIMUM_EVENT_LOGS = 64
uint32 NO_KINEMATICS_SUPPORT = 128
-uint32 ABOVE_MAXIMUM_DOF = 256
+uint32 BRAKE_REMOVAL_FAILURE = 256
uint32 NETWORK_ERROR = 512
diff --git a/kortex_driver/msg/generated/base/BluetoothEnableState.msg b/kortex_driver/msg/generated/base/BluetoothEnableState.msg
new file mode 100644
index 00000000..8e3e7a72
--- /dev/null
+++ b/kortex_driver/msg/generated/base/BluetoothEnableState.msg
@@ -0,0 +1,2 @@
+
+bool enabled
\ No newline at end of file
diff --git a/kortex_driver/msg/generated/base/NetworkEvent.msg b/kortex_driver/msg/generated/base/NetworkEvent.msg
index 217903d0..2a0138de 100644
--- a/kortex_driver/msg/generated/base/NetworkEvent.msg
+++ b/kortex_driver/msg/generated/base/NetworkEvent.msg
@@ -20,3 +20,11 @@ uint32 WIFI_AUTH_WRONG_KEY = 8
uint32 WIFI_AUTH_CONN_FAILED = 9
uint32 WIFI_AUTH_FAILED = 10
+
+uint32 WIFI_ENABLED = 11
+
+uint32 WIFI_DISABLED = 12
+
+uint32 BLUETOOTH_ENABLED = 13
+
+uint32 BLUETOOTH_DISABLED = 14
diff --git a/kortex_driver/msg/generated/base/RFConfiguration.msg b/kortex_driver/msg/generated/base/RFConfiguration.msg
new file mode 100644
index 00000000..76c307b0
--- /dev/null
+++ b/kortex_driver/msg/generated/base/RFConfiguration.msg
@@ -0,0 +1,3 @@
+
+WifiEnableState wifi_enable_state
+BluetoothEnableState bluetooth_enable_state
\ No newline at end of file
diff --git a/kortex_driver/msg/generated/base/WifiEnableState.msg b/kortex_driver/msg/generated/base/WifiEnableState.msg
new file mode 100644
index 00000000..8e3e7a72
--- /dev/null
+++ b/kortex_driver/msg/generated/base/WifiEnableState.msg
@@ -0,0 +1,2 @@
+
+bool enabled
\ No newline at end of file
diff --git a/kortex_driver/msg/generated/common/ArmState.msg b/kortex_driver/msg/generated/common/ArmState.msg
index 9d9db128..ede1b7f6 100644
--- a/kortex_driver/msg/generated/common/ArmState.msg
+++ b/kortex_driver/msg/generated/common/ArmState.msg
@@ -19,4 +19,6 @@ uint32 ARMSTATE_SERVOING_PLAYING_SEQUENCE = 8
uint32 ARMSTATE_SERVOING_MANUALLY_CONTROLLED = 9
+uint32 ARMSTATE_BRAKE_RELEASING = 10
+
uint32 ARMSTATE_RESERVED = 255
diff --git a/kortex_driver/msg/generated/product_configuration/BrakeType.msg b/kortex_driver/msg/generated/product_configuration/BrakeType.msg
new file mode 100644
index 00000000..7cfcb176
--- /dev/null
+++ b/kortex_driver/msg/generated/product_configuration/BrakeType.msg
@@ -0,0 +1,8 @@
+
+uint32 BRAKE_TYPE_UNSPECIFIED = 0
+
+uint32 BRAKE_TYPE_NOT_INSTALLED = 1
+
+uint32 BRAKE_TYPE_SPOKE = 2
+
+uint32 BRAKE_TYPE_CLUTCH = 3
diff --git a/kortex_driver/msg/generated/product_configuration/CompleteProductConfiguration.msg b/kortex_driver/msg/generated/product_configuration/CompleteProductConfiguration.msg
index 9a1db225..c312c671 100644
--- a/kortex_driver/msg/generated/product_configuration/CompleteProductConfiguration.msg
+++ b/kortex_driver/msg/generated/product_configuration/CompleteProductConfiguration.msg
@@ -10,4 +10,5 @@ uint32 end_effector_type
uint32 vision_module_type
uint32 interface_module_type
uint32 arm_laterality
-uint32 wrist_type
\ No newline at end of file
+uint32 wrist_type
+uint32 brake_type
\ No newline at end of file
diff --git a/kortex_driver/protos/ActuatorConfig.proto b/kortex_driver/protos/ActuatorConfig.proto
index 206dfc8f..151d8595 100644
--- a/kortex_driver/protos/ActuatorConfig.proto
+++ b/kortex_driver/protos/ActuatorConfig.proto
@@ -338,6 +338,8 @@ enum SafetyIdentifierBankA {
UNRELIABLE_CAPACITIVE_SENSOR = 16777216; // 0x1000000 - Capacitive sensor is unreliable
UNEXPECTED_GEAR_RATIO = 33554432; // 0x2000000 - Incorrect gear ratio for detected configuration
HALL_MAGNETIC_MISMATCH = 67108864; // 0x4000000 - Position mismatch between hall and magnetic sensors
+ BRAKE_DRIVE_FAULT = 134217728; // 0x8000000 - Brake driver fault
+ BRAKE_RELEASE_MOTION_OUT_OF_RANGE = 268435456; // 0x10000000 - Brake release motion goes out of allowed range
}
// Custom data options
diff --git a/kortex_driver/protos/Base.proto b/kortex_driver/protos/Base.proto
index bbe09379..28265885 100644
--- a/kortex_driver/protos/Base.proto
+++ b/kortex_driver/protos/Base.proto
@@ -501,6 +501,26 @@ service Base {//@PROXY_ID=2 @ERROR=Kinova.Api.Error
* If the use_optimal_blending option is true, a waypoint list with optimal blending will be return.
*/
rpc ValidateWaypointList (WaypointList) returns (WaypointValidationReport);//@RPC_ID=235
+
+ /*
+ * Enable or disable the wifi capabilities on the arm
+ */
+ rpc SetWifiEnableState (WifiEnableState) returns (Kinova.Api.Common.Empty);//@RPC_ID=236
+
+ /*
+ * Get the wifi capabilities state (enabled or disabled)
+ */
+ rpc GetWifiEnableState (Kinova.Api.Common.Empty) returns (WifiEnableState);//@RPC_ID=237
+
+ /*
+ * Enable or disable the Bluetooth capabilities on the arm
+ */
+ rpc SetBluetoothEnableState (BluetoothEnableState) returns (Kinova.Api.Common.Empty);//@RPC_ID=238
+
+ /*
+ * Get the Bluetooth capabilities state (enabled or disabled)
+ */
+ rpc GetBluetoothEnableState (Kinova.Api.Common.Empty) returns (BluetoothEnableState);//@RPC_ID=239
}
// List of GPIO port configurations
@@ -849,6 +869,19 @@ enum WifiEncryptionType {
WEP_ENCRYPTION = 4; // WEP encryption
}
+message WifiEnableState {
+ bool enabled = 1;
+}
+
+message BluetoothEnableState {
+ bool enabled = 1;
+}
+
+message RFConfiguration {
+ WifiEnableState wifi_enable_state = 1;
+ BluetoothEnableState bluetooth_enable_state = 2;
+}
+
// Admissible signal quality values
enum SignalQuality {
UNSPECIFIED_SIGNAL_QUALITY = 0; // Unspecified signal quality
@@ -1355,6 +1388,10 @@ enum NetworkEvent {
WIFI_AUTH_WRONG_KEY = 8; // Wi-Fi wrong PSK supplied
WIFI_AUTH_CONN_FAILED = 9; // Wi-Fi connection failure during auth
WIFI_AUTH_FAILED = 10; // Wi-Fi authentication failure
+ WIFI_ENABLED = 11; // Wi-Fi has been enabled
+ WIFI_DISABLED = 12; // Wi-Fi has been disabled
+ BLUETOOTH_ENABLED = 13; // Bluetooth has been enabled
+ BLUETOOTH_DISABLED = 14; // Bluetooth has been disabled
}
// Notification about a single network event
@@ -1574,7 +1611,7 @@ enum SafetyIdentifier {
CYCLIC_DATA_JITTER = 32; // 0x20 - Cyclic data jitter (not implemented yet)
REACHED_MAXIMUM_EVENT_LOGS = 64; // 0x40 - Reached Maximum number of event log entries (not implemented yet)
NO_KINEMATICS_SUPPORT = 128; // 0x80 - No kinematics support (not implemented yet)
- ABOVE_MAXIMUM_DOF = 256; // 0x100 - Above maximum DoF
+ BRAKE_REMOVAL_FAILURE = 256; // 0x100 - Based failed to remove brakes from the axis
NETWORK_ERROR = 512; // 0x200 - Network error (not implemented yet)
UNABLE_TO_REACH_POSE = 1024; // 0x400 - Unable to reach pose
JOINT_DETECTION_ERROR = 2048; // 0x800 - Joint detection error
@@ -1617,7 +1654,7 @@ message TransformationRow {
/*
* A Cartesian tool pose (position and orientation).
- * Orientation is defined as a sequence of three Euler angles using z-y-x Tait-Bryan extrinsic convention.
+ * Orientation is defined as a sequence of three Euler angles using x-y-z Tait-Bryan extrinsic convention.
* That is, rotation around fixed X-axis, then rotation around fixed Y-axis, then rotation around fixed Z-axis.
*/
message Pose {
@@ -1636,7 +1673,7 @@ message Position {
}
/*
- * A Cartesian tool orientation. Defines orientation as sequence of three Euler angles using z-y-x Tait-Bryan extrinsic convention.
+ * A Cartesian tool orientation. Defines orientation as sequence of three Euler angles using x-y-z Tait-Bryan extrinsic convention.
* That is, rotation around fixed X-axis, then rotation around fixed Y-axis, then rotation around fixed Z-axis.
*/
message Orientation {
@@ -1655,7 +1692,7 @@ enum JointTrajectoryConstraintType {
// A Cartesian tool speed (translation speed and angular speed)
message CartesianSpeed {
float translation = 1; // Translation speed (in meters per second)
- float orientation = 2; // Orientation speed (in degrees per second)
+ float orientation = 2; // Orientation speed (in degrees per second) (not implemented yet)
}
// Cartesian trajectory constraint that can be applied when controlling in Cartesian trajectory mode
diff --git a/kortex_driver/protos/Common.proto b/kortex_driver/protos/Common.proto
index 97f5ab79..08f4ea45 100644
--- a/kortex_driver/protos/Common.proto
+++ b/kortex_driver/protos/Common.proto
@@ -138,6 +138,7 @@ enum ArmState
ARMSTATE_SERVOING_READY = 7; // Arm is ready to be controlled
ARMSTATE_SERVOING_PLAYING_SEQUENCE = 8; // Arm is currently being controlled via a sequence
ARMSTATE_SERVOING_MANUALLY_CONTROLLED = 9; // Arm is currently being controlled manually
+ ARMSTATE_BRAKE_RELEASING = 10; // Arm brakes are being released
ARMSTATE_RESERVED = 255; // For debugging, this state must never be reported outside the base. this means that a state is not mapped correctly
}
diff --git a/kortex_driver/protos/ProductConfiguration.proto b/kortex_driver/protos/ProductConfiguration.proto
index 9a840bb6..4080f965 100644
--- a/kortex_driver/protos/ProductConfiguration.proto
+++ b/kortex_driver/protos/ProductConfiguration.proto
@@ -74,6 +74,14 @@ enum WristType {
WRIST_TYPE_CURVED = 3; // Curved Wrist
}
+// Admissible brake types
+enum BrakeType {
+ BRAKE_TYPE_UNSPECIFIED = 0; // Unspecified brake type
+ BRAKE_TYPE_NOT_INSTALLED = 1; // No Brakes Installed
+ BRAKE_TYPE_SPOKE = 2; // Spoke Brake Type
+ BRAKE_TYPE_CLUTCH = 3; // Clutch Brake Type
+}
+
// Complete configuration for a given device
message CompleteProductConfiguration {
string kin = 1; // Kinova Identification Number of the device
@@ -88,6 +96,7 @@ message CompleteProductConfiguration {
InterfaceModuleType interface_module_type = 10; // Interface module type of the device
ArmLaterality arm_laterality = 11; // Arm laterality of the device
WristType wrist_type = 12; // Wrist type of the device
+ BrakeType brake_type = 13; // Brake type of the device
}
// New end-effector installed on arm
diff --git a/kortex_driver/readme.md b/kortex_driver/readme.md
index df5bf155..16b2f91e 100644
--- a/kortex_driver/readme.md
+++ b/kortex_driver/readme.md
@@ -299,6 +299,8 @@ Some source code as well as most of the .MSG and .SRV files in this package are
The generation process is based on a custom `protoc` plugin. Basically, most of the generation process is in the [scripts/ros_kortex_generator.py](scripts/ros_kortex_generator.py). Before launching the generation ensure that you have the Python JINJA2 module installed.
+This scripts works with `protobuf-compiler` (`protoc`) version 3.5.1 (see 3.5.X protobuf [github](https://github.com/protocolbuffers/protobuf/tree/3.5.x)). Script was not tested for other versions.
+
To launch the generation of this package:
1. Open a terminal window.
diff --git a/kortex_driver/src/generated/robot/base_proto_converter.cpp b/kortex_driver/src/generated/robot/base_proto_converter.cpp
index b5ae899e..92b53a30 100644
--- a/kortex_driver/src/generated/robot/base_proto_converter.cpp
+++ b/kortex_driver/src/generated/robot/base_proto_converter.cpp
@@ -461,6 +461,28 @@ int ToProtoData(kortex_driver::FullIPv4Configuration input, Kinova::Api::Base::F
return 0;
}
+int ToProtoData(kortex_driver::WifiEnableState input, Kinova::Api::Base::WifiEnableState *output)
+{
+
+ output->set_enabled(input.enabled);
+
+ return 0;
+}
+int ToProtoData(kortex_driver::BluetoothEnableState input, Kinova::Api::Base::BluetoothEnableState *output)
+{
+
+ output->set_enabled(input.enabled);
+
+ return 0;
+}
+int ToProtoData(kortex_driver::RFConfiguration input, Kinova::Api::Base::RFConfiguration *output)
+{
+
+ ToProtoData(input.wifi_enable_state, output->mutable_wifi_enable_state());
+ ToProtoData(input.bluetooth_enable_state, output->mutable_bluetooth_enable_state());
+
+ return 0;
+}
int ToProtoData(kortex_driver::WifiInformation input, Kinova::Api::Base::WifiInformation *output)
{
diff --git a/kortex_driver/src/generated/robot/base_ros_converter.cpp b/kortex_driver/src/generated/robot/base_ros_converter.cpp
index 1daed506..b5a792ec 100644
--- a/kortex_driver/src/generated/robot/base_ros_converter.cpp
+++ b/kortex_driver/src/generated/robot/base_ros_converter.cpp
@@ -649,6 +649,34 @@ int ToRosData(Kinova::Api::Base::FullIPv4Configuration input, kortex_driver::Ful
+ return 0;
+}
+int ToRosData(Kinova::Api::Base::WifiEnableState input, kortex_driver::WifiEnableState &output)
+{
+
+ output.enabled = input.enabled();
+
+
+
+ return 0;
+}
+int ToRosData(Kinova::Api::Base::BluetoothEnableState input, kortex_driver::BluetoothEnableState &output)
+{
+
+ output.enabled = input.enabled();
+
+
+
+ return 0;
+}
+int ToRosData(Kinova::Api::Base::RFConfiguration input, kortex_driver::RFConfiguration &output)
+{
+
+ ToRosData(input.wifi_enable_state(), output.wifi_enable_state);
+ ToRosData(input.bluetooth_enable_state(), output.bluetooth_enable_state);
+
+
+
return 0;
}
int ToRosData(Kinova::Api::Base::WifiInformation input, kortex_driver::WifiInformation &output)
diff --git a/kortex_driver/src/generated/robot/base_services.cpp b/kortex_driver/src/generated/robot/base_services.cpp
index 6ce347fd..dbc901a5 100644
--- a/kortex_driver/src/generated/robot/base_services.cpp
+++ b/kortex_driver/src/generated/robot/base_services.cpp
@@ -230,6 +230,10 @@ BaseRobotServices::BaseRobotServices(ros::NodeHandle& node_handle, Kinova::Api::
m_serviceComputeForwardKinematics = m_node_handle.advertiseService("base/compute_forward_kinematics", &BaseRobotServices::ComputeForwardKinematics, this);
m_serviceComputeInverseKinematics = m_node_handle.advertiseService("base/compute_inverse_kinematics", &BaseRobotServices::ComputeInverseKinematics, this);
m_serviceValidateWaypointList = m_node_handle.advertiseService("base/validate_waypoint_list", &BaseRobotServices::ValidateWaypointList, this);
+ m_serviceSetWifiEnableState = m_node_handle.advertiseService("base/set_wifi_enable_state", &BaseRobotServices::SetWifiEnableState, this);
+ m_serviceGetWifiEnableState = m_node_handle.advertiseService("base/get_wifi_enable_state", &BaseRobotServices::GetWifiEnableState, this);
+ m_serviceSetBluetoothEnableState = m_node_handle.advertiseService("base/set_bluetooth_enable_state", &BaseRobotServices::SetBluetoothEnableState, this);
+ m_serviceGetBluetoothEnableState = m_node_handle.advertiseService("base/get_bluetooth_enable_state", &BaseRobotServices::GetBluetoothEnableState, this);
}
bool BaseRobotServices::SetDeviceID(kortex_driver::SetDeviceID::Request &req, kortex_driver::SetDeviceID::Response &res)
@@ -5296,3 +5300,133 @@ bool BaseRobotServices::ValidateWaypointList(kortex_driver::ValidateWaypointList
ToRosData(output, res.output);
return true;
}
+
+bool BaseRobotServices::SetWifiEnableState(kortex_driver::SetWifiEnableState::Request &req, kortex_driver::SetWifiEnableState::Response &res)
+{
+
+ Kinova::Api::Base::WifiEnableState input;
+ ToProtoData(req.input, &input);
+ kortex_driver::KortexError result_error;
+
+ try
+ {
+ m_base->SetWifiEnableState(input, m_current_device_id, m_api_options);
+ }
+
+ catch (Kinova::Api::KDetailedException& ex)
+ {
+ result_error.subCode = ex.getErrorInfo().getError().error_sub_code();
+ result_error.code = ex.getErrorInfo().getError().error_code();
+ result_error.description = ex.toString();
+ m_pub_Error.publish(result_error);
+ ROS_INFO("Kortex exception");
+ ROS_INFO("KINOVA exception error code: %d\n", ex.getErrorInfo().getError().error_code());
+ ROS_INFO("KINOVA exception error sub code: %d\n", ex.getErrorInfo().getError().error_sub_code());
+ ROS_INFO("KINOVA exception description: %s\n", ex.what());
+ return false;
+ }
+ catch (std::runtime_error& ex2)
+ {
+ ROS_INFO("%s", ex2.what());
+ return false;
+ }
+ return true;
+}
+
+bool BaseRobotServices::GetWifiEnableState(kortex_driver::GetWifiEnableState::Request &req, kortex_driver::GetWifiEnableState::Response &res)
+{
+
+ Kinova::Api::Base::WifiEnableState output;
+
+ kortex_driver::KortexError result_error;
+
+ try
+ {
+ output = m_base->GetWifiEnableState(m_current_device_id, m_api_options);
+ }
+
+ catch (Kinova::Api::KDetailedException& ex)
+ {
+ result_error.subCode = ex.getErrorInfo().getError().error_sub_code();
+ result_error.code = ex.getErrorInfo().getError().error_code();
+ result_error.description = ex.toString();
+ m_pub_Error.publish(result_error);
+ ROS_INFO("Kortex exception");
+ ROS_INFO("KINOVA exception error code: %d\n", ex.getErrorInfo().getError().error_code());
+ ROS_INFO("KINOVA exception error sub code: %d\n", ex.getErrorInfo().getError().error_sub_code());
+ ROS_INFO("KINOVA exception description: %s\n", ex.what());
+ return false;
+ }
+ catch (std::runtime_error& ex2)
+ {
+ ROS_INFO("%s", ex2.what());
+ return false;
+ }
+ ToRosData(output, res.output);
+ return true;
+}
+
+bool BaseRobotServices::SetBluetoothEnableState(kortex_driver::SetBluetoothEnableState::Request &req, kortex_driver::SetBluetoothEnableState::Response &res)
+{
+
+ Kinova::Api::Base::BluetoothEnableState input;
+ ToProtoData(req.input, &input);
+ kortex_driver::KortexError result_error;
+
+ try
+ {
+ m_base->SetBluetoothEnableState(input, m_current_device_id, m_api_options);
+ }
+
+ catch (Kinova::Api::KDetailedException& ex)
+ {
+ result_error.subCode = ex.getErrorInfo().getError().error_sub_code();
+ result_error.code = ex.getErrorInfo().getError().error_code();
+ result_error.description = ex.toString();
+ m_pub_Error.publish(result_error);
+ ROS_INFO("Kortex exception");
+ ROS_INFO("KINOVA exception error code: %d\n", ex.getErrorInfo().getError().error_code());
+ ROS_INFO("KINOVA exception error sub code: %d\n", ex.getErrorInfo().getError().error_sub_code());
+ ROS_INFO("KINOVA exception description: %s\n", ex.what());
+ return false;
+ }
+ catch (std::runtime_error& ex2)
+ {
+ ROS_INFO("%s", ex2.what());
+ return false;
+ }
+ return true;
+}
+
+bool BaseRobotServices::GetBluetoothEnableState(kortex_driver::GetBluetoothEnableState::Request &req, kortex_driver::GetBluetoothEnableState::Response &res)
+{
+
+ Kinova::Api::Base::BluetoothEnableState output;
+
+ kortex_driver::KortexError result_error;
+
+ try
+ {
+ output = m_base->GetBluetoothEnableState(m_current_device_id, m_api_options);
+ }
+
+ catch (Kinova::Api::KDetailedException& ex)
+ {
+ result_error.subCode = ex.getErrorInfo().getError().error_sub_code();
+ result_error.code = ex.getErrorInfo().getError().error_code();
+ result_error.description = ex.toString();
+ m_pub_Error.publish(result_error);
+ ROS_INFO("Kortex exception");
+ ROS_INFO("KINOVA exception error code: %d\n", ex.getErrorInfo().getError().error_code());
+ ROS_INFO("KINOVA exception error sub code: %d\n", ex.getErrorInfo().getError().error_sub_code());
+ ROS_INFO("KINOVA exception description: %s\n", ex.what());
+ return false;
+ }
+ catch (std::runtime_error& ex2)
+ {
+ ROS_INFO("%s", ex2.what());
+ return false;
+ }
+ ToRosData(output, res.output);
+ return true;
+}
diff --git a/kortex_driver/src/generated/robot/productconfiguration_proto_converter.cpp b/kortex_driver/src/generated/robot/productconfiguration_proto_converter.cpp
index c93d9b8c..911a61f0 100644
--- a/kortex_driver/src/generated/robot/productconfiguration_proto_converter.cpp
+++ b/kortex_driver/src/generated/robot/productconfiguration_proto_converter.cpp
@@ -31,6 +31,7 @@ int ToProtoData(kortex_driver::CompleteProductConfiguration input, Kinova::Api::
output->set_interface_module_type((Kinova::Api::ProductConfiguration::InterfaceModuleType)input.interface_module_type);
output->set_arm_laterality((Kinova::Api::ProductConfiguration::ArmLaterality)input.arm_laterality);
output->set_wrist_type((Kinova::Api::ProductConfiguration::WristType)input.wrist_type);
+ output->set_brake_type((Kinova::Api::ProductConfiguration::BrakeType)input.brake_type);
return 0;
}
diff --git a/kortex_driver/src/generated/robot/productconfiguration_ros_converter.cpp b/kortex_driver/src/generated/robot/productconfiguration_ros_converter.cpp
index 4eeb2ad4..add91c05 100644
--- a/kortex_driver/src/generated/robot/productconfiguration_ros_converter.cpp
+++ b/kortex_driver/src/generated/robot/productconfiguration_ros_converter.cpp
@@ -31,6 +31,7 @@ int ToRosData(Kinova::Api::ProductConfiguration::CompleteProductConfiguration in
output.interface_module_type = input.interface_module_type();
output.arm_laterality = input.arm_laterality();
output.wrist_type = input.wrist_type();
+ output.brake_type = input.brake_type();
diff --git a/kortex_driver/src/generated/simulation/base_services.cpp b/kortex_driver/src/generated/simulation/base_services.cpp
index d3c3c5b8..c6439aaa 100644
--- a/kortex_driver/src/generated/simulation/base_services.cpp
+++ b/kortex_driver/src/generated/simulation/base_services.cpp
@@ -226,6 +226,10 @@ BaseSimulationServices::BaseSimulationServices(ros::NodeHandle& node_handle):
m_serviceComputeForwardKinematics = m_node_handle.advertiseService("base/compute_forward_kinematics", &BaseSimulationServices::ComputeForwardKinematics, this);
m_serviceComputeInverseKinematics = m_node_handle.advertiseService("base/compute_inverse_kinematics", &BaseSimulationServices::ComputeInverseKinematics, this);
m_serviceValidateWaypointList = m_node_handle.advertiseService("base/validate_waypoint_list", &BaseSimulationServices::ValidateWaypointList, this);
+ m_serviceSetWifiEnableState = m_node_handle.advertiseService("base/set_wifi_enable_state", &BaseSimulationServices::SetWifiEnableState, this);
+ m_serviceGetWifiEnableState = m_node_handle.advertiseService("base/get_wifi_enable_state", &BaseSimulationServices::GetWifiEnableState, this);
+ m_serviceSetBluetoothEnableState = m_node_handle.advertiseService("base/set_bluetooth_enable_state", &BaseSimulationServices::SetBluetoothEnableState, this);
+ m_serviceGetBluetoothEnableState = m_node_handle.advertiseService("base/get_bluetooth_enable_state", &BaseSimulationServices::GetBluetoothEnableState, this);
}
bool BaseSimulationServices::SetDeviceID(kortex_driver::SetDeviceID::Request &req, kortex_driver::SetDeviceID::Response &res)
@@ -2573,3 +2577,63 @@ bool BaseSimulationServices::ValidateWaypointList(kortex_driver::ValidateWaypoin
}
return true;
}
+
+bool BaseSimulationServices::SetWifiEnableState(kortex_driver::SetWifiEnableState::Request &req, kortex_driver::SetWifiEnableState::Response &res)
+{
+
+
+ if (SetWifiEnableStateHandler)
+ {
+ res = SetWifiEnableStateHandler(req);
+ }
+ else
+ {
+ ROS_WARN_ONCE("The simulation handler for base/set_wifi_enable_state is not implemented, so the service calls will return the default response.");
+ }
+ return true;
+}
+
+bool BaseSimulationServices::GetWifiEnableState(kortex_driver::GetWifiEnableState::Request &req, kortex_driver::GetWifiEnableState::Response &res)
+{
+
+
+ if (GetWifiEnableStateHandler)
+ {
+ res = GetWifiEnableStateHandler(req);
+ }
+ else
+ {
+ ROS_WARN_ONCE("The simulation handler for base/get_wifi_enable_state is not implemented, so the service calls will return the default response.");
+ }
+ return true;
+}
+
+bool BaseSimulationServices::SetBluetoothEnableState(kortex_driver::SetBluetoothEnableState::Request &req, kortex_driver::SetBluetoothEnableState::Response &res)
+{
+
+
+ if (SetBluetoothEnableStateHandler)
+ {
+ res = SetBluetoothEnableStateHandler(req);
+ }
+ else
+ {
+ ROS_WARN_ONCE("The simulation handler for base/set_bluetooth_enable_state is not implemented, so the service calls will return the default response.");
+ }
+ return true;
+}
+
+bool BaseSimulationServices::GetBluetoothEnableState(kortex_driver::GetBluetoothEnableState::Request &req, kortex_driver::GetBluetoothEnableState::Response &res)
+{
+
+
+ if (GetBluetoothEnableStateHandler)
+ {
+ res = GetBluetoothEnableStateHandler(req);
+ }
+ else
+ {
+ ROS_WARN_ONCE("The simulation handler for base/get_bluetooth_enable_state is not implemented, so the service calls will return the default response.");
+ }
+ return true;
+}
diff --git a/kortex_driver/srv/generated/base/GetBluetoothEnableState.srv b/kortex_driver/srv/generated/base/GetBluetoothEnableState.srv
new file mode 100644
index 00000000..f4be8459
--- /dev/null
+++ b/kortex_driver/srv/generated/base/GetBluetoothEnableState.srv
@@ -0,0 +1,3 @@
+Empty input
+---
+BluetoothEnableState output
\ No newline at end of file
diff --git a/kortex_driver/srv/generated/base/GetWifiEnableState.srv b/kortex_driver/srv/generated/base/GetWifiEnableState.srv
new file mode 100644
index 00000000..ac32b929
--- /dev/null
+++ b/kortex_driver/srv/generated/base/GetWifiEnableState.srv
@@ -0,0 +1,3 @@
+Empty input
+---
+WifiEnableState output
\ No newline at end of file
diff --git a/kortex_driver/srv/generated/base/SetBluetoothEnableState.srv b/kortex_driver/srv/generated/base/SetBluetoothEnableState.srv
new file mode 100644
index 00000000..57db988a
--- /dev/null
+++ b/kortex_driver/srv/generated/base/SetBluetoothEnableState.srv
@@ -0,0 +1,3 @@
+BluetoothEnableState input
+---
+Empty output
\ No newline at end of file
diff --git a/kortex_driver/srv/generated/base/SetWifiEnableState.srv b/kortex_driver/srv/generated/base/SetWifiEnableState.srv
new file mode 100644
index 00000000..73e1aa48
--- /dev/null
+++ b/kortex_driver/srv/generated/base/SetWifiEnableState.srv
@@ -0,0 +1,3 @@
+WifiEnableState input
+---
+Empty output
\ No newline at end of file