Skip to content

Commit ad50ff9

Browse files
authored
Merge pull request #12 from PickNikRobotics/pr-unify_control_xacro
Pr unify control xacro
2 parents 01da494 + 958be52 commit ad50ff9

File tree

8 files changed

+127
-119
lines changed

8 files changed

+127
-119
lines changed

robotiq_description/urdf/robotiq_gripper.ros2_control.xacro

Lines changed: 96 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,106 @@
11
<?xml version="1.0"?>
22
<robot xmlns:xacro="http://www.ros.org/wiki/xacro">
33

4-
<xacro:macro name="robotiq_gripper_ros2_control" params="name com_port">
5-
<ros2_control name="${name}" type="actuator">
4+
<xacro:macro name="robotiq_gripper_ros2_control" params="
5+
name
6+
prefix
7+
sim_ignition:=false
8+
sim_isaac:=false
9+
use_fake_hardware:=false
10+
fake_sensor_commands:=false
11+
com_port:=/dev/ttyUSB0">
12+
13+
<ros2_control name="${name}" type="system">
14+
<!-- Plugins -->
615
<hardware>
7-
<plugin>robotiq_driver/RobotiqGripperHardwareInterface</plugin>
8-
<param name="gripper_closed_position">0.7929</param>
9-
<param name="COM_port">${com_port}</param>
10-
<param name="gripper_speed_multiplier">1.0</param>
11-
<param name="gripper_force_multiplier">0.5</param>
16+
<xacro:if value="${sim_isaac}">
17+
<plugin>isaac_ros2_control/IsaacSystem</plugin>
18+
<param name="joint_commands_topic">/isaac_joint_commands</param>
19+
<param name="joint_states_topic">/isaac_joint_states</param>
20+
</xacro:if>
21+
<xacro:if value="${sim_ignition}">
22+
<plugin>ign_ros2_control/IgnitionSystem</plugin>
23+
</xacro:if>
24+
<xacro:if value="${use_fake_hardware}">
25+
<plugin>mock_components/GenericSystem</plugin>
26+
<param name="fake_sensor_commands">${fake_sensor_commands}</param>
27+
<param name="state_following_offset">0.0</param>
28+
</xacro:if>
29+
<xacro:unless value="${use_fake_hardware or sim_ignition or sim_isaac}">
30+
<plugin>robotiq_driver/RobotiqGripperHardwareInterface</plugin>
31+
<param name="gripper_closed_position">0.7929</param>
32+
<param name="COM_port">${com_port}</param>
33+
<param name="gripper_speed_multiplier">1.0</param>
34+
<param name="gripper_force_multiplier">0.5</param>
35+
</xacro:unless>
1236
</hardware>
13-
<joint name="robotiq_85_left_knuckle_joint">
14-
<param name="initial_position">0.7929</param>
37+
38+
<!-- Joint interfaces -->
39+
<!-- With Ignition or Hardware, they handle mimic joints, so we only need this command interface activated -->
40+
<joint name="${prefix}robotiq_85_left_knuckle_joint">
1541
<command_interface name="position" />
16-
<state_interface name="position" />
17-
<state_interface name="velocity" />
42+
<state_interface name="position">
43+
<param name="initial_value">0.7929</param>
44+
</state_interface>
45+
<state_interface name="velocity"/>
1846
</joint>
47+
<!-- When simulating we need to include the rest of the gripper joints -->
48+
<xacro:if value="${use_fake_hardware or sim_isaac or sim_ignition}">
49+
<joint name="${prefix}robotiq_85_right_knuckle_joint">
50+
<param name="mimic">robotiq_85_left_knuckle_joint</param>
51+
<param name="multiplier">-1</param>
52+
<xacro:unless value="${sim_ignition}">
53+
<command_interface name="position"/>
54+
<state_interface name="position"/>
55+
<state_interface name="velocity"/>
56+
</xacro:unless>
57+
</joint>
58+
<joint name="${prefix}robotiq_85_left_inner_knuckle_joint">
59+
<param name="mimic">robotiq_85_left_knuckle_joint</param>
60+
<param name="multiplier">1</param>
61+
<xacro:unless value="${sim_ignition}">
62+
<command_interface name="position"/>
63+
<state_interface name="position"/>
64+
<state_interface name="velocity"/>
65+
</xacro:unless>
66+
</joint>
67+
<joint name="${prefix}robotiq_85_right_inner_knuckle_joint">
68+
<param name="mimic">robotiq_85_left_knuckle_joint</param>
69+
<param name="multiplier">-1</param>
70+
<xacro:unless value="${sim_ignition}">
71+
<command_interface name="position"/>
72+
<state_interface name="position"/>
73+
<state_interface name="velocity"/>
74+
</xacro:unless>
75+
</joint>
76+
<joint name="${prefix}robotiq_85_left_finger_tip_joint">
77+
<param name="mimic">robotiq_85_left_knuckle_joint</param>
78+
<param name="multiplier">-1</param>
79+
<xacro:unless value="${sim_ignition}">
80+
<command_interface name="position"/>
81+
<state_interface name="position"/>
82+
<state_interface name="velocity"/>
83+
</xacro:unless>
84+
</joint>
85+
<joint name="${prefix}robotiq_85_right_finger_tip_joint">
86+
<param name="mimic">robotiq_85_left_knuckle_joint</param>
87+
<param name="multiplier">1</param>
88+
<xacro:unless value="${sim_ignition}">
89+
<command_interface name="position"/>
90+
<state_interface name="position"/>
91+
<state_interface name="velocity"/>
92+
</xacro:unless>
93+
</joint>
94+
</xacro:if>
95+
96+
<!-- Only add this with fake hardware mode -->
97+
<xacro:unless value="${sim_ignition or sim_isaac}">
98+
<gpio name="reactivate_gripper">
99+
<command_interface name="reactivate_gripper_cmd" />
100+
<command_interface name="reactivate_gripper_response" />
101+
</gpio>
102+
</xacro:unless>
103+
19104
</ros2_control>
20105
</xacro:macro>
21106

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
<?xml version="1.0"?>
22
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="robotiq_gripper">
33
<!-- parameters -->
4-
<xacro:arg name="use_sim" default="true" />
4+
<xacro:arg name="use_fake_hardware" default="true" />
55

66
<!-- Import macros -->
77
<xacro:include filename="$(find robotiq_description)/urdf/robotiq_gripper_macro.urdf.xacro" />
88

99
<link name="world" />
10-
<xacro:robotiq_gripper parent="world" sim="$(arg use_sim)" prefix="">
10+
<xacro:robotiq_gripper name="RobotiqGripperHardwareInterface" prefix="" parent="world" use_fake_hardware="$(arg use_fake_hardware)">
1111
<origin xyz="0 0 0" rpy="0 0 0" />
1212
</xacro:robotiq_gripper>
13-
</robot>
13+
</robot>

robotiq_description/urdf/robotiq_gripper_macro.urdf.xacro

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,28 @@
11
<?xml version="1.0"?>
22
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="robotiq_gripper">
3-
<xacro:macro name="robotiq_gripper" params="parent *origin sim:=false prefix">
3+
<xacro:macro name="robotiq_gripper" params="
4+
name
5+
prefix
6+
parent
7+
*origin
8+
sim_ignition:=false
9+
sim_isaac:=false
10+
use_fake_hardware:=false
11+
fake_sensor_commands:=false
12+
com_port:=/dev/ttyUSB0">
13+
14+
<!-- ros2 control include -->
15+
<xacro:include filename="$(find robotiq_description)/urdf/robotiq_gripper.ros2_control.xacro" />
16+
<!-- ros2 control instance -->
17+
<xacro:robotiq_gripper_ros2_control
18+
name="${name}" prefix="${prefix}"
19+
sim_ignition="${sim_ignition}"
20+
sim_isaac="${sim_isaac}"
21+
use_fake_hardware="${use_fake_hardware}"
22+
fake_sensor_commands="${fake_sensor_commands}"
23+
com_port="${com_port}"
24+
/>
25+
426
<link name="${prefix}robotiq_85_base_link">
527
<visual>
628
<geometry>

robotiq_description/urdf/robotiq_sim_gripper.ros2_control.xacro

Lines changed: 0 additions & 98 deletions
This file was deleted.

robotiq_driver/hardware_interface_plugin.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<library path="robotiq_driver">
2-
<class name="robotiq_driver/RobotiqGripperHardwareInterface" type="robotiq_driver::RobotiqGripperHardwareInterface" base_class_type="hardware_interface::ActuatorInterface">
2+
<class name="robotiq_driver/RobotiqGripperHardwareInterface" type="robotiq_driver::RobotiqGripperHardwareInterface" base_class_type="hardware_interface::SystemInterface">
33
<description>
44
ROS2 controller for the Robotiq gripper.
55
</description>

robotiq_driver/include/robotiq_driver/hardware_interface.hpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@
3232
#include <string>
3333
#include <vector>
3434

35-
#include "hardware_interface/actuator_interface.hpp"
3635
#include "hardware_interface/handle.hpp"
3736
#include "hardware_interface/hardware_info.hpp"
3837
#include "hardware_interface/system_interface.hpp"
@@ -45,7 +44,7 @@
4544

4645
namespace robotiq_driver
4746
{
48-
class RobotiqGripperHardwareInterface : public hardware_interface::ActuatorInterface
47+
class RobotiqGripperHardwareInterface : public hardware_interface::SystemInterface
4948
{
5049
public:
5150
RCLCPP_SHARED_PTR_DEFINITIONS(RobotiqGripperHardwareInterface)

robotiq_driver/launch/robotiq_control.launch.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def generate_launch_description():
7474
" ",
7575
LaunchConfiguration("model"),
7676
" ",
77-
"use_sim:=false",
77+
"use_fake_hardware:=false",
7878
]
7979
)
8080
robot_description_param = {

robotiq_driver/src/hardware_interface.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ RobotiqGripperHardwareInterface::RobotiqGripperHardwareInterface()
5353
hardware_interface::CallbackReturn
5454
RobotiqGripperHardwareInterface::on_init(const hardware_interface::HardwareInfo& info)
5555
{
56-
if (hardware_interface::ActuatorInterface::on_init(info) != CallbackReturn::SUCCESS)
56+
if (hardware_interface::SystemInterface::on_init(info) != CallbackReturn::SUCCESS)
5757
{
5858
return CallbackReturn::ERROR;
5959
}
@@ -248,4 +248,4 @@ hardware_interface::return_type RobotiqGripperHardwareInterface::write(const rcl
248248

249249
#include "pluginlib/class_list_macros.hpp"
250250

251-
PLUGINLIB_EXPORT_CLASS(robotiq_driver::RobotiqGripperHardwareInterface, hardware_interface::ActuatorInterface)
251+
PLUGINLIB_EXPORT_CLASS(robotiq_driver::RobotiqGripperHardwareInterface, hardware_interface::SystemInterface)

0 commit comments

Comments
 (0)