URDF and xacro description package for KINOVA KORTEX™ robots
This package contains configuration data, 3D models and launch files
@@ -21,6 +21,7 @@ for KINOVA KORTEX™ arms and supported grippers
joint_trajectory_controller
robot_state_publisher
robotiq_description
+ parallel_gripper_controller
picknik_reset_fault_controller
picknik_twist_controller
rviz2
diff --git a/kortex_driver/CHANGELOG.rst b/kortex_driver/CHANGELOG.rst
index d45751da..a0265ed3 100644
--- a/kortex_driver/CHANGELOG.rst
+++ b/kortex_driver/CHANGELOG.rst
@@ -2,6 +2,24 @@
Changelog for package kortex_driver
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.2.6 (2026-01-07)
+------------------
+* Package version updates
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.4 (2025-12-15)
+------------------
+* fix deprecated hardware_interface API (`#327 `_)
+* Fixed pi issue #295 (`#296 `_)
+* modified the kortex trademark name (`#305 `_)
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.3 (2025-02-27)
+------------------
+* Add force and velocity hardware interfaces (`#204 `_)
+* Changing the list of packages maintainers
+* Contributors: Abed Al Rahman Al Mrad
+
0.2.2 (2023-08-09)
------------------
* cxx: remove unused-but-set-parameter (`#164 `_)
diff --git a/kortex_driver/include/kortex_driver/hardware_interface.hpp b/kortex_driver/include/kortex_driver/hardware_interface.hpp
index 6bc45a69..33f37fda 100644
--- a/kortex_driver/include/kortex_driver/hardware_interface.hpp
+++ b/kortex_driver/include/kortex_driver/hardware_interface.hpp
@@ -84,7 +84,7 @@ class KortexMultiInterfaceHardware : public hardware_interface::SystemInterface
RCLCPP_SHARED_PTR_DEFINITIONS(KortexMultiInterfaceHardware);
KORTEX_DRIVER_PUBLIC
- CallbackReturn on_init(const hardware_interface::HardwareInfo & info) final;
+ CallbackReturn on_init(const hardware_interface::HardwareComponentInterfaceParams & params) final;
KORTEX_DRIVER_PUBLIC
std::vector export_state_interfaces() final;
diff --git a/kortex_driver/package.xml b/kortex_driver/package.xml
index c77fb935..bfd46be5 100644
--- a/kortex_driver/package.xml
+++ b/kortex_driver/package.xml
@@ -2,7 +2,7 @@
kortex_driver
- 0.2.3
+ 0.2.6
ROS2 driver package for the Kinova Robot Hardware.
Alex Moriarty
Martin Leroux
diff --git a/kortex_driver/src/hardware_interface.cpp b/kortex_driver/src/hardware_interface.cpp
index f0e856b1..95525280 100644
--- a/kortex_driver/src/hardware_interface.cpp
+++ b/kortex_driver/src/hardware_interface.cpp
@@ -84,15 +84,16 @@ KortexMultiInterfaceHardware::KortexMultiInterfaceHardware()
}
}
-CallbackReturn KortexMultiInterfaceHardware::on_init(const hardware_interface::HardwareInfo & info)
+CallbackReturn KortexMultiInterfaceHardware::on_init(
+ const hardware_interface::HardwareComponentInterfaceParams & params)
{
RCLCPP_INFO(LOGGER, "Configuring Hardware Interface");
- if (hardware_interface::SystemInterface::on_init(info) != CallbackReturn::SUCCESS)
+ if (hardware_interface::SystemInterface::on_init(params) != CallbackReturn::SUCCESS)
{
return CallbackReturn::ERROR;
}
- info_ = info;
+ info_ = params.hardware_info;
// The robot's IP address.
std::string robot_ip = info_.hardware_parameters["robot_ip"];
if (robot_ip.empty())
@@ -169,16 +170,15 @@ CallbackReturn KortexMultiInterfaceHardware::on_init(const hardware_interface::H
gripper_joint_name_ = info_.hardware_parameters["gripper_joint_name"];
if (gripper_joint_name_.empty())
{
- RCLCPP_ERROR(LOGGER, "Gripper joint name is empty!");
+ RCLCPP_INFO(LOGGER, "No gripper joint name provided, gripper control will be disabled.");
}
else
{
RCLCPP_INFO(LOGGER, "Gripper joint name is '%s'", gripper_joint_name_.c_str());
+ gripper_command_max_velocity_ = std::stod(info_.hardware_parameters["gripper_max_velocity"]);
+ gripper_command_max_force_ = std::stod(info_.hardware_parameters["gripper_max_force"]);
}
- gripper_command_max_velocity_ = std::stod(info_.hardware_parameters["gripper_max_velocity"]);
- gripper_command_max_force_ = std::stod(info_.hardware_parameters["gripper_max_force"]);
-
RCLCPP_INFO_STREAM(LOGGER, "Connecting to robot at " << robot_ip);
// connections
@@ -279,8 +279,9 @@ CallbackReturn KortexMultiInterfaceHardware::on_init(const hardware_interface::H
}
if (
- (info_.hardware_parameters["use_internal_bus_gripper_comm"] == "true") ||
- (info_.hardware_parameters["use_internal_bus_gripper_comm"] == "True"))
+ !gripper_joint_name_.empty() &&
+ ((info_.hardware_parameters["use_internal_bus_gripper_comm"] == "true") ||
+ (info_.hardware_parameters["use_internal_bus_gripper_comm"] == "True")))
{
use_internal_bus_gripper_comm_ = true;
RCLCPP_INFO(LOGGER, "Using internal bus communication for gripper!");
@@ -666,21 +667,24 @@ CallbackReturn KortexMultiInterfaceHardware::on_activate(
base_command_.add_actuators()->set_position(base_feedback.actuators(i).position());
}
- // Initialize gripper
- float gripper_initial_position =
- base_feedback.interconnect().gripper_feedback().motor()[0].position();
- RCLCPP_INFO(LOGGER, "Gripper initial position is '%f'.", gripper_initial_position);
-
- // to radians
- gripper_command_position_ = gripper_initial_position / 100.0 * 0.81;
-
- // Initialize interconnect command to current gripper position.
- base_command_.mutable_interconnect()->mutable_command_id()->set_identifier(0);
- gripper_motor_command_ =
- base_command_.mutable_interconnect()->mutable_gripper_command()->add_motor_cmd();
- gripper_motor_command_->set_position(gripper_initial_position); // % position
- gripper_motor_command_->set_velocity(gripper_speed_command_); // % speed
- gripper_motor_command_->set_force(gripper_force_command_); // % force
+ // Initialize gripper if internal bus communication is enabled
+ if (use_internal_bus_gripper_comm_)
+ {
+ float gripper_initial_position =
+ base_feedback.interconnect().gripper_feedback().motor()[0].position();
+ RCLCPP_INFO(LOGGER, "Gripper initial position is '%f'.", gripper_initial_position);
+
+ // to radians
+ gripper_command_position_ = gripper_initial_position / 100.0 * 0.81;
+
+ // Initialize interconnect command to current gripper position.
+ base_command_.mutable_interconnect()->mutable_command_id()->set_identifier(0);
+ gripper_motor_command_ =
+ base_command_.mutable_interconnect()->mutable_gripper_command()->add_motor_cmd();
+ gripper_motor_command_->set_position(gripper_initial_position); // % position
+ gripper_motor_command_->set_velocity(gripper_speed_command_); // % speed
+ gripper_motor_command_->set_force(gripper_force_command_); // % force
+ }
// Send a first frame
base_feedback = base_cyclic_.Refresh(base_command_);
diff --git a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst
index 14f86d9f..dc0181cf 100644
--- a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst
+++ b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/CHANGELOG.rst
@@ -2,6 +2,26 @@
Changelog for package kinova_gen3_6dof_robotiq_2f_85_moveit_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.2.6 (2026-01-07)
+------------------
+* Package version updates
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.4 (2025-12-15)
+------------------
+* fixed gen3_lite moveit issues (`#318 `_)
+* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_)
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.3 (2025-02-27)
+------------------
+* Update planner_plugin parameters (`#199 `_)
+* Remove outdated config artifacts (`#198 `_)
+* Cleanup robots for visualization & sim (`#180 `_)
+* Update planning pipeline configurations (`#187 `_)
+* Changing the list of packages maintainers
+* Contributors: Abed Al Rahman Al Mrad
+
0.2.2 (2023-08-09)
------------------
* specify planning pipelines to use (`#157 `_)
diff --git a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml
index 89978b4f..bfcc308f 100644
--- a/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml
+++ b/kortex_moveit_config/kinova_gen3_6dof_robotiq_2f_85_moveit_config/package.xml
@@ -2,7 +2,7 @@
kinova_gen3_6dof_robotiq_2f_85_moveit_config
- 0.2.3
+ 0.2.6
An automatically generated package with all the configuration and launch files for using the gen3 with the MoveIt Motion Planning Framework
diff --git a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst
index 36e7f51e..d5c1a0de 100644
--- a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst
+++ b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/CHANGELOG.rst
@@ -2,6 +2,26 @@
Changelog for package kinova_gen3_7dof_robotiq_2f_85_moveit_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+0.2.6 (2026-01-07)
+------------------
+* Package version updates
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.4 (2025-12-15)
+------------------
+* fixed gen3_lite moveit issues (`#318 `_)
+* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_)
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.3 (2025-02-27)
+------------------
+* Update planner_plugin parameters (`#199 `_)
+* Remove outdated config artifacts (`#198 `_)
+* Cleanup robots for visualization & sim (`#180 `_)
+* Update planning pipeline configurations (`#187 `_)
+* Changing the list of packages maintainers
+* Contributors: Abed Al Rahman Al Mrad
+
0.2.2 (2023-08-09)
------------------
* specify planning pipelines to use (`#157 `_)
diff --git a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml
index 630457b1..f8c51a7e 100644
--- a/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml
+++ b/kortex_moveit_config/kinova_gen3_7dof_robotiq_2f_85_moveit_config/package.xml
@@ -2,7 +2,7 @@
kinova_gen3_7dof_robotiq_2f_85_moveit_config
- 0.2.3
+ 0.2.6
An automatically generated package with all the configuration and launch files for using the gen3 with the MoveIt Motion Planning Framework
diff --git a/kortex_moveit_config/kinova_gen3_lite_moveit_config/CHANGELOG.rst b/kortex_moveit_config/kinova_gen3_lite_moveit_config/CHANGELOG.rst
new file mode 100644
index 00000000..de4113ed
--- /dev/null
+++ b/kortex_moveit_config/kinova_gen3_lite_moveit_config/CHANGELOG.rst
@@ -0,0 +1,21 @@
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Changelog for package kinova_gen3_lite_moveit_config
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+0.2.6 (2026-01-07)
+------------------
+* Package version updates
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.4 (2025-12-15)
+------------------
+* fixed gen3_lite moveit issues (`#318 `_)
+* Modifications to fix moveit issues while controlling Gen3_lite (`#316 `_)
+* Remove Gazebo Classic support and Update for MoveIt Jazzy/Rolling (`#228 `_)
+* Contributors: Abed Al Rahman Al Mrad
+
+0.2.3 (2025-02-27)
+------------------
+* Fixed the Gazebo Fortress Simulation + Separated the arm and gripper control for Gen3_Lite + Fixed bugs (`#252 `_)
+* Added a Moveit2 package for Gen3-Lite (`#231 `_)
+* Contributors: Abed Al Rahman Al Mrad
diff --git a/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml b/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml
index 4a806840..de03d4b2 100644
--- a/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml
+++ b/kortex_moveit_config/kinova_gen3_lite_moveit_config/package.xml
@@ -2,7 +2,7 @@
kinova_gen3_lite_moveit_config
- 0.2.3
+ 0.2.6
An automatically generated package with all the configuration and launch files for using the gen3_lite with the MoveIt Motion Planning Framework
diff --git a/kortex_moveit_config/launch/kortex_moveit.launch.py b/kortex_moveit_config/launch/kortex_moveit.launch.py
index 0815269f..0f36ffc7 100644
--- a/kortex_moveit_config/launch/kortex_moveit.launch.py
+++ b/kortex_moveit_config/launch/kortex_moveit.launch.py
@@ -107,7 +107,17 @@ def generate_launch_description():
DeclareLaunchArgument(
"gripper",
default_value='""',
- description="Name of the gripper attached to the arm",
+ description="Name of the gripper attached to the arm. Use '' for no gripper or a "
+ "custom end-effector name.",
+ )
+ )
+ declared_arguments.append(
+ DeclareLaunchArgument(
+ "gripper_joint_name",
+ default_value="",
+ description="Joint name of the gripper to be controlled via the internal bus. "
+ "Leave empty when not using a gripper or when using a custom end-effector "
+ "without an internal-bus-controlled joint.",
)
)
declared_arguments.append(
@@ -141,6 +151,7 @@ def generate_launch_description():
robot_name = LaunchConfiguration("robot_name")
prefix = LaunchConfiguration("prefix")
gripper = LaunchConfiguration("gripper")
+ gripper_joint_name = LaunchConfiguration("gripper_joint_name")
use_fake_hardware = LaunchConfiguration("use_fake_hardware")
fake_sensor_commands = LaunchConfiguration("fake_sensor_commands")
launch_rviz = LaunchConfiguration("launch_rviz")
@@ -177,6 +188,9 @@ def generate_launch_description():
"gripper:=",
gripper,
" ",
+ "gripper_joint_name:=",
+ gripper_joint_name,
+ " ",
]
)
robot_description = {"robot_description": robot_description_content}