gazebo_ros2_control
                                
                                
                                
                                    gazebo_ros2_control copied to clipboard
                            
                            
                            
                        Unstable behaviour of Position Controller in UR10
Hello,
I recently tested your gazebo_ros2_control plugin (master branch) using position interface with a ur10 robot + MoveIt
by just modifying the rrbot moveit demo for the ur10
I noticed that the joint_trajectory_controller was unstable causing the robot to take a long time to go in the default position and breaking up like so

Reducing the inertial values by a factor of 100 seemed to fix the problem in the beginning but it becomes unstable after a while or after using Moveit to move it (i haven't tested effort or velocity controllers yet since i don't want to tune pid's)
Any ideas?
Thanks a lot!
Did you ever fix this as I have a very similar behavior.
@panagelak please share a https://gist.github.com of the:
adapted UR10 xacro with the joint_trajectory_controller
moveit config
@newcanopies
Hello i wasnt very familiar with gist and it seems i could only share individual files
I made a repo with my config and some simple instructions (for foxy) hope this helps
https://github.com/panagelak/ur10_gazebo_ros_control2
Hope this helps! Thanks
Thank you @panagelak I'm looking into tweaking the parameters ... TBC
related https://github.com/ros-simulation/gazebo_ros2_control/pull/44#issuecomment-772173795
related https://github.com/ros-simulation/gazebo_ros_demos/issues/42#issuecomment-803097687
are you getting the ros2 errors:
[ros2-6] ros2: error: argument Call `ros2 <command> -h` for more detailed usage.: invalid choice: 'control' (choose from 'action', 'bag', 'component', 'daemon', 'doctor', 'extension_points', 'extensions', 'interface', 'launch', 'lifecycle', 'multicast', 'node', 'param', 'pkg', 'run', 'security', 'service', 'test', 'topic', 'wtf')
**[ERROR] [ros2-6]: process has died [pid 10363, exit code 2, cmd 'ros2 control load_start_controller joint_trajectory_controller'].**
[INFO] [gzclient   -2]: process has finished cleanly [pid 10167]
@newcanopies
I'm not sure why it doesn't recognize the ros2 control load_start_controller joint_state_controller/joint_trajectory_controller cli command, i think it requires to have build ros_control from source to do so (or moveit2 which include ros control). Furthermore in this launch file on the rrbot it uses the same command on line 90 https://github.com/ros-simulation/gazebo_ros_demos/blob/ahcorde/port/ros2/rrbot_gazebo/launch/rrbot_world.launch.py
I followed this instructions to install moveit2 https://moveit.ros.org/install-moveit2/source/
P.S since i dont want to have all the moveit2 packages in my devel workspace (requiring to blacklist them etc) i installed the moveit2 in a seperate workspace so my bashrc looks something like this (notice the --extend)
source /opt/ros/foxy/setup.bash source ~/ws_moveit2/install/setup.bash --extend source ~/colcon_ws/install/setup.bash
let me know if this fixes that
is your ros2_control source build inside colcon_ws? or are you relying on foxy debian ros2_control?
since commenting out the controller_manager  update_rate in gazebo yaml removes the instability,
could be that the URDF macros require a matching <update_rate>100</update_rate> tag
as well as correct yaml definitions of the joint state and trajectory controllers
ref. <ros2_control> tags in the URDF must be compatible with the controller's configuration
have you tried generating the ur10_gazebo_ros_control2 yamls and gazebo xacros via (the unported) ROS1 moveit setup assistant?
here's a UR5 controller yaml tweaked to hold non-zero position https://github.com/ros-simulation/gazebo_ros2_control/pull/44#issuecomment-765253220
hi @newcanopies
i experimented a little with the gazebo_controllers.yaml (on the ur10_description pkg) but it didn't seem to fix it by removing the <update_rate>
can you possibly make a pr with your fix or share your fork?
i didn't know they have release ros2_control on debian is it on testing? i have install moveit2 from source which installs ros2_control also. In colcon_ws i have only the repo i shared + gazebo_ros2_control plugin (main)
thanks a lot for your help so far, appreciate it!
hi @panagelak the PR is already on your repo :) with this result based on apt debian ros2_control
it is not a fix, just a diagnostic.

i have install moveit2 from source which installs ros2_control also
afaik, moveit2 source install relies on older version of ros2_control which doesn't interface well with Gazebo.
To test debian ros2_control try these install/remove instructions. It looks like the Rviz2 error about TF2 frame conversion is due to wrong TF2 package version overlay. It remains TBD which repo has the Gazebo/Rviz2 suitable version of TF2.
--
I just switched  to debugging based on ros2_control devel packages from the demos and documentation therein.
Check the 6Dbot branch where a 2 Hz controller_manager update rate was coded in.
I tried various values (1000, 100, 50, 10, 2) but instability only stops if no update rate is set for the controller_manager. Meanwhile. each controller (state,trajectory, position) has update rates (25, 50 Hz) that may or may not need tweaking....
And may or may not need to be correspondingly referenced in the URDF < update_rate > tag of that controller.
I'm looking for documentation that clarifies this.
It's also possible some of the ros2_control packages should be included as < build > or < exec > depends under the ur10 description+control package.xml
@destogl @Briancbn @ahcorde please throw us a hint here? This joint instability issue closely resembles the behavior videos from the Foxy API PR https://github.com/ros-simulation/gazebo_ros2_control/pull/44#issuecomment-765240867
@newcanopies @panagelak This is my follow-up comments. https://github.com/ros-simulation/gazebo_ros2_control/pull/44#discussion_r565177746.
Please also refer to https://github.com/ros-simulation/gazebo_ros2_control/issues/54#issuecomment-775580231 for the workaround 1. I am still using this workaround with the latest gazebo_ros2_control for my own project.
I haven't been follow up on this issue lately, maybe @destogl and @ahcorde could provide the best way and estimated timeline in this getting resolved.
Please also refer to #54 (comment) for the workaround 1. I am still using this workaround with the latest gazebo_ros2_control for my own project.
I hasn't been follow up on this issue lately, maybe @destogl and @ahcorde could provide the best way and estimated timeline in this getting resolved.
Thanks very much @Briancbn - which ros2_control package repo are you using and how do you exclude conflict with the older ros2_control inside moveit2 ?
@newcanopies Latest version for almost everything, we tested it just two days ago.
Don't forget to add these additional lines as the follow_joint_trajectory parameters under controller.yaml following the moveit2 panda example.
pos_joint_traj_controller:
  ros__parameters:
    joints:
      -
      -
      ...
    command_interfaces:
      - position
    state_interfaces:
      - position
      - velocity
also don't forget to load the controllers in your Moveit2 launch file. Follow the example here. https://github.com/ros-planning/moveit2/blob/c029942dbb95387ecccf10a41d48e310450d3528/moveit_demo_nodes/run_moveit_cpp/launch/run_moveit_cpp.launch.py#L135-L154
Latest Moveit2
repositories:
  # moveit2
  moveit2:
    type: git
    url: https://github.com/ros-planning/moveit2
    version: 2.1.4
  moveit_msgs:
    type: git
    url: https://github.com/ros-planning/moveit_msgs
    version: 2.0.1
  moveit_resources:
    type: git
    url: https://github.com/ros-planning/moveit_resources
    version: 2.0.2
  geometric_shapes:
    type: git
    url: https://github.com/ros-planning/geometric_shapes
    version: 2.0.2
  srdfdom:
    type: git
    url: https://github.com/ros-planning/srdfdom
    version: 2.0.2
  # ros2_control
  ros2_control:
    type: git
    url: https://github.com/ros-controls/ros2_control
    version: 0.7.0
  ros2_controllers:
    type: git
    url: https://github.com/ros-controls/ros2_controllers
    version: d989e7caa2d3e862b3e4e8e1eb7934f1f216eeae
  # warehouse
  warehouse_ros:
    type: git
    url: https://github.com/ros-planning/warehouse_ros
    version: 2.0.1
  warehouse_ros_mongo:
    type: git
    url: https://github.com/ros-planning/warehouse_ros_mongo
    version: 2.0.1
gazebo_ros2_control
repositories:
  gazebo_ros2_control:
    type: git
    url: https://github.com/ros-simulation/gazebo_ros2_control
    version: a33ea2eeb37094177103084e065626d63ce31a7d
                                    
                                    
                                    
                                
fwiw, I can build everything using the default branches for each dependency (moveit2, ros2_control, gazebo_ros2_control, etc) rather than specific commits and things now behave as expected. In #54, I mention a few pitfalls / tweaks to watch out for. But I don't think it is still necessary to build using specific versions (you of course still can if you like a bit of stability in your life😄). But with that in mind, perhaps this issue can be closed?
Did you ever fix this as I have a very similar behavior.
Me too, any idea how to solve it?
I had a very similar problem with gazebo11 and I finally solved it by adding friction and damping parameters in each joint. like
 <dynamics damping="60.0" friction="4.0"/>