Error with controller manager and robot state publisher
Hi everyone,
i've written a custom gripper for a robot. That gripper should be simulated in Gazebo as a standalone robot. when i try to launch it i get the following error n my terminal:
ubuntu@ubuntu:~/Schreibtisch/ros2_ws$ ros2 launch gripper gripper_controller_gazebo.launch.py
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-06-03-11-04-19-541755-ubuntu-5733
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [robot_state_publisher-1]: process started with pid [5734]
[INFO] [gzserver-2]: process started with pid [5736]
[INFO] [gzclient-3]: process started with pid [5738]
[INFO] [spawn_entity.py-4]: process started with pid [5740]
[INFO] [spawner-5]: process started with pid [5742]
[INFO] [spawner-6]: process started with pid [5744]
[INFO] [spawner-7]: process started with pid [5746]
[robot_state_publisher-1] [INFO] [1685783064.399955871] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1685783064.400175747] [robot_state_publisher]: got segment connector_link
[robot_state_publisher-1] [INFO] [1685783064.400219127] [robot_state_publisher]: got segment driver_link
[robot_state_publisher-1] [INFO] [1685783064.400253561] [robot_state_publisher]: got segment finger1_link
[robot_state_publisher-1] [INFO] [1685783064.400286777] [robot_state_publisher]: got segment finger2_link
[spawn_entity.py-4] [INFO] [1685783065.940696313] [spawn_entity]: Spawn Entity started
[spawn_entity.py-4] [INFO] [1685783065.941259032] [spawn_entity]: Loading entity published on topic robot_description
[spawn_entity.py-4] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/qos.py:307: UserWarning: DurabilityPolicy.RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL is deprecated. Use DurabilityPolicy.TRANSIENT_LOCAL instead.
[spawn_entity.py-4] warnings.warn(
[spawn_entity.py-4] [INFO] [1685783066.049540305] [spawn_entity]: Waiting for entity xml on robot_description
[spawn_entity.py-4] [INFO] [1685783066.067214473] [spawn_entity]: Waiting for service /spawn_entity, timeout = 30
[spawn_entity.py-4] [INFO] [1685783066.072217687] [spawn_entity]: Waiting for service /spawn_entity
[spawner-5] [INFO] [1685783067.514176480] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1685783067.521886810] [joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1685783067.524479471] [joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawner-5] [INFO] [1685783069.540250435] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1685783069.554169875] [joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1685783069.561817351] [joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[spawn_entity.py-4] [INFO] [1685783069.773621661] [spawn_entity]: Calling service /spawn_entity
[spawn_entity.py-4] [INFO] [1685783070.189496616] [spawn_entity]: Spawn status: SpawnEntity: Successfully spawned entity [gripper]
[INFO] [spawn_entity.py-4]: process has finished cleanly [pid 5740]
[gzserver-2] [INFO] [1685783070.426869626] [gazebo_ros2_control]: Loading gazebo_ros2_control plugin
[gzserver-2] [INFO] [1685783070.449198882] [gripper.gazebo_ros2_control]: Starting gazebo_ros2_control plugin in namespace: /gripper
[gzserver-2] [INFO] [1685783070.451217958] [gripper.gazebo_ros2_control]: Starting gazebo_ros2_control plugin in ros 2 node: gazebo_ros2_control
[gzserver-2] [INFO] [1685783070.451350135] [gripper.gazebo_ros2_control]: Loading parameter files /home/ubuntu/Schreibtisch/ros2_ws/install/gripper/share/gripper/config/config.yaml
[gzserver-2] [ERROR] [1685783070.969111406] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783071.469361592] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[spawner-5] [INFO] [1685783071.568533900] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1685783071.579023209] [joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1685783071.588869633] [joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[gzserver-2] [ERROR] [1685783071.969700154] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783072.470311353] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783072.970666073] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783073.470954246] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[spawner-5] [INFO] [1685783073.600749009] [spawner_joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-7] [INFO] [1685783073.612480444] [joint_trajectory_controller]: Waiting for '/controller_manager' node to exist
[spawner-6] [INFO] [1685783073.621440337] [joint_state_broadcaster]: Waiting for '/controller_manager' node to exist
[gzserver-2] [ERROR] [1685783073.971311461] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783074.471832924] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783074.972384451] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[spawner-5] [ERROR] [1685783075.433777766] [spawner_joint_trajectory_controller]: Controller manager not available
[spawner-7] [ERROR] [1685783075.452069840] [joint_trajectory_controller]: Controller manager not available
[spawner-6] [ERROR] [1685783075.456688511] [joint_state_broadcaster]: Controller manager not available
[gzserver-2] [ERROR] [1685783075.472744721] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[ERROR] [spawner-5]: process has died [pid 5742, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_trajectory_controller --controller-manager /controller_manager --ros-args'].
[ERROR] [spawner-7]: process has died [pid 5746, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_trajectory_controller --controller-manager /controller_manager --ros-args -r __node:=joint_trajectory_controller'].
[ERROR] [spawner-6]: process has died [pid 5744, exit code 1, cmd '/opt/ros/humble/lib/controller_manager/spawner joint_state_broadcaster --controller-manager /controller_manager --ros-args -r __node:=joint_state_broadcaster'].
[gzserver-2] [ERROR] [1685783075.973029970] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783076.473317749] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783076.973661914] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783077.474002921] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783077.974261042] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783078.474575238] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[robot_state_publisher-1] [INFO] [1685783078.845274657] [rclcpp]: signal_handler(signum=2)
[gzserver-2] [ERROR] [1685783078.974885472] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[INFO] [robot_state_publisher-1]: process has finished cleanly [pid 5734]
[gzserver-2] [ERROR] [1685783079.475199047] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[INFO] [gzclient-3]: process has finished cleanly [pid 5738]
[gzserver-2] [ERROR] [1685783079.975580065] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783080.475928548] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783080.976395092] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783081.477056638] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783081.977370293] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783082.477766872] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783082.978243371] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[gzserver-2] [ERROR] [1685783083.478755197] [gripper.gazebo_ros2_control]: robot_state_publisher service not available, waiting again...
[ERROR] [gzserver-2]: process[gzserver-2] failed to terminate '5' seconds after receiving 'SIGINT', escalating to 'SIGTERM'
[INFO] [gzserver-2]: sending signal 'SIGTERM' to process[gzserver-2]
[gzserver-2] [INFO] [1685783083.862144977] [rclcpp]: signal_handler(signum=15)
[gzserver-2] [ERROR] [1685783083.863249426] [gripper.gazebo_ros2_control]: Interrupted while waiting for robot_state_publisher service. Exiting.
[gzserver-2]
[gzserver-2] >>> [rcutils|error_handling.c:108] rcutils_set_error_state()
[gzserver-2] This error state is being overwritten:
[gzserver-2]
[gzserver-2] 'rcl node's context is invalid, at ./src/rcl/node.c:428'
[gzserver-2]
[gzserver-2] with this new error message:
[gzserver-2]
[gzserver-2] 'publisher's context is invalid, at ./src/rcl/publisher.c:389'
[gzserver-2]
[gzserver-2] rcutils_reset_error() should be called after error handling to avoid this.
[gzserver-2] <<<
[gzserver-2] Failed to publish log message to rosout: publisher's context is invalid, at ./src/rcl/publisher.c:389
[ERROR] [gzserver-2]: process[gzserver-2] failed to terminate '10.0' seconds after receiving 'SIGTERM', escalating to 'SIGKILL'
[INFO] [gzserver-2]: sending signal 'SIGKILL' to process[gzserver-2]
[ERROR] [gzserver-2]: process has died [pid 5736, exit code -9, cmd 'gzserver -slibgazebo_ros_init.so -slibgazebo_ros_factory.so -slibgazebo_ros_force_system.so'].
As it might be helpful, here are my launch file and my configuration file for the controllers:
Launch file:
import os
from ament_index_python.packages import get_package_share_directory
import launch
from launch import LaunchDescription
import launch.actions
import launch_ros
from launch.actions import IncludeLaunchDescription
from launch.launch_description_sources import PythonLaunchDescriptionSource
from launch_ros.actions import Node
def generate_launch_description():
package_name='gripper'
gripper = IncludeLaunchDescription(
PythonLaunchDescriptionSource([os.path.join(
get_package_share_directory(package_name), 'launch', 'gripper_controller.launch.py'
)]), launch_arguments={'use_sim_time': 'true'}.items()
)
gazebo = IncludeLaunchDescription(
PythonLaunchDescriptionSource([os.path.join(
get_package_share_directory('gazebo_ros'), 'launch', 'gazebo.launch.py'
)]),
)
rviz2 = Node(
package='rviz2', executable='rviz2', name="rviz2", output='screen',
)
spawn_entity = Node(package='gazebo_ros', executable='spawn_entity.py',
arguments=['-topic', 'robot_description',
'-entity', 'gripper'],
output='screen'
)
controller_manager_node = Node(
package='controller_manager',
executable='spawner',
output='screen',
arguments=["joint_trajectory_controller", "--controller-manager", "/controller_manager"]
# config here(^) is may config.yaml file in my config directory
)
joint_state_broadcaster_spawner = Node(
package="controller_manager",
executable="spawner",
name='joint_state_broadcaster',
output='screen',
arguments=["joint_state_broadcaster", "--controller-manager", "/controller_manager"],
)
joint_trajectory_controller = launch_ros.actions.Node(
package='controller_manager',
executable='spawner',
name='joint_trajectory_controller',
output='screen',
arguments=["joint_trajectory_controller", "--controller-manager", "/controller_manager"],
)
return LaunchDescription([
gripper,
gazebo,
# rvis2,
spawn_entity,
controller_manager_node,
joint_state_broadcaster_spawner,
joint_trajectory_controller
])
And here is my config.yaml file for the controllers:
controller_manager:
ros__parameters:
update_rate: 100 #Hz
use_sim_time: True
joint_trajectory_controller:
ros__parameters:
type: joint_trajectory_controller/JointTrajectoryController
joints:
- driver_finger1_joint
- driver_finger2_joint
interface_name: position
command_interfaces:
- position
state_interfaces:
- position
- velocity
effort_interface:
- effort
joint_state_broadcaster:
ros__parameters:
type: joint_state_broadcaster/JointStateBroadcaster
Asked by Icon45 on 2023-06-03 04:12:32 UTC
Comments