kroshu / kuka_drivers Goto Github PK
View Code? Open in Web Editor NEWRepository containing ROS2 drivers for multiple KUKA robots
License: Apache License 2.0
Repository containing ROS2 drivers for multiple KUKA robots
License: Apache License 2.0
Currently when changing control mode before activation the control mode will not change immediately. After activation the hardware interface activating earlier then the controller handler so it starts in the initial state, and changes control mode immediately.
Goal is it should start with the new control mode
Currently the sunrise driver does not support the use_fake_hardware
argument, as the robot_manager
also contains hardware-specific commands. The driver should be reworked to move these out of the robot_manager
node.
Additionally a few other modifications are needed:
controller_ip
parameterclient_ip
and client_port
parameters that sets the remote ip and port of the sunrise applicationHi there,
I am currently trying to get the ECI driver running in a Docker Container.
I am following the tutorial from the docs to start the ECI driver in a mocked test environment to control the simulated robot with ROS.
When trying to run ros2 launch kuka_rox_hw_interface startup.launch.py
:
...
[control_node-1] [INFO] [1695046574.399726173] [resource_manager]: Loading hardware 'LBRiisy3R760'
[control_node-1] terminate called after throwing an instance of 'pluginlib::LibraryLoadException'
[control_node-1] what(): Failed to load library /custom_ws/install/kuka_rox_hw_interface/lib/kuka_rox_hw_interface/libkuka_rox_hw_interface.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library dlopen error: libos-core-udp-communication.so: cannot open shared object file: No such file or directory, at ./src/shared_library.c:99
...
set(MOCK_KUKA_LIBS TRUE)
)docker build -t eci_issue .
docker run -it eci_issue /bin/bash
(if you want a display passthrough add -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY
and on the host execute xhost +
)ros2 launch kuka_rox_hw_interface startup.launch.py
This is my Dockerfile (currently using the default ros:humble entrypoint)
FROM ros:humble
RUN apt-get update && apt-get install -y \
libnanopb-dev \
ros-humble-controller-manager \
ros-humble-moveit \
ros-humble-moveit-visual-tools \
ros-humble-joint-trajectory-controller \
ros-humble-joint-state-broadcaster \
ros-humble-joint-state-publisher \
ros-humble-ros2-controllers \
libprotobuf-dev \
protobuf-compiler \
libprotoc-dev \
libgrpc++-dev \
byobu \
&& rm -rf /var/lib/apt/lists/* # byobu is like tmux only for testing
RUN mkdir -p /custom_ws/src
WORKDIR /custom_ws/src
RUN git clone https://github.com/kroshu/kroshu_ros2_core.git
RUN git clone https://github.com/kroshu/ros2_kuka_drivers.git
RUN git clone https://github.com/kroshu/kuka_simulators.git
WORKDIR /custom_ws
RUN /bin/bash -c "source /opt/ros/humble/setup.bash && colcon build"
RUN /bin/bash -c "echo 'source /custom_ws/install/setup.bash' >> ~/.bashrc"
This should install all dependencies and successfully builds.
It is possible to start the rsi simulation, but when I want to start the eci startup.launch.py file it appears not to be working:
Console output when running ros2 launch kuka_rox_hw_interface startup.launch.py
:
[INFO] [launch]: All log files can be found below /root/.ros/log/2023-09-18-14-16-13-840313-5c6f4854484c-53611
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [control_node-1]: process started with pid [53642]
[INFO] [robot_manager_node-2]: process started with pid [53644]
[INFO] [robot_state_publisher-3]: process started with pid [53646]
[INFO] [spawner-4]: process started with pid [53648]
[INFO] [spawner-5]: process started with pid [53650]
[INFO] [spawner-6]: process started with pid [53652]
[INFO] [spawner-7]: process started with pid [53654]
[INFO] [spawner-8]: process started with pid [53656]
[control_node-1] [INFO] [1695046574.399726173] [resource_manager]: Loading hardware 'LBRiisy3R760'
[control_node-1] terminate called after throwing an instance of 'pluginlib::LibraryLoadException'
[control_node-1] what(): Failed to load library /custom_ws/install/kuka_rox_hw_interface/lib/kuka_rox_hw_interface/libkuka_rox_hw_interface.so. Make sure that you are calling the PLUGINLIB_EXPORT_CLASS macro in the library code, and that names are consistent between this macro and your XML. Error string: Could not load library dlopen error: libos-core-udp-communication.so: cannot open shared object file: No such file or directory, at ./src/shared_library.c:99
[robot_manager_node-2] [INFO] [1695046574.408373075] [robot_manager]: Starting Robot Manager Node init
[robot_state_publisher-3] [INFO] [1695046574.410060310] [robot_state_publisher]: got segment base
[robot_state_publisher-3] [INFO] [1695046574.411010976] [robot_state_publisher]: got segment base_link
[robot_state_publisher-3] [INFO] [1695046574.411682061] [robot_state_publisher]: got segment base_link_inertia
[robot_state_publisher-3] [INFO] [1695046574.412352606] [robot_state_publisher]: got segment flange
[robot_state_publisher-3] [INFO] [1695046574.413030209] [robot_state_publisher]: got segment link_1
[robot_manager_node-2] [INFO] [1695046574.413413854] [robot_manager]: Control mode change requested
[robot_manager_node-2] [INFO] [1695046574.413516440] [robot_manager]: Control mode change process has started
[robot_manager_node-2] [INFO] [1695046574.413538579] [robot_manager]: Successfully changed control mode to JOINT_POSITION_CONTROL
[robot_state_publisher-3] [INFO] [1695046574.414565928] [robot_state_publisher]: got segment link_2
[robot_state_publisher-3] [INFO] [1695046574.414583618] [robot_state_publisher]: got segment link_3
[robot_state_publisher-3] [INFO] [1695046574.414595747] [robot_state_publisher]: got segment link_4
[robot_state_publisher-3] [INFO] [1695046574.414606986] [robot_state_publisher]: got segment link_5
[robot_state_publisher-3] [INFO] [1695046574.414617416] [robot_state_publisher]: got segment link_6
[robot_state_publisher-3] [INFO] [1695046574.414628271] [robot_state_publisher]: got segment tool0
[ERROR] [control_node-1]: process has died [pid 53642, exit code -6, cmd '/custom_ws/install/kroshu_ros2_core/lib/kroshu_ros2_core/control_node --ros-args --params-file /tmp/launch_params_72gydy78 --params-file /custom_ws/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/ros2_controller_config.yaml'].
[spawner-4] [INFO] [1695046576.717837119] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-5] [INFO] [1695046576.728134712] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1695046576.803097720] [spawner_effort_controller]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1695046577.132476945] [spawner_joint_impedance_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [INFO] [1695046577.132582531] [spawner_control_mode_handler]: Waiting for '/controller_manager' node to exist
[spawner-4] [INFO] [1695046578.745568844] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-5] [INFO] [1695046578.755452458] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1695046578.834907075] [spawner_effort_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [INFO] [1695046579.162785457] [spawner_control_mode_handler]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1695046579.164068878] [spawner_joint_impedance_controller]: Waiting for '/controller_manager' node to exist
[spawner-4] [INFO] [1695046580.781078237] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-5] [INFO] [1695046580.791397289] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1695046580.865754205] [spawner_effort_controller]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1695046581.197786033] [spawner_joint_impedance_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [INFO] [1695046581.197796166] [spawner_control_mode_handler]: Waiting for '/controller_manager' node to exist
[spawner-4] [INFO] [1695046582.815092923] [spawner_joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-5] [INFO] [1695046582.823404779] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1695046582.898616650] [spawner_effort_controller]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1695046583.233161777] [spawner_joint_impedance_controller]: Waiting for '/controller_manager' node to exist
[spawner-8] [INFO] [1695046583.233161784] [spawner_control_mode_handler]: Waiting for '/controller_manager' node to exist
[spawner-4] [ERROR] [1695046584.848466131] [spawner_joint_state_broadcaster]: Controller manager not available
[spawner-5] [ERROR] [1695046584.855268016] [spawner_joint_trajectory_controller]: Controller manager not available
[spawner-7] [ERROR] [1695046584.924453910] [spawner_effort_controller]: Controller manager not available
[ERROR] [spawner-4]: process has died [pid 53648, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_state_broadcaster -c /controller_manager -p --inactive --ros-args'].
[ERROR] [spawner-5]: process has died [pid 53650, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_trajectory_controller -c /controller_manager -p /custom_ws/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/joint_trajectory_controller_config.yaml --inactive --ros-args'].
[ERROR] [spawner-7]: process has died [pid 53654, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner effort_controller -c /controller_manager -p /custom_ws/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/effort_controller_config.yaml --inactive --ros-args'].
[spawner-8] [ERROR] [1695046585.272609936] [spawner_control_mode_handler]: Controller manager not available
[spawner-6] [ERROR] [1695046585.273111428] [spawner_joint_impedance_controller]: Controller manager not available
[ERROR] [spawner-8]: process has died [pid 53656, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner control_mode_handler -c /controller_manager -p --inactive --ros-args'].
[ERROR] [spawner-6]: process has died [pid 53652, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_impedance_controller -c /controller_manager -p /custom_ws/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/joint_impedance_controller_config.yaml --inactive --ros-args'].
[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[robot_manager_node-2] [INFO] [1695046604.619778206] [rclcpp]: signal_handler(signum=2)
[INFO] [robot_state_publisher-3]: process has finished cleanly [pid 53646]
[INFO] [robot_manager_node-2]: process has finished cleanly [pid 53644]
[robot_state_publisher-3] [INFO] [1695046604.619803602] [rclcpp]: signal_handler(signum=2)
Output, when trying to run ros2 lifecycle set robot_manager configure
:
root@d354a4fe0b00:/custom_ws# ros2 lifecycle set robot_manager configure
Transitioning failed
[robot_manager_node-2][ERROR] [robot_manager]: Could not configure hardware interface
As you can see, the control node throws an exception when Loading the Mock library for the udp communication, which probably is the point of failure here. But when we look into the CMakeLists the library should be added.
Do you also encounter this error or have an idea how to fix it?
kind regards
Moritz
If one has to start multiple drivers for a multi-robot scenario, some of the nodes will have the same name, which will lead to undefined behaviour. To solve this:
Prequisites:
I have ROS2, and all the necessary packages from here cloned and compiled successfully.
I have all the dependencies installed correctly.
I have the KUKA iiQKA.ExternalAPI Control 1.0.3 installed on the robot.
I have installed and verified the RT kernel correctly as described here.
Problem:
Until recently I was able to connect with the robot, send commands through moveit-rviz and make the robot move.
Recently I pulled changes from all the Kroshu GitHub packages and recompiled and suddenly saw it complain about missing ExternalAPI control toolbox. I assumed this was because the external API may have been updated, so I backed up my current installation, cloned a fresh version from here, followed the instructions, and compiled it successfully. After this, I was able to colcon build successfully but started running into communication issues.
I found a very similar issue logged on the GitHub repo [here](https://github.com/kroshu/kuka_drivers/issues/150](https://github.com/kroshu/kuka_drivers/issues/150), and the developer seems to point to the externalAPI as the source of the problem.
I've raised a ticket with KUKA Global (case #: 00973371) but haven't heard back in a few days. Please help. I'm working on a very strict deadline and need to get things operational soon!
iiQKA
iiQKA.OS 1.2
1.0.3
lbr iisy 3 r760
No response
I have all the ROS2 packages installed inside ~/colcon_ws/src and the externalAPI installed at ~/
I put the robot on AUT mode and release SPOC and then on the host machine run:
ros2 launch iiqka_moveit_example moveit_planning_example.launch.py with the correct controller and client ip
I just followed the step-by-step instructions provided on the Kroshu GitHub readme and instructions provided by customer support representatives from KUKA USA to get everything set up and running.
This problem started last week out of the blue.
**_CASE 1: When configure succeeds but still can't communicate with the robot_**
[control_node-1] [INFO] [1712268704.734354956] [control_mode_handler]: Control mode changed to 1
[control_node-1] [WARN] [1712268704.734893341] [controller_manager]: Could not 'activate' controller with name 'event_broadcaster' because no controller with this name exists
[control_node-1] [ERROR] [1712268704.734946983] [controller_manager]: Aborting, no controller is switched! ('STRICT' switch)
[robot_manager_node-2] [ERROR] [1712268704.735179233] [robot_manager]: Could not activate control mode handler or event broadcaster
[control_node-1] [WARN] [1712268704.735475618] [controller_manager]: Could not 'deactivate' controller with name 'event_broadcaster' because no controller with this name exists
[control_node-1] [ERROR] [1712268704.735603469] [controller_manager]: Aborting, no controller is switched! ('STRICT' switch)
[control_node-1] [INFO] [1712268704.736181340] [resource_manager]: 'cleanup' hardware 'lbr_iisy3_r760'
[control_node-1] [INFO] [1712268704.736216757] [resource_manager]: Successful 'cleanup' of hardware 'lbr_iisy3_r760'
[robot_manager_node-2] [ERROR] [1712268704.735858614] [robot_manager]: Could not deactivate control mode handler and event broadcaster
[control_node-1] [INFO] [1712268723.019401331] [control_mode_handler]: Control mode changed to 1
[control_node-1] [INFO] [1712268723.019449171] [resource_manager]: 'configure' hardware 'lbr_iisy3_r760'
[control_node-1] [INFO] [1712268723.022803538] [KukaEACHardwareInterface]: Set QoS profile with 2 consequent and 1 packet losses allowed in 5000 milliseconds
[control_node-1] [INFO] [1712268723.022865201] [resource_manager]: Successful 'configure' of hardware 'lbr_iisy3_r760'
[control_node-1] [WARN] [1712268723.023563206] [controller_manager]: Could not 'activate' controller with name 'event_broadcaster' because no controller with this name exists
[control_node-1] [ERROR] [1712268723.023642165] [controller_manager]: Aborting, no controller is switched! ('STRICT' switch)
[robot_manager_node-2] [ERROR] [1712268723.023853978] [robot_manager]: Could not activate control mode handler or event broadcaster
[control_node-1] [WARN] [1712268723.024017142] [controller_manager]: Could not 'deactivate' controller with name 'event_broadcaster' because no controller with this name exists
[control_node-1] [ERROR] [1712268723.024057560] [controller_manager]: Aborting, no controller is switched! ('STRICT' switch)
[robot_manager_node-2] [ERROR] [1712268723.024162152] [robot_manager]: Could not deactivate control mode handler and event broadcaster
[control_node-1] [INFO] [1712268723.024301990] [resource_manager]: 'cleanup' hardware 'lbr_iisy3_r760'
[control_node-1] [INFO] [1712268723.024325660] [resource_manager]: Successful 'cleanup' of hardware 'lbr_iisy3_r760'
**_CASE 2: When configure fails_**
[control_node-1] [INFO] [1712347470.988823482] [resource_manager]: 'configure' hardware 'lbr_iisy3_r760'
[control_node-1] [INFO] [1712347470.989018744] [control_mode_handler]: Control mode changed to 1
[control_node-1] [ERROR] [1712347470.990987946] [KukaEACHardwareInterface]: QoS configuration failed, error message: failed to connect to all addresses
[control_node-1] [INFO] [1712347470.991089417] [resource_manager]: Failed to 'configure' hardware 'lbr_iisy3_r760'
[robot_manager_node-2] [ERROR] [1712347470.991469636] [robot_manager]: Could not configure hardware interface
**_Some additional recent logs:_**
[spawner-8] [INFO] [1712691090.634063134] [spawner_control_mode_handler]: Loaded control_mode_handler
[spawner-7] [FATAL] [1712691090.634563429] [spawner_effort_controller]: Failed loading controller effort_controller
[control_node-1] [INFO] [1712691090.635660190] [joint_trajectory_controller]: Controller state will be published at 50.00 Hz.
[control_node-1] [INFO] [1712691090.637709818] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[control_node-1] [INFO] [1712691090.645277838] [controller_manager]: Configuring controller 'control_mode_handler'
[control_node-1] [INFO] [1712691090.646438658] [control_mode_handler]: Control mode handler configured
[INFO] [spawner-4]: process has finished cleanly [pid 183368]
[INFO] [spawner-6]: process has finished cleanly [pid 183372]
[ERROR] [spawner-7]: process has died [pid 183374, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner effort_controller -c /controller_manager -n --inactive --ros-args'].
[INFO] [spawner-5]: process has finished cleanly [pid 183370]
[INFO] [spawner-8]: process has finished cleanly [pid 183376]
[control_node-1] [INFO] [1712691103.646620724] [control_mode_handler]: Control mode changed to 1
[control_node-1] [WARN] [1712691103.647040309] [controller_manager]: Could not 'activate' controller with name 'event_broadcaster' because no controller with this name exists
[control_node-1] [ERROR] [1712691103.647126353] [controller_manager]: Aborting, no controller is switched! ('STRICT' switch)
[robot_manager_node-2] [ERROR] [1712691103.647303042] [robot_manager]: Could not activate control mode handler or event broadcaster
[robot_manager_node-2] [ERROR] [1712691103.647635759] [robot_manager]: Could not deactivate control mode handler and event broadcaster
[control_node-1] [WARN] [1712691103.647504963] [controller_manager]: Could not 'deactivate' controller with name 'event_broadcaster' because no controller with this name exists
[control_node-1] [ERROR] [1712691103.647528412] [controller_manager]: Aborting, no controller is switched! ('STRICT' switch)
[control_node-1] [INFO] [1712691103.647895328] [resource_manager]: 'cleanup' hardware 'lbr_iisy3_r760'
[control_node-1] [INFO] [1712691103.647959225] [resource_manager]: Successful 'cleanup' of hardware 'lbr_iisy3_r760'
Cannot get communication between iiQKA and the robot driver possibly due to missing toolbox installation of ExternalAPI.Control
The documentation states as a first step to install the toolbox to the controller but the installation process is not documented and there are no results regarding the toolbox online.
Wireshark shows the traffic from the client to the controller after trying to configure the robot manager but gets no response.
Possibly the toolbox is not installed and the ports are closed.
iiQKA
KUKA Linux OS 2.0.14
iiQKA OS 1.2.6
LBR iisy R1300
master
The LBR iisy R1300 controller is freshly upgraded from the teach pendant.
Network is configured and accessible between the controller and client PC
Client is on 192.168.10.102 and controller on 192.168.10.100.
All 3 ROS2 packages are built and the external SDK is build prior to that.
The test was performed both in T1 and AUT and as User and Admin.
colcon build
source install/setup.bash
ros2 launch kuka_iiqka_eac_driver startup.launch.py client_ip:=192.168.10.102 controller_ip:=192.168.10.100
Release SPOC on Teach Pendant
ros2 lifecycle set robot_manager configure
[INFO] [launch]: All log files can be found below /home/ekampourakis/.ros/log/2024-03-13-11-24-41-600258-ekampourakis-pc-15372
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [control_node-1]: process started with pid [15385]
[INFO] [robot_manager_node-2]: process started with pid [15387]
[INFO] [robot_state_publisher-3]: process started with pid [15389]
[INFO] [spawner-4]: process started with pid [15391]
[INFO] [spawner-5]: process started with pid [15393]
[INFO] [spawner-6]: process started with pid [15395]
[INFO] [spawner-7]: process started with pid [15397]
[INFO] [spawner-8]: process started with pid [15399]
[INFO] [spawner-9]: process started with pid [15401]
[robot_manager_node-2] [INFO] [1710321881.814935552] [robot_manager]: Control mode change requested
[robot_manager_node-2] [INFO] [1710321881.814969437] [robot_manager]: Successfully changed control mode to 1
[robot_state_publisher-3] [INFO] [1710321881.817378138] [robot_state_publisher]: got segment base
[robot_state_publisher-3] [INFO] [1710321881.817417704] [robot_state_publisher]: got segment base_link
[robot_state_publisher-3] [INFO] [1710321881.817422060] [robot_state_publisher]: got segment flange
[robot_state_publisher-3] [INFO] [1710321881.817424690] [robot_state_publisher]: got segment link_1
[robot_state_publisher-3] [INFO] [1710321881.817427028] [robot_state_publisher]: got segment link_2
[robot_state_publisher-3] [INFO] [1710321881.817429247] [robot_state_publisher]: got segment link_3
[robot_state_publisher-3] [INFO] [1710321881.817431342] [robot_state_publisher]: got segment link_4
[robot_state_publisher-3] [INFO] [1710321881.817433545] [robot_state_publisher]: got segment link_5
[robot_state_publisher-3] [INFO] [1710321881.817435767] [robot_state_publisher]: got segment link_6
[robot_state_publisher-3] [INFO] [1710321881.817438102] [robot_state_publisher]: got segment tool0
[robot_state_publisher-3] [INFO] [1710321881.817440282] [robot_state_publisher]: got segment world
[control_node-1] [WARN] [1710321881.823327978] [controller_manager]: [Deprecated] Passing the robot description parameter directly to the control_manager node is deprecated. Use '~/robot_description' topic from 'robot_state_publisher' instead.
[control_node-1] [INFO] [1710321881.823503142] [resource_manager]: Loading hardware 'lbr_iisy11_r1300'
[control_node-1] [INFO] [1710321881.827741443] [resource_manager]: Initialize hardware 'lbr_iisy11_r1300'
[control_node-1] [INFO] [1710321881.827955847] [KukaEACHardwareInterface]: Init successful with controller ip: 192.168.10.100 and client ip: 192.168.10.102
[control_node-1] [INFO] [1710321881.827966065] [resource_manager]: Successful initialization of hardware 'lbr_iisy11_r1300'
[control_node-1] [INFO] [1710321881.828104522] [controller_manager]: Setting component 'lbr_iisy11_r1300' to 'unconfigured' state.
[control_node-1] [INFO] [1710321882.277147371] [controller_manager]: Loading controller 'effort_controller'
[spawner-7] [INFO] [1710321882.282809153] [spawner_effort_controller]: Loaded effort_controller
[control_node-1] [INFO] [1710321882.283082479] [controller_manager]: Configuring controller 'effort_controller'
[control_node-1] [INFO] [1710321882.283219171] [effort_controller]: configure successful
[control_node-1] got gains for joint_1 as (5.000000, 0.000000, 0.100000)
[control_node-1] got gains for joint_2 as (5.000000, 0.000000, 0.100000)
[control_node-1] got gains for joint_3 as (5.000000, 0.000000, 0.100000)
[control_node-1] got gains for joint_4 as (5.000000, 0.000000, 0.100000)
[control_node-1] got gains for joint_5 as (5.000000, 0.000000, 0.100000)
[control_node-1] got gains for joint_6 as (5.000000, 0.000000, 0.100000)
[control_node-1] [INFO] [1710321882.287311155] [controller_manager]: Loading controller 'joint_group_impedance_controller'
[control_node-1] [INFO] [1710321882.290604323] [controller_manager]: Loading controller 'event_broadcaster'
[spawner-6] [INFO] [1710321882.291083987] [spawner_joint_group_impedance_controller]: Loaded joint_group_impedance_controller
[control_node-1] [INFO] [1710321882.294587349] [controller_manager]: Configuring controller 'joint_group_impedance_controller'
[control_node-1] [INFO] [1710321882.294722745] [joint_group_impedance_controller]: configure successful
[spawner-9] [INFO] [1710321882.294743370] [spawner_event_broadcaster]: Loaded event_broadcaster
[control_node-1] [INFO] [1710321882.298595774] [controller_manager]: Loading controller 'joint_trajectory_controller'
[control_node-1] [WARN] [1710321882.301196491] [joint_trajectory_controller]: [Deprecated]: "allow_nonzero_velocity_at_trajectory_end" is set to true. The default behavior will change to false.
[control_node-1] [INFO] [1710321882.302832277] [controller_manager]: Configuring controller 'event_broadcaster'
[spawner-5] [INFO] [1710321882.302901455] [spawner_joint_trajectory_controller]: Loaded joint_trajectory_controller
[control_node-1] [INFO] [1710321882.306512800] [controller_manager]: Loading controller 'joint_state_broadcaster'
[control_node-1] [INFO] [1710321882.310543431] [controller_manager]: Loading controller 'control_mode_handler'
[spawner-4] [INFO] [1710321882.311023391] [spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
[control_node-1] [INFO] [1710321882.314485137] [controller_manager]: Configuring controller 'joint_trajectory_controller'
[control_node-1] [INFO] [1710321882.314569534] [joint_trajectory_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
[control_node-1] [INFO] [1710321882.314579151] [joint_trajectory_controller]: Command interfaces are [position] and state interfaces are [position].
[control_node-1] [INFO] [1710321882.314584101] [joint_trajectory_controller]: Using 'splines' interpolation method.
[spawner-8] [INFO] [1710321882.314874339] [spawner_control_mode_handler]: Loaded control_mode_handler
[control_node-1] [INFO] [1710321882.314883357] [joint_trajectory_controller]: Controller state will be published at 50.00 Hz.
[control_node-1] [INFO] [1710321882.315850127] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[control_node-1] [INFO] [1710321882.318542760] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[control_node-1] [INFO] [1710321882.318569939] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[control_node-1] [INFO] [1710321882.322498885] [controller_manager]: Configuring controller 'control_mode_handler'
[control_node-1] [INFO] [1710321882.323566965] [control_mode_handler]: Control mode handler configured
[INFO] [spawner-7]: process has finished cleanly [pid 15397]
[INFO] [spawner-6]: process has finished cleanly [pid 15395]
[INFO] [spawner-4]: process has finished cleanly [pid 15391]
[INFO] [spawner-8]: process has finished cleanly [pid 15399]
[INFO] [spawner-5]: process has finished cleanly [pid 15393]
[INFO] [spawner-9]: process has finished cleanly [pid 15401]
[control_node-1] [INFO] [1710322015.382291688] [resource_manager]: 'configure' hardware 'lbr_iisy11_r1300'
[control_node-1] [INFO] [1710322015.382369347] [control_mode_handler]: Control mode changed to 1
[robot_manager_node-2] [ERROR] [1710322017.382186975] [robot_manager]: Could not configure hardware interface
[control_node-1] [ERROR] [1710322035.383135890] [KukaEACHardwareInterface]: QoS configuration failed, error message: failed to connect to all addresses
[control_node-1] [INFO] [1710322035.383167251] [resource_manager]: Failed to 'configure' hardware 'lbr_iisy11_r1300'
With the new repository structure it should be checked if the configuration files are still correct and updated if not. It looks like industrial-ci is building all packages found in the repository, so the pipeline should work (once the linter issues are solved), but the sonar-cloud analysis definitely won't.
I think should find a solution to handle the packages in sonar-cloud as individual projects, and maybe even configure the pipeline so that only those packages are being built and tested that contain changes.
This bug is related to the ros2_control integration on branch feature/ros2_control
Activation of the driver is successful, but if one deactivates the system and tries to activate it again, the starting of FRI fails
Log outputs
ROS2 terminal:
[sunrise_control_node-1] [ERROR] [KUKAFRIHardwareInterface]: Failed to read data from controller
[robot_manager_node-2] [ERROR] [robot_manager]: Could not start FRI
SmartPad:
FRI-Session could not be established.
Steps to reproduce
Start driver, configure, activate, deactivate and activate again:
ros2 launch kuka_sunrise kuka_sunrise_control.launch.py
ros2 lifecycle set robot_manager configure
ros2 lifecycle set robot_manager activate
ros2 lifecycle set robot_manager deactivate
ros2 lifecycle set robot_manager activate
However, if one cleans up the manager node and configures it again, reactivation is successful
Error from fri client lib: "Error: incompatible IDs for received message"
The de-facto control framework for ROS is ros_control, which is currently being ported to ROS2. A detailed reasoning should be provided why nodes are created for the driver instead of just implementing a hardware interface so that the robot can be used with ros2_control.
Hi,
I am currently trying to build your fri package, however I am having issues with the required nanopb dependency. Could you advise on the correct installation procedure of nanopb in order for your cmake file to discover everything that's needed?
Thanks,
Jeffrey
Currently only the joint position command mode is tested, although implementation is done for torque command mode and for reading and writing I/O vales of FRI. These should be tested too, and improved, if necessary
Testing torque command mode:
Testing I/O-s:
A controller should be implemented, which can change the control mode of a hardware interface in inactive state
perform_command_mode_switch
feature of ros2_control
should be considered to clean up control mode hanling
Using the is_configured flag in the sunrise control node and configuring the robot manager stops all controller manager interfaces: controller activation fails, requests from ros2 control CLI are not responding.
(is_configured flag is used to sleep in control loop if read-write methods are not call in unconfigured state)
Workaround available on master
This issue is related to the ros2_control integration on branch feature/ros2_control
Starting the driver and activating control requires stable connection between robot controller and client application. In most cases the hardware_interface is able to fulfill requirements (quality is usually EXCELLENT), but sporadically quality worsens and control mode is stopped. This issue comes forth more frequently, if the cycle time (send_period_ms parameter) is smaller.
Driver with original implementation is stable with cycle times above 1 ms, with 1 ms cycle time it can stop after a few seconds. New implementation can run for longer times with even 1 ms cycle time, but it is unstable on every frequency.
To be investigated:
Industrial CI also runs on GitHub actions. Main reason to consider switching: Travis-CI does not support skipping builds if only certain files or directories have changed (travis-ci/travis-ci#6301). This would be quite relevant for the documentation folder - it makes no sense to trigger a build when updating it.
All ROS2 packages and other code (e.g. Sunrise Project) should be located in the same repository. For a reference, see the motoman driver. Inside the repository, the ros2_ prefixes could be then also removed.
Proposed structure:
Hello,
I have a problem starting the ros2 driver when working with an iiwa robot. Is this a way to get some support on this? If not, just let me know.
Setup:
ros2 humble (current)
ros2_kuka_drivers v0.0.2-402-gf93987c
FRI 1.15 on iiwa 14 R820
I'm able to run FRI Demo applications, e.g. "JointSineOverlay" .
To reproduce the bug, first I start the different control nodes like this:
> ros2 launch kuka_sunrise lbr_iiwa7_control.launch.py
Trigger configuration
> ros2 lifecycle set /robot_manager configure
Transitioning failed
Output of ros2 launch
[control_node-1] [INFO] [1691617776.610808798] [resource_manager]: 'configure' hardware 'iiwa_hardware'
[control_node-1] [INFO] [1691617776.610896167] [resource_manager]: Successful 'configure' of hardware 'iiwa_hardware'
[robot_manager_node-2] [INFO] [1691617776.616033648] [robot_manager]: Successfully set 'controller_ip' parameter
[robot_manager_node-2] Request timed out
[robot_manager_node-2] [ERROR] [1691617779.616487786] [robot_manager]: Could not start controllers
[robot_manager_node-2] [INFO] [1691617779.618349611] [robot_manager]: Successfully connected to FRI
[robot_manager_node-2] Request timed out
[robot_manager_node-2] [ERROR] [1691617781.619562099] [robot_manager]: Could not stop controllers
On the smartPAD the output is:
Waiting for connection...
Connection established.
New data received: 01, [B@83969e
Command received: CONNECT
Command executed.
New data received: 02, [B@1159092
Command receivda?: DISCONNECT
Command executed.
Error: connection lost. FRI ended.
Waiting for connection...
I've investigate in the source why this happens. Right now it is not clear to me why the controller sends DISCONNECT.
The node sending the commands to the sunrise driver must have a few members and functions, which are necessary for proper functioning:
A base class with some pure virtual functions should be implemented, which contains these must-have functionalities
initialisation works and robot shows up in rviz with the angles of the real robot but then the comunication stops immediatly after that
[control_node-1] [INFO] [1695728579.810712266] [UDPServer]: 192.168.1.140: 49152
[control_node-1] [INFO] [1695728579.810831246] [KukaRSIHardwareInterface]: Connecting to robot . . .
[control_node-1] [INFO] [1695728585.019093222] [KukaRSIHardwareInterface]: Got data from robot
[control_node-1] [INFO] [1695728585.019692347] [KukaRSIHardwareInterface]: System Successfully started!
[control_node-1] [INFO] [1695728585.019737103] [resource_manager]: Successful 'activate' of hardware 'kr6_r700_sixx'
[control_node-1] [ERROR] [1695728586.022863020] [KukaRSIHardwareInterface]: No data received from robot
I got RSI 3.2 on my KUKA
KSS 8.3.528
Here is my Config:
When activating the system manager, sporadically a log message is seen about stopping the monitoring loop. In these cases this message does not show by deactivation, so the monitoring loop is stopped at its first tick.
Possible reason:
the loop is created on a new thread in the on_activate function of the system_manager (at system_manager.cpp L174), as one of the last steps of the activation. The loop terminates if the system manager node is not active, so if the condition is evaluated before the activation finishes, it terminates immediately.
Proposed solution:
use a mutex to wait for finished activation
Logs:
[robot_control_node-2] LBRiiwaClient state changed from 0 to 1
[robot_control_node-2] LBRiiwaClient state changed from 1 to 2
[system_manager-3] [WARN] [system_manager]: Stopping monitoring loop
[robot_control_node-2] LBRiiwaClient state changed from 2 to 3
[robot_control_node-2] LBRiiwaClient state changed from 3 to 4
[----------deactivating----------]
[robot_control_node-2] LBRiiwaClient state changed from 4 to 2
[robot_control_node-2] LBRiiwaClient state changed from 2 to 0
Documentation should contain:
This is the follow-up issue for #90. Task is to create a more finetuned solution for initial control mode change, with changing the controller handler too.
When I took a look at the sonar issues, I realized that we have the ROS2BaseClass class in this repo, which we don't use here at the moment. We could benefit from it, e.g. it would reduce code duplication and introduce greater modularity. I'll take a look at it and give it a go on a separate branch.
Hi! I am trying to build the project in order to control a KUKA KR4 robotic arm. Following the instructions in the readme the colcon build
command gave me the following error:
In file included from /home/uriel/ws_moveit/src/kuka_drivers/examples/iiqka_moveit_example/src/MoveitCollisionAvoidanceExample.cpp:18:
/home/uriel/ws_moveit/src/kuka_drivers/examples/iiqka_moveit_example/include/iiqka_moveit_example/moveit_example.hpp: In member function ‘moveit_msgs::msg::RobotTrajectory_<std::allocator<void> >::SharedPtr MoveitExample::planToPoint(const Isometry3d&, const string&, const string&)’:
/home/uriel/ws_moveit/src/kuka_drivers/examples/iiqka_moveit_example/include/iiqka_moveit_example/moveit_example.hpp:109:71: error: ‘struct moveit::planning_interface::MoveGroupInterface::Plan’ has no member named ‘trajectory_’; did you mean ‘trajectory’?
109 | return std::make_shared<moveit_msgs::msg::RobotTrajectory>(plan.trajectory_);
| ^~~~~~~~~~~
| trajectory
Changing trajectory_
to trajectory
in lines 109, 125 and 150 seems to fix the issue and the build finishes successfully. I'm not a very experienced ROS user and I don't know if this is an actual fix or if the error was somewhere else.
I'm writing this issue to see if you can help me find out which is the case. Thanks in advance and apologies in case this is not the way to proceed.
I want to integrate pilz planner into the launch file for the RSI HW Interface.
How can this be added ?
There is currently no public documentation on the usage of the driver. Add minimal documentation describing the architecture, system setup and a quick-start guide.
Proposal: create a doc folder with Markdown files that are then exported to the repository Wiki using the GitHub action wiki-page-creator-action
Relevant Info:
Issue:
Trying to follow readme https://github.com/kroshu/ros2_kuka_drivers/wiki. The error appears in the life cycle management, when executing the command:
ros2 lifecycle set robot_manager configure
No hardware is involved. Appears for both torque and position interface.
Log:
1678376094.9377315 [INFO] [launch]: All log files can be found below /home/ros2/.ros/log/2023-03-09-16-34-54-937012-ros2-Precision-Tower-5810-20489
1678376094.9379082 [INFO] [launch]: Default logging verbosity is set to INFO
1678376095.3964398 [INFO] [rox_control_node-1]: process started with pid [20503]
1678376095.3967752 [INFO] [robot_manager_node-2]: process started with pid [20505]
1678376095.3969758 [INFO] [robot_state_publisher-3]: process started with pid [20507]
1678376095.3971589 [INFO] [spawner-4]: process started with pid [20509]
1678376095.3973446 [INFO] [spawner-5]: process started with pid [20511]
1678376095.3975382 [INFO] [spawner-6]: process started with pid [20513]
1678376095.3977170 [INFO] [spawner-7]: process started with pid [20515]
1678376095.4304569 [rox_control_node-1] [INFO] [1678376095.430076332] [resource_manager]: Loading hardware 'iisy_hardware'
1678376095.4364066 [robot_state_publisher-3] [INFO] [1678376095.435909475] [robot_state_publisher]: got segment LBR3R760_iisy_axis1
1678376095.4366567 [robot_state_publisher-3] [INFO] [1678376095.436030796] [robot_state_publisher]: got segment LBR3R760_iisy_axis2
1678376095.4367929 [robot_state_publisher-3] [INFO] [1678376095.436048584] [robot_state_publisher]: got segment LBR3R760_iisy_axis3
1678376095.4369311 [robot_state_publisher-3] [INFO] [1678376095.436057980] [robot_state_publisher]: got segment LBR3R760_iisy_axis4
1678376095.4370553 [robot_state_publisher-3] [INFO] [1678376095.436066488] [robot_state_publisher]: got segment LBR3R760_iisy_axis5
1678376095.4371786 [robot_state_publisher-3] [INFO] [1678376095.436074846] [robot_state_publisher]: got segment LBR3R760_iisy_axis6
1678376095.4373093 [robot_state_publisher-3] [INFO] [1678376095.436083197] [robot_state_publisher]: got segment LBR3R760_iisy_fixedbase
1678376095.4374912 [robot_state_publisher-3] [INFO] [1678376095.436091720] [robot_state_publisher]: got segment LBR3R760_iisy_flange
1678376095.4377170 [robot_state_publisher-3] [INFO] [1678376095.436100070] [robot_state_publisher]: got segment base_link
1678376095.4441547 [robot_manager_node-2] [INFO] [1678376095.443825865] [robot_manager]: Starting Robot Manager Node init
1678376095.4446981 [rox_control_node-1] [INFO] [1678376095.444162690] [resource_manager]: Initialize hardware 'iisy_hardware'
1678376095.4454660 [rox_control_node-1] [INFO] [1678376095.445255036] [KukaRoXHardwareInterface]: Init successful
1678376095.4456372 [rox_control_node-1] [INFO] [1678376095.445277722] [resource_manager]: Successful initialization of hardware 'iisy_hardware'
1678376095.4460344 [rox_control_node-1] [INFO] [1678376095.445288258] [KukaRoXHardwareInterface]: Export state interfaces
1678376095.4463315 [rox_control_node-1] [INFO] [1678376095.445393494] [KukaRoXHardwareInterface]: Export command interfaces
1678376095.4465237 [rox_control_node-1] [INFO] [1678376095.445544403] [resource_manager]: Hardware Component with name '' does not exists
1678376095.4470041 [robot_manager_node-2] [INFO] [1678376095.446758321] [robot_manager]: Control mode changed to POSITION_CONTROL
1678376095.4473732 [robot_manager_node-2] [INFO] [1678376095.446975492] [robot_manager]: IP address of controller: 0.0.0.0
1678376095.7861826 [rox_control_node-1] [INFO] [1678376095.784359823] [controller_manager]: Loading controller 'joint_impedance_controller'
1678376095.7997952 [rox_control_node-1] [INFO] [1678376095.799545779] [controller_manager]: Loading controller 'joint_state_broadcaster'
1678376095.8100915 [spawner-5] [INFO] [1678376095.809854318] [spawner_joint_impedance_controller]: �[94mLoaded �[1mjoint_impedance_controller�[0m
1678376095.8257384 [spawner-6] [INFO] [1678376095.825405834] [spawner_joint_state_broadcaster]: �[94mLoaded �[1mjoint_state_broadcaster�[0m
1678376095.8272803 [rox_control_node-1] [INFO] [1678376095.827105517] [controller_manager]: Configuring controller 'joint_state_broadcaster'
1678376095.8275547 [rox_control_node-1] [INFO] [1678376095.827242192] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
1678376095.8940248 [spawner-5] [INFO] [1678376095.893787919] [spawner_joint_impedance_controller]: �[96mLoaded parameters file "/home/ros2/ws_spirit/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/joint_impedance_controller_config.yaml" for �[1mjoint_impedance_controller�[0m
1678376095.8943746 [spawner-5] [INFO] [1678376095.894141864] [spawner_joint_impedance_controller]: Loaded /home/ros2/ws_spirit/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/joint_impedance_controller_config.yaml into joint_impedance_controller
1678376095.8950522 [rox_control_node-1] [INFO] [1678376095.894917865] [controller_manager]: Configuring controller 'joint_impedance_controller'
1678376095.8974588 [spawner-5] Set parameter joints successful
1678376095.9738901 [INFO] [spawner-6]: process has finished cleanly [pid 20513]
1678376096.0183399 [rox_control_node-1] [INFO] [1678376096.018006449] [controller_manager]: Loading controller 'effort_controller'
1678376096.0247312 [spawner-7] [INFO] [1678376096.024540409] [spawner_effort_controller]: �[94mLoaded �[1meffort_controller�[0m
1678376096.0320768 [spawner-7] [INFO] [1678376096.031883254] [spawner_effort_controller]: �[96mLoaded parameters file "/home/ros2/ws_spirit/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/effort_controller_config.yaml" for �[1meffort_controller�[0m
1678376096.0324244 [spawner-7] [INFO] [1678376096.032213767] [spawner_effort_controller]: Loaded /home/ros2/ws_spirit/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/effort_controller_config.yaml into effort_controller
1678376096.0330479 [rox_control_node-1] [INFO] [1678376096.032885108] [controller_manager]: Configuring controller 'effort_controller'
1678376096.0335348 [rox_control_node-1] [INFO] [1678376096.033365241] [effort_controller]: configure successful
1678376096.0339060 [rox_control_node-1] got gains for joint_a1 as (5.000000, 0.000000, 0.100000)
1678376096.0340159 [rox_control_node-1] got gains for joint_a2 as (5.000000, 0.000000, 0.100000)
1678376096.0341234 [rox_control_node-1] got gains for joint_a3 as (5.000000, 0.000000, 0.100000)
1678376096.0342226 [rox_control_node-1] got gains for joint_a4 as (5.000000, 0.000000, 0.100000)
1678376096.0343087 [rox_control_node-1] got gains for joint_a5 as (5.000000, 0.000000, 0.100000)
1678376096.0343895 [rox_control_node-1] got gains for joint_a6 as (5.000000, 0.000000, 0.100000)
1678376096.0348134 [spawner-7] Set parameter joints successful
1678376096.0348995 [spawner-7] Set parameter gains.joint_a1.p successful
1678376096.0349646 [spawner-7] Set parameter gains.joint_a1.i successful
1678376096.0350225 [spawner-7] Set parameter gains.joint_a1.d successful
1678376096.0350804 [spawner-7] Set parameter gains.joint_a2.p successful
1678376096.0351362 [spawner-7] Set parameter gains.joint_a2.i successful
1678376096.0351901 [spawner-7] Set parameter gains.joint_a2.d successful
1678376096.0352433 [spawner-7] Set parameter gains.joint_a3.p successful
1678376096.0352964 [spawner-7] Set parameter gains.joint_a3.i successful
1678376096.0353498 [spawner-7] Set parameter gains.joint_a3.d successful
1678376096.0354033 [spawner-7] Set parameter gains.joint_a4.p successful
1678376096.0354564 [spawner-7] Set parameter gains.joint_a4.i successful
1678376096.0355091 [spawner-7] Set parameter gains.joint_a4.d successful
1678376096.0355620 [spawner-7] Set parameter gains.joint_a5.p successful
1678376096.0356154 [spawner-7] Set parameter gains.joint_a5.i successful
1678376096.0356700 [spawner-7] Set parameter gains.joint_a5.d successful
1678376096.0357244 [spawner-7] Set parameter gains.joint_a6.p successful
1678376096.0357773 [spawner-7] Set parameter gains.joint_a6.i successful
1678376096.0358300 [spawner-7] Set parameter gains.joint_a6.d successful
1678376096.0362647 [rox_control_node-1] [INFO] [1678376096.035078196] [controller_manager]: Loading controller 'joint_trajectory_controller'
1678376096.0377002 [INFO] [spawner-5]: process has finished cleanly [pid 20511]
1678376096.0449889 [spawner-4] [INFO] [1678376096.044517753] [spawner_joint_trajectory_controller]: �[94mLoaded �[1mjoint_trajectory_controller�[0m
1678376096.0503695 [spawner-4] [INFO] [1678376096.050110692] [spawner_joint_trajectory_controller]: �[96mLoaded parameters file "/home/ros2/ws_spirit/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/joint_trajectory_controller_config.yaml" for �[1mjoint_trajectory_controller�[0m
1678376096.0507314 [spawner-4] [INFO] [1678376096.050452283] [spawner_joint_trajectory_controller]: Loaded /home/ros2/ws_spirit/install/kuka_rox_hw_interface/share/kuka_rox_hw_interface/config/joint_trajectory_controller_config.yaml into joint_trajectory_controller
1678376096.0520666 [rox_control_node-1] [INFO] [1678376096.051793678] [controller_manager]: Configuring controller 'joint_trajectory_controller'
1678376096.0575621 [rox_control_node-1] [INFO] [1678376096.057280263] [joint_trajectory_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
1678376096.0579619 [rox_control_node-1] [INFO] [1678376096.057560475] [joint_trajectory_controller]: Command interfaces are [position] and state interfaces are [position].
1678376096.0580404 [rox_control_node-1] [INFO] [1678376096.057682009] [joint_trajectory_controller]: Using 'splines' interpolation method.
1678376096.0619559 [rox_control_node-1] [INFO] [1678376096.061357064] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
1678376096.0662417 [spawner-4] Set parameter joints successful
1678376096.0663369 [spawner-4] Set parameter command_interfaces successful
1678376096.0663784 [spawner-4] Set parameter state_interfaces successful
1678376096.0664136 [spawner-4] Set parameter state_publish_rate successful
1678376096.0664463 [spawner-4] Set parameter action_monitor_rate successful
1678376096.1906300 [INFO] [spawner-7]: process has finished cleanly [pid 20515]
1678376096.2113073 [INFO] [spawner-4]: process has finished cleanly [pid 20509]
1678376106.6389141 [rox_control_node-1] [INFO] [1678376106.637892812] [resource_manager]: 'configure' hardware 'iisy_hardware'
1678376106.6394484 [rox_control_node-1] [ERROR] [1678376106.638781104] [KukaRoXHardwareInterface]: SetQoSProfile failed
1678376106.6405642 [rox_control_node-1] [INFO] [1678376106.638840063] [resource_manager]: Failed to 'configure' hardware 'iisy_hardware'
1678376106.6409507 [robot_manager_node-2] [ERROR] [1678376106.639119470] [robot_manager]: Could not configure hardware interface
1678376108.7426581 [rox_control_node-1] [INFO] [1678376108.741051418] [resource_manager]: 'configure' hardware 'iisy_hardware'
1678376108.7431395 [rox_control_node-1] [ERROR] [1678376108.741319842] [KukaRoXHardwareInterface]: SetQoSProfile failed
1678376108.7432718 [rox_control_node-1] [INFO] [1678376108.741348443] [resource_manager]: Failed to 'configure' hardware 'iisy_hardware'
1678376108.7435489 [robot_manager_node-2] [ERROR] [1678376108.741479164] [robot_manager]: Could not configure hardware interface
1678376113.8028290 [WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
1678376114.7504675 [robot_manager_node-2] [INFO] [1678376113.802577929] [rclcpp]: signal_handler(signum=2)
1678376114.7506933 [INFO] [robot_state_publisher-3]: process has finished cleanly [pid 20507]
1678376114.7508323 [INFO] [robot_manager_node-2]: process has finished cleanly [pid 20505]
1678376114.7509809 [INFO] [rox_control_node-1]: process has finished cleanly [pid 20503]
1678376114.7512724 [robot_state_publisher-3] [INFO] [1678376113.802612500] [rclcpp]: signal_handler(signum=2)
1678376114.7515290 [rox_control_node-1] [INFO] [1678376113.802612543] [rclcpp]: signal_handler(signum=2)
More information can be provided.
In the wiki of iiQKA_EAC there are 3 broken links that should send the reader to the configuration files of:
If the documentation is open locally, this error does not happen since the path to the file is relative to the file itself (iiQKA_EAC.md). However, such a relative path is broken if opened from the Wiki in Git Hub.
Unfortunately, Git Hub does not allow pull requests limited to the Wiki. Therefore, I made a fork of the repo at the following link, where I fixed the path of the three files.
I hope it helps,
Niccolo
No response
None
None
None
No response
None
None
No response
When activating only the 2 driver nodes, the monitoring mode is activated on the robot controller, but the activate() function of the RobotObserver class is not called, therefore the publisher is not activated and the joint states are not sent to the ROS2 side
Besides, the ConfigurationManager contains two client requests to sync the receive_multiplier and the send_period parameters with the joint_controller, which is not available with only the 2 drivers started, so configuration fails
Solution proposal:
Cartesian position and wrench control are supported by FRI, but not by our driver, these functionalities should be added -> also to the application running on the controller
If the START_FRI command fails, the driver tries to transition back to inactive state, which means joining the client_app_thread_ of the robot_control_node. In this specific case, the thread blocks at the following command:
success = client_application_->step();
Reason:
The robot_control_node is activated before the starting of FRI, so the loop of the client app starts, but FRI is not started, therefore the step() function blocks forever, the loop condition is not tested again.
Possible solutions:
Hi @Svastits,
I'm currently using kuka_drivers/iiqka_moveit_example/moveit_planning_example.launch.py with use_fake_hardware:=true.
I'm able to launch successfully, see the robot with the tf frames after I do configure and activate and plan and execute motions within moveit2-rviz.
The problem begins when I start trying to programmatically plan motions. Every time I run my node, I see this warning:
[WARN] [1716557929.990758924] [moveit_ros.robot_model_loader]: No kinematics plugins defined. Fill and load kinematics.yaml!
and eventually, it just times out and fails to plan:
[ERROR] [1716559618.572070969] [move_group_interface]: MoveGroupInterface::plan() failed or timeout reached
[ERROR] [1716559618.572111417] [first_test]: Planning failed!
I have tried many different poses and tried giving it more time to plan, etc. This is what my code looks like:
int main(int argc, char *argv[]) {
// Initialize ROS and create the Node
rclcpp::init(argc, argv);
auto const node = std::make_shared<rclcpp::Node>(
"first_test",
rclcpp::NodeOptions().automatically_declare_parameters_from_overrides(
true));
// We spin up a SingleThreadedExecutor for the current state monitor to get information
// about the robot's state.
rclcpp::executors::SingleThreadedExecutor executor;
executor.add_node(node);
std::thread([&executor]() { executor.spin(); }).detach();
// Create a ROS logger
auto const logger = rclcpp::get_logger("first_test");
static const std::string PLANNING_GROUP = "manipulator";
// Create the MoveIt MoveGroup Interface
using moveit::planning_interface::MoveGroupInterface;
auto move_group = MoveGroupInterface(node, PLANNING_GROUP);
// Create planning request using RRTConnectkConfigDefault motion planner
move_group.setPlanningPipelineId("ompl");
move_group.setPlannerId("RRTConnectkConfigDefault");
std::copy(move_group.getJointModelGroupNames().begin(), move_group.getJointModelGroupNames().end(),
std::ostream_iterator<std::string>(std::cout, ", "));
moveit::core::RobotState start_state(*move_group.getCurrentState());
// Set a target Pose
// 0.387434 -0.022426 0.320466 0.038751 0.996789 -0.019382 0.067334
auto const target_pose = [] {
geometry_msgs::msg::Pose msg;
msg.orientation.x = 0.38751;
msg.orientation.y = 0.996789;
msg.orientation.z = -0.019382;
msg.orientation.w = 0.067334;
msg.position.x = 0.3874;
msg.position.y = -0.022426;
msg.position.z = 0.3205;
return msg;
}();
move_group.setStartState(start_state);
move_group.setPoseTarget(target_pose);
move_group.setPlanningTime(20.0);
// Create a plan to that target pose
auto const [success, plan] = [&move_group] {
moveit::planning_interface::MoveGroupInterface::Plan msg;
auto const ok = static_cast<bool>(move_group.plan(msg));
return std::make_pair(ok, msg);
}();
// Execute the plan
if (success) {
move_group.execute(plan);
} else {
RCLCPP_ERROR(logger, "Planning failed!");
}
// print current pose
geometry_msgs::msg::Pose current_pose = move_group.getCurrentPose().pose;
// Print the current pose of the end effector
RCLCPP_INFO(node->get_logger(), "Current pose: %f %f %f %f %f %f %f",
current_pose.position.x,
current_pose.position.y,
current_pose.position.z,
current_pose.orientation.x,
current_pose.orientation.y,
current_pose.orientation.z,
current_pose.orientation.w);
// Shutdown ROS
rclcpp::shutdown();
return 0;
}
As you can see, it is quite simple and straightforward. I see that the kinematics.yaml is present here and being loaded into rosparam here. However, when I do:
ros2 param get /move_group manipulator.kinematics_solver
It is empty, while:
ros2 param get /move_group robot_description_kinematics.manipulator.kinematics_solver
Shows the correct KDL kinematics solver. Shouldn't the /move_group manipulator.kinematics_solver also be loaded correctly?
Am I missing something? Please help! Thanks.
iiQKA
iiQKA.OS 1.2
1.0.3
lbr iisy 3 r760
No response
N/A.
N/A.
No response
The hardware IF currently does not have stiffness and damping interfaces.
The manager node's control mode and command mode parameters could also be combined
The autonomous KMR iiwa robot is HRC-capable and mobile. It combines the strengths of the sensitive LBR iiwa lightweight robot with those of a mobile, autonomous platform.
I'm wondering if it's possible to add support for the KMR iiwa omnimove LBR iiwa 14 R820.
Thanks so much.
create a class that handles active controllers, at control mode change tells witch controller need to be activated and deactivated.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.