Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issues with MoveIt2 configuration for ABB IRB1200 Robot - Simulation #73

Open
dayvsonsilva opened this issue Oct 20, 2024 · 0 comments
Open

Comments

@dayvsonsilva
Copy link

Development Environment:

     ROS 2 Rolling
     Ubuntu 24.04

After following the environment preparation tutorial and running the commands below:

dayvson@dayvson:~/ws_abb$ ros2 launch abb_bringup abb_control.launch.py description_package:=abb_irb1200_support description_file:=irb1200_5_90.xacro launch_rviz:=false moveit_config_package:=abb_irb1200_5_90_moveit_config use_fake_hardware:=true

and

dayvson@dayvson:~/ws_abb$ ros2 launch abb_bringup abb_moveit.launch.py robot_xacro_file:=irb1200_5_90.xacro support_package:=abb_irb1200_support moveit_config_package:=abb_irb1200_5_90_moveit_config moveit_config_file:=abb_irb1200_5_90.srdf.xacro

I got the following error:

dayvso@dayvson:~/ws_abb$ ros2 launch abb_bringup abb_moveit.launch.py robot_xacro_file:=irb1200_5_90.xacro support_package:=abb_irb1200_support moveit_config_package:=abb_irb1200_5_90_moveit_config moveit_config_file:=abb_irb1200_5_90.srdf.xacro
[INFO] [launch]: All log files can be found below /home/ist/.ros/log/2024-10-20-11-39-06-510986-ist-1043877
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [move_group-1]: process started with pid [1043880]
[INFO] [rviz2-2]: process started with pid [1043881]
[INFO] [static_transform_publisher-3]: process started with pid [1043882]
[INFO] [robot_state_publisher-4]: process started with pid [1043883]
[static_transform_publisher-3] [WARN] [1729435146.643934066] []: Old-style arguments are deprecated; see --help for new-style arguments
[static_transform_publisher-3] [INFO] [1729435146.651995377] [static_transform_publisher]: Spinning until stopped - publishing transform
[static_transform_publisher-3] translation: ('0.000000', '0.000000', '0.000000')
[static_transform_publisher-3] rotation: ('0.000000', '0.000000', '0.000000', '1.000000')
[static_transform_publisher-3] from 'world' to 'base_link'
[robot_state_publisher-4] [WARN] [1729435146.652556559] [kdl_parser]: 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-4] [INFO] [1729435146.652636294] [robot_state_publisher]: Robot initialized
[move_group-1] Error:   Name of virtual joint is not specified
[move_group-1]          at line 77 in ./src/model.cpp
[move_group-1] [INFO] [1729435146.683659680] [move_group.moveit.moveit.ros.rdf_loader]: Loaded robot model in 0.0027739 seconds
[move_group-1] [INFO] [1729435146.683821795] [move_group.moveit.moveit.core.robot_model]: Loading robot model 'abb_irb1200_5_90'...
[move_group-1] [INFO] [1729435146.683869961] [move_group.moveit.moveit.core.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
[move_group-1] [WARN] [1729435146.693899673] [kdl_parser]: 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.
[move_group-1] [INFO] [1729435146.694076576] [move_group.moveit.moveit.kinematics.kdl_kinematics_plugin]: Joint weights for group 'manipulator': 1 1 1 1 1 1
[move_group-1] [INFO] [1729435146.718764404] [move_group.moveit.moveit.ros.planning_scene_monitor]: Publishing maintained planning scene on 'monitored_planning_scene'
[move_group-1] [INFO] [1729435146.718872487] [move_group.moveit.moveit.ros.moveit_cpp]: Listening to 'joint_states' for joint states
[move_group-1] [INFO] [1729435146.719300320] [move_group.moveit.moveit.ros.current_state_monitor]: Listening to joint states on topic 'joint_states'
[move_group-1] [INFO] [1729435146.719632247] [move_group.moveit.moveit.ros.planning_scene_monitor]: Listening to '/attached_collision_object' for attached collision objects
[move_group-1] [INFO] [1729435146.719644709] [move_group.moveit.moveit.ros.planning_scene_monitor]: Stopping existing planning scene publisher.
[move_group-1] [INFO] [1729435146.719723100] [move_group.moveit.moveit.ros.planning_scene_monitor]: Stopped publishing maintained planning scene.
[move_group-1] [INFO] [1729435146.720307042] [move_group.moveit.moveit.ros.planning_scene_monitor]: Publishing maintained planning scene on 'monitored_planning_scene'
[move_group-1] [INFO] [1729435146.720372859] [move_group.moveit.moveit.ros.planning_scene_monitor]: Starting planning scene monitor
[move_group-1] [INFO] [1729435146.721156746] [move_group.moveit.moveit.ros.planning_scene_monitor]: Listening to '/planning_scene'
[move_group-1] [INFO] [1729435146.721174033] [move_group.moveit.moveit.ros.planning_scene_monitor]: Starting world geometry update monitor for collision objects, attached objects, octomap updates.
[move_group-1] [INFO] [1729435146.721521429] [move_group.moveit.moveit.ros.planning_scene_monitor]: Listening to 'collision_object'
[move_group-1] [INFO] [1729435146.721825753] [move_group.moveit.moveit.ros.planning_scene_monitor]: Listening to 'planning_scene_world' for planning scene world geometry
[move_group-1] [WARN] [1729435146.722053850] [move_group.moveit.moveit.ros.occupancy_map_monitor]: Resolution not specified for Octomap. Assuming resolution = 0.1 instead
[rviz2-2] [INFO] [1729435146.859310505] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-2] [INFO] [1729435146.859372682] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[rviz2-2] [INFO] [1729435146.876161070] [rviz2]: Stereo is NOT SUPPORTED
[move_group-1] terminate called after throwing an instance of 'rclcpp::ParameterTypeException'
[move_group-1]   what():  expected [string_array] got [string]
[rviz2-2] Warning: class_loader.impl: SEVERE WARNING!!! A namespace collision has occurred with plugin factory for class rviz_default_plugins::displays::InteractiveMarkerDisplay. New factory will OVERWRITE existing one. This situation occurs when libraries containing plugins are directly linked against an executable (the one running right now generating this message). Please separate plugins out into their own library or just don't link against the library and use either class_loader::ClassLoader/MultiLibraryClassLoader to open.
[rviz2-2]          at line 321 in /opt/ros/rolling/include/class_loader/class_loader/class_loader_core.hpp
[rviz2-2] [WARN] [1729435146.965749415] [rcl.logging_rosout]: Publisher already registered for node name: 'rviz2'. If this is due to multiple nodes with the same name then all logs for the logger named 'rviz2' will go out over the existing publisher. As soon as any node with that name is destructed it will unregister the publisher, preventing any further logs for that name from being published on the rosout topic.
[ERROR] [move_group-1]: process has died [pid 1043880, exit code -6, cmd '/opt/ros/rolling/lib/moveit_ros_move_group/move_group --ros-args --params-file /tmp/launch_params_glxdie2f'].
[rviz2-2] [ERROR] [1729435149.984280948] [rviz2.moveit.ros.motion_planning_frame]: Action server: /recognize_objects not available
[rviz2-2] [INFO] [1729435150.014951686] [rviz2.moveit.ros.motion_planning_frame]: MoveGroup namespace changed: / -> . Reloading params.
[rviz2-2] Error:   Name of virtual joint is not specified
[rviz2-2]          at line 77 in ./src/model.cpp
[rviz2-2] [INFO] [1729435150.083227287] [rviz2.moveit.ros.rdf_loader]: Loaded robot model in 0.0027774 seconds
[rviz2-2] [INFO] [1729435150.083358530] [rviz2.moveit.core.robot_model]: Loading robot model 'abb_irb1200_5_90'...
[rviz2-2] [INFO] [1729435150.083401979] [rviz2.moveit.core.robot_model]: No root/virtual joint specified in SRDF. Assuming fixed joint
[rviz2-2] [WARN] [1729435150.097462972] [kdl_parser]: 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.
[rviz2-2] [INFO] [1729435150.097573042] [rviz2.moveit.kinematics.kdl_kinematics_plugin]: Joint weights for group 'manipulator': 1 1 1 1 1 1
[rviz2-2] [INFO] [1729435150.133940403] [rviz2.moveit.ros.planning_scene_monitor]: Publishing maintained planning scene on 'monitored_planning_scene'
[rviz2-2] [INFO] [1729435150.138520704] [rviz2.moveit.ros.planning_scene_monitor]: Starting planning scene monitor
[rviz2-2] [INFO] [1729435150.139283108] [rviz2.moveit.ros.planning_scene_monitor]: Listening to '/monitored_planning_scene'
[rviz2-2] [INFO] [1729435150.237054992] [interactive_marker_display_107440723022128]: Connected on namespace: /rviz_moveit_motion_planning_display/robot_interaction_interactive_marker_topic
[rviz2-2] [WARN] [1729435150.238640640] [kdl_parser]: 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.
[rviz2-2] [INFO] [1729435150.256817570] [interactive_marker_display_107440723022128]: Sending request for interactive markers
[rviz2-2] [INFO] [1729435150.290697797] [interactive_marker_display_107440723022128]: Service response received for initialization
[rviz2-2] [INFO] [1729435155.240622842] [rviz2.moveit.ros.planning_scene_monitor]: Failed to call service get_planning_scene, have you launched move_group or called psm.providePlanningSceneService()?
[rviz2-2] [INFO] [1729435155.240920451] [rviz2.moveit.ros.motion_planning_frame]: group manipulator
[rviz2-2] [INFO] [1729435155.241000486] [rviz2.moveit.ros.motion_planning_frame]: Constructing new MoveGroup connection for group 'manipulator' in namespace ''

And consequently MoveIt2 does not load MotionPlanning as shown in the image.

Image

After researching and not finding any reference to what could be the error, I started checking the moveit configuration files and comparing the repository code with the moveit2 example files, I found a significant difference in the ompl_planning.yaml file. As a test I made the modification of:

planning_plugin: ompl_interface/OMPLPlanner
request_adapters: >-
  default_planner_request_adapters/AddTimeOptimalParameterization
  default_planner_request_adapters/ResolveConstraintFrames
  default_planner_request_adapters/FixWorkspaceBounds
  default_planner_request_adapters/FixStartStateBounds
  default_planner_request_adapters/FixStartStateCollision
  default_planner_request_adapters/FixStartStatePathConstraints

To:

planning_plugins:
  - ompl_interface/OMPLPlanner
request_adapters:
  - default_planning_request_adapters/ResolveConstraintFrames        
  - default_planning_request_adapters/ValidateWorkspaceBounds
  - default_planning_request_adapters/CheckStartStateBounds
  - default_planning_request_adapters/CheckStartStateCollision
response_adapters:
  - default_planning_response_adapters/AddTimeOptimalParameterization
  - default_planning_response_adapters/ValidateSolution
  - default_planning_response_adapters/DisplayMotionPath

With the modifications when trying to run the code I got an error just signaling that the maximum acceleration of the joints was not defined, so I modified the code to:

 joint_1:
    has_velocity_limits: true
    max_velocity: 5.027
    has_acceleration_limits: false
    max_acceleration: 0.0

To:

 joint_1:
    has_velocity_limits: true
    max_velocity: 5.027
    has_acceleration_limits: true
    max_acceleration: 15.0

With this, I was able to run the simulation and it was also possible to plan and execute movements.

If anyone has the same problem, perhaps they can use this solution. Or if possible, I would like to understand if the root cause was actually just the lack of a package at the beginning of the process.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant