Giter VIP home page Giter VIP logo

gz_ros2_control's People

Contributors

ahcorde avatar andrejorsula avatar andyze avatar ark3r avatar bmagyar avatar c-rizz avatar chapulina avatar christophfroehlich avatar dependabot[bot] avatar destogl avatar fixit-davide avatar fujitatomoya avatar github-actions[bot] avatar guillaumebeuzeboc avatar huemerj avatar ijnek avatar kotochleb avatar mcbed avatar mergify[bot] avatar mrjogo avatar rcywongaa avatar roncapat avatar roni-kreinin avatar saikishor avatar stephanie-eng avatar takashisato avatar timple avatar tonylitianyu avatar tonynajjar avatar vincidab avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gz_ros2_control's Issues

Joint out of control when close to its limits

I'm pretty new to ROS and may not understand something basic, but I have following problem:

I have a simulated arm, which has limits on every joint and I'm using ForwardCommandController to control it. Unfortunately when I command some joint to move to its limit or near it, there are chances that it will get stuck there. Then I can still control other joints and sometimes this dead joint comes to live again - probably because it gets a little bit farther from its limit due to other movements.

Is this behavior expected or I'm doing something wrong?
How to allow controlling joints which are near they limits?

I don't have experience with real robots and I'm not sure whether it's gz_ros2_control or ros2_control issue.

Issue with multi_robot simulation

I've been working on Launching multiple create3 robots in simulation with ignition edifice and ROS2. This feature is not supported out of the box with the create3_sim package and so I had to do some modifications to enable it. However I ran into a segfault error

[INFO] [1650890806.787380428] [create3_0.controller_manager]: Loading controller 'joint_state_broadcaster'
Stack trace (most recent call last):
#31   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af66adaa, in 
#30   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af65e025, in 
#29   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af5bc1be, in 
#28   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af4fc5d2, in rb_protect
#27   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af6759f0, in rb_yield
#26   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af66886f, in rb_vm_exec
#25   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af662130, in 
#24   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af651405, in 
#23   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af66adaa, in 
#22   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af65e025, in 
#21   Object "/usr/lib/x86_64-linux-gnu/ruby/2.7.0/fiddle.so", at 0x7f93ab4fe714, in 
#20   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f93af62f6d9, in rb_nogvl
#19   Object "/usr/lib/x86_64-linux-gnu/ruby/2.7.0/fiddle.so", at 0x7f93ab4fe8fb, in 
#18   Object "/lib/x86_64-linux-gnu/libffi.so.7", at 0x7f93ab4ad409, in 
#17   Object "/lib/x86_64-linux-gnu/libffi.so.7", at 0x7f93ab4adff4, in 
#16   Object "/usr/lib/x86_64-linux-gnu/libignition-gazebo5-ign.so.5.4.0", at 0x7f93aaa4a74e, in runServer
#15   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5d041b, in ignition::gazebo::v5::Server::Run(bool, unsigned long, bool)
#14   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5da793, in 
#13   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5e815a, in ignition::gazebo::v5::SimulationRunner::Run(unsigned long)
#12   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5e794a, in ignition::gazebo::v5::SimulationRunner::Step(ignition::gazebo::v5::UpdateInfo const&)
#11   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5e0561, in ignition::gazebo::v5::SimulationRunner::UpdateSystems()
#10   Object "/usr/lib/x86_64-linux-gnu/ign-gazebo-5/plugins/libignition-gazebo-user-commands-system.so", at 0x7f9385749178, in ignition::gazebo::v5::systems::UserCommands::PreUpdate(ignition::gazebo::v5::UpdateInfo const&, ignition::gazebo::v5::EntityComponentManager&)
#9    Object "/usr/lib/x86_64-linux-gnu/ign-gazebo-5/plugins/libignition-gazebo-user-commands-system.so", at 0x7f938574b7bd, in ignition::gazebo::v5::systems::CreateCommand::Execute()
#8    Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa59bc90, in ignition::gazebo::v5::SdfEntityCreator::CreateEntities(sdf::v11::Model const*)
#7    Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5c5fb6, in void ignition::gazebo::v5::EventManager::Emit<ignition::common::EventT<void (unsigned long, std::shared_ptr<sdf::v11::Element>), ignition::gazebo::v5::events::LoadPluginsTag>, unsigned long const&, std::shared_ptr<sdf::v11::Element> const&>(unsigned long const&, std::shared_ptr<sdf::v11::Element> const&)
#6    Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5e3b86, in ignition::gazebo::v5::SimulationRunner::LoadPlugins(unsigned long, std::shared_ptr<sdf::v11::Element> const&)
#5    Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5e36b4, in ignition::gazebo::v5::SimulationRunner::LoadPlugin(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<sdf::v11::Element> const&)
#4    Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5e1038, in ignition::gazebo::v5::SimulationRunner::AddSystem(ignition::plugin::TemplatePluginPtr<ignition::plugin::SpecializedPlugin<ignition::gazebo::v5::System, ignition::gazebo::v5::ISystemConfigure, ignition::gazebo::v5::ISystemPreUpdate, ignition::gazebo::v5::ISystemUpdate, ignition::gazebo::v5::ISystemPostUpdate> > const&, std::optional<unsigned long>, std::optional<std::shared_ptr<sdf::v11::Element const> >)
#3    Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f93aa5e0c1a, in ignition::gazebo::v5::SimulationRunner::AddSystemImpl(ignition::gazebo::v5::SystemInternal, std::optional<unsigned long>, std::optional<std::shared_ptr<sdf::v11::Element const> >)
#2    Object "/home/Workspace/shroom/simulation_ws/install/ign_ros2_control/lib/libign_ros2_control-system.so", at 0x7f9384ce3cfb, in ign_ros2_control::IgnitionROS2ControlPlugin::Configure(unsigned long const&, std::shared_ptr<sdf::v11::Element const> const&, ignition::gazebo::v5::EntityComponentManager&, ignition::gazebo::v5::EventManager&)
#1    Object "/opt/ros/galactic/lib/librclcpp.so", at 0x7f938496b247, in rclcpp::Executor::add_node(std::shared_ptr<rclcpp::Node>, bool)
#0    Object "/opt/ros/galactic/lib/librclcpp.so", at 0x7f93849920e4, in rclcpp::Node::get_node_base_interface()

This error seems to be related to ign_ros2_control_plugin.cpp.
It does not appear when spawning one robot.

To recreate this error run this after building this repo :

ros2 launch irobot_create_ignition_bringup create3_multi.launch.py

Any help or lead will be much appreciated.
Thank you!

Humble binaries unavailable to download

Environment

  • Operating System:

    • Ubuntu 22.04, Docker 20.10.12
  • ROS2 Version:

    • Humble binaries

description
I've been trying to download the binaries of ign-ros2-control, but am unable to download it using apt install ros-humble-ign-ros2-control.

I checked on index.ros.org, and it shows binaries are already released.

Can someone have a look at this and help me?

README typo

Directory is ros_ign in the beginning and at the end becomes ros2_ign

Very minor thing...

mkdir -p ~/ros_ign/src
cd ~/ros_ign/src
git clone https://github.com/ros-controls/gz_ros2_control
rosdep install -r --from-paths . --ignore-src --rosdistro $ROS_DISTRO -y
cd ~/ros2_ign
colcon build

Sensor only <ros2_control> error

Hi,

TLDR: A sensor only <ros2_control> leads to an error as there is a check on the number of joints in the hardware description (here: https://github.com/ros-controls/gz_ros2_control/blob/humble/ign_ros2_control/src/ign_system.cpp#L189-L192)

There is a little non-desired behavior with the ign_system (at least for me :) ). I only want to have an imu sensor in my <ros2_control> :

<ros2_control name="IgnitionSystem" type="system">
    <hardware>
        <plugin>ign_ros2_control/IgnitionSystem</plugin>
    </hardware>
        <sensor name="$(arg prefix)_imu_sensor">
		<state_interface name="orientation.x"/>
		<state_interface name="orientation.y"/>
		<state_interface name="orientation.z"/>
		<state_interface name="orientation.w"/>
		<state_interface name="angular_velocity.x"/>
		<state_interface name="angular_velocity.y"/>
		<state_interface name="angular_velocity.z"/>
		<state_interface name="linear_acceleration.x"/>
		<state_interface name="linear_acceleration.y"/>
		<state_interface name="linear_acceleration.z"/>
	  </sensor>
</ros2_control>

This lead to this error:

[ERROR 1693407470.872112341] [gz_ros2_control]: There is no joint available (initSim() at ./src/ign_system.cpp:190)
[FATAL 1693407470.872120292] [gz_ros2_control]: Could not initialize robot simulation interface (Configure() at ./src/ign_ros2_control_plugin.cpp:401)

And to this part of the plugin:
https://github.com/ros-controls/gz_ros2_control/blob/humble/ign_ros2_control/src/ign_system.cpp#L189-L192

Maybe I'm the first one using only an imu and no joints in my <ros2_control> but the condition in the source code seems not to be correct.

Can this condition be deleted without affecting the rest of the code, or is it really useful for the joint management?

robot_description not accessible from custom ros2 controller

Environment

  • OS Version: Ubuntu 22.04
  • ROS2 version: humble
  • Source or binary build?
    ros-humble-ros-gz/jammy,now 0.244.11-1jammy.20230624.051759 amd64

Description

  • Behavior: Launching gz_sim.launch.py and create to spawn the urdf, parsing the xacro in which ign_ros2_control::IgnitionROS2ControlPlugin is contained, I expect the robot_description to be a parameter of the controller_manager but it's not. I want to access from a custom ros2 controller to the robot_description. Since it's not a parameter of the controller manager, the only way to access it is from a client (both service or parameter). In both cases, waiting the response of the future blocks the execution.

Examples diff_drive_example and example_tricycle_drive not working

Hello,

Symptoms description :

When launching the examples ros2 launch gz_ros2_control_demos diff_drive_example.launch.py + ros2 run gz_ros2_control_demos example_diff_drive

as well as ros2 launch gz_ros2_control_demos tricycle_drive_example.launch.py + ros2 run gz_ros2_control_demos example_tricycle_drive

Nothing moves, it seems that the controller are not listenning to the _/diff_drive_base_controller/cmd_vel_unstamped topic even though they are loaded :

ros2 control list_controllers
joint_state_broadcaster[joint_state_broadcaster/JointStateBroadcaster] active
diff_drive_base_controller[diff_drive_controller/DiffDriveController] active

I can't find any specific error messages in logs.

The 3 other example are working fine
ros2 launch gz_ros2_control_demos cart_example_position.launch.py 👍
ros2 launch gz_ros2_control_demos cart_example_velocity.launch.py 👍
ros2 launch gz_ros2_control_demos cart_example_effort.launch.py 👍

Environment :

I tried humble-desktop-full and rolling-desktop-full docker images with Gazebo Garden installed.

I tried with compiling the latest code of ros_gz (branch ros2 ) and gz_ros2_control (on both branches master and rename/ign_to_gz ) in my overlay.

I provide the docker images for reference.
Dockerfile.zip

Segmentation fault after during launch after the plugin loads the urdf.

Ignition Gazebo dies with this message output right after adding ign_ros2_control plugin:

[ign gazebo-2] [INFO] [1626422322.280627645] [ignition_ros2_control]: [ignition_ros2_control] Fixed joint [world_joint] (Entity=32)] is skipped
[ign gazebo-2] [INFO] [1626422322.333866151] [ignition_ros2_control]: connected to service!! robot_state_publisher asking for robot_description
[ign gazebo-2] [INFO] [1626422322.336242138] [ignition_ros2_control]: Received URDF from param server
[ign gazebo-2] /usr/lib/ruby/ignition/cmdgazebo5.rb:431: [BUG] Segmentation fault at 0x000000000000002b
[ign gazebo-2] ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
[ign gazebo-2]
[ign gazebo-2] -- Control frame information -----------------------------------------------
[ign gazebo-2] c:0007 p:---- s:0076 e:000075 CFUNC  :call
[ign gazebo-2] c:0006 p:0016 s:0054 e:000053 METHOD /usr/lib/ruby/ignition/cmdgazebo5.rb:431
[ign gazebo-2] c:0005 p:0146 s:0048 e:000047 BLOCK  /usr/lib/ruby/ignition/cmdgazebo5.rb:460 [FINISH]
[ign gazebo-2] c:0004 p:---- s:0045 e:000044 CFUNC  :fork
[ign gazebo-2] c:0003 p:0659 s:0041 e:000040 METHOD /usr/lib/ruby/ignition/cmdgazebo5.rb:456
[ign gazebo-2] c:0002 p:0683 s:0020 E:0003b0 EVAL   /usr/bin/ign:275 [FINISH]
[ign gazebo-2] c:0001 p:0000 s:0003 E:000a40 (none) [FINISH]
[ign gazebo-2]
[ign gazebo-2] -- Ruby level backtrace information ----------------------------------------
[ign gazebo-2] /usr/bin/ign:275:in `<main>'
[ign gazebo-2] /usr/lib/ruby/ignition/cmdgazebo5.rb:456:in `execute'
[ign gazebo-2] /usr/lib/ruby/ignition/cmdgazebo5.rb:456:in `fork'
[ign gazebo-2] /usr/lib/ruby/ignition/cmdgazebo5.rb:460:in `block in execute'
[ign gazebo-2] /usr/lib/ruby/ignition/cmdgazebo5.rb:431:in `runServer'
[ign gazebo-2] /usr/lib/ruby/ignition/cmdgazebo5.rb:431:in `call'
[ign gazebo-2]
[ign gazebo-2] -- Machine register context ------------------------------------------------
[ign gazebo-2]  RIP: 0x00007fe33396aa98 RBP: 0x0000000000000003 RSP: 0x00007ffec9384a90
[ign gazebo-2]  RAX: 0x0000000000000000 RBX: 0x00007ffec9384bf0 RCX: 0x000055710ba4601c
[ign gazebo-2]  RDX: 0x000000000000006f RDI: 0x00007ffec9384bf0 RSI: 0x000055710e6f2830
[ign gazebo-2]   R8: 0x000055710e804810  R9: 0x0000000000000000 R10: 0xfffffffffffffdce
[ign gazebo-2]  R11: 0x00007fe33396aa60 R12: 0x00007ffec9384bf0 R13: 0x00007ffec9387220
[ign gazebo-2]  R14: 0x0000000000000000 R15: 0x0000000000000003 EFL: 0x0000000000010293
[ign gazebo-2]
[ign gazebo-2] -- C level backtrace information -------------------------------------------
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337f0b0a9) [0x7fe337f0b0a9]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337f0b2dc) [0x7fe337f0b2dc]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337d8524b) [0x7fe337d8524b]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337e886bd) [0x7fe337e886bd]
[ign gazebo-2] /lib/x86_64-linux-gnu/libc.so.6(0x7fe337b34210) [0x7fe337b34210]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZNSt10filesystem7__cxx114path14_M_split_cmptsEv+0x38) [0x7fe33396aa98]
[ign gazebo-2] /home/pkvk/ows/owr_ros2/install/ignition_ros2_control/lib/libignition_ros2_control-system.so(_ZNSt10filesystem7__cxx114pathC2INSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES1_EERKT_NS1_6formatE+0xa4) [0x7fe30ccdadfe]
[ign gazebo-2] /home/pkvk/ows/owr_ros2/install/ignition_ros2_control/lib/libignition_ros2_control-system.so(_ZN9pluginlib11ClassLoaderIN21ignition_ros2_control23IgnitionSystemInterfaceEE31getPackageFromPluginXMLFilePathERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x61) [0x7fe30ccd8f6b]
[ign gazebo-2] /home/pkvk/ows/owr_ros2/install/ignition_ros2_control/lib/libignition_ros2_control-system.so(_ZN9pluginlib11ClassLoaderIN21ignition_ros2_control23IgnitionSystemInterfaceEE26processSingleXMLPluginFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERSt3mapIS9_NS_9ClassDescESt4lessIS9_ESaISt4pairISA_SD_EEE+0x553) [0x7fe30cccc6af]
[ign gazebo-2] /home/pkvk/ows/owr_ros2/install/ignition_ros2_control/lib/libignition_ros2_control-system.so(_ZN9pluginlib11ClassLoaderIN21ignition_ros2_control23IgnitionSystemInterfaceEE25determineAvailableClassesERKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaISA_EE+0x1c5) [0x7fe30ccc36c1]
[ign gazebo-2] /home/pkvk/ows/owr_ros2/install/ignition_ros2_control/lib/libignition_ros2_control-system.so(_ZN9pluginlib11ClassLoaderIN21ignition_ros2_control23IgnitionSystemInterfaceEEC2ENSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES9_S9_St6vectorIS9_SaIS9_EE+0x2fc) [0x7fe30ccbb91e]
[ign gazebo-2] /home/pkvk/ows/owr_ros2/install/ignition_ros2_control/lib/libignition_ros2_control-system.so(_ZN21ignition_ros2_control25IgnitionROS2ControlPlugin9ConfigureERKmRKSt10shared_ptrIKN3sdf3v117ElementEERN8ignition6gazebo2v522EntityComponentManagerERNSD_12EventManagerE+0x1707) [0x7fe30ccae681]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v516SimulationRunner10LoadPluginEmRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESA_RKSt10shared_ptrIN3sdf3v117ElementEE+0x131) [0x7fe333932551]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v516SimulationRunner11LoadPluginsEmRKSt10shared_ptrIN3sdf3v117ElementEE+0x30a) [0x7fe33393325a]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v512EventManager4EmitINS_6common6EventTIFvmSt10shared_ptrIN3sdf3v117ElementEEENS1_6events14LoadPluginsTagEEEJRKmRKSA_EEEvDpOT0_+0x121) [0x7fe333909721]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v516SdfEntityCreator14CreateEntitiesEPKN3sdf3v115ModelE+0x42) [0x7fe3338f8722]
[ign gazebo-2] /usr/lib/x86_64-linux-gnu/ign-gazebo-5/plugins/libignition-gazebo-user-commands-system.so(_ZN8ignition6gazebo2v57systems13CreateCommand7ExecuteEv+0xdfa) [0x7fe30e99710a]
[ign gazebo-2] /usr/lib/x86_64-linux-gnu/ign-gazebo-5/plugins/libignition-gazebo-user-commands-system.so(_ZN8ignition6gazebo2v57systems12UserCommands9PreUpdateERKNS1_10UpdateInfoERNS1_22EntityComponentManagerE+0x15a) [0x7fe30e99538a]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v516SimulationRunner13UpdateSystemsEv+0x42) [0x7fe333931232]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v516SimulationRunner4StepERKNS1_10UpdateInfoE+0x5b) [0x7fe333936e8b]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v516SimulationRunner3RunEm+0x67b) [0x7fe3339375cb]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(0x7fe33392c0c6) [0x7fe33392c0c6]
[ign gazebo-2] /lib/x86_64-linux-gnu/libignition-gazebo5.so.5(_ZN8ignition6gazebo2v56Server3RunEbmb+0xc9) [0x7fe333924769]
[ign gazebo-2] /usr/lib/x86_64-linux-gnu/libignition-gazebo5-ign.so.5.1.0(runServer+0x5e1) [0x7fe333d6ba01]
[ign gazebo-2] /lib/x86_64-linux-gnu/libffi.so.7(0x7fe333d3aff5) [0x7fe333d3aff5]
[ign gazebo-2] /lib/x86_64-linux-gnu/libffi.so.7(0x7fe333d3a40a) [0x7fe333d3a40a]
[ign gazebo-2] /usr/lib/x86_64-linux-gnu/ruby/2.7.0/fiddle.so(0x7fe333d918fc) [0x7fe333d918fc]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(rb_nogvl+0x8a) [0x7fe337ebf6da]
[ign gazebo-2] /usr/lib/x86_64-linux-gnu/ruby/2.7.0/fiddle.so(0x7fe333d91715) [0x7fe333d91715]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337eee026) [0x7fe337eee026]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337efadab) [0x7fe337efadab]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337ee1406) [0x7fe337ee1406]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337ef2131) [0x7fe337ef2131]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(rb_vm_exec+0x1d0) [0x7fe337ef8870]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(rb_yield+0x271) [0x7fe337f059f1]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(rb_protect+0x163) [0x7fe337d8c5d3]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337e4c1bf) [0x7fe337e4c1bf]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337eee026) [0x7fe337eee026]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337efadab) [0x7fe337efadab]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337ee1406) [0x7fe337ee1406]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337ef2131) [0x7fe337ef2131]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(rb_vm_exec+0x1d0) [0x7fe337ef8870]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(0x7fe337d89491) [0x7fe337d89491]
[ign gazebo-2] /lib/x86_64-linux-gnu/libruby-2.7.so.2.7(ruby_run_node+0x4e) [0x7fe337d8e2ee]
[ign gazebo-2] ign gazebo server(0x557109ac817f) [0x557109ac817f]
[ign gazebo-2] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf3) [0x7fe337b150b3] ../csu/libc-start.c:308
[ign gazebo-2] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main) (null):0
[ign gazebo-2] ign gazebo server(_start+0x2e) [0x557109ac81ce]
[ign gazebo-2]

Sorry for the long issue message, did not know what was not important.

ROS2 Humble Support

I am looking to leverage this package with ROS2 Humble on Ubuntu 22.04. Currently I am encountering failures in building this package when using the main branch.

Install include directory ign_ros2_control

Hi,
I'm creating a custom ign_ros2_control plugin for a simulation in ROS Humble. According to the instructions, the plugin must inherit the ign_ros2_control::IgnitionSystemInterface class, which implements a simulated ros2_control hardware_interface::SystemInterface, but the package ign_ros2_control does not export its directory and this makes it impossible to use the class inside my plugin.

I would like to know why the humble branch the install is not done as it was done with the master branch #127

Panda robot causing BoxedLcpConstraintSolver when loading using urdf with ign-ros2-control

Environment

  • OS Version: Ubuntu 20.04
  • Source or binary build? Using source branch foxy with commit d1f8bec

Description

  • Expected behavior: Robot stays upright when simulation starts and no error in console
  • Actual behavior: Ignition launches with the robot present and as soon as the simulation is started using the play button it collapses like the second picture and following error is spammed in the console
    image image

[ign gazebo-1] Error [BoxedLcpConstraintSolver.cpp:291] [BoxedLcpConstraintSolver] The solution of LCP includes NAN values: nan nan. We're setting it zero for safety. Consider using more robust solver such as PGS as a secondary solver. If this happens even with PGS solver, please report this as a bug.

Steps to reproduce

  1. Install ign_ros2_control and moveit_resources_panda_description
  2. run export IGN_GAZEBO_RESOURCE_PATH=/opt/ros/foxy/share/
  3. run attached launch file after modifying path to urdf
  4. Press play in ignition
    panda_gripper.zip

Output

Log included in the zip file

If the following is removed then no physics error happen but the robot doesn't have any joint control.

<gazebo>
   <plugin filename="ignition_ros2_control-system" name="ignition_ros2_control::IgnitionROS2ControlPlugin">
     <robot_param>robot_description</robot_param>
     <robot_param_node>robot_state_publisher</robot_param_node>
     <parameters>/workspaces/Ignition/ubb/ignitiondev/install/share/simple_arm/config/panda_ros_controllers.yaml</parameters>
   </plugin>
 </gazebo>

colcon build error : has no member named ‘hardware_plugin_name

when i colcon build,it throw the error following:
error: ‘__gnu_cxx::_alloc_traits<std::allocator<hardware_interface::HardwareInfo>, hardware_interface::HardwareInfo>::value_type’ {aka ‘struct hardware_interface::HardwareInfo’} has no member named ‘hardware_plugin_name’
404 | d::string robot_hw_sim_type_str
= control_hardware_info[i].hardware_plugin_name;

solution:change control_hardware_info[i].hardware_plugin_name to control_hardware_info[i].name;

[Err] [SystemLoader.cc:93] Failed to load system plugin [ign_ros2_control]

Environment

  • Ubuntu 20.04
  • ROS2 Galactic - Binary
  • Ignition Gazebo Fortress - Binary
  • ign_ros2_control - Source

Description

Hi, I'm getting an error when spawning my robot with ign_ros2_control. I don't quite understand how to solve this error.

[ign gazebo-7] [ignition::plugin::Loader::LookupPlugin] Failed to get info for [ign_ros2_control]. Could not find a plugin with that name or alias.
[ign gazebo-7] [Err] [SystemLoader.cc:93] Failed to load system plugin [ign_ros2_control] : could not instantiate from library [libign_ros2_control-system.so] from path [/home/bill-finger/ros2_ws/install/ign_ros2_control/lib/libign_ros2_control-system.so].

this error does not occur when i run any example.

Could this be an error in my robot configurations? I doubt
Maybe I'm wrong, but it seems to me that the error is not in the prescribed paths of the ignition environment. Because he writes the correct path to the file. I tried to repeat as much as possible what is written in the README and, moreover, relying on the examples presented

Thank you in advance

gazebo fails to load ign_ros2_control-system plugin

gazebo: gazebo citadel
ros distro: foxy
installed binaries: ros-foxy-ign-ros2-control and ros-foxy-ign-ros2-control-demos

I was trying to setup the <ros2_control> tag for my robot to use with the ign_ros2_control/IgnitionSystem plugin, however when I try to spawn the robot into empty gazebo world, I get the following error message in the gazebo terminal

lukas@DESKTOP-QRS1BRB:~$ ign gazebo empty.sdf
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-lukas'
[Err] [SystemLoader.cc:66] Failed to load system plugin [ign_ros2_control-system]: couldn't find shared library.

here is the <ros2_control> tag

<ros2_control name="IgnitionSystem" type="system">
    <hardware>
      <plugin>ign_ros2_control/IgnitionSystem</plugin>
    </hardware>
    <joint name="link_1_joint">
      <command_interface name="position">
        <param name="min">-15</param>
        <param name="max">15</param>
      </command_interface>
      <state_interface name="position"/>
      <state_interface name="velocity"/>
      <state_interface name="effort"/>
    </joint>
  </ros2_control>

   <gazebo>
    <!-- Joint state publisher -->
    <plugin filename="libign_ros2_control-system.so" name="ign_ros2_control">
      <robot_param>robot_description</robot_param>
      <robot_param_node>robot_state_publisher</robot_param_node>
      <parameters>$(find inobot_config)/config/ros_controllers.yaml</parameters>
    </plugin>
  </gazebo>

None of the demos work neither, when I try to launch the cart position demo I get the following output with no working system

log.txt

Let me know if this is not the right place to post this issue as I am unsure if this is issue with gazebo or gz_ros2_control

Effort Values are 0

Hello,

the gz_ros2_control is returning 0 values for the joint state efforts. I saw that the gz_ros2_control has commented out these lines in https://github.com/ros-controls/gz_ros2_control/blob/cf5c6a4135d6b46c95e0e135ffd0400fb4db7731/ign_ros2_control/src/ign_system.cpp#L499](ign_system.cpp

Will the effort values be available at some point in time in the future?

Best,
Haider

- interface_names:
  - position
  - velocity
  - effort
  values:
  - 1.3656909652303677e-10
  - 5.423202756300551e-10
  - 0.0

Error while loading libign_ros2_control-system.so

Environment

  • OS Version: Ubuntu 20.04 (WSL2)
  • Source or binary build?
    Ignition Fortress Binary
  • rendering plugin: ogre

Error: Hello Ignition developers. I'm trying to spawn a robot inside Ignition Fortress using Ros2 (Foxy) but I'm facing some issues, especially when using libign_ros2_control-system.so plugin inside .urdf model.

The spawn it's working successfully when commenting the following line:

<gazebo>
    <plugin filename="libign_ros2_control-system.so" name="ign_ros2_control">
      <robot_param>robot_description</robot_param>
      <robot_param_node>robot_state_publisher</robot_param_node>
      <parameters>$(find ntu_gazebo)/models/teste_bot_v2/config/teste_bot_v2_controller.yaml</parameters>
    </plugin>
  </gazebo>

When I uncomment this line, the following error appears:

[INFO] [launch]: All log files can be found below /home/gilmar/.ros/log/2022-03-03-13-04-06-073938-DESKTOP-IMF8MFM-1028
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ign gazebo-1]: process started with pid [1030]
[INFO] [robot_state_publisher-2]: process started with pid [1033]
[INFO] [create-3]: process started with pid [1035]
[robot_state_publisher-2] Parsing robot urdf xml string.
[robot_state_publisher-2] The root link base_link has an inertia specified in the URDF, but KDL does not support a root link with an inertia.  As a workaround, you can add an extra dummy link to your URDF.
[robot_state_publisher-2] Link caster_wheel had 0 children
[robot_state_publisher-2] Link left_wheel had 0 children
[robot_state_publisher-2] Link right_wheel had 0 children
[robot_state_publisher-2] [INFO] [1646323446.189875200] [robot_state_publisher]: got segment base_link
[robot_state_publisher-2] [INFO] [1646323446.189956700] [robot_state_publisher]: got segment caster_wheel
[robot_state_publisher-2] [INFO] [1646323446.189970000] [robot_state_publisher]: got segment left_wheel
[robot_state_publisher-2] [INFO] [1646323446.189977000] [robot_state_publisher]: got segment right_wheel
[create-3] [INFO] [1646323446.207324400] [ros_ign_gazebo]: Requesting list of world names.
[create-3] [INFO] [1646323446.689882800] [ros_ign_gazebo]: Requested creation of entity.
[create-3] [INFO] [1646323446.689951300] [ros_ign_gazebo]: OK creation of entity.
[INFO] [create-3]: process has finished cleanly [pid 1035]
[INFO] [ros2-4]: process started with pid [1138]
[ign gazebo-1] [libprotobuf ERROR google/protobuf/descriptor_database.cc:58] File already exists in database: ignition/msgs/actor.proto
[ign gazebo-1] [libprotobuf FATAL google/protobuf/descriptor.cc:1358] CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
[ign gazebo-1] terminate called after throwing an instance of 'google::protobuf::FatalException'
[ign gazebo-1]   what():  CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
[ign gazebo-1] Stack trace (most recent call last):
[ign gazebo-1] #31   Object "/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/libignition-gazebo-user-commands-system.so", at 0x7f3310fa674a, in ignition::gazebo::v6::systems::CreateCommand::Execute()
[ign gazebo-1] #30   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335f55c00, in ignition::gazebo::v6::SdfEntityCreator::CreateEntities(sdf::v12::Model const*)
[ign gazebo-1] #29   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335f6e336, in void ignition::gazebo::v6::EventManager::Emit<ignition::common::EventT<void (unsigned long, std::shared_ptr<sdf::v12::Element>), ignition::gazebo::v6::events::LoadPluginsTag>, unsigned long const&, std::shared_ptr<sdf::v12::Element> const&>(unsigned long const&, std::shared_ptr<sdf::v12::Element> const&)
[ign gazebo-1] #28   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335f9bb86, in ignition::gazebo::v6::SimulationRunner::LoadPlugins(unsigned long, std::shared_ptr<sdf::v12::Element> const&)
[ign gazebo-1] #27   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335f9a17e, in ignition::gazebo::v6::SimulationRunner::LoadPlugin(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<sdf::v12::Element> const&)
[ign gazebo-1] #26   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335fbba18, in ignition::gazebo::v6::SystemLoader::LoadPlugin(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<sdf::v12::Element> const&)
[ign gazebo-1] #25   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335fbc2c5, in 
[ign gazebo-1] #24   Object "/lib/x86_64-linux-gnu/libignition-plugin1-loader.so.1", at 0x7f3333530670, in ignition::plugin::Loader::LoadLib(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[ign gazebo-1] #23   Object "/lib/x86_64-linux-gnu/libignition-plugin1-loader.so.1", at 0x7f333352fa7d, in ignition::plugin::Loader::Implementation::LoadLib(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[ign gazebo-1] #22   Object "/lib/x86_64-linux-gnu/libdl.so.2", at 0x7f333a8973d9, in dlopen
[ign gazebo-1] #21   Object "/lib/x86_64-linux-gnu/libdl.so.2", at 0x7f333a897b58, in 
[ign gazebo-1] #20   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f333aaaf902, in _dl_catch_error
[ign gazebo-1] #19   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f333aaaf837, in _dl_catch_exception
[ign gazebo-1] #18   Object "/lib/x86_64-linux-gnu/libdl.so.2", at 0x7f333a89734b, in 
[ign gazebo-1] #17   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f333aef05f9, in 
[ign gazebo-1] #16   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f333aaaf837, in _dl_catch_exception
[ign gazebo-1] #15   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f333aef10be, in 
[ign gazebo-1] #14   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f333aaaf894, in _dl_catch_exception
[ign gazebo-1] #13   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f333aeecc90, in 
[ign gazebo-1] #12   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f333aeecb89, in 
[ign gazebo-1] #11   Object "/lib/x86_64-linux-gnu/libignition-msgs5.so.5", at 0x7f330afd1768, in void std::call_once<void (&)()>(std::once_flag&, void (&)())
[ign gazebo-1] #10   Object "/lib/x86_64-linux-gnu/libpthread.so.0", at 0x7f333a93d47e, in 
[ign gazebo-1] #9    Object "/lib/x86_64-linux-gnu/libignition-msgs5.so.5", at 0x7f330afcc3ed, in protobuf_ignition_2fmsgs_2factor_2eproto::AddDescriptorsImpl()
[ign gazebo-1] #8    Object "/lib/x86_64-linux-gnu/libprotobuf.so.17", at 0x7f33352a487d, in 
[ign gazebo-1] #7    Object "/lib/x86_64-linux-gnu/libgcc_s.so.1", at 0x7f3336be05a9, in _Unwind_Resume
[ign gazebo-1] #6    Object "/lib/x86_64-linux-gnu/libgcc_s.so.1", at 0x7f3336bdfbee, in 
[ign gazebo-1] #5    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f3336c93d20, in __gxx_personality_v0
[ign gazebo-1] #4    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f3336c93368, in 
[ign gazebo-1] #3    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f3336c9438b, in 
[ign gazebo-1] #2    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f3336c88910, in 
[ign gazebo-1] #1    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f333a971858, in abort
[ign gazebo-1] #0    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f333a99203b, in gsignal
[ign gazebo-1] Aborted (Signal sent by tkill() 1063 1000)
[ign gazebo-1] Stack trace (most recent call last):
[ign gazebo-1] #31   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333abea490, in 
[ign gazebo-1] #30   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad5986f, in rb_vm_exec
[ign gazebo-1] #29   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad53130, in 
[ign gazebo-1] #28   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad42405, in 
[ign gazebo-1] #27   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad5bdaa, in 
[ign gazebo-1] #26   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad4f025, in 
[ign gazebo-1] #25   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333acad1be, in 
[ign gazebo-1] #24   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333abed5d2, in rb_protect
[ign gazebo-1] #23   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad669f0, in rb_yield
[ign gazebo-1] #22   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad5986f, in rb_vm_exec
[ign gazebo-1] #21   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad53130, in 
[ign gazebo-1] #20   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad42405, in 
[ign gazebo-1] #19   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad5bdaa, in 
[ign gazebo-1] #18   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad4f025, in 
[ign gazebo-1] #17   Object "/usr/lib/x86_64-linux-gnu/ruby/2.7.0/fiddle.so", at 0x7f3336e67714, in 
[ign gazebo-1] #16   Object "/lib/x86_64-linux-gnu/libruby-2.7.so.2.7", at 0x7f333ad206d9, in rb_nogvl
[ign gazebo-1] #15   Object "/usr/lib/x86_64-linux-gnu/ruby/2.7.0/fiddle.so", at 0x7f3336e678fb, in 
[ign gazebo-1] #14   Object "/lib/x86_64-linux-gnu/libffi.so.7", at 0x7f3336e5c409, in 
[ign gazebo-1] #13   Object "/lib/x86_64-linux-gnu/libffi.so.7", at 0x7f3336e5cff4, in 
[ign gazebo-1] #12   Object "/usr/lib/x86_64-linux-gnu/libignition-gazebo6-ign.so.6.6.0", at 0x7f3336368780, in runGui
[ign gazebo-1] #11   Object "/lib/x86_64-linux-gnu/libignition-gazebo6-gui.so.6", at 0x7f333615c3d8, in ignition::gazebo::v6::gui::runGui(int&, char**, char const*, char const*)
[ign gazebo-1] #10   Object "/lib/x86_64-linux-gnu/libignition-gui6.so.6", at 0x7f3334bcaadc, in ignition::gui::Application::~Application()
[ign gazebo-1] #9    Object "/lib/x86_64-linux-gnu/libignition-gui6.so.6", at 0x7f3334bca836, in ignition::gui::Application::~Application()
[ign gazebo-1] #8    Object "/lib/x86_64-linux-gnu/libQt5Widgets.so.5", at 0x7f333466049d, in QApplication::~QApplication()
[ign gazebo-1] #7    Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f3334ebe97d, in QCoreApplication::~QCoreApplication()
[ign gazebo-1] #6    Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f3334ef04be, in QObject::~QObject()
[ign gazebo-1] #5    Object "/lib/x86_64-linux-gnu/libQt5Core.so.5", at 0x7f3334ee5eed, in QObjectPrivate::deleteChildren()
[ign gazebo-1] #4    Object "/lib/x86_64-linux-gnu/libignition-gazebo6-gui.so.6", at 0x7f333616630c, in ignition::gazebo::v6::GuiRunner::~GuiRunner()
[ign gazebo-1] #3    Object "/lib/x86_64-linux-gnu/libignition-gazebo6-gui.so.6", at 0x7f33361662f1, in ignition::gazebo::v6::GuiRunner::~GuiRunner()
[ign gazebo-1] #2    Object "/lib/x86_64-linux-gnu/libignition-gazebo6-gui.so.6", at 0x7f33361b8391, in void ignition::utils::detail::DefaultDelete<ignition::gazebo::v6::GuiRunner::Implementation>(ignition::gazebo::v6::GuiRunner::Implementation*)
[ign gazebo-1] #1    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335ebcf2d, in ignition::gazebo::v6::EntityComponentManager::~EntityComponentManager()
[ign gazebo-1] #0    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7f3335ecb0c0, in std::_Hashtable<std::vector<unsigned long, std::allocator<unsigned long> >, std::pair<std::vector<unsigned long, std::allocator<unsigned long> > const, std::pair<std::unique_ptr<ignition::gazebo::v6::detail::BaseView, std::default_delete<ignition::gazebo::v6::detail::BaseView> >, std::unique_ptr<std::mutex, std::default_delete<std::mutex> > > >, std::allocator<std::pair<std::vector<unsigned long, std::allocator<unsigned long> > const, std::pair<std::unique_ptr<ignition::gazebo::v6::detail::BaseView, std::default_delete<ignition::gazebo::v6::detail::BaseView> >, std::unique_ptr<std::mutex, std::default_delete<std::mutex> > > > >, std::__detail::_Select1st, std::equal_to<std::vector<unsigned long, std::allocator<unsigned long> > >, ignition::gazebo::v6::detail::ComponentTypeHasher, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::clear()
[ign gazebo-1] Segmentation fault (Address not mapped to object [0x7f32c03f6048])
[INFO] [ign gazebo-1]: process has finished cleanly [pid 1030]
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[robot_state_publisher-2] [INFO] [1646323449.385163000] [rclcpp]: signal_handler(signal_value=2)
[INFO] [robot_state_publisher-2]: process has finished cleanly [pid 1033]
[ERROR] [ros2-4]: process has died [pid 1138, exit code 2, cmd 'ros2 control load_controller --set-state start joint_state_broadcaster'].

Could someone help me to solve this issue? I've just started learning how to use ros2_control, but it's quite confusing (If someone has any kind of book or course to recommend to me, I will be thankful).

Feature Request: Support for external controller managers

Context

Currently, the ROS 2 control plugin provisioned by this package starts a ROS2 Control controller manager as part of the plugin, and also does not seem to expose the plugin in the usual ROS 2 Control manner.

This means that if a user were to instantiate a controller manager independently outside of the one started by this plugin:

  1. The hardware interface can't be found
  2. (I'm speculating since I can't get past (1)) If it could be found, it would have already been claimed by this plugin's controller manager

For example, on trying to instantiate another controller manager:

[robot_controller_server-5] [INFO] [1661983405.401989605] [resource_manager]: Loading hardware 'GazeboABBMultiInterfaceHardware' 
[robot_controller_server-5] [ERROR] [1661983405.405588059] []: Caught exception in callback for transition 10
[robot_controller_server-5] [ERROR] [1661983405.405603913] []: Original error: According to the loaded plugin descriptions the class ign_ros2_control/IgnitionSystem with base class type hardware_interface::SystemInterface does not exist. Declared types are  abb_hardware_interface/ABBSystemPositionOnlyHardware fake_components/GenericSystem mock_components/GenericSystem ros2_control_demo_hardware/DiffBotSystemHardware test_hardware_components/TestSystemCommandModes test_hardware_components/TestTwoJointSystem test_system
[robot_controller_server-5] [WARN] [1661983405.405692816] []: Error occurred while doing error handling.

Feature Request

It would be great if:

  1. The plugin were exposed to external controller managers via the pluginlib exports
  2. A URDF/SDF arg or ROS parameter was exposed to allow a user to disable the automatic starting of a controller manager on the plugin

For (2), I'm not sure whether using the URDF/SDF tag or ROS parameter approach is more desirable

Protobuf erorr when starting main

Environment

  • OS Version: Ubuntu 20.04 --> rolling
  • Source or binary build?
    source, main --> 2214047
[ign gazebo-1] [libprotobuf ERROR google/protobuf/descriptor_database.cc:58] File already exists in database: ignition/msgs/actor.proto
[ign gazebo-1] [libprotobuf FATAL google/protobuf/descriptor.cc:1358] CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
[ign gazebo-1] terminate called after throwing an instance of 'google::protobuf::FatalException'
[ign gazebo-1]   what():  CHECK failed: GeneratedDatabase()->Add(encoded_file_descriptor, size): 
[ign gazebo-1] Stack trace (most recent call last):
[ign gazebo-1] #31   Object "/usr/lib/x86_64-linux-gnu/ign-gazebo-5/plugins/libignition-gazebo-user-commands-system.so", at 0x7f10e0e023e9, in ignition::gazebo::v5::systems::CreateCommand::Execute()
[ign gazebo-1] #30   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f110dc17fb1, in ignition::gazebo::v5::SdfEntityCreator::CreateEntities(sdf::v11::Model const*)
[ign gazebo-1] #29   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f110dc28c80, in void ignition::gazebo::v5::EventManager::Emit<ignition::common::EventT<void (unsigned long, std::shared_ptr<sdf::v11::Element>), ignition::gazebo::v5::events::LoadPluginsTag>, unsigned long const&, std::shared_ptr<sdf::v11::Element> const&>(unsigned long const&, std::shared_ptr<sdf::v11::Element> const&)
[ign gazebo-1] #28   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f110dc537a9, in ignition::gazebo::v5::SimulationRunner::LoadPlugins(unsigned long, std::shared_ptr<sdf::v11::Element> const&)
[ign gazebo-1] #27   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f110dc526fb, in ignition::gazebo::v5::SimulationRunner::LoadPlugin(unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<sdf::v11::Element> const&)
[ign gazebo-1] #26   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f110dc636a8, in ignition::gazebo::v5::SystemLoader::LoadPlugin(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<sdf::v11::Element> const&)
[ign gazebo-1] #25   Object "/lib/x86_64-linux-gnu/libignition-gazebo5.so.5", at 0x7f110dc63fbc, in 
[ign gazebo-1] #24   Object "/lib/x86_64-linux-gnu/libignition-plugin1-loader.so.1", at 0x7f110b2d7670, in ignition::plugin::Loader::LoadLib(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[ign gazebo-1] #23   Object "/lib/x86_64-linux-gnu/libignition-plugin1-loader.so.1", at 0x7f110b2d6a7d, in ignition::plugin::Loader::Implementation::LoadLib(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[ign gazebo-1] #22   Object "/lib/x86_64-linux-gnu/libdl.so.2", at 0x7f1112a9c3d9, in dlopen
[ign gazebo-1] #21   Object "/lib/x86_64-linux-gnu/libdl.so.2", at 0x7f1112a9cb58, in 
[ign gazebo-1] #20   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f1112cb6982, in _dl_catch_error
[ign gazebo-1] #19   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f1112cb68b7, in _dl_catch_exception
[ign gazebo-1] #18   Object "/lib/x86_64-linux-gnu/libdl.so.2", at 0x7f1112a9c34b, in 
[ign gazebo-1] #17   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f11131055f9, in 
[ign gazebo-1] #16   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f1112cb68b7, in _dl_catch_exception
[ign gazebo-1] #15   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f11131060be, in 
[ign gazebo-1] #14   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f1112cb6914, in _dl_catch_exception
[ign gazebo-1] #13   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f1113101c90, in 
[ign gazebo-1] #12   Object "/lib64/ld-linux-x86-64.so.2", at 0x7f1113101b89, in 
[ign gazebo-1] #11   Object "/lib/x86_64-linux-gnu/libignition-msgs5.so.5", at 0x7f10deddf768, in void std::call_once<void (&)()>(std::once_flag&, void (&)())
[ign gazebo-1] #10   Object "/lib/x86_64-linux-gnu/libpthread.so.0", at 0x7f1112b4247e, in 
[ign gazebo-1] #9    Object "/lib/x86_64-linux-gnu/libignition-msgs5.so.5", at 0x7f10dedda3ed, in protobuf_ignition_2fmsgs_2factor_2eproto::AddDescriptorsImpl()
[ign gazebo-1] #8    Object "/lib/x86_64-linux-gnu/libprotobuf.so.17", at 0x7f110d03087d, in 
[ign gazebo-1] #7    Object "/lib/x86_64-linux-gnu/libgcc_s.so.1", at 0x7f110e8c35a9, in _Unwind_Resume
[ign gazebo-1] #6    Object "/lib/x86_64-linux-gnu/libgcc_s.so.1", at 0x7f110e8c2bee, in 
[ign gazebo-1] #5    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f110e976d20, in __gxx_personality_v0
[ign gazebo-1] #4    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f110e976368, in 
[ign gazebo-1] #3    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f110e97738b, in 
[ign gazebo-1] #2    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x7f110e96b910, in 
[ign gazebo-1] #1    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f1112b78858, in abort
[ign gazebo-1] #0    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x7f1112b9918b, in gsignal
[ign gazebo-1] Aborted (Signal sent by tkill() 440718 1000)

Description

  • Expected behavior: simulator should load plugin and start
  • Actual behavior: error when loading plugin and therefore GUI not starting

Steps to reproduce

  1. Please check the setup from here
  2. Use debugging-ignition branch on ros2_control_demos repository
  3. Use main branch on ign_ros2_control

[Jammy] Controllers are not loaded properly

Hello. I wanted to try the new version of gz_ros2_control on Ubuntu Jammy with humble/rolling, but I ran into the following issue with controllers. The issue occurs both when trying robotic arms (panda_ign_moveit2) and demos from ign_ros2_control_demos. Both of these worked previously using d653017 on focal with galactic (and rolling at some point :D). I still have the working setup on my focal machine if any more info is required.

[ign gazebo-1] [ERROR] [1654181056.506945303] [joint_state_broadcaster]: None of requested interfaces exist. Controller will not run.
[ign gazebo-1] [ERROR] [1654181057.407352076] [controller_manager]: Can't activate controller 'joint_trajectory_controller': Command interface with 'slider_to_cart/position' does not exist
[ros2-5] Sucessfully loaded controller joint_trajectory_controller into state active  ##Not sure why this says "successful"##
...
## <Manually sent goal> ##
[ign gazebo-1] [INFO] [1654181407.856324391] [joint_trajectory_controller]: Received new action goal
[ign gazebo-1] [ERROR] [1654181407.856371822] [joint_trajectory_controller]: Can't accept new action goals. Controller is not running.

Note: Only tested with Docker, so I hope that is not the origin of the issue...

Environment

  • OS Version: Docker with Ubuntu 22.04 (jammy)
  • ROS distro: humble and rolling
  • Source or binary build? [see Dockerfile below]
    • gz_ros2_control -> source
    • Everything else -> binary

Description

  • Expected behavior: Keeping up with rolling is easy and completely effortless.
  • Actual behavior: Robots relying on ign_ros2_control cannot be controlled because controllers are not loaded properly.

Steps to reproduce

  1. Build Docker image (e.g. docker build . -t ${USER}/gz_ros2_control:rolling)
# Both `rolling` and `humble` have the same issue
ARG ROS_DISTRO=rolling 
FROM ros:${ROS_DISTRO}-ros-base

ENV TERM xterm

### Install Gazebo
ARG IGNITION_VERSION=fortress
ENV IGNITION_VERSION=${IGNITION_VERSION}
RUN apt-get update && \
    apt-get install -yq --no-install-recommends \
    ignition-${IGNITION_VERSION} && \
    rm -rf /var/lib/apt/lists/*

### Clone gz_ros2_control
WORKDIR /root/ws/src
RUN git clone https://github.com/gazebosim/gz_ros2_control.git -b main

### Build gz_ros2_control
WORKDIR /root/ws
RUN . /opt/ros/${ROS_DISTRO}/setup.sh && \
    rosdep update && \
    apt-get update && \
    rosdep install -r --from-paths src -yi --rosdistro ${ROS_DISTRO} && \
    rm -rf /var/lib/apt/lists/* && \
    colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTING=OFF --ament-cmake-args -DCMAKE_BUILD_TYPE=Release

### Update /ros_entrypoint.sh
RUN sed -i "s#/opt/ros/\$ROS_DISTRO/setup.bash#/root/ws/install/setup.sh#g" /ros_entrypoint.sh
  1. Run container (e.g. docker run ${FANCY_DOCKER_ARGS} ${USER}/gz_ros2_control:rolling)
  2. Launch any demo (e.g. ros2 launch ign_ros2_control_demos cart_example_position.launch.py)

Note: Use ogre render engine if ogre2 does not provide rendering for 3D view (gz-sim#1492)

Output

Full output log:

Click to expand!
~/ws# ros2 launch ign_ros2_control_demos cart_example_position.launch.py
[INFO] [launch]: All log files can be found below /root/.ros/log/2022-06-02-16-44-15-034148-pp1929-47
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [ign gazebo-1]: process started with pid [48]
[INFO] [robot_state_publisher-2]: process started with pid [50]
[INFO] [create-3]: process started with pid [53]
[robot_state_publisher-2] Link slideBar had 1 children
[robot_state_publisher-2] Link cart had 0 children
[robot_state_publisher-2] [INFO] [1654181055.151467124] [robot_state_publisher]: got segment cart
[robot_state_publisher-2] [INFO] [1654181055.151526069] [robot_state_publisher]: got segment slideBar
[robot_state_publisher-2] [INFO] [1654181055.151531999] [robot_state_publisher]: got segment world
[create-3] [INFO] [1654181055.162256825] [ros_ign_gazebo]: Requesting list of world names.
[ign gazebo-1] QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] qrc:/qml/StyleDialog.qml:112:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] qrc:/qml/StyleDialog.qml:105:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] qrc:/qml/StyleDialog.qml:98:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] qrc:qml/Main.qml:102:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] qrc:/qml/PluginMenu.qml:61:11: QML Image: Error decoding: qrc:/qml/images/search.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] qrc:/qml/PluginMenu.qml:27:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/Gazebo/GazeboDrawer.qml:241:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[create-3] [INFO] [1654181055.633441615] [ros_ign_gazebo]: Requested creation of entity.
[create-3] [INFO] [1654181055.633496932] [ros_ign_gazebo]: OK creation of entity.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:57:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[INFO] [create-3]: process has finished cleanly [pid 53]
[INFO] [ros2-4]: process started with pid [133]
[ign gazebo-1] [Msg] Ignition Gazebo GUI    v6.9.0
[ign gazebo-1] [Dbg] [Application.cc:90] Initializing application.
[ign gazebo-1] [GUI] [Dbg] [Application.cc:511] Create main window
[ign gazebo-1] [GUI] [Dbg] [PathManager.cc:66] Requesting resource paths through [/gazebo/resource_paths/get]
[ign gazebo-1] [GUI] [Dbg] [Gui.cc:156] GUI requesting list of world names. The server may be busy downloading resources. Please be patient.
[ign gazebo-1] [GUI] [Dbg] [PathManager.cc:55] Received resource paths.
[ign gazebo-1] [GUI] [Dbg] [Gui.cc:215] Requesting GUI from [/world/empty/gui/info]...
[ign gazebo-1] [GUI] [Dbg] [GuiRunner.cc:145] Requesting initial state from [/world/empty/state]...
[ign gazebo-1] [GUI] [Msg] Copied installed config [/usr/share/ignition/ignition-gazebo6/gui/gui.config] to default config [/root/.ignition/gazebo/6/gui.config].
[ign gazebo-1] [GUI] [Msg] Loading config [/root/.ignition/gazebo/6/gui.config]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [MinimalScene]
[ign gazebo-1] [GUI] [Msg] Added plugin [3D View] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [MinimalScene] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libMinimalScene.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [EntityContextMenuPlugin]
[ign gazebo-1] [GUI] [Msg] Added plugin [Entity Context Menu] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [EntityContextMenuPlugin] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libEntityContextMenuPlugin.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [GzSceneManager]
[ign gazebo-1] [GUI] [Msg] Added plugin [Scene Manager] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [GzSceneManager] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libGzSceneManager.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [InteractiveViewControl]
[ign gazebo-1] [GUI] [Msg] Camera view controller topic advertised on [/gui/camera/view_control]
[ign gazebo-1] [GUI] [Msg] Added plugin [] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [InteractiveViewControl] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libInteractiveViewControl.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [CameraTracking]
[ign gazebo-1] [GUI] [Msg] Added plugin [Camera tracking] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [CameraTracking] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libCameraTracking.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [MarkerManager]
[ign gazebo-1] [GUI] [Msg] Listening to stats on [/world/empty/stats]
[ign gazebo-1] [GUI] [Msg] Added plugin [Marker Manager] to main window
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/Spawn/Spawn.qml:32:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/WorldControl/WorldControl.qml:30:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Msg] Loaded plugin [MarkerManager] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libMarkerManager.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [SelectEntities]
[ign gazebo-1] [GUI] [Msg] Added plugin [Select entities] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [SelectEntities] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libSelectEntities.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [Spawn]
[ign gazebo-1] [GUI] [Msg] Added plugin [Spawn] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [Spawn] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libSpawn.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [VisualizationCapabilities]
[ign gazebo-1] [GUI] [Msg] View as transparent service on [/gui/view/transparent]
[ign gazebo-1] [GUI] [Msg] View as wireframes service on [/gui/view/wireframes]
[ign gazebo-1] [GUI] [Msg] View center of mass service on [/gui/view/com]
[ign gazebo-1] [GUI] [Msg] View inertia service on [/gui/view/inertia]
[ign gazebo-1] [GUI] [Msg] View collisions service on [/gui/view/collisions]
[ign gazebo-1] [GUI] [Msg] View joints service on [/gui/view/joints]
[ign gazebo-1] [GUI] [Msg] View frames service on [/gui/view/frames]
[ign gazebo-1] [GUI] [Msg] Added plugin [Visualization capabilities] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [VisualizationCapabilities] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libVisualizationCapabilities.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [WorldControl]
[ign gazebo-1] [GUI] [Msg] Using world control service [/world/empty/control]
[ign gazebo-1] [GUI] [Msg] Listening to stats on [/world/empty/stats]
[ign gazebo-1] [GUI] [Dbg] [WorldControl.cc:246] Using an event to share WorldControl msgs with the server
[ign gazebo-1] [GUI] [Msg] Added plugin [World control] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [WorldControl] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libWorldControl.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [WorldStats]
[ign gazebo-1] [GUI] [Msg] Listening to stats on [/world/empty/stats]
[ign gazebo-1] [GUI] [Msg] Added plugin [World stats] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [WorldStats] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libWorldStats.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [Shapes]
[ign gazebo-1] [GUI] [Msg] Added plugin [Shapes] to main window
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/TransformControl/TransformControl.qml:104:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/TransformControl/TransformControl.qml:99:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/TransformControl/TransformControl.qml:94:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/TransformControl/TransformControl.qml:89:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/Screenshot/Screenshot.qml:33:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo(<arguments>) { ... }
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/ComponentInspector.qml:183:22: QML Image: Error decoding: qrc:/Gazebo/images/unlock.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityTree/EntityTree.qml:148:7: QML ToolButton: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/WorldStats/WorldStats.qml:53:3: QML RowLayout: Binding loop detected for property "x"
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ign gazebo-1] [GUI] [Msg] [Msg] Ignition Gazebo Server v6.9.0
[ign gazebo-1] [Msg] Loading SDF world file[/usr/share/ignition/ignition-gazebo6/worlds/empty.sdf].
[ign gazebo-1] [Dbg] [Physics.cc:801] Loaded [ignition::physics::dartsim::Plugin] from library [/usr/lib/x86_64-linux-gnu/ign-physics-5/engine-plugins/libignition-physics-dartsim-plugin.so]
[ign gazebo-1] [Dbg] [SystemManager.cc:49] Loaded system [ignition::gazebo::systems::Physics] for entity [1]
[ign gazebo-1] [Msg] Create service on [/world/empty/create]
[ign gazebo-1] [Msg] Remove service on [/world/empty/remove]
[ign gazebo-1] [Msg] Pose service on [/world/empty/set_pose]
[ign gazebo-1] [Msg] Pose service on [/world/empty/set_pose_vector]
[ign gazebo-1] [Msg] Light configuration service on [/world/empty/light_config]
[ign gazebo-1] [Msg] Physics service on [/world/empty/set_physics]
[ign gazebo-1] [Msg] SphericalCoordinates service on [/world/empty/set_spherical_coordinates]
[ign gazebo-1] [Msg] Enable collision service on [/world/empty/enable_collision]
[ign gazebo-1] [Msg] Disable collision service on [/world/empty/disable_collision]
[ign gazebo-1] [Msg] Material service on [/world/empty/visual_config]
[ign gazebo-1] [Msg] Material service on [/world/empty/wheel_slip]
[ign gazebo-1] [Dbg] [SystemManager.cc:49] Loaded system [ignition::gazebo::systems::UserCommands] for entity [1]
[ign gazebo-1] [Dbg] [SystemManager.cc:49] Loaded system [ignition::gazebo::systems::SceneBroadcaster] for entity [1]
[ign gazebo-1] [Dbg] [SystemManager.cc:49] Loaded system [ignition::gazebo::systems::Contact] for entity [1]
[ign gazebo-1] [Msg] Loaded level [3]
[ign gazebo-1] [Msg] Serving world controls on [/world/empty/control], [/world/empty/control/state] and [/world/empty/playback/control]
[ign gazebo-1] [Msg] Serving GUI information on [/world/empty/gui/info]
[ign gazebo-1] [Msg] World [empty] initialized with [1ms] physics profile.
[ign gazebo-1] [Msg] Serving world SDF generation service on [/world/empty/generate_world_sdf]
[ign gazebo-1] [Msg] Serving world names on [/gazebo/worlds]
[ign gazebo-1] [Msg] Resource path add service on [/gazebo/resource_paths/add].
[ign gazebo-1] [Msg] Resource path get service on [/gazebo/resource_paths/get].
[ign gazebo-1] [Msg] Resource paths published on [/gazebo/resource_paths].
[ign gazebo-1] [Msg] Server control service on [/server_control].
[ign gazebo-1] [Msg] Found no publishers on /stats, adding root stats topic
[ign gazebo-1] [Msg] Found no publishers on /clock, adding root clock topic
[ign gazebo-1] [Dbg] [SimulationRunner.cc:491] Creating PostUpdate worker threads: 3
[ign gazebo-1] [INFO] [1654181056.324552803] [ignition_ros_control]: [ign_ros2_control] Fixed joint [world_to_base] (Entity=14)] is skipped
[ign gazebo-1] [INFO] [1654181056.327931756] [ignition_ros_control]: connected to service!! robot_state_publisher asking for robot_description
[ign gazebo-1] [INFO] [1654181056.328213018] [ignition_ros_control]: Received URDF from param server
[ign gazebo-1] [INFO] [1654181056.330923568] [ignition_ros_control]: Loading joint: slider_to_cart
[ign gazebo-1] [INFO] [1654181056.330944119] [ignition_ros_control]:    State:
[ign gazebo-1] [INFO] [1654181056.330950076] [ignition_ros_control]:             position
[ign gazebo-1] [INFO] [1654181056.330958123] [ignition_ros_control]:                     found initial value: -5.000000
[ign gazebo-1] [INFO] [1654181056.330965808] [ignition_ros_control]:             velocity
[ign gazebo-1] [INFO] [1654181056.330970391] [ignition_ros_control]:             effort
[ign gazebo-1] [INFO] [1654181056.330976035] [ignition_ros_control]:    Command:
[ign gazebo-1] [INFO] [1654181056.330980159] [ignition_ros_control]:             position
[ign gazebo-1] [INFO] [1654181056.331011520] [resource_manager]: Initialize hardware 'IgnitionSystem' 
[ign gazebo-1] [WARN] [1654181056.331017717] [ignition_ros_control]: On init...
[ign gazebo-1] [INFO] [1654181056.331043776] [resource_manager]: Successful initialization of hardware 'IgnitionSystem'
[ign gazebo-1] [INFO] [1654181056.331056118] [ignition_ros_control]: Loading controller_manager
[ign gazebo-1] [Wrn] [Component.hh:144] Trying to serialize component with data type [N3sdf3v125WorldE], which doesn't have `operator<<`. Component will not be serialized.
[ign gazebo-1] [WARN] [1654181056.352353557] [ignition_ros_control]:  Desired controller update period (0.01 s) is slower than the gazebo simulation period (0.001 s).
[ign gazebo-1] [GUI] [Wrn] [Component.hh:189] Trying to deserialize component with data type [N3sdf3v125WorldE], which doesn't have `operator>>`. Component will not be deserialized.
[ign gazebo-1] [INFO] [1654181056.488169388] [controller_manager]: Loading controller 'joint_state_broadcaster'
[ign gazebo-1] [INFO] [1654181056.498048630] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[ign gazebo-1] [INFO] [1654181056.498177356] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[ign gazebo-1] [ERROR] [1654181056.506945303] [joint_state_broadcaster]: None of requested interfaces exist. Controller will not run.
[ign gazebo-1] [WARN] [1654181056.506973398] []: Error occurred while doing error handling.
[ign gazebo-1] [ERROR] [1654181056.506989445] [controller_manager]: After activating, controller 'joint_state_broadcaster' is in state 'unconfigured', expected Active
[ros2-4] Sucessfully loaded controller joint_state_broadcaster into state active
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Vector3d.qml:83:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Vector3d.qml:83:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Vector3d.qml:83:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Vector3d.qml:83:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Vector3d.qml:83:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Vector3d.qml:83:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Physics.qml:89:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/ComponentInspector/Physics.qml:89:5: QML Image: Error decoding: file::/ComponentInspector/plottable_icon.svg: Unsupported image format
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityTree/EntityTree.qml:328:9: QML Image: Error decoding: qrc:/Gazebo/images/chevron-right.svg: Unsupported image format
[ign gazebo-1] libEGL warning: DRI2: failed to create dri screen
[ign gazebo-1] libEGL warning: DRI2: failed to create dri screen
[ign gazebo-1] [GUI] [Wrn] [Application.cc:753] [QT] file::/EntityTree/EntityTree.qml:328:9: QML Image: Error decoding: qrc:/Gazebo/images/chevron-right.svg: Unsupported image format
[INFO] [ros2-4]: process has finished cleanly [pid 133]
[INFO] [ros2-5]: process started with pid [365]
[ign gazebo-1] [GUI] [Wrn] [Ogre2RenderTarget.cc:575] Anti-aliasing level of '8' is not supported; valid FSAA levels are: [ 0 ]. Setting to 0
[ign gazebo-1] [Dbg] [SimulationRunner.cc:502] Creating postupdate worker thread (0)Loaded plugin [Shapes] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libShapes.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [Lights]
[ign gazebo-1] [GUI] [Msg] Added plugin [Lights] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [Lights] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libLights.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [TransformControl]
[ign gazebo-1] [GUI] [Dbg] [TransformControl.cc:219] Legacy mode is disabled; this plugin must be used with MinimalScene.
[ign gazebo-1] [GUI] [Msg] Added plugin [Transform control] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [TransformControl] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libTransformControl.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [Screenshot]
[ign gazebo-1] [GUI] [Msg] Screenshot service on [/gui/screenshot]
[ign gazebo-1] [GUI] [Msg] Added plugin [Screenshot] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [Screenshot] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libScreenshot.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [CopyPaste]
[ign gazebo-1] [GUI] [Msg] Added plugin [Copy/Paste] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [CopyPaste] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libCopyPaste.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [ComponentInspector]
[ign gazebo-1] [GUI] [Msg] Added plugin [Component inspector] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [ComponentInspector] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libComponentInspector.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:388] Loading plugin [EntityTree]
[ign gazebo-1] [GUI] [Msg] Added plugin [Entity tree] to main window
[ign gazebo-1] [GUI] [Msg] Loaded plugin [EntityTree] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libEntityTree.so]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:264] Loading window config
[ign gazebo-1] [GUI] [Msg] Using server control service [/server_control]
[ign gazebo-1] [GUI] [Dbg] [Application.cc:525] Applying config
[ign gazebo-1] [GUI] [Msg] Loading plugin [ignition-rendering-ogre2]
[ign gazebo-1] [GUI] [Dbg] [MinimalScene.cc:534] Create scene [scene]
[ign gazebo-1] [GUI] [Msg] Loading plugin [ignition-rendering-ogre2]
[ign gazebo-1] [GUI] [Dbg] [TransformControl.cc:528] TransformControl plugin is using camera [scene::Camera(65527)]
[ign gazebo-1] [GUI] [Msg] Loading plugin [ignition-rendering-ogre2]
[ign gazebo-1] [INFO] [1654181057.360232564] [controller_manager]: Loading controller 'joint_trajectory_controller'
[ign gazebo-1] [INFO] [1654181057.382854186] [controller_manager]: Configuring controller 'joint_trajectory_controller'
[ign gazebo-1] [INFO] [1654181057.382994650] [joint_trajectory_controller]: Command interfaces are [position] and and state interfaces are [position velocity].
[ign gazebo-1] [INFO] [1654181057.383803117] [joint_trajectory_controller]: Controller state will be published at 50.00 Hz.
[ign gazebo-1] [INFO] [1654181057.384459316] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[ign gazebo-1] [ERROR] [1654181057.407352076] [controller_manager]: Can't activate controller 'joint_trajectory_controller': Command interface with 'slider_to_cart/position' does not exist
[ros2-5] Sucessfully loaded controller joint_trajectory_controller into state active
[INFO] [ros2-5]: process has finished cleanly [pid 365]
## <Manually sent goal> ##
[ign gazebo-1] [INFO] [1654181407.856324391] [joint_trajectory_controller]: Received new action goal
[ign gazebo-1] [ERROR] [1654181407.856371822] [joint_trajectory_controller]: Can't accept new action goals. Controller is not running.

Failure to set initial_value for position state interface when loading velocity controller

Issue Description

I modified the slider_to_cart joint in the test_cart_velocity.xacro.urdf file by setting the initial value of the joint to 1.0:

<joint name="slider_to_cart">
  <command_interface name="velocity">
    <param name="min">-15</param>
    <param name="max">15</param>
  </command_interface>
  <state_interface name="position">
    <param name="initial_value">1.0</param>
  </state_interface>
  <state_interface name="velocity"/>
  <state_interface name="effort"/>
</joint>

When launching the "cart_example_velocity" demo, I receive a log indicating that the value was properly set:

[ruby $(which gz) sim-1] [INFO] [1689450594.524306874] [gz_ros_control]: Loading joint: slider_to_cart
[ruby $(which gz) sim-1] [INFO] [1689450594.524356266] [gz_ros_control]:        State:
[ruby $(which gz) sim-1] [INFO] [1689450594.524367407] [gz_ros_control]:                 position
[ruby $(which gz) sim-1] [INFO] [1689450594.524465351] [gz_ros_control]:                         found initial value: 1.000000
[ruby $(which gz) sim-1] [INFO] [1689450594.524477202] [gz_ros_control]:                 velocity
[ruby $(which gz) sim-1] [INFO] [1689450594.524515364] [gz_ros_control]:                 effort
[ruby $(which gz) sim-1] [INFO] [1689450594.524534715] [gz_ros_control]:        Command:
[ruby $(which gz) sim-1] [INFO] [1689450594.524541825] [gz_ros_control]:                 velocity

Additional logs indicate that the velocity_controller was successfully configured and activated. The issue that I am observing, however, is that the initial position is not reflected in Gazebo. This is confirmed when checking the /joint_states topic:

header:
  stamp:
    sec: 12
    nanosec: 628000000
  frame_id: ''
name:
- slider_to_cart
position:
- 0.0
velocity:
- 0.0
effort:
- 0.0

Expected Behavior

I would expect that the initial_value parameter setting for the state interfaces should persist regardless of the controller loaded. Is this the expected behavior?

Runtime Environment

I am running the examples in Docker using Ubuntu 22.04 with ROS Rolling and Gazebo Garden. I am using the latest version of the master branch. I have confirmed that I am able to run the other examples (e.g., the cart_example_position demo). I have not tried changing the initial_value param in the other examples. Furthermore, I have not tried running this natively (I prefer to avoid installing ROS natively if I can help it)

/odom is not published in diff_drive_example.launch.py

Environment

  • OS Version: Ubuntu 20.04 (osrf/ros:galactic-desktop docker)
  • Source build
  • Branch galactic
  • Ignition Fortress

Description

I've adapted this package to my URDF and so far, publishing /cmd_vel and feedback from /joint_states and /tf is working. On the other hand, for some reason, /odom is not being published by ros2 control even though the same config for a diff_drive_controller is working on a real hardware.

To ensure that, the problem is not related only to my configuration, I checked examples and the same thing happens in diff_drive_example.launch.py while running inside docker also from examples. Basically, publishing odometry does not work, no matter if the URDF from examples is or isn't modified. I am confused since from what I understand, if joint_state_broadcaster has data to publish diff_drive_controller should as well.

Inherit the ign_ros2_control::IgnitionSystemInterface

Hi,

I'm trying to port a gazebo 'standard' plugin to ign (Currently working on galactic so with fortress built from sources).

I'm facing some difficulties for sure but most is working fine and seems promising.

My main question is, how do my custom plugin implementing a ros2 controller gazebo plugin must inherit the ign_ros2_control::IgnitionSystemInterface ? Do you have a specific tutorial for that (or example) ?
As includes files from "ign_ros2_control" are not exported, they cannot be included in my plugin specific package (moslty looking for "ign_ros2_control/ign_system_interface.hpp"). Are there some install steps missing from your CMakeLists.txt files missing or am I missing something ?

Thanks

Bug-crash right after open an example (Ubuntu 20.04 foxy edifice)

Environment

  • OS Version: Ubuntu 20.04

  • Source or binary build? Binary ignition-edifice

    ignition-edifice
    • Generally, mention all circumstances that might affect rendering capabilities:

      • running on real hardware
      • [ *] other... (Using intel i7 on laptop local)
    • Rendering system info:

00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 530 [8086:191b] (rev 06)
:0

direct rendering: Yes
    Preferred profile: core (0x1)
    Max core profile version: 4.6
    Max compat profile version: 4.6
    Max GLES1 profile version: 1.1
    Max GLES[23] profile version: 3.2
OpenGL vendor string: Intel
OpenGL renderer string: Mesa Intel(R) HD Graphics 530 (SKL GT2)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 21.0.3
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 21.0.3
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 21.0.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20

bwuk         965  1.5  0.6 1090784 50744 tty2    Sl+  Jul22 689:53 /usr/lib/xorg/Xorg vt2 -displayfd 3 -auth /run/user/1000/gdm/Xauthority -background none -noreset -keeptty -verbose 3
bwuk      869792  0.0  0.0  18384   808 pts/13   S+   19:57   0:00 grep --color=auto Xorg


X.Org X Server 1.20.11
X Protocol Version 11, Revision 0
Build Operating System: linux Ubuntu
Current Operating System: Linux robots 5.8.0-59-generic #66~20.04.1-Ubuntu SMP Thu Jun 17 11:14:10 UTC 2021 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.8.0-59-generic root=UUID=e5b0707a-0f04-425c-91af-b430e5c42a61 ro quiet splash vt.handoff=7
Build Date: 06 July 2021  10:17:51AM
xorg-server 2:1.20.11-1ubuntu1~20.04.2 (For technical support please see http://www.ubuntu.com/support) 
Current version of pixman: 0.38.4
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.

Bug here:
vid1.mp4

Tried to do tutorials on ign using Foxy. This is the result after source install/setup.bnash

Steps to reproduce

(source /opt/ros/foxy/setup.bash)

  1. colcon build --merge-install
  2. source install/setup.bash
  3. ros2 launch ignition_ros2_control_demos cart_example_position.launch.py
  4. Crash suddenly.

Output

The video uploaded above

Custom Controller does not move Robot

Hello together,

I programmed a custom controller 'pseudo_bike' with ros2_control. With classic gazebo, it does run and I can move the robot with teleop_keyboard by changing the /cmd_vel value.

I tried to do the same thing with Fortress Gazebo. It loads the controller nicely with gz_ros2_control (Compiled from Source with Fortress and Ros2 Humble). But strangely by changing the /cmd_vel value, it does not move.

 [ruby $(which ign) gazebo-5] [INFO] [1669391816.505566917] [controller_manager]: Loading controller 'pseudo_bike'

[ruby $(which ign) gazebo-5] [INFO] [1669391816.527176421] [controller_manager]: Setting use_sim_time=True for pseudo_bike to match controller manager (see ros2_control#325 for details)

 [ruby $(which ign) gazebo-5] [INFO] [1669391816.537294163] [controller_manager]: Configuring controller 'pseudo_bike'

[ruby $(which ign) gazebo-5] [INFO] [1669391816.560380717] [pseudo_bike]: On activate: Initialize Joints

 [ruby $(which ign) gazebo-5] [INFO] [1669391816.560452567] [pseudo_bike]: Get Wheel Joint Instance

[ruby $(which ign) gazebo-5] [INFO] [1669391816.560736187] [pseudo_bike]: Get Wheel Joint Instance

 [ruby $(which ign) gazebo-5] [INFO] [1669391816.560771817] [pseudo_bike]: Get Steering Joint Instance

[ruby $(which ign) gazebo-5] [INFO] [1669391816.560890867] [pseudo_bike]: Get Steering Joint Instance

[ros2-7] Sucessfully loaded controller pseudo_bike into state active

[INFO] [ros2-7]: process has finished cleanly [pid 1367284]

Do I have to use something special in order to use gz_ros2_control package for fortress?

Edit:

In the meantime I've tried all the examples added in gz_ros2_control. I could manage to move the block through the effort, velocity and position controller.

The tricycle and diffdrive controller has the same problem as my custom controller.

And Thanks for the help

Hardware Interfaces unavailable on Humble

Hi, currently neither the humble or the master branches work on humble.
I think if the humble branch does not work because of this #68.
The master branch instead is broken on humble since #108 .
However b296ff2 seems to work fine on humble, I think bringing the humble branch up to it would solve the issue.

Position controller implementation seems odd

Thank you to the developers/maintainers of this library, and I appreciate the good foundation to build upon.

In #29, the position control was modified from using a JointPositionReset to using a JointVelocityCmd, with the description:

Position control was not working from Citadel, instead of using JointPositionReset I used a velocity controller.

I'm wondering what the "was not working" part means, because reverting the changes, I see the joint positions updating more in a way I expect. Does the "not working" refer to physics not taking place becauser the JointPositions "jump" when resetting?

The current implementation seems like a simple proportional position controller, where:

velocity = error * dt where

  • error = expected - current
  • dt = update rate

but the PID-behaviours of the motor are hardcoded and cannot be tuned to reflect what the actual motor would act like.

I've got three alternative suggestions:

  1. Implement a PID controller that sends a JointForceCmd. We could perhaps use ignition/gazebo/systems/JointPositionController to do this. This would more accurately reflect the motors movement and all the physics, but users would have to know the specifics of the underlying PID values used in the actuator.
  2. Revert to use JointPositionReset - JointPosition controllers are intended to be used when the physical actuator (eg. motor) can deal with joint position commands. This is useful if the specific controllers in the joints are unknown, but it is still possible to move the joints of the robot to where you're asking it to move to.
  3. Ditch implementation of controller inside this package. Let the users add ignition::gazebo::systems::JointPositionController and ignition::gazebo::systems::JointController to their sdf/urdf files, and simply publish messages for those plugins to pick up and act on appropriately.

My preference is 3.

@ahcorde What are your thoughts?

ign_ros2_control build failures on Rolling

ROS distro: Rolling
OS version: Ubuntu 22.04 (Jammy)
gazebo_ros2_control version: 0.5.0-1

Link to failing build: https://build.ros2.org/view/Rbin_uJ64/job/Rbin_uJ64__ign_ros2_control__ubuntu_jammy_amd64__binary/52/

Blocked packages

  • ign_ros2_control_demos

Build log excerpt:

00:06:29.205 /usr/lib/ccache/c++ -DDEFAULT_RMW_IMPLEMENTATION=rmw_fastrtps_cpp -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_QMLMODELS_LIB -DQT_QML_LIB -DQT_QUICKCONTROLS2_LIB -DQT_QUICK_LIB -DQT_WIDGETS_LIB -DRCUTILS_ENABLE_FAULT_INJECTION -Dign_ros2_control_system_EXPORTS -I/tmp/binarydeb/ros-rolling-ign-ros2-control-0.5.0/include -I/opt/ros/rolling/include -I/opt/ros/rolling/include/rclcpp_action -isystem /opt/ros/rolling/include/ament_index_cpp -isystem /opt/ros/rolling/include/pluginlib -isystem /opt/ros/rolling/include/rclcpp -isystem /opt/ros/rolling/include/rclcpp_lifecycle -isystem /opt/ros/rolling/include/control_msgs -isystem /opt/ros/rolling/include/lifecycle_msgs -isystem /opt/ros/rolling/include/rcpputils -isystem /opt/ros/rolling/include/rcutils -isystem /opt/ros/rolling/include/sensor_msgs -isystem /opt/ros/rolling/include/controller_manager_msgs -isystem /opt/ros/rolling/include/diagnostic_msgs -isystem /opt/ros/rolling/include/std_msgs -isystem /usr/include/ignition/gazebo6 -isystem /usr/include/ignition/math6 -isystem /usr/include/ignition/plugin1 -isystem /usr/include/ignition/cmake2 -isystem /usr/include/ignition/common4 -isystem /usr/include/uuid -isystem /usr/include/ignition/fuel_tools7 -isystem /usr/include/ignition/msgs8 -isystem /usr/include/ignition/gui6 -isystem /usr/include/ignition/utils1 -isystem /usr/include/eigen3 -isystem /usr/include/ignition/transport11 -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -isystem /usr/include/x86_64-linux-gnu/qt5/QtQml -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuick -isystem /usr/include/x86_64-linux-gnu/qt5/QtQmlModels -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtQuickControls2 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/ignition/sdformat12 -isystem /.. -isystem /opt/ros/rolling/include/class_loader -isystem /opt/ros/rolling/include/libstatistics_collector -isystem /opt/ros/rolling/include/builtin_interfaces -isystem /opt/ros/rolling/include/rosidl_runtime_c -isystem /opt/ros/rolling/include/rosidl_typesupport_interface -isystem /opt/ros/rolling/include/fastcdr -isystem /opt/ros/rolling/include/rosidl_runtime_cpp -isystem /opt/ros/rolling/include/rosidl_typesupport_fastrtps_cpp -isystem /opt/ros/rolling/include/rmw -isystem /opt/ros/rolling/include/rosidl_typesupport_fastrtps_c -isystem /opt/ros/rolling/include/rosidl_typesupport_introspection_c -isystem /opt/ros/rolling/include/rosidl_typesupport_introspection_cpp -isystem /opt/ros/rolling/include/rcl -isystem /opt/ros/rolling/include/rcl_interfaces -isystem /opt/ros/rolling/include/rcl_logging_interface -isystem /opt/ros/rolling/include/rcl_yaml_param_parser -isystem /opt/ros/rolling/include/libyaml_vendor -isystem /opt/ros/rolling/include/tracetools -isystem /opt/ros/rolling/include/statistics_msgs -isystem /opt/ros/rolling/include/rosgraph_msgs -isystem /opt/ros/rolling/include/rosidl_typesupport_cpp -isystem /opt/ros/rolling/include/rosidl_typesupport_c -isystem /opt/ros/rolling/include/rcl_lifecycle -isystem /opt/ros/rolling/include/rcl_action -isystem /opt/ros/rolling/include/action_msgs -isystem /opt/ros/rolling/include/unique_identifier_msgs -isystem /opt/ros/rolling/include/geometry_msgs -isystem /opt/ros/rolling/include/trajectory_msgs -g -O2 -ffile-prefix-map=/tmp/binarydeb/ros-rolling-ign-ros2-control-0.5.0=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2 -fPIC -Wall -Wextra -Wpedantic -I/usr/include/uuid -I/usr/include/x86_64-linux-gnu -fPIC -MD -MT CMakeFiles/ign_ros2_control-system.dir/src/ign_ros2_control_plugin.cpp.o -MF CMakeFiles/ign_ros2_control-system.dir/src/ign_ros2_control_plugin.cpp.o.d -o CMakeFiles/ign_ros2_control-system.dir/src/ign_ros2_control_plugin.cpp.o -c /tmp/binarydeb/ros-rolling-ign-ros2-control-0.5.0/src/ign_ros2_control_plugin.cpp
00:06:29.205 /tmp/binarydeb/ros-rolling-ign-ros2-control-0.5.0/src/ign_ros2_control_plugin.cpp: In member function ‘virtual void ign_ros2_control::IgnitionROS2ControlPlugin::Configure(const Entity&, const std::shared_ptr<const sdf::v12::Element>&, ignition::gazebo::v6::EntityComponentManager&, ignition::gazebo::v6::EventManager&)’:
00:06:45.373 /tmp/binarydeb/ros-rolling-ign-ros2-control-0.5.0/src/ign_ros2_control_plugin.cpp:385:67: error: ‘__gnu_cxx::__alloc_traits<std::allocator<hardware_interface::HardwareInfo>, hardware_interface::HardwareInfo>::value_type’ {aka ‘struct hardware_interface::HardwareInfo’} has no member named ‘hardware_class_type’
00:06:45.373   385 |     std::string robot_hw_sim_type_str_ = control_hardware_info[i].hardware_class_type;
00:06:45.373       |                                                                   ^~~~~~~~~~~~~~~~~~~                                       ^~~~~~~~~~~~~~~~~~~

Build Error: ‘const struct hardware_interface::InterfaceInfo’ has no member named ‘initial_value’

Environment

  • OS Version: Ubuntu 20.04
  • ign-gazebo: binary install
  • ign_ros2_control: source build - main
  • ros-galactic-hardware-interface version (1.3.0-1focal.20211223.005638)

Description

  • Building ign_ros2_control failed.

Output

Starting >>> ign_ros2_control
--- stderr: ign_ros2_control                             
/home/josh/ign_ws/src/ign_ros2_control/ign_ros2_control/src/ign_system.cpp: In lambda function:
/home/josh/ign_ws/src/ign_ros2_control/ign_ros2_control/src/ign_system.cpp:200:29: error: ‘const struct hardware_interface::InterfaceInfo’ has no member named ‘initial_value’
  200 |         if (!interface_info.initial_value.empty()) {
      |                             ^~~~~~~~~~~~~
/home/josh/ign_ws/src/ign_ros2_control/ign_ros2_control/src/ign_system.cpp:201:51: error: ‘const struct hardware_interface::InterfaceInfo’ has no member named ‘initial_value’
  201 |           double value = std::stod(interface_info.initial_value);
      |                                                   ^~~~~~~~~~~~~
/home/josh/ign_ws/src/ign_ros2_control/ign_ros2_control/src/ign_system.cpp:207:7: warning: control reaches end of non-void function [-Wreturn-type]
  207 |       };
      |       ^
make[2]: *** [CMakeFiles/ign_hardware_plugins.dir/build.make:63: CMakeFiles/ign_hardware_plugins.dir/src/ign_system.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/ign_hardware_plugins.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed   <<< ign_ros2_control [4.85s, exited with code 2]

Harware interfaces only get Infinite velocity values commanded on joint

gazebo : gazebo fortress
ros distro : humble
installed binaries: libigngazebo6

HI All,
I am working on implementing our mars rover project, and are getting the following error when all of the controllers are configured and active within ignition gazebo/gazebo.

[ruby $(which ign) gazebo-1] [Err] [JointFeatures.cc:157] Invalid joint velocity value [inf] commanded on joint [1_drive_joint DOF 0]. The command will be ignored

This is happening for all joints (1-6).
Is there something that I misconfigured, or missing within the URDF or config file?
Could this be a problem with the fortress control implementation as I have only gotten this error on the fortress gazebo platform?

The URDF control features that I am using, along with the plugins

<xacro:macro name="drive_control_interface" params="wheel_num">
        <joint name="${wheel_num}_drive_joint">
            <command_interface name="velocity">
                <param name="min">-120</param>
                <param name="max">120</param>
                <param name="initial_value">0.0</param>
            </command_interface>
            <state_interface name="velocity"/>
            <!-- <state_interface name="position"/> -->
        </joint>
    </xacro:macro>

<xacro:macro name="gazebo_control">
        <ros2_control name="IgitionSystem" type="system">
            <hardware>
                <plugin>ign_ros2_control/IgnitionSystem</plugin>
            </hardware>
            <xacro:drive_control_interface wheel_num="1"/>
            <xacro:drive_control_interface wheel_num="2"/>
            <xacro:drive_control_interface wheel_num="3"/>
            <xacro:drive_control_interface wheel_num="4"/>
            <xacro:drive_control_interface wheel_num="5"/>
            <xacro:drive_control_interface wheel_num="6"/>
        </ros2_control>

        <gazebo>
            <plugin filename="ign_ros2_control-system" name="ign_ros2_control::IgnitionROS2ControlPlugin">
                <parameters>$(find rover_description)/config/rover_controller.yaml</parameters>
                <robot_param>robot_description</robot_param>
                <robot_param_node>robot_state_publisher</robot_param_node>
            </plugin>
       <gazebo>
</xacro:macro>

and the joint definitins is as follows

<joint name="${prefix}_drive_joint" type="continuous">
            <origin xyz="0.0 0.0 -0.07543" rpy="1.5707 0.0 0.0"/>
            <parent link="${prefix}_wheel_mount"/>
            <child link="${prefix}_wheel"/>
            <xacro:if value="${side == 'R'}">
                <axis xyz="0.0 0.0 1.0"/>
            </xacro:if>
            <xacro:if value="${side == 'L'}">
                <axis xyz="0.0 0.0 -1.0"/>
            </xacro:if>
            <limit effort="20.0" velocity="5.0"/>
        </joint>

Also the config file for the system

differential_controller:
  ros__parameters:
    left_wheel_names: ["2_drive_joint"]
    right_wheel_names: ["1_drive_joint"]

    wheel_separation_multiplier: 1.0
    left_wheel_radius_multiplier: 1.0
    right_wheel_radius_multiplier: 1.0

    publish_rate: 50.0
    odom_frame_id: odom
    base_frame_id: rover_base_link
    pose_covariance_diagonal : [0.001, 0.001, 0.0, 0.0, 0.0, 0.01]
    twist_covariance_diagonal: [0.001, 0.0, 0.0, 0.0, 0.0, 0.01]
    open_loop: false
    enable_odom_tf: true

    cmd_vel_timeout: 0.5
    use_stamped_vel: false

    linear.x.has_velocity_limits: true
    linear.x.has_acceleration_limits: true
    linear.x.has_jerk_limits: false
    linear.x.max_velocity: 1.0
    linear.x.min_velocity: -1.0
    linear.x.max_acceleration: 1.0
    linear.x.max_jerk: 1.0
    linear.x.min_jerk: -1.0

    angular.z.has_velocity_limits: true
    angular.z.has_acceleration_limits: true
    angular.z.has_jerk_limits: false
    angular.z.max_velocity: 5.0
    angular.z.min_velocity: -5.0
    angular.z.max_acceleration: 1.0
    angular.z.min_acceleration: -1.0
    angular.z.max_jerk: 1.0
    angular.z.min_jerk: -1.0

dockerfile for reference

FROM osrf/ros:humble-desktop-full-jammy


ENV NVIDIA_VISIBLE_DEVICES \
    ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES \
    ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics

RUN apt-get update && apt-get -y upgrade

RUN apt-get update && apt-get -y install ros-${ROS_DISTRO}-ros2-control \ 
                                ros-${ROS_DISTRO}-ros2-controllers \
                                ros-${ROS_DISTRO}-ros-ign-gazebo \ 
                                libignition-gazebo6-dev \
                                ros-${ROS_DISTRO}-xacro

RUN mkdir -p /int_pkgs/src
RUN chown -R 1000:1000 /int_pkgs

COPY ./ros_entrypoint.sh /
RUN chmod +x /ros_entrypoint.sh

ENV IGNITION_VERSION=fortress
ENV GZ_VERSION=fortress

RUN mkdir -p /comp_pkg/src
WORKDIR /comp_pkg/src
RUN git clone https://github.com/gazebosim/ros_gz.git -b ${ROS_DISTRO}
RUN git clone https://github.com/ros-controls/gz_ros2_control.git
WORKDIR /comp_pkg
RUN . /opt/ros/${ROS_DISTRO}/setup.sh && colcon build

Why don't you remove _mimic suffix?

Currentry mimic joint impelemtation causes following error:

[move_group-3] [ERROR] [1669079269.679936655] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
[move_group-3] [ERROR] [1669079269.685043176] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
[move_group-3] [ERROR] [1669079269.690190959] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
[move_group-3] [ERROR] [1669079269.695329495] [moveit_robot_model.robot_model]: Joint 'crane_x7_gripper_finger_b_joint_mimic' not found in model 'crane_x7'
...

Actual the joint name in my URDF is crane_x7_gripper_finger_b_joint yet the controller outputs states of the crane_x7_gripper_finger_b_joint_mimic joint.

Maybe the reason why this happend is here:

Could you remove the _mimic suffix?

Failed to load system plugin [ign_ros2_control]

Hello,
I am trying to get moveit2 configured arm working in ignition.
I am using humble with docker
set the following:
export IGN_GAZEBO_SYSTEM_PLUGIN_PATH="/root/ws_moveit/install/ign_ros2_control/lib"
export XDG_RUNTIME_DIR=/run/user/1000
export IGN_FILE_PATH="/root/ws_moveit/src"
export RUNLEVEL=3

Have added the flowing to the URDF file:

<ros2_control name="courgette_arm_system" type="system"> <hardware> <plugin>ign_ros2_control/IgnitionSystem</plugin> </hardware> ... </ros2_control>
<gazebo> <plugin name="ign_ros2_control" filename="libign_ros2_control-system.so"> <parameters>/root/ws_moveit/install/courgette_moveit_config_new/share/courgette_moveit_config_new/config/ros2_controllers.yaml</parameters> <controller_manager_prefix_node_name>controller_manager</controller_manager_prefix_node_name> </plugin> </gazebo>

I am getting the following error

[ign gazebo-1] [ignition::plugin::Loader::LookupPlugin] Failed to get info for [ign_ros2_control]. Could not find a plugin with that name or alias. [ign gazebo-1] [Err] [SystemLoader.cc:91] Failed to load system plugin [ign_ros2_control] : could not instantiate from library [libign_ros2_control-system.so] from path [/root/ws_moveit/install/ign_ros2_control/lib/libign_ros2_control-system.so].
Any help would be appreciated

Failed to load system plugin [gz_ros2_control-system]

Hi,

I have the following error when launching ros2 launch gz_ros2_control_demos diff_drive_example.launch.py :

[ign gazebo-1] Library [/colcon_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so] does not export any plugins. The symbol [IgnitionPluginHook] is missing, or it is not externally visible.
[ign gazebo-1] [Err] [SystemLoader.cc:87] Failed to load system plugin [gz_ros2_control-system] : couldn't load library on path [/colcon_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so].

OS Version: WSL with Ubuntu 22.4
Using Docker image : Ubuntu 22.04 + ROS2 Humble + Gazebo Garden (installed from debs)

Behavior :

Gazebo (ex Ignition) launches successfully but with that error message. As such, many controllers and topics are missing and I can't control the robot.

I am also suprised that in the roslaunch console, the node is still called "ign gazebo".

image

Steps to reproduce :

I've tried to change different plugin_names and file_names in the urdf but without success. Any idea ? I see that the branch ign_to_gz has been updated a few hours ago but with the same behavior.

Thanks !

I attach the Dockerfile for reproduction
Dockerfile.humble-full-gz.txt

How can I add a FT sensor?

At the moment I need to add FT sensor measurement, can I do it like IMU sensor? As I noticed there is no corresponding protobuf message like IMU, is it enough for me to use Wrench? At the moment I'm just exploring the possibilities

Something like this:

class FTData
{
public:
    std::string name{};
    std::string topicName{};
    ignition::gazebo::Entity sim_ft_sensors_ = ignition::gazebo::kNullEntity;
    std::array<double, 6> ft_sensor_data_;
    void OnFT(const ignition::msgs::Wrench & msg);
};

void FTData::OnFT(const ignition::msgs::Wrench & _msg)
{
    this->ft_sensor_data_[0] = _msg.torque().x();
    this->ft_sensor_data_[1] = _msg.torque().y();
    this->ft_sensor_data_[2] = _msg.torque().z();
    this->ft_sensor_data_[3] = _msg.force().x();
    this->ft_sensor_data_[4] = _msg.force().y();
    this->ft_sensor_data_[5] = _msg.force().z();
}

My setup:

  • ROS2 Humble
  • Ubuntu 22.04
  • Gazebo Fortress
  • gz_ros2_control from humble branch building from source

Refactor rclcpp::init to not take any arguments

On this line, Rclcpp init is called with a bunch of arguments: https://github.com/ros-controls/gz_ros2_control/blob/master/gz_ros2_control/src/gz_ros2_control_plugin.cpp#L338

This makes it hard to write other plugins for Gazebo that want to connect to ROS without being very specific in their load order. If I write another plugin and it calls Rclcpp init first, Gz Ros2 Control will not be able to initialize correctly.

I would like to refactor this method to set these parameters manually on the node instead of using rclcpp init to do it automatically. Is there any issues anyone sees with this approach?

Multiple command interfaces not functioning

Hi, I am trying to add gazebo fortress to https://github.com/lbr-stack/lbr_fri_ros2_stack for humble

Therefore I have installed ros-humble-ign-ros2-control binaries.

I added the following sections to the urdf

        <gazebo>
            <plugin filename="ign_ros2_control-system" name="ign_ros2_control::IgnitionROS2ControlPlugin">
                ...
            </plugin>
        </gazebo>

        <ros2_control name="lbr_hardware_interface" type="system">
            <hardware>
                <plugin>ign_ros2_control/IgnitionSystem</plugin>
            </hardware>
        </ros2_control>

The simulation starts and the controllers get activated. However, when sending commands to the action server, the robot just won't move and I don't know what to do. The joint state broadcaster works fine.

The demos in this repository work fine.

What is something that I could be looking for? Thank you for the help!

Ignition segmentation fault when loading plugin in ROS 2 rolling

Hi, I'm loading differential drive and joints control plugins in a Gazebo Ignition simulation.
I'm using ROS 2 Rolling with this repo installed from debian packages.

Gazebo ignition crashes during startup with the following backtrace

[ign gazebo-1] #31   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff8514a0317, in 
[ign gazebo-1] #30   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85163530c, in rb_vm_exec
[ign gazebo-1] #29   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85162fc96, in 
[ign gazebo-1] #28   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85162cfc5, in 
[ign gazebo-1] #27   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85162ac34, in 
[ign gazebo-1] #26   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff851576a1e, in 
[ign gazebo-1] #25   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff8514a19ac, in rb_protect
[ign gazebo-1] #24   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff851639c61, in rb_yield
[ign gazebo-1] #23   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85163530c, in rb_vm_exec
[ign gazebo-1] #22   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85162fc96, in 
[ign gazebo-1] #21   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85162cfc5, in 
[ign gazebo-1] #20   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff85162ac34, in 
[ign gazebo-1] #19   Object "/usr/lib/x86_64-linux-gnu/ruby/3.0.0/fiddle.so", at 0x7ff84d9ee44b, in 
[ign gazebo-1] #18   Object "/lib/x86_64-linux-gnu/libruby-3.0.so.3.0", at 0x7ff8515f8088, in rb_nogvl
[ign gazebo-1] #17   Object "/usr/lib/x86_64-linux-gnu/ruby/3.0.0/fiddle.so", at 0x7ff84d9edd6b, in 
[ign gazebo-1] #16   Object "/lib/x86_64-linux-gnu/libffi.so.8", at 0x7ff84d998492, in 
[ign gazebo-1] #15   Object "/lib/x86_64-linux-gnu/libffi.so.8", at 0x7ff84d99be2d, in 
[ign gazebo-1] #14   Object "/usr/lib/x86_64-linux-gnu/libignition-gazebo6-ign.so.6.13.0", at 0x7ff84cefda53, in runServer
[ign gazebo-1] #13   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbca635, in 
[ign gazebo-1] #12   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbd891a, in ignition::gazebo::v6::SimulationRunner::Run(unsigned long)
[ign gazebo-1] #11   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbd7fdd, in ignition::gazebo::v6::SimulationRunner::Step(ignition::gazebo::v6::UpdateInfo const&)
[ign gazebo-1] #10   Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbd3ef1, in ignition::gazebo::v6::SimulationRunner::UpdateSystems()
[ign gazebo-1] #9    Object "/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/libignition-gazebo-user-commands-system.so", at 0x7ff820dade80, in ignition::gazebo::v6::systems::UserCommands::PreUpdate(ignition::gazebo::v6::UpdateInfo const&, ignition::gazebo::v6::EntityComponentManager&)
[ign gazebo-1] #8    Object "/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/libignition-gazebo-user-commands-system.so", at 0x7ff820db1a79, in ignition::gazebo::v6::systems::CreateCommand::Execute()
[ign gazebo-1] #7    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbac4cf, in ignition::gazebo::v6::SdfEntityCreator::CreateEntities(sdf::v12::Model const*)
[ign gazebo-1] #6    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cb89e43, in 
[ign gazebo-1] #5    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbdba38, in ignition::gazebo::v6::SimulationRunner::LoadPlugins(unsigned long, std::vector<sdf::v12::Plugin, std::allocator<sdf::v12::Plugin> > const&)
[ign gazebo-1] #4    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbe8828, in ignition::gazebo::v6::SystemManager::LoadPlugin(unsigned long, sdf::v12::Plugin const&)
[ign gazebo-1] #3    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbe83fa, in ignition::gazebo::v6::SystemManager::AddSystem(ignition::plugin::TemplatePluginPtr<ignition::plugin::SpecializedPlugin<ignition::gazebo::v6::System, ignition::gazebo::v6::ISystemConfigure, ignition::gazebo::v6::ISystemPreUpdate, ignition::gazebo::v6::ISystemUpdate, ignition::gazebo::v6::ISystemPostUpdate> > const&, unsigned long, std::shared_ptr<sdf::v12::Element const>)
[ign gazebo-1] #2    Object "/lib/x86_64-linux-gnu/libignition-gazebo6.so.6", at 0x7ff84cbe7f68, in ignition::gazebo::v6::SystemManager::AddSystemImpl(ignition::gazebo::v6::SystemInternal, std::shared_ptr<sdf::v12::Element const>)
[ign gazebo-1] #1    Object "/opt/ros/rolling/lib/libign_ros2_control-system.so", at 0x7ff8204afc5a, in ign_ros2_control::IgnitionROS2ControlPlugin::Configure(unsigned long const&, std::shared_ptr<sdf::v12::Element const> const&, ignition::gazebo::v6::EntityComponentManager&, ignition::gazebo::v6::EventManager&)
[ign gazebo-1] #0    Object "/opt/ros/rolling/lib/libign_hardware_plugins.so", at 0x7ff814e866a3, in ign_ros2_control::IgnitionSystem::initSim(std::shared_ptr<rclcpp::Node>&, std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, unsigned long, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, unsigned long> > >&, hardware_interface::HardwareInfo const&, ignition::gazebo::v6::EntityComponentManager&, int&)
[ign gazebo-1] Segmentation fault (Address not mapped to object [(nil)])

Note that this problem seems to be fixed if I build from sources the master branch

Can't load controller while running demos with Humble

Hi There,

I get these errors when i'm trying to run the cart_example_position.launch.py and couldn't find the fix for it so far:

[ruby $(which ign) gazebo-1] [INFO] [1675263006.927604309] [resource_manager]: Successful initialization of hardware 'IgnitionSystem'
[ruby $(which ign) gazebo-1] [INFO] [1675263006.927643097] [ignition_ros_control]: Loading controller_manager
[ruby $(which ign) gazebo-1] [WARN] [1675263006.939326106] [ignition_ros_control]:  Desired controller update period (0.01 s) is slower than the gazebo simulation period (0.001 s).
[ruby $(which ign) gazebo-1] [INFO] [1675263007.076156142] [controller_manager]: Loading controller 'joint_state_broadcaster'
[ruby $(which ign) gazebo-1] [INFO] [1675263007.089760367] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[ruby $(which ign) gazebo-1] [INFO] [1675263007.089878783] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[ruby $(which ign) gazebo-1] [ERROR] [1675263007.104400708] [joint_state_broadcaster]: None of requested interfaces exist. Controller will not run.
[ruby $(which ign) gazebo-1] [WARN] [1675263007.104440229] []: Error occurred while doing error handling.
[ruby $(which ign) gazebo-1] [ERROR] [1675263007.104457272] [controller_manager]: After activating, controller 'joint_state_broadcaster' is in state 'unconfigured', expected Active
[ros2-4] Sucessfully loaded controller joint_state_broadcaster into state active
[INFO] [ros2-4]: process has finished cleanly [pid 1155134]
[INFO] [ros2-5]: process started with pid [1155171]
[ruby $(which ign) gazebo-1] [INFO] [1675263008.025939674] [controller_manager]: Loading controller 'joint_trajectory_controller'
[ruby $(which ign) gazebo-1] [INFO] [1675263008.030003948] [joint_trajectory_controller.interpolation_methods]: No interpolation method parameter was given. Using the default, VARIABLE_DEGREE_SPLINE.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039644914] [controller_manager]: Configuring controller 'joint_trajectory_controller'
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039716655] [joint_trajectory_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039736852] [joint_trajectory_controller]: Command interfaces are [position] and state interfaces are [position velocity].
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039749101] [joint_trajectory_controller.interpolation_methods]: No interpolation method parameter was given. Using the default, VARIABLE_DEGREE_SPLINE.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039751886] [joint_trajectory_controller]: Using 'splines' interpolation method.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.040439275] [joint_trajectory_controller]: Controller state will be published at 50.00 Hz.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.041057879] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[ruby $(which ign) gazebo-1] [ERROR] [1675263008.053879538] [controller_manager]: Can't activate controller 'joint_trajectory_controller': Command interface with 'slider_to_cart/position' does not exist
[ros2-5] Sucessfully loaded controller joint_trajectory_controller into state active
Full log...
$ ros2 launch ign_ros2_control_demos cart_example_position.launch.py
[INFO] [launch]: All log files can be found below /home/azazdeaz/.ros/log/2023-02-01-15-49-57-389591-moveit2-humble.azazdeaz-Laptop-1155052
[INFO] [launch]: Default logging verbosity is set to INFO
ign_args is deprecated, migrate to gz_args!
[INFO] [ruby $(which ign) gazebo-1]: process started with pid [1155053]
[INFO] [robot_state_publisher-2]: process started with pid [1155055]
[INFO] [create-3]: process started with pid [1155058]
[robot_state_publisher-2] [INFO] [1675262997.828304377] [robot_state_publisher]: got segment cart
[robot_state_publisher-2] [INFO] [1675262997.828357569] [robot_state_publisher]: got segment slideBar
[robot_state_publisher-2] [INFO] [1675262997.828362748] [robot_state_publisher]: got segment world
[create-3] [INFO] [1675263005.856669348] [ros_gz_sim]: Requesting list of world names.
[ruby $(which ign) gazebo-1] Warning: Ignoring XDG_SESSION_TYPE=wayland on Gnome. Use QT_QPA_PLATFORM=wayland to run on Wayland anyway.
[ruby $(which ign) gazebo-1] [Dbg] [ign.cc:161] Subscribing to [/gazebo/starting_world].
[ruby $(which ign) gazebo-1] [Dbg] [ign.cc:163] Waiting for a world to be set from the GUI...
[ruby $(which ign) gazebo-1] [Msg] Received world [empty.sdf] from the GUI.
[ruby $(which ign) gazebo-1] [Dbg] [ign.cc:167] Unsubscribing from [/gazebo/starting_world].
[ruby $(which ign) gazebo-1] [Msg] Ignition Gazebo Server v6.14.0
[ruby $(which ign) gazebo-1] [Msg] Loading SDF world file[/usr/share/ignition/ignition-gazebo6/worlds/empty.sdf].
[ruby $(which ign) gazebo-1] [Msg] Serving entity system service on [/entity/system/add]
[ruby $(which ign) gazebo-1] [Dbg] [Physics.cc:803] Loaded [ignition::physics::dartsim::Plugin] from library [/usr/lib/x86_64-linux-gnu/ign-physics-5/engine-plugins/libignition-physics-dartsim-plugin.so]
[ruby $(which ign) gazebo-1] [Dbg] [SystemManager.cc:70] Loaded system [ignition::gazebo::systems::Physics] for entity [1]
[ruby $(which ign) gazebo-1] [Msg] Create service on [/world/empty/create]
[ruby $(which ign) gazebo-1] [Msg] Remove service on [/world/empty/remove]
[ruby $(which ign) gazebo-1] [Msg] Pose service on [/world/empty/set_pose]
[ruby $(which ign) gazebo-1] [Msg] Pose service on [/world/empty/set_pose_vector]
[ruby $(which ign) gazebo-1] [Msg] Light configuration service on [/world/empty/light_config]
[ruby $(which ign) gazebo-1] [Msg] Physics service on [/world/empty/set_physics]
[ruby $(which ign) gazebo-1] [Msg] SphericalCoordinates service on [/world/empty/set_spherical_coordinates]
[ruby $(which ign) gazebo-1] [Msg] Enable collision service on [/world/empty/enable_collision]
[ruby $(which ign) gazebo-1] [Msg] Disable collision service on [/world/empty/disable_collision]
[ruby $(which ign) gazebo-1] [Msg] Material service on [/world/empty/visual_config]
[ruby $(which ign) gazebo-1] [Msg] Material service on [/world/empty/wheel_slip]
[ruby $(which ign) gazebo-1] [Dbg] [SystemManager.cc:70] Loaded system [ignition::gazebo::systems::UserCommands] for entity [1]
[ruby $(which ign) gazebo-1] [Dbg] [SystemManager.cc:70] Loaded system [ignition::gazebo::systems::SceneBroadcaster] for entity [1]
[ruby $(which ign) gazebo-1] [Dbg] [SystemManager.cc:70] Loaded system [ignition::gazebo::systems::Contact] for entity [1]
[ruby $(which ign) gazebo-1] [Msg] Loaded level [3]
[ruby $(which ign) gazebo-1] [Msg] Serving world controls on [/world/empty/control], [/world/empty/control/state] and [/world/empty/playback/control]
[ruby $(which ign) gazebo-1] [Msg] Serving GUI information on [/world/empty/gui/info]
[ruby $(which ign) gazebo-1] [Msg] World [empty] initialized with [1ms] physics profile.
[ruby $(which ign) gazebo-1] [Msg] Serving world SDF generation service on [/world/empty/generate_world_sdf]
[ruby $(which ign) gazebo-1] [Msg] Serving world names on [/gazebo/worlds]
[ruby $(which ign) gazebo-1] [Msg] Resource path add service on [/gazebo/resource_paths/add].
[ruby $(which ign) gazebo-1] [Msg] Resource path get service on [/gazebo/resource_paths/get].
[create-3] [INFO] [1675263006.217760012] [ros_gz_sim]: Requested creation of entity.
[create-3] [INFO] [1675263006.217812114] [ros_gz_sim]: OK creation of entity.
[INFO] [create-3]: process has finished cleanly [pid 1155058]
[INFO] [ros2-4]: process started with pid [1155134]
[ruby $(which ign) gazebo-1] [INFO] [1675263006.920307121] [ignition_ros_control]: [ign_ros2_control] Fixed joint [world_to_base] (Entity=15)] is skipped
[ruby $(which ign) gazebo-1] [INFO] [1675263006.921807654] [ignition_ros_control]: connected to service!! robot_state_publisher asking for robot_description
[ruby $(which ign) gazebo-1] [INFO] [1675263006.922246452] [ignition_ros_control]: Received URDF from param server
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926828816] [ignition_ros_control]: Loading joint: slider_to_cart
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926848257] [ignition_ros_control]: 	State:
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926858005] [ignition_ros_control]: 		 position
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926905496] [ignition_ros_control]: 			 found initial value: -5.000000
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926913277] [ignition_ros_control]: 		 velocity
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926933040] [ignition_ros_control]: 		 effort
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926942928] [ignition_ros_control]: 	Command:
[ruby $(which ign) gazebo-1] [INFO] [1675263006.926947060] [ignition_ros_control]: 		 position
[ruby $(which ign) gazebo-1] [INFO] [1675263006.927433539] [resource_manager]: Initialize hardware 'IgnitionSystem' 
[ruby $(which ign) gazebo-1] [WARN] [1675263006.927442964] [ignition_ros_control]: On init...
[ruby $(which ign) gazebo-1] [INFO] [1675263006.927604309] [resource_manager]: Successful initialization of hardware 'IgnitionSystem'
[ruby $(which ign) gazebo-1] [INFO] [1675263006.927643097] [ignition_ros_control]: Loading controller_manager
[ruby $(which ign) gazebo-1] [WARN] [1675263006.939326106] [ignition_ros_control]:  Desired controller update period (0.01 s) is slower than the gazebo simulation period (0.001 s).
[ruby $(which ign) gazebo-1] [INFO] [1675263007.076156142] [controller_manager]: Loading controller 'joint_state_broadcaster'
[ruby $(which ign) gazebo-1] [INFO] [1675263007.089760367] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[ruby $(which ign) gazebo-1] [INFO] [1675263007.089878783] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[ruby $(which ign) gazebo-1] [ERROR] [1675263007.104400708] [joint_state_broadcaster]: None of requested interfaces exist. Controller will not run.
[ruby $(which ign) gazebo-1] [WARN] [1675263007.104440229] []: Error occurred while doing error handling.
[ruby $(which ign) gazebo-1] [ERROR] [1675263007.104457272] [controller_manager]: After activating, controller 'joint_state_broadcaster' is in state 'unconfigured', expected Active
[ros2-4] Sucessfully loaded controller joint_state_broadcaster into state active
[INFO] [ros2-4]: process has finished cleanly [pid 1155134]
[INFO] [ros2-5]: process started with pid [1155171]
[ruby $(which ign) gazebo-1] [INFO] [1675263008.025939674] [controller_manager]: Loading controller 'joint_trajectory_controller'
[ruby $(which ign) gazebo-1] [INFO] [1675263008.030003948] [joint_trajectory_controller.interpolation_methods]: No interpolation method parameter was given. Using the default, VARIABLE_DEGREE_SPLINE.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039644914] [controller_manager]: Configuring controller 'joint_trajectory_controller'
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039716655] [joint_trajectory_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039736852] [joint_trajectory_controller]: Command interfaces are [position] and state interfaces are [position velocity].
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039749101] [joint_trajectory_controller.interpolation_methods]: No interpolation method parameter was given. Using the default, VARIABLE_DEGREE_SPLINE.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.039751886] [joint_trajectory_controller]: Using 'splines' interpolation method.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.040439275] [joint_trajectory_controller]: Controller state will be published at 50.00 Hz.
[ruby $(which ign) gazebo-1] [INFO] [1675263008.041057879] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[ruby $(which ign) gazebo-1] [ERROR] [1675263008.053879538] [controller_manager]: Can't activate controller 'joint_trajectory_controller': Command interface with 'slider_to_cart/position' does not exist
[ros2-5] Sucessfully loaded controller joint_trajectory_controller into state active
[ruby $(which ign) gazebo-1] _IceTransSocketUNIXConnect: Cannot connect to non-local host azazdeaz-Laptop
[INFO] [ros2-5]: process has finished cleanly [pid 1155171]
[ruby $(which ign) gazebo-1] _IceTransSocketUNIXConnect: Cannot connect to non-local host azazdeaz-Laptop
[ruby $(which ign) gazebo-1] Qt: Session management error: Could not open network socket
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] qrc:/qml/StyleDialog.qml:112:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] qrc:/qml/StyleDialog.qml:105:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] qrc:/qml/StyleDialog.qml:98:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] qrc:qml/Main.qml:102:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] qrc:/qml/PluginMenu.qml:27:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/Gazebo/GazeboDrawer.qml:241:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:57:5: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [Wrn] [Component.hh:144] Trying to serialize component with data type [N3sdf3v125WorldE], which doesn't have `operator<<`. Component will not be serialized.
[ruby $(which ign) gazebo-1] [Msg] Resource path resolve service on [/gazebo[Msg] Ignition Gazebo GUI    v6.14.0
[ruby $(which ign) gazebo-1] [Dbg] [Gui.cc:253] Waiting for subscribers to [/gazebo/starting_world]...
[ruby $(which ign) gazebo-1] [Dbg] [Application.cc:92] Initializing application.
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:555] Create main window
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [PathManager.cc:66] Requesting resource paths through [/gazebo/resource_paths/get]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Gui.cc:333] GUI requesting list of world names. The server may be busy downloading resources. Please be patient.
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [PathManager.cc:55] Received resource paths.
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Gui.cc:391] Requesting GUI from [/world/empty/gui/info]...
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [GuiRunner.cc:145] Requesting initial state from [/world/empty/state]...
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loading config [/home/azazdeaz/.ignition/gazebo/6/gui.config]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [MinimalScene]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [3D View] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [MinimalScene] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libMinimalScene.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [EntityContextMenuPlugin]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Entity Context Menu] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [EntityContextMenuPlugin] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libEntityContextMenuPlugin.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [GzSceneManager]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Scene Manager] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [GzSceneManager] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libGzSceneManager.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [InteractiveViewControl]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Camera view controller topic advertised on [/gui/camera/view_control]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Camera reference visual topic advertised on [/gui/camera/view_control/reference_visual]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Camera view control sensitivity advertised on [/gui/camera/view_control/sensitivity]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Interactive view control] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [InteractiveViewControl] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libInteractiveViewControl.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [CameraTracking]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Camera tracking] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [CameraTracking] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libCameraTracking.so]
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/Spawn/Spawn.qml:32:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/WorldControl/WorldControl.qml:30:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [MarkerManager]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Listening to stats on [/world/empty/stats]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Marker Manager] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [MarkerManager] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libMarkerManager.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [SelectEntities]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Select entities] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [SelectEntities] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libSelectEntities.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [Spawn]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Spawn] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [Spawn] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libSpawn.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [VisualizationCapabilities]
[ruby $(which ign) gazebo-1] [GUI] [Msg] View as transparent service on [/gui/view/transparent]
[ruby $(which ign) gazebo-1] [GUI] [Msg] View as wireframes service on [/gui/view/wireframes]
[ruby $(which ign) gazebo-1] [GUI] [Msg] View center of mass service on [/gui/view/com]
[ruby $(which ign) gazebo-1] [GUI] [Msg] View inertia service on [/gui/view/inertia]
[ruby $(which ign) gazebo-1] [GUI] [Msg] View collisions service on [/gui/view/collisions]
[ruby $(which ign) gazebo-1] [GUI] [Msg] View joints service on [/gui/view/joints]
[ruby $(which ign) gazebo-1] [GUI] [Msg] View frames service on [/gui/view/frames]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Visualization capabilities] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [VisualizationCapabilities] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libVisualizationCapabilities.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [WorldControl]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Using world control service [/world/empty/control]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Listening to stats on [/world/empty/stats]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [WorldControl.cc:246] Using an event to share WorldControl msgs with the server
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [World control] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [WorldControl] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libWorldControl.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [WorldStats]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Listening to stats on [/world/empty/stats]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [World stats] to main window
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/TransformControl/TransformControl.qml:104:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/TransformControl/TransformControl.qml:99:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/TransformControl/TransformControl.qml:94:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/TransformControl/TransformControl.qml:89:3: QML Connections: Implicitly defined onFoo properties in Connections are deprecated. Use this syntax instead: function onFoo() { ... }
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityTree/EntityTree.qml:148:7: QML ToolButton: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Component.hh:189] Trying to deserialize component with data type [N3sdf3v125WorldE], which doesn't have `operator>>`. Component will not be deserialized.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/WorldStats/WorldStats.qml:53:3: QML RowLayout: Binding loop detected for property "x"
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:52:3: QML RenderWindowOverlay: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/EntityContextMenuPlugin/EntityContextMenuPlugin.qml:67:3: QML EntityContextMenu: Detected anchors on an item that is managed by a layout. This is undefined behavior; use Layout.alignment instead.
[ruby $(which ign) gazebo-1] [GUI] [Wrn] [Application.cc:797] [QT] file::/Gazebo/GazeboDrawer.qml:147:3: QML Dialog: Binding loop detected for property "implicitHeight"
[ruby $(which ign) gazebo-1] ../src/intel/isl/isl.c:2220: FINISHME: ../src/intel/isl/isl.c:isl_surf_supports_ccs: CCS for 3D textures is disabled, but a workaround is available.
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [WorldStats] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libWorldStats.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [Shapes]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Shapes] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [Shapes] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libShapes.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [Lights]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Lights] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [Lights] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libLights.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [TransformControl]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [TransformControl.cc:219] Legacy mode is disabled; this plugin must be used with MinimalScene.
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Transform control] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [TransformControl] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libTransformControl.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [Screenshot]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Screenshot service on [/gui/screenshot]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Screenshot] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [Screenshot] from path [/usr/lib/x86_64-linux-gnu/ign-gui-6/plugins/libScreenshot.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [CopyPaste]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Copy/Paste] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [CopyPaste] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libCopyPaste.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [ComponentInspector]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Component inspector] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [ComponentInspector] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libComponentInspector.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:426] Loading plugin [EntityTree]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Added plugin [Entity tree] to main window
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loaded plugin [EntityTree] from path [/usr/lib/x86_64-linux-gnu/ign-gazebo-6/plugins/gui/libEntityTree.so]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:296] Loading window config
[ruby $(which ign) gazebo-1] [GUI] [Msg] Using server control service [/server_control]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [Application.cc:569] Applying config
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loading plugin [ignition-rendering-ogre2]
[ruby $(which ign) gazebo-1] [GUI] [Dbg] [MinimalScene.cc:602] Create scene [scene]
[ruby $(which ign) gazebo-1] [GUI] [Msg] Loading plugin [ignition-rendering-ogre2]

Running the example node returns:

$ ros2 run ign_ros2_control_demos example_position
node created
Created action server
Goal rejected
[ERROR] [1675264257.441733831] [trajectory_test_node]: send goal call ok :)
[ERROR] [1675264257.441800805] [trajectory_test_node]: Goal was rejected by server
cannot publish data, at ./src/rmw_publish.cpp:62 during '__function__'
[ERROR] [1675264257.544083616] [trajectory_test_node.rclcpp]: Error in destruction of rcl subscription handle: Failed to delete datareader, at ./src/subscription.cpp:52, at ./src/rcl/subscription.c:183
cannot publish data, at ./src/rmw_publish.cpp:62 during '__function__'
Fail in delete datareader, at ./src/rmw_service.cpp:104 during '__function__'
[ros2run]: Segmentation fault

Environment

  • osrf/ros:humble-desktop Docker image running in Distrobox
  • Ignition Fortress binary install
  • https://github.com/ros-controls/gz_ros2_control humble branch b0c29c2

ros2 control outputs:

$ ros2 control list_controllers
joint_state_broadcaster[joint_state_broadcaster/JointStateBroadcaster] unconfigured
joint_trajectory_controller[joint_trajectory_controller/JointTrajectoryController] inactive 
$ ros2 control list_controller_types 
controller_manager/test_controller                                     controller_interface::ControllerInterface
controller_manager/test_controller_failed_init                         controller_interface::ControllerInterface
controller_manager/test_controller_with_interfaces                     controller_interface::ControllerInterface
diff_drive_controller/DiffDriveController                              controller_interface::ControllerInterface
effort_controllers/GripperActionController                             controller_interface::ControllerInterface
effort_controllers/JointGroupEffortController                          controller_interface::ControllerInterface
forward_command_controller/ForwardCommandController                    controller_interface::ControllerInterface
forward_command_controller/MultiInterfaceForwardCommandController      controller_interface::ControllerInterface
imu_sensor_broadcaster/IMUSensorBroadcaster                            controller_interface::ControllerInterface
joint_state_broadcaster/JointStateBroadcaster                          controller_interface::ControllerInterface
joint_trajectory_controller/JointTrajectoryController                  controller_interface::ControllerInterface
position_controllers/GripperActionController                           controller_interface::ControllerInterface
tricycle_controller/TricycleController                                 controller_interface::ControllerInterface
velocity_controllers/JointGroupVelocityController                      controller_interface::ControllerInterface
controller_manager/test_chainable_controller                           controller_interface::ChainableControllerInterface
Some warnings i got during colcon build
$ IGNITION_VERSION=fortress colcon build --symlink-install
Starting >>> ign_ros2_control
[0.220s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/home/azazdeaz/repos/temp/gz-ros2-controls-ws/install/ign_ros2_control' in the environment variable AMENT_PREFIX_PATH doesn't exist
[0.220s] WARNING:colcon.colcon_ros.prefix_path.ament:The path '/home/azazdeaz/repos/temp/gz-ros2-controls-ws/install/ign_ros2_control_demos' in the environment variable AMENT_PREFIX_PATH doesn't exist
[0.221s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/home/azazdeaz/repos/temp/gz-ros2-controls-ws/install/ign_ros2_control' in the environment variable CMAKE_PREFIX_PATH doesn't exist
[0.221s] WARNING:colcon.colcon_ros.prefix_path.catkin:The path '/home/azazdeaz/repos/temp/gz-ros2-controls-ws/install/ign_ros2_control_demos' in the environment variable CMAKE_PREFIX_PATH doesn't exist
--- stderr: ign_ros2_control                                
/home/azazdeaz/repos/temp/gz-ros2-controls-ws/src/gz_ros2_control/ign_ros2_control/src/ign_system.cpp: In member function ‘virtual hardware_interface::return_type ign_ros2_control::IgnitionSystem::read(const rclcpp::Time&, const rclcpp::Duration&)’:
/home/azazdeaz/repos/temp/gz-ros2-controls-ws/src/gz_ros2_control/ign_ros2_control/src/ign_system.cpp:407:24: warning: unused parameter ‘time’ [-Wunused-parameter]
  407 |   const rclcpp::Time & time,
      |   ~~~~~~~~~~~~~~~~~~~~~^~~~
/home/azazdeaz/repos/temp/gz-ros2-controls-ws/src/gz_ros2_control/ign_ros2_control/src/ign_system.cpp:408:28: warning: unused parameter ‘period’ [-Wunused-parameter]
  408 |   const rclcpp::Duration & period)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
/home/azazdeaz/repos/temp/gz-ros2-controls-ws/src/gz_ros2_control/ign_ros2_control/src/ign_system.cpp: In member function ‘virtual hardware_interface::return_type ign_ros2_control::IgnitionSystem::write(const rclcpp::Time&, const rclcpp::Duration&)’:
/home/azazdeaz/repos/temp/gz-ros2-controls-ws/src/gz_ros2_control/ign_ros2_control/src/ign_system.cpp:452:24: warning: unused parameter ‘time’ [-Wunused-parameter]
  452 |   const rclcpp::Time & time,
      |   ~~~~~~~~~~~~~~~~~~~~~^~~~
/home/azazdeaz/repos/temp/gz-ros2-controls-ws/src/gz_ros2_control/ign_ros2_control/src/ign_system.cpp:453:28: warning: unused parameter ‘period’ [-Wunused-parameter]
  453 |   const rclcpp::Duration & period)
      |   ~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
---
Finished <<< ign_ros2_control [11.1s]
Starting >>> ign_ros2_control_demos
Finished <<< ign_ros2_control_demos [4.89s]                      

Summary: 2 packages finished [16.1s]
1 package had stderr output: ign_ros2_control

Prior errors i fixed with small changes:

[INFO] [launch]: Default logging verbosity is set to INFO
ign_args is deprecated, migrate to gz_args!
[INFO] [ruby $(which ign) gazebo-1]: process started with pid [967136]
[INFO] [robot_state_publisher-2]: process started with pid [967139]
[INFO] [create-3]: process started with pid [967141]
[create-3] [ros_ign_gazebo] is deprecated! Redirecting to use [ros_gz_sim] instead!
[create-3] 
[create-3] sh: 1: Syntax error: redirection unexpected
[INFO] [create-3]: process has finished cleanly [pid 967141]
  • Replaced ros_ign_gazebo with ros_gz_sim in the launch file.
[ros2-5] ros2 control load_controller: error: argument --set-state: invalid choice: 'start' (choose from 'configured', 'active')
  • Replaced start with active in the ros2 control load_controller --set-state start calls

Thanks in advance for any help!

Loading parameters for multiple ign_ros2_control plugins

I'm trying to run two different robots simultaneously in Fortress (ROS2 Humble) using ign_ros2_control. Each robot is namespaced and launches its own instance of the ign_ros2_control plugin, and both a Diff Drive controller and Joint State Broadcaster. Each robot has its own namespaced parameter file for the controllers. The nodes and topics are all being namespaced correctly, but the issue I am seeing is that when I spawn the second robot, the controller manager seems to be loading the parameter file of the first robot.

Each robot defines the plugin like so:

<gazebo>
  <plugin filename="libign_ros2_control-system.so" name="ign_ros2_control::IgnitionROS2ControlPlugin">
    <parameters>/path/to/robot/param.yaml</parameters>
    <ros>
            <remapping>~/odom:=platform/odom</remapping>
            <remapping>~/cmd_vel_unstamped:=platform/cmd_vel_unstamped</remapping>
            <remapping>/tf:=tf</remapping>
            <remapping>/tf_static:=tf_static</remapping>
            <remapping>/diagnostics:=diagnostics</remapping>
            <remapping>joint_states:=platform/joint_states</remapping>
            <namespace>robot_namespace</namespace>
    </ros>
  </plugin>
</gazebo>

The parameter file path and namespace is unique to each robot.

If I add the parameters of both robots to the parameter file of the first, then everything loads and runs well. Similarly, if I use the /** wildcard for the namespace in the parameter file, then both robots will load the first robots parameters.

Is there a workaround to this issue?

Node starts but cart doesn't move [Foxy Branch + Ign Citadel]

Hi everyone, I tried to build the foxy branch, i'm using Ignition Citadel, and did not receive any kind of error.
However when starting the demo with the launch command

ros2 launch ign_ros2_control_demos cart_example_position.launch.py

The cart is displayed on the ignition screen and to confirm that everything seems to be working I ran the following commands:

ros2 control list_hardware_interfaces

command interfaces
	slider_to_cart/position [claimed].
state interfaces
	 slider_to_cart/effort
	 slider_to_cart/position
	 slider_to_cart/velocity
ros2 control list_controllers

joint_state_broadcaster[joint_state_broadcaster/JointStateBroadcaster] active    
joint_trajectory_controller[joint_trajectory_controller/JointTrajectoryController] active    

Trying to execute the position control, however, the following errors appear and the cart does not perform any movement:

ros2 run ign_ros2_control_demos example_position

node created
Created action server
Goal accepted
[ERROR] [1686303415.769124122] [trajectory_test_node]: send goal call ok :)
[ERROR] [1686303415.769323340] [trajectory_test_node]: Goal was accepted by server
[INFO] [1686303415.769373139] [trajectory_test_node]: Waiting for result
feedback->desired.positions :0	
feedback->desired.velocities :-1

and indefinitely the terminal shows

feedback->desired.positions :0	
feedback->desired.velocities :-1	
feedback->desired.positions :0	
feedback->desired.velocities :-1	
feedback->desired.positions :0	
feedback->desired.velocities :-1	
feedback->desired.positions :0	
feedback->desired.velocities :-1	

until the code stops, which displays this error:

^C[INFO] [1686303422.765100019] [rclcpp]: signal_handler(signal_value=2)
[ERROR] [1686303422.766838302] [trajectory_test_node]: get result call failed :(

Any suggestions for making the position control work?
Off Topic question: how can I manually send commands to the controller to test that controller works properly?

Error : Failed to load system plugin: (Reason: No plugins detected in library)

Hi,

When launching the gz_ros2_control_demos (all of them), I get the following error :

[ruby $(which gz) sim-1] Library [/patch_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so] does not export any plugins. The symbol [GzPluginHook] is missing, or it is not externally visible. [ruby $(which gz) sim-1] [Err] [SystemLoader.cc:140] Failed to load system plugin: (Reason: No plugins detected in library) [ruby $(which gz) sim-1] - Requested plugin name: [gz_ros2_control::GazeboSimROS2ControlPlugin] [ruby $(which gz) sim-1] - Requested library name: [gz_ros2_control-system] [ruby $(which gz) sim-1] - Resolved library path: [/patch_ws/install/gz_ros2_control/lib/libgz_ros2_control-system.so] [ruby $(which gz) sim-1] [Wrn] [Component.hh:144] Trying to serialize component with data type [N3sdf3v135WorldE], which doesn't have operator<<. Component will not be serialized. [ruby $(which gz) sim-1] [GUI] [Wrn] [Component.hh:189] Trying to deserialize component with data type [N3sdf3v135WorldE], which doesn't have operator>>. Component will not be deserialized. [ros2-4] Could not contact service /controller_manager/load_controller [ERROR] [ros2-4]: process has died [pid 104763, exit code 1, cmd 'ros2 control load_controller --set-state active joint_state_broadcaster']. [INFO] [ros2-5]: process started with pid [104882]

I am using ROS2 Rolling and GZ Sim Garden in a docker in Ubuntu 22.04. I can't explained why the issue came on from one-to another week.

I've tried rebuilding the docker with latest rolling image and rebuilt gz_ros2_control (master) following the readme instructions.
Any idea where this default come from ?

(I'm using the directory "patch_ws" to build the latest version of ros_gz and gz_ros2_control and "ros2_ws" for my own packages. Of course, I source both directory's install/setup.bash when using the roslaunches.

As a consequence, the controller_manager won't load.
`

No rule to make target when building

Environment

  • OS Version: Ubuntu 20.04
  • Source or binary build? Source: Galactic and Edifice

Up until yesterday I quietly built the package without any errors. This morning I updated some packages via ubuntu software updater and the error came out.

Starting >>> ignition_ros2_control
--- stderr: ignition_ros2_control                            
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libignition-common4-profiler.so.4.2.0', needed by 'libignition_hardware_plugins.so'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:80: CMakeFiles/ignition_hardware_plugins.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
make[2]: *** No rule to make target '/usr/lib/x86_64-linux-gnu/libignition-common4-profiler.so.4.2.0', needed by 'libignition_ros2_control-system.so'.  Stop.
make[1]: *** [CMakeFiles/Makefile2:107: CMakeFiles/ignition_ros2_control-system.dir/all] Error 2
make: *** [Makefile:141: all] Error 2
---
Failed   <<< ignition_ros2_control [0.25s, exited with code 2]

Description

  • Expected behavior:Build successful
  • Actual behavior: Build failed

Steps to reproduce

  1. Put the ignition_ros2_control inside my workspace
  2. Source all the needed workspaces
  3. Start to build

In ign_system.cpp, VELOCITY and POSITION command modes are conflicting

Check this out:

    if (this->dataPtr->joints_[i].joint_control_method & VELOCITY) {
      ...
        *jointVelCmd = ignition::gazebo::components::JointVelocityCmd(
          {this->dataPtr->joints_[i].joint_velocity_cmd});
      }
    }

    if (this->dataPtr->joints_[i].joint_control_method & POSITION) {
      ...
        vel->Data()[0] = targetVel;
      }
    }

    if (this->dataPtr->joints_[i].joint_control_method & EFFORT) {
      ...
        *jointEffortCmd = ignition::gazebo::components::JointForceCmd(
          {this->dataPtr->joints_[i].joint_effort_cmd});
      }
    }
  }

There are some issues:

  • VELOCITY can set a target velocity, then POSITION can set a different velocity target. In other words, POSITION overrides the effect of VELOCITY.
  • All of POSITION, VELOCITY, and EFFORT can be active at any time. This does not seem right -- only 1 should be active.
  • There's no PID gain specified in calculating the POSITION command. The gain is 1.
  • When I send a position command to just one joint (for example), the other joints tend to sag downward with gravity.

Related to #87

Dockerfile build error on rosdep install dependencies

I simply ran the docker file in this repo with docker build .

ERROR: the following packages/stacks could not have their rosdep keys resolved
to system dependencies:
ign_ros2_control_demos: No definition of [ament_lint_common] for OS version [focal]
ign_ros2_control: No definition of [ament_lint_common] for OS version [focal]
The command '/bin/sh -c mkdir -p /home/ros2_ws/src     && cd /home/ros2_ws/src     && git clone https://github.com/ros-controls/gz_ros2_control/     && rosdep init && rosdep update     && rosdep install --from-paths ./ -i -y --rosdistro rolling' returned a non-zero code: 1

Could not contact service /controller_manager/load_controller

Environment

  • OS Version: Ubuntu 20.04

  • Foxy

  • Ign Citadel

    • Generally, mention all circumstances that might affect rendering capabilities:
      • [ *] desktop acceleration
      • [ *] other: Running on laptop with i7 on the local

    error log:

[ign gazebo-1] [GUI] [Msg] Added plugin [Component inspector] to main window
[ign gazebo-1] [GUI] [Wrn] [Application.cc:669] [QT] file::/ComponentInspector/Physics.qml:89:5: QML Image: Cannot open: file::/ComponentInspector/plottable_icon.svg
[ign gazebo-1] [GUI] [Wrn] [Application.cc:669] [QT] file::/ComponentInspector/Physics.qml:89:5: QML Image: Cannot open: file::/ComponentInspector/plottable_icon.svg
[ign gazebo-1] [GUI] [Wrn] [Application.cc:669] [QT] file::/Gazebo/GazeboDrawer.qml:178:3: QML Dialog: Binding loop detected for property "implicitHeight"
[ros2-4] Could not contact service /controller_manager/load_controller
[ERROR] [ros2-4]: process has died [pid 230029, exit code 1, cmd 'ros2 control load_controller --set-state start joint_state_broadcaster'].
[INFO] [ros2-5]: process started with pid [235762]
[ros2-5] Could not contact service /controller_manager/load_controller
[ERROR] [ros2-5]: process has died [pid 235762, exit code 1, cmd 'ros2 control load_controller --set-state start joint_trajectory_controller'].

When I run ros2 launch ignition_ros2_control_demos cart_example_position.launch.py
I get the result where the controller manager isn't load.

Description

  • Expected behavior: The controller manager should be loaded once demo starts
  • Actual behavior: Couldn't find a controller manager

Steps to reproduce

  1. source install/setup.bash
  2. ros2 launch ignition_ros2_control_demos cart_example_position.launch.py
  3. error exists

Output

image

image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.