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

ros2-ify perception pipeline #700

Open
wants to merge 14 commits into
base: main
Choose a base branch
from

Conversation

130s
Copy link
Contributor

@130s 130s commented Jun 7, 2023

Issue aimed at

Description of changes

Checklist

Peek.2023-06-28.14-37.webm

@130s

This comment was marked as resolved.

@130s

This comment was marked as resolved.

@130s
Copy link
Contributor Author

130s commented Jun 7, 2023

Ok, I'll just switch this PR to `rolling` and continue.

In moveit/moveit2:rolling-release that I just pulled I see pre-built moveit_py included.

# find /opt/ros/rolling/ -iname moveit_py
/opt/ros/rolling/include/moveit_py
/opt/ros/rolling/include/moveit_py/moveit_py
/opt/ros/rolling/share/ament_index/resource_index/packages/moveit_py
/opt/ros/rolling/share/ament_index/resource_index/parent_prefix_path/moveit_py
/opt/ros/rolling/share/ament_index/resource_index/package_run_dependencies/moveit_py
/opt/ros/rolling/share/moveit_py

Since in Getting' Started section rolling seems to be one of the targeted platforms of moveit tutorial, I came to the conclusion at the top.

@130s 130s force-pushed the feature-perceptionpipeline-ros2fy branch 2 times, most recently from 4ea1187 to 43c9536 Compare June 8, 2023 22:03
@130s 130s marked this pull request as draft June 8, 2023 22:03
@130s 130s force-pushed the feature-perceptionpipeline-ros2fy branch 5 times, most recently from 6c4ac95 to 782c455 Compare June 9, 2023 15:49
@130s

This comment was marked as resolved.

@130s 130s force-pushed the feature-perceptionpipeline-ros2fy branch 2 times, most recently from 1b4fc0a to 1d8627d Compare June 10, 2023 11:48
@130s

This comment was marked as resolved.

@130s
Copy link
Contributor Author

130s commented Jun 16, 2023

Octomap is not showing.

In sensors_kinect_{depthmap, pointcloud}.yaml,

sensors:
  - sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
    image_topic: /camera/depth_registered/image_raw
:    

This doesn't seem published. pointcloud is published (from the rosbag file). So use it.

sensors:
  - sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
    point_cloud_topic: /camera/depth_registered/points
:    
ros2 param get /move_group octomap_frame
ros2 param get /move_group octomap_resolution
ros2 param get /move_group image_topic

These prints expected values though.

Found a set of params that look suspecious.

With yaml:

/**:
  sensors:
    ros__parameters:
      sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
      point_cloud_topic: /camera/depth_registered/points
      max_range: 5.0
      point_subsample: 1
      padding_offset: 0.1
      padding_scale: 1.0
      max_update_rate: 1.0
      filtered_cloud_topic: filtered_cloud

Result on param server:

/move_group:                    
  /**.sensors.ros__parameters.filtered_cloud_topic
  /**.sensors.ros__parameters.max_range                            
  /**.sensors.ros__parameters.max_update_rate
  /**.sensors.ros__parameters.padding_offset    
  /**.sensors.ros__parameters.padding_scale
  /**.sensors.ros__parameters.point_cloud_topic
  /**.sensors.ros__parameters.point_subsample
  /**.sensors.ros__parameters.sensor_plugin
:
/moveit_simple_controller_manager:                
  /**.sensors.ros__parameters.filtered_cloud_topic
  /**.sensors.ros__parameters.max_range                            
  /**.sensors.ros__parameters.max_update_rate
  /**.sensors.ros__parameters.padding_offset    
  /**.sensors.ros__parameters.padding_scale
  /**.sensors.ros__parameters.point_cloud_topic
  /**.sensors.ros__parameters.point_subsample
  /**.sensors.ros__parameters.sensor_plugin

Maybe I should know how a code gets these params.


UPDATE:

All examples of ros2 parameter .yaml files I've seen so far use:

node_name
|- ros__parameters:
  |- param_a
  |- param_b

But in my case,

node_name
|- sensors
  |- ros__parameters:
    |- param_a
    |- param_b

I tried this but no good?

node_name
|- ros__parameters:
  |- sensors
    |- param_a
    |- param_b

Resulted in:

/move_group:                                                                                                                                 
  /**.ros__parameters.sensors.filtered_cloud_topic                                                                                           
  /**.ros__parameters.sensors.max_range                            
  /**.ros__parameters.sensors.max_update_rate
  /**.ros__parameters.sensors.padding_offset    
  /**.ros__parameters.sensors.padding_scale
  /**.ros__parameters.sensors.point_cloud_topic
  /**.ros__parameters.sensors.point_subsample
  /**.ros__parameters.sensors.sensor_plugin        

With yaml:

/**:
  sensors:
    ros__parameters:
      sensor_plugin: occupancy_map_monitor/PointCloudOctomapUpdater
      point_cloud_topic: /camera/depth_registered/points
      max_range: 5.0
      point_subsample: 1
      padding_offset: 0.1
      padding_scale: 1.0
      max_update_rate: 1.0
      filtered_cloud_topic: filtered_cloud

Result on param server:

/move_group:                    
  /**.sensors.ros__parameters.filtered_cloud_topic
  /**.sensors.ros__parameters.max_range                            
  /**.sensors.ros__parameters.max_update_rate
  /**.sensors.ros__parameters.padding_offset    
  /**.sensors.ros__parameters.padding_scale
  /**.sensors.ros__parameters.point_cloud_topic
  /**.sensors.ros__parameters.point_subsample
  /**.sensors.ros__parameters.sensor_plugin
:
/moveit_simple_controller_manager:                
  /**.sensors.ros__parameters.filtered_cloud_topic
  /**.sensors.ros__parameters.max_range                            
  /**.sensors.ros__parameters.max_update_rate
  /**.sensors.ros__parameters.padding_offset    
  /**.sensors.ros__parameters.padding_scale
  /**.sensors.ros__parameters.point_cloud_topic
  /**.sensors.ros__parameters.point_subsample
  /**.sensors.ros__parameters.sensor_plugin

Maybe I should know how a code gets these params.

Also noticed:

[move_group-5] [INFO] [1686948027.178408786] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Starting world geometry update monitor for collision objects, attached objects, octomap updates.
:
[move_group-5] [ERROR] [1686948027.179315254] [moveit.ros.occupancy_map_monitor.middleware_handle]: No 3D sensor plugin(s) defined for octomap updates

Found someone already ported moveit_tutorial to ros2 answers.ros.org#389233/moveit2-add-pointcloud2-to-occupancymapmonitor/. Swapping sensor config to sensor_3d.yaml,

[move_group-5] [INFO] [1686948669.375460223] [moveit.ros.perception.pointcloud_octomap_updater]: Listening to '/camera/depth_registered/points' using message filter with target frame 'world '
[rviz2-2] [INFO] [1686948669.377183480] [rviz2]: Stereo is NOT SUPPORTED                                         
[move_group-5] [ERROR] [1686948669.378423502] [move_group]: Failed to load plugin image_transport/raw_pub, error string: could not create publisher: create_publisher() called for existing topic name rt/filtered_cloud with incompatible type sensor_msgs::msg::dds_::Image_, at ./src/p
ublisher.cpp:145, at ./src/rcl/publisher.c:116                                                                                               
[move_group-5]                                                                                                                               
[move_group-5] terminate called after throwing an instance of 'image_transport::Exception'         
[move_group-5]   what():  No plugins found! Does `rospack plugins --attrib=plugin image_transport` find any packages?
[move_group-5] Stack trace (most recent call last):                                                                                          
[move_group-5] #20   Object "", at 0xffffffffffffffff, in                                                                                    
[move_group-5] #19   Object "/opt/ros/rolling/lib/moveit_ros_move_group/move_group", at 0x55a9d131ac24, in _start
[move_group-5] #18   Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f17dbee5e3f, in __libc_start_main                                                                                                                                                                                
[move_group-5] #17   Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f17dbee5d8f, in                         
[move_group-5] #16 | Source "./src/move_group.cpp", line 280, in make_shared<moveit_cpp::MoveItCpp, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr.h", line 879, in allocate_shared<moveit_cpp::MoveItCpp, std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   877:       typedef typename std::remove_cv<_Tp>::type _Tp_nc;                                                
[move_group-5]     |   878:       return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(),                                       
[move_group-5]     | > 879:                                    std::forward<_Args>(__args)...);                                             
[move_group-5]     |   880:     }                                                                                                            
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr.h", line 863, in shared_ptr<std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   862:       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},                             
[move_group-5]     | > 863:                          std::forward<_Args>(__args)...);                                        
[move_group-5]     |   864:     }                                                                                                            
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr.h", line 409, in __shared_ptr<std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>                  
[move_group-5]     |   407:       template<typename _Alloc, typename... _Args>
[move_group-5]     |   408:     shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args)                  
[move_group-5]     | > 409:     : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
[move_group-5]     |   410:     { }                                                                                                          
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr_base.h", line 1342, in __shared_count<moveit_cpp::MoveItCpp, std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |  1340:       template<typename _Alloc, typename... _Args>                
[move_group-5]     |  1341:     __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args)
[move_group-5]     | >1342:     : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
[move_group-5]     |  1343:     { _M_enable_shared_from_this_with(_M_ptr); }                         
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr_base.h", line 650, in _Sp_counted_ptr_inplace<std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   648:       auto __guard = std::__allocate_guarded(__a2);                                                                                                                                                                                                           
[move_group-5]     |   649:       _Sp_cp_type* __mem = __guard.get();                                                                                                                                                                                                                     
[move_group-5]     | > 650:       auto __pi = ::new (__mem)                                                                                  
[move_group-5]     |   651:         _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);                                      
[move_group-5]     |   652:       __guard = nullptr;                                                                                         
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr_base.h", line 519, in construct<moveit_cpp::MoveItCpp, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   517:       // _GLIBCXX_RESOLVE_LIB_DEFECTS
[move_group-5]     |   518:       // 2070.  allocate_shared should use allocator_traits<A>::construct                       
[move_group-5]     | > 519:       allocator_traits<_Alloc>::construct(__a, _M_ptr(),                                  
[move_group-5]     |   520:           std::forward<_Args>(__args)...); // might throw                      
[move_group-5]     |   521:     }                                                                                                            
[move_group-5]     | Source "/usr/include/c++/11/bits/alloc_traits.h", line 516, in construct<moveit_cpp::MoveItCpp, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   514:     {                                                                                                            
[move_group-5]     |   515: #if __cplusplus <= 201703L      
[move_group-5]     | > 516:       __a.construct(__p, std::forward<_Args>(__args)...);                                                                                                                                                                                                     
[move_group-5]     |   517: #else                          
[move_group-5]     |   518:       std::construct_at(__p, std::forward<_Args>(__args)...);       
[move_group-5]     | Source "/usr/include/c++/11/ext/new_allocator.h", line 162, in MoveItCpp   
[move_group-5]     |   160:     construct(_Up* __p, _Args&&... __args)                                                                       
[move_group-5]     |   161:     noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
[move_group-5]     | > 162:     { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }    
[move_group-5]     |   163:                                                                                                                  
[move_group-5]     |   164:       template<typename _Up>                                                                                     
[move_group-5]       Source "/opt/ros/rolling/include/moveit_ros_planning/moveit/moveit_cpp/moveit_cpp.h", line 119, in main [0x55a9d1319528]                                                                                                
[move_group-5]         116:   MoveItCpp(const rclcpp::Node::SharedPtr& node);                                                      
[move_group-5]         117:   [[deprecated("Passing tf2_ros::Buffer to MoveItCpp's constructor is deprecated")]] MoveItCpp(
[move_group-5]         118:       const rclcpp::Node::SharedPtr& node, const Options& options, const std::shared_ptr<tf2_ros::Buffer>& /* unused */)
[move_group-5]       > 119:     : MoveItCpp(node, options)                                                                                   
[move_group-5]         120:   {                                                                                                              
[move_group-5]         121:   }                                                                                                                                                                                                                                                           [move_group-5]         122:   MoveItCpp(const rclcpp::Node::SharedPtr& node, const Options& options);                                                                                                                                                                                     
[rviz2-2] [INFO] [1686948669.443673235] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 0.00147983 seconds
Hm, now this.
# ros2 launch moveit2_tutorials obstacle_avoidance_demo.launch.xml
[INFO] [launch]: All log files can be found below /root/.ros/log/2023-06-16-17-32-26-667442-130s-p16s-168318   
[INFO] [launch]: Default logging verbosity is set to INFO                                                      
[INFO] [ros2-1]: process started with pid [168334]                                  
[INFO] [rviz2-2]: process started with pid [168336]                                 
[INFO] [static_transform_publisher-3]: process started with pid [168338]                                       
[INFO] [robot_state_publisher-4]: process started with pid [168340]                 
[INFO] [move_group-5]: process started with pid [168342]                            
[INFO] [ros2_control_node-6]: process started with pid [168344]                                                
[INFO] [spawner-7]: process started with pid [168346] 
[INFO] [spawner-8]: process started with pid [168348]                               
[INFO] [spawner-9]: process started with pid [168350]                               
[INFO] [static_transform_publisher-10]: process started with pid [168352]                                      
[INFO] [static_transform_publisher-11]: process started with pid [168354]           
[static_transform_publisher-3] [WARN] [1686951147.021646004] []: Old-style arguments are deprecated; see --help for new-style arguments      
[static_transform_publisher-11] [WARN] [1686951147.028994679] []: Old-style arguments are deprecated; see --help for new-style arguments
[static_transform_publisher-10] [WARN] [1686951147.030288925] []: Old-style arguments are deprecated; see --help for new-style arguments
[static_transform_publisher-3] [INFO] [1686951147.035127028] [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 'panda_link0'                        
[robot_state_publisher-4] [WARN] [1686951147.039281827] [kdl_parser]: The root link panda_link0 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] [1686951147.039385865] [robot_state_publisher]: got segment panda_hand                             
[robot_state_publisher-4] [INFO] [1686951147.039437676] [robot_state_publisher]: got segment panda_leftfinger  
[robot_state_publisher-4] [INFO] [1686951147.039443328] [robot_state_publisher]: got segment panda_link0       
[robot_state_publisher-4] [INFO] [1686951147.039446968] [robot_state_publisher]: got segment panda_link1       [robot_state_publisher-4] [INFO] [1686951147.039450065] [robot_state_publisher]: got segment panda_link2       
[robot_state_publisher-4] [INFO] [1686951147.039453288] [robot_state_publisher]: got segment panda_link3       [robot_state_publisher-4] [INFO] [1686951147.039456588] [robot_state_publisher]: got segment panda_link4                           
[robot_state_publisher-4] [INFO] [1686951147.039459521] [robot_state_publisher]: got segment panda_link5                                    
[robot_state_publisher-4] [INFO] [1686951147.039462618] [robot_state_publisher]: got segment panda_link6      
[robot_state_publisher-4] [INFO] [1686951147.039465534] [robot_state_publisher]: got segment panda_link7                
[robot_state_publisher-4] [INFO] [1686951147.039468429] [robot_state_publisher]: got segment panda_link8                     
[robot_state_publisher-4] [INFO] [1686951147.039471334] [robot_state_publisher]: got segment panda_rightfinger   
[rviz2-2] QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'                      
[static_transform_publisher-10] [INFO] [1686951147.055698110] [to_panda]: Spinning until stopped - publishing transform
[static_transform_publisher-10] translation: ('0.000000', '0.000000', '0.000000')                              
[static_transform_publisher-10] rotation: ('0.000000', '0.000000', '0.000000', '1.000000')                     
[static_transform_publisher-10] from 'world' to 'panda_link0'                       
[static_transform_publisher-11] [INFO] [1686951147.055854849] [to_camera]: Spinning until stopped - publishing transform                                                
[static_transform_publisher-11] translation: ('0.115000', '0.427000', '0.570000')              
[static_transform_publisher-11] rotation: ('0.815099', '0.057256', '-0.081783', '0.570655')                                                  
[static_transform_publisher-11] from 'camera_rgb_optical_frame' to 'world'                                     
[ros2_control_node-6] [INFO] [1686951147.058564252] [resource_manager]: Loading hardware 'PandaFakeSystem' 
[ros2_control_node-6] [INFO] [1686951147.059251344] [resource_manager]: Initialize hardware 'PandaFakeSystem'          
[ros2_control_node-6] [WARN] [1686951147.059306397] [mock_generic_system]: Parsing of optional initial interface values failed or uses a deprecated format. Add initial values for every state interface in the ros2_control.xacro. For example:                                          
[ros2_control_node-6] <state_interface name="velocity">                                                        
[ros2_control_node-6]   <param name="initial_value">0.0</param>                     
[ros2_control_node-6] </state_interface>                                            
[ros2_control_node-6] [INFO] [1686951147.059321372] [resource_manager]: Successful initialization of hardware 'PandaFakeSystem'
[ros2_control_node-6] [INFO] [1686951147.059347919] [resource_manager]: Loading hardware 'PandaHandFakeSystem' 
[ros2_control_node-6] [INFO] [1686951147.059363429] [resource_manager]: Initialize hardware 'PandaHandFakeSystem'                                                       
[ros2_control_node-6] [INFO] [1686951147.059380861] [resource_manager]: Successful initialization of hardware 'PandaHandFakeSystem'
[ros2_control_node-6] [WARN] [1686951147.059424476] [controller_manager]: [Deprecated]: Automatic activation of all hardware components will not be supported in the future anymore. Use hardware_spawner instead.
[ros2_control_node-6] [INFO] [1686951147.059540314] [resource_manager]: 'configure' hardware 'PandaFakeSystem' 
[ros2_control_node-6] [INFO] [1686951147.059548901] [resource_manager]: Successful 'configure' of hardware 'PandaFakeSystem'
[ros2_control_node-6] [INFO] [1686951147.059556934] [resource_manager]: 'activate' hardware 'PandaFakeSystem'  
[ros2_control_node-6] [INFO] [1686951147.059562013] [resource_manager]: Successful 'activate' of hardware 'PandaFakeSystem'
[ros2_control_node-6] [INFO] [1686951147.059566830] [resource_manager]: 'configure' hardware 'PandaHandFakeSystem'                           
[ros2_control_node-6] [INFO] [1686951147.059570860] [resource_manager]: Successful 'configure' of hardware 'PandaHandFakeSystem'             
[ros2_control_node-6] [INFO] [1686951147.059575890] [resource_manager]: 'activate' hardware 'PandaHandFakeSystem'                  
[ros2_control_node-6] [INFO] [1686951147.059580047] [resource_manager]: Successful 'activate' of hardware 'PandaHandFakeSystem'                                         
[ros2_control_node-6] [INFO] [1686951147.065007078] [controller_manager]: update rate is 100 Hz
[ros2_control_node-6] [INFO] [1686951147.065173687] [controller_manager]: RT kernel is recommended for better performance    
[move_group-5] [INFO] [1686951147.103734695] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 0.0013754 seconds
[move_group-5] [INFO] [1686951147.103787094] [moveit_robot_model.robot_model]: Loading robot model 'panda'...
[move_group-5] [WARN] [1686951147.110457612] [kdl_parser]: The root link panda_link0 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-5] [INFO] [1686951147.110551862] [moveit_kinematics_base.kinematics_base]: Joint weights for group 'panda_arm': 1 1 1 1 1 1 1
[move_group-5] [INFO] [1686951147.132729238] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Publishing maintained planning scene on 'monitored_planning_scene'   
[move_group-5] [INFO] [1686951147.132859606] [moveit.ros_planning_interface.moveit_cpp]: Listening to 'joint_states' for joint states
[move_group-5] [INFO] [1686951147.134054780] [moveit_ros.current_state_monitor]: Listening to joint states on topic 'joint_states'
[move_group-5] [INFO] [1686951147.134490933] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to '/attached_collision_object' for attached collision objects
[move_group-5] [INFO] [1686951147.134507413] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Starting planning scene monitor
[move_group-5] [INFO] [1686951147.134820220] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to '/planning_scene'
[move_group-5] [INFO] [1686951147.134832262] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Starting world geometry update monitor for collision objects, attached objects, octomap updates.
[move_group-5] [INFO] [1686951147.135159510] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to 'collision_object'
[move_group-5] [INFO] [1686951147.135587044] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to 'planning_scene_world' for planning scene world geometry
[ros2-1] stdin is not a terminal device. Keyboard handling disabled.[INFO] [1686951147.224534229] [rosbag2_storage]: Opened database '/cws/install/moveit2_tutorials/share/moveit2_tutorials/bags/perception_tutorial.bag/perception_tutorial.db3' for READ_ONLY.
[ros2-1] [INFO] [1686951147.224588757] [rosbag2_player]: Set rate to 1 
[rviz2-2] [INFO] [1686951147.291523282] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-2] [INFO] [1686951147.291669901] [rviz2]: OpenGl version: 4.6 (GLSL 4.6)
[rviz2-2] [INFO] [1686951147.307688566] [rviz2]: Stereo is NOT SUPPORTED
[rviz2-2] [INFO] [1686951147.369436913] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 0.00130968 seconds
[rviz2-2] [INFO] [1686951147.369486132] [moveit_robot_model.robot_model]: Loading robot model 'panda'...
[move_group-5] [INFO] [1686951147.562696603] [moveit.ros.perception.pointcloud_octomap_updater]: Listening to '/camera/depth_registered/points' using message filter with target frame 'world '
[rviz2-2] [INFO] [1686951147.579677599] [moveit_rdf_loader.rdf_loader]: Loaded robot model in 0.00144278 seconds
[rviz2-2] [INFO] [1686951147.579754640] [moveit_robot_model.robot_model]: Loading robot model 'panda'...
[move_group-5] [ERROR] [1686951147.587684238] [move_group]: Failed to load plugin image_transport/raw_pub, error string: could not create publisher: create_publisher() called for existing topic name rt/filtered_cloud with incompatible type sensor_msgs::msg::dds_::Image_, at ./src/p
ublisher.cpp:145, at ./src/rcl/publisher.c:116
[move_group-5] 
[move_group-5] terminate called after throwing an instance of 'image_transport::Exception'
[move_group-5]   what():  No plugins found! Does `rospack plugins --attrib=plugin image_transport` find any packages?
[move_group-5] Stack trace (most recent call last):
[move_group-5] #20   Object "", at 0xffffffffffffffff, in 
[ros2_control_node-6] [INFO] [1686951147.597218634] [controller_manager]: Loading controller 'panda_hand_controller'
[ros2-1] [INFO] [1686951147.600028487] [rosbag2_player]: Adding keyboard callbacks.
[ros2-1] [INFO] [1686951147.603484671] [rosbag2_player]: Press SPACE for Pause/Resume
[ros2-1] [INFO] [1686951147.603591378] [rosbag2_player]: Press CURSOR_RIGHT for Play Next Message
[ros2-1] [INFO] [1686951147.603601783] [rosbag2_player]: Press CURSOR_UP for Increase Rate 10%
[ros2-1] [INFO] [1686951147.603609553] [rosbag2_player]: Press CURSOR_DOWN for Decrease Rate 10%
[ros2-1] [INFO] [1686951147.603794766] [rosbag2_player]: Playback until timestamp: -1
[rviz2-2] [WARN] [1686951147.606627975] [kdl_parser]: The root link panda_link0 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] [1686951147.606816979] [moveit_kinematics_base.kinematics_base]: Joint weights for group 'panda_arm': 1 1 1 1 1 1 1
[rviz2-2] [INFO] [1686951147.635752673] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Starting planning scene monitor
[rviz2-2] [INFO] [1686951147.637898910] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Listening to '/monitored_planning_scene'
[spawner-9] [INFO] [1686951147.640145811] [spawner_panda_hand_controller]: Loaded panda_hand_controller
[ros2_control_node-6] [INFO] [1686951147.641317178] [controller_manager]: Configuring controller 'panda_hand_controller'
[ros2_control_node-6] [INFO] [1686951147.641453969] [panda_hand_controller]: Action status changes will be monitored at 20Hz.
[move_group-5] #19   Object "/opt/ros/rolling/lib/moveit_ros_move_group/move_group", at 0x5595f3e46c24, in _start
[move_group-5] #18   Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f804af96e3f, in __libc_start_main
[move_group-5] #17   Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f804af96d8f, in 
[move_group-5] #16 | Source "./src/move_group.cpp", line 280, in make_shared<moveit_cpp::MoveItCpp, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr.h", line 879, in allocate_shared<moveit_cpp::MoveItCpp, std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   877:       typedef typename std::remove_cv<_Tp>::type _Tp_nc;
[move_group-5]     |   878:       return std::allocate_shared<_Tp>(std::allocator<_Tp_nc>(),
[move_group-5]     | > 879:    std::forward<_Args>(__args)...);
[move_group-5]     |   880:     }
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr.h", line 863, in shared_ptr<std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   862:       return shared_ptr<_Tp>(_Sp_alloc_shared_tag<_Alloc>{__a},
[move_group-5]     | > 863:          std::forward<_Args>(__args)...);
[move_group-5]     |   864:     }
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr.h", line 409, in __shared_ptr<std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   407:       template<typename _Alloc, typename... _Args>
[move_group-5]     |   408:     shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args)
[move_group-5]     | > 409:     : __shared_ptr<_Tp>(__tag, std::forward<_Args>(__args)...)
[move_group-5]     |   410:     { }
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr_base.h", line 1342, in __shared_count<moveit_cpp::MoveItCpp, std::allocator<moveit_cpp::MoveItCpp>, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |  1340:       template<typename _Alloc, typename... _Args>
[move_group-5]     |  1341:     __shared_ptr(_Sp_alloc_shared_tag<_Alloc> __tag, _Args&&... __args)
[move_group-5]     | >1342:     : _M_ptr(), _M_refcount(_M_ptr, __tag, std::forward<_Args>(__args)...)
[move_group-5]     |  1343:     { _M_enable_shared_from_this_with(_M_ptr); }
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr_base.h", line 650, in _Sp_counted_ptr_inplace<std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   648:       auto __guard = std::__allocate_guarded(__a2);
[move_group-5]     |   649:       _Sp_cp_type* __mem = __guard.get();
[move_group-5]     | > 650:       auto __pi = ::new (__mem)
[move_group-5]     |   651:         _Sp_cp_type(__a._M_a, std::forward<_Args>(__args)...);
[move_group-5]     |   652:       __guard = nullptr;
[move_group-5]     | Source "/usr/include/c++/11/bits/shared_ptr_base.h", line 519, in construct<moveit_cpp::MoveItCpp, std::shared_ptr<rclcpp::Node>&, moveit_cpp::MoveItCpp::Options&, const std::shared_ptr<tf2_ros::Buffer>&>
[move_group-5]     |   517:       // _GLIBCXX_RESOLVE_LIB_DEFECTS
[move_group-5]     |   518:       // 2070.  allocate_shared should use allocator_traits<A>::construct
[move_group-5]     | > 519:       allocator_traits<_Alloc>::construct(__a, _M_ptr(),
[move_group-5]     |   520:           std::forward<_Args>(__args)...); // might throw
[move_group-5]     |   521:     }
[move_group-5]     |   514:     {
[move_group-5]     |   515: #if __cplusplus <= 201703L
[move_group-5]     | > 516:       __a.construct(__p, std::forward<_Args>(__args)...);
[move_group-5]     |   517: #else
[move_group-5]     |   518:       std::construct_at(__p, std::forward<_Args>(__args)...);
[move_group-5]     | Source "/usr/include/c++/11/ext/new_allocator.h", line 162, in MoveItCpp
[move_group-5]     |   160:     construct(_Up* __p, _Args&&... __args)
[move_group-5]     |   161:     noexcept(std::is_nothrow_constructible<_Up, _Args...>::value)
[move_group-5]     | > 162:     { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
[move_group-5]     |   163: 
[move_group-5]     |   164:       template<typename _Up>
[move_group-5]       Source "/opt/ros/rolling/include/moveit_ros_planning/moveit/moveit_cpp/moveit_cpp.h", line 119, in main [0x5595f3e45528] 
[move_group-5]         116:   MoveItCpp(const rclcpp::Node::SharedPtr& node);
[move_group-5]         117:   [[deprecated("Passing tf2_ros::Buffer to MoveItCpp's constructor is deprecated")]] MoveItCpp(
[move_group-5]         118:       const rclcpp::Node::SharedPtr& node, const Options& options, const std::shared_ptr<tf2_ros::Buffer>& /* unused */)
[move_group-5]       > 119:     : MoveItCpp(node, options)
[move_group-5]         120:   {
[move_group-5]         121:   }
[move_group-5]         122:   MoveItCpp(const rclcpp::Node::SharedPtr& node, const Options& options);
[spawner-9] [INFO] [1686951147.656098256] [spawner_panda_hand_controller]: Configured and activated panda_hand_controller
[ros2_control_node-6] [INFO] [1686951147.669099933] [controller_manager]: Loading controller 'joint_state_broadcaster'
[move_group-5] #15   Source "./moveit_cpp/src/moveit_cpp.cpp", line 56, in MoveItCpp [0x7f804b8f7375]
[move_group-5] #14   Source "./moveit_cpp/src/moveit_cpp.cpp", line 108, in loadPlanningSceneMonitor [0x7f804b8f6b31]
[spawner-7] [INFO] [1686951147.704703122] [spawner_joint_state_broadcaster]: Loaded joint_state_broadcaster
[ros2_control_node-6] [INFO] [1686951147.705949934] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[ros2_control_node-6] [INFO] [1686951147.706039645] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[spawner-7] [INFO] [1686951147.726595118] [spawner_joint_state_broadcaster]: Configured and activated joint_state_broadcaster
[move_group-5] #13   Source "./src/occupancy_map_monitor.cpp", line 329, in startMonitor [0x7f804ab2e0c4]
[move_group-5] #12   Source "./depth_image_octomap_updater/src/depth_image_octomap_updater.cpp", line 141, in start [0x7f80316369fc]
[move_group-5] #11   Object "/opt/ros/rolling/lib/x86_64-linux-gnu/libimage_transport.so", at 0x7f80315e3c04, in image_transport::ImageTransport::advertiseCamera(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, bool)
[move_group-5] #10   Object "/opt/ros/rolling/lib/x86_64-linux-gnu/libimage_transport.so", at 0x7f80315e3b3d, in image_transport::create_camera_publisher(rclcpp::Node*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rmw_qos_profile_s)
[move_group-5] #9    Object "/opt/ros/rolling/lib/x86_64-linux-gnu/libimage_transport.so", at 0x7f80315bf847, in image_transport::CameraPublisher::CameraPublisher(rclcpp::Node*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rmw_qos_profile_
s)
[move_group-5] #8    Object "/opt/ros/rolling/lib/x86_64-linux-gnu/libimage_transport.so", at 0x7f80315e36e4, in image_transport::create_publisher(rclcpp::Node*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rmw_qos_profile_s, rclcpp::Publi
sherOptionsWithAllocator<std::allocator<void> >)
[move_group-5] #7    Object "/opt/ros/rolling/lib/x86_64-linux-gnu/libimage_transport.so", at 0x7f80315a7e24, in 
[move_group-5] #6    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f804b265517, in __cxa_throw
[move_group-5] #5    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f804b2652b6, in std::terminate()
[move_group-5] #4    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f804b26524b, in 
[move_group-5] #3    Object "/usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.30", at 0x7f804b259bbd, in 
[move_group-5] #2    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f804af957f2, in abort
[move_group-5] #1    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f804afaf475, in raise
[move_group-5] #0    Object "/usr/lib/x86_64-linux-gnu/libc.so.6", at 0x7f804b003a7c, in pthread_kill
[move_group-5] Aborted (Signal sent by tkill() 168342 0)
[INFO] [spawner-9]: process has finished cleanly [pid 168350]
[ERROR] [move_group-5]: process has died [pid 168342, exit code -6, cmd '/opt/ros/rolling/lib/moveit_ros_move_group/move_group --ros-args --log-level info --ros-args --params-file /tmp/launch_params_yjpav9q2 --params-file /tmp/launch_params_r5no5ujr'].
[INFO] [spawner-7]: process has finished cleanly [pid 168346]
[spawner-8] [INFO] [1686951149.655289496] [spawner_panda_arm_controller]: Waiting for '/controller_manager' node to exist
[ros2_control_node-6] [INFO] [1686951150.873120048] [controller_manager]: Loading controller 'panda_arm_controller'
[spawner-8] [INFO] [1686951150.906974376] [spawner_panda_arm_controller]: Loaded panda_arm_controller
[ros2_control_node-6] [INFO] [1686951150.909345040] [controller_manager]: Configuring controller 'panda_arm_controller'
[ros2_control_node-6] [INFO] [1686951150.909611903] [panda_arm_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
[ros2_control_node-6] [INFO] [1686951150.909680154] [panda_arm_controller]: Command interfaces are [position] and state interfaces are [position velocity].
[ros2_control_node-6] [INFO] [1686951150.909708112] [panda_arm_controller]: Using 'splines' interpolation method.
[ros2_control_node-6] [INFO] [1686951150.912381869] [panda_arm_controller]: Action status changes will be monitored at 20.00 Hz.
[spawner-8] [INFO] [1686951150.936614554] [spawner_panda_arm_controller]: Configured and activated panda_arm_controller
[INFO] [spawner-8]: process has finished cleanly [pid 168348]
[rviz2-2] [INFO] [1686951152.640582192] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Failed to call service get_planning_scene, have you launched move_group or called psm.providePlanningSceneService()?
^C[WARNING] [launch]: user interrupted with ctrl-c (SIGINT)
[static_transform_publisher-10] [INFO] [1686951167.845163400] [rclcpp]: signal_handler(signum=2)
[static_transform_publisher-3] [INFO] [1686951167.845166554] [rclcpp]: signal_handler(signum=2)
[robot_state_publisher-4] [INFO] [1686951167.845162936] [rclcpp]: signal_handler(signum=2)
[ros2-1] [INFO] [1686951167.845166570] [rclcpp]: signal_handler(signum=2)
[rviz2-2] [INFO] [1686951167.845166583] [rclcpp]: signal_handler(signum=2)
[ros2_control_node-6] [INFO] [1686951167.845204765] [rclcpp]: signal_handler(signum=2)
[static_transform_publisher-11] [INFO] [1686951167.845190129] [rclcpp]: signal_handler(signum=2)
[rviz2-2] [INFO] [1686951167.851459199] [moveit_ros.planning_scene_monitor.planning_scene_monitor]: Stopping planning scene monitor
[ERROR] [robot_state_publisher-4]: process has died [pid 168340, exit code -11, cmd '/opt/ros/rolling/lib/robot_state_publisher/robot_state_publisher --ros-args -r __node:=robot_state_publisher --params-file /tmp/launch_params_bskh5v1u'].
[INFO] [static_transform_publisher-3]: process has finished cleanly [pid 168338]
[INFO] [static_transform_publisher-10]: process has finished cleanly [pid 168352]
[INFO] [static_transform_publisher-11]: process has finished cleanly [pid 168354]
[ERROR] [rviz2-2]: process has died [pid 168336, exit code -11, cmd '/opt/ros/rolling/lib/rviz2/rviz2 -d /cws/install/moveit_resources_panda_moveit_config/share/moveit_resources_panda_moveit_config/launch/moveit.rviz --ros-args -r __node:=rviz2 --params-file /tmp/launch_params__7e8
yy_6 --params-file /tmp/launch_params_3afztatm --params-file /tmp/launch_params_ei6hbb0a --params-file /tmp/launch_params_bn3mtcrw --params-file /tmp/launch_params_mhr6w_r0'].
[INFO] [ros2_control_node-6]: process has finished cleanly [pid 168344]
[INFO] [ros2-1]: process has finished cleanly [pid 168334]

Beginning of failure seems these:

[move_group-5] [ERROR] [1686951147.587684238] [move_group]: Failed to load plugin image_transport/raw_pub, error string: could not create publisher: create_publisher() called for existing topic name rt/filtered_cloud with incompatible type sensor_msgs::msg::dds_::Image_, at ./src/publisher.cpp:145, at ./src/rcl/publisher.c:116
[move_group-5] 
[move_group-5] terminate called after throwing an instance of 'image_transport::Exception'
[move_group-5]   what():  No plugins found! Does `rospack plugins --attrib=plugin image_transport` find any packages?

Pkg does exist and is reachable by ros2:

# ros2 pkg xml image_transport
<package format="2">
  <name>image_transport</name>
  <version>4.3.0</version>
:

# ros2 pkg prefix image_transport
/opt/ros/rolling

For some reasons googling by Failed to load plugin image_transport/raw_pub, error string: could not create publisher: create_publisher() called for existing topic name rt with incompatible type sensor_msgs::msg::dds_::Image_, at ./src/publisher.cpp:145, at ./src/rcl/publisher.c:116 returns almost only from ros2/rmw_fastrtps repo e.g. ros2/rmw_fastrtps#338. I don't think I've done anything to rmw.

So questions:

  • Why does this error about image_transport occur?
  • Also, why "world "? What's the appended space?

@130s
Copy link
Contributor Author

130s commented Jun 20, 2023

As ticketed #708, I found changes that are merged into moveit1's tutorial but not to moveit2's. Not sure if a culprit of the issue I'm seeing (i.e. no octomap shown) but I will test those as well.

@130s

This comment was marked as resolved.

130s added a commit to 130s/moveit_resources that referenced this pull request Jun 28, 2023
@130s 130s force-pushed the feature-perceptionpipeline-ros2fy branch 3 times, most recently from 54d5e3c to a432168 Compare June 28, 2023 18:26
@130s
Copy link
Contributor Author

130s commented Jul 21, 2023

@sjahr I see you're active on this repo recently. Would you mind reviewing, or assigning appropriate reviewers?

@sjahr sjahr requested a review from jliukkonen July 21, 2023 13:45
@sjahr
Copy link
Contributor

sjahr commented Jul 21, 2023

@130s Thanks for your work here! I'll take a look at it next week

Copy link

@Tejas-Shastha Tejas-Shastha left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First of all, thank you very much for attempting to ROS2-ify this tutorial page!
I do not yet have a rolling environment where I can test this tutorial completely, but I have commented on some things that I could find by just reading the first half related to configuration. These are some points I found a little confusing myself.

@@ -30,19 +34,22 @@ To use the Occupancy Map Updater, it is only necessary to set the appropriate pa
YAML Configuration file (Point Cloud)
+++++++++++++++++++++++++++++++++++++

We will have to generate a YAML configuration file for configuring the 3D sensors. Please see :panda_codedir:`this example file<config/sensors_kinect_pointcloud.yaml>` for processing point clouds.
We will have to generate a YAML configuration file for configuring the 3D sensors. Please see :panda_codedir:`this example file <config/sensors_3d.yaml>` for processing point clouds.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. Link updated.

padding_offset: 0.03
max_update_rate: 1.0
filtered_cloud_topic: filtered_cloud
We will have to generate a YAML configuration file for configuring the 3D sensors. An :panda_codedir:`example file for processing depth images <config/sensors_3d.yaml>` can be found in the panda_moveit_config repository as well.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1. Link updated.


Update the launch file
++++++++++++++++++++++

Add the YAML file to the launch script
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You will now need to update the *sensor_manager.launch* file in the "launch" directory of your panda_moveit_config directory with this sensor information (this file is auto-generated by the Setup Assistant but is empty). You will need to add the following line into that file to configure the set of sensor sources for MoveIt to use: ::
You will now need to create a *sensor_manager.launch* file in the "launch" directory of your panda_moveit_config directory (e.g. `on github <https://github.com/ros-planning/panda_moveit_config/blob/rolling-devel/launch/sensor_manager.launch.xml>`_) with this sensor information. You will need to add the following line into that file to configure the set of sensor sources for MoveIt to use: ::

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section is a bit ambiguous.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TLDR I'll address the issues here 👍

Reasonbale concern. At the tiem of writing there was unclarity, but now we have it clarified #704 so I'll have to update this PR to use panda config from moveit2_resources, not from panda_moveit_config repo.


If you are using depthmap change the name of the yaml file to ``sensors_kinect_depthmap.yaml``.
If you are using depthmap change the name of the yaml file to ``sensors_3d.yaml``.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • In both cases the name of the yaml is sensors_3d.yaml, there is no change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup, removed.


If you are using depthmap change the name of the yaml file to ``sensors_kinect_depthmap.yaml``.
If you are using depthmap change the name of the yaml file to ``sensors_3d.yaml``.
Note that you will need to input the path to the right file you have created above.

Octomap Configuration

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps this section needs to be refactored for ROS2 as well? In your fork of the panda moveit config, you do not use the XML launch approach mentioned above, but add this directly into the demo python launch.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I updated that config section to include migration from .launch to .launch.py. Hope the new change makes sense.

@Tejas-Shastha
Copy link

First of all, thank you very much for attempting to ROS2-ify this tutorial page! I do not yet have a rolling environment where I can test this tutorial completely, but I have commented on some things that I could find by just reading the first half related to configuration. These are some points I found a little confusing myself.

Okay so I tried this out in my humble workspace. I was indeed able to visualize the point cloud, and even plan around the obstacles it inserts, but this was not entirely straightforward. I had to make a couple of tweaks (ex: remove world->panda_link0 static tf from launch xml because its already published, and run the rosbag play separately after starting up everything else otherwise rviz would just crash).

My biggest concern is the following messages :

[move_group-4] [ERROR] [1695826256.398988365] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 2
[move_group-4] [ERROR] [1695826256.399085964] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 3
[move_group-4] [ERROR] [1695826256.399060125] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 4
[move_group-4] [ERROR] [1695826256.399073164] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 5

which goes up to handle 11.

We can see it comes from here and here, but I am not sure what exactly this complains about. Missing TF for robot links? I can see in TF that robot frames are well published. I increased the robot_description_planning.shape_transform_cache_lookup_wait_time to 2.0 just to be generous as well.

@130s Any thoughts?

@130s 130s force-pushed the feature-perceptionpipeline-ros2fy branch from a432168 to 1962b20 Compare September 27, 2023 15:46
…e (unverified) decision moveit#704 (comment))

Signed-off-by: Isaac Saito <130s@2000.jukuin.keio.ac.jp>
130s added a commit to 130s/moveit2_tutorials that referenced this pull request Sep 27, 2023
…ent)

Signed-off-by: Isaac Saito <130s@2000.jukuin.keio.ac.jp>
130s added a commit to 130s/moveit2_tutorials that referenced this pull request Sep 27, 2023
…address in PR moveit#700 (comment))

Signed-off-by: Isaac Saito <130s@2000.jukuin.keio.ac.jp>
+ html_context["github_user"]
+ "/moveit_resources/tree/ros2"
# + html_context["github_user"]
+ "130s"
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reminder to revert the changes in this line and 2 lines below, once moveit/moveit_resources#181 is merged.

…ent)

Signed-off-by: Isaac Saito <130s@2000.jukuin.keio.ac.jp>

Remove unnecessary functionality (moveit#700 (comment))

Signed-off-by: Isaac Saito <130s@2000.jukuin.keio.ac.jp>
…address in PR moveit#700 (comment))

Signed-off-by: Isaac Saito <130s@2000.jukuin.keio.ac.jp>
@130s 130s force-pushed the feature-perceptionpipeline-ros2fy branch from 92aca72 to 9b7e620 Compare September 27, 2023 17:59
@130s
Copy link
Contributor Author

130s commented Sep 27, 2023

Thanks for the review and testing! @Tejas-Shastha
It's been a while since I made the PR and I still haven't fully recalled what I did, but I updated the PR. ATM I have not just yet tested myself the latest changes.

this was not entirely straightforward. I had to make a couple of tweaks (ex: remove world->panda_link0 static tf from launch xml because its already published,

Ok...Not sure why it fails on your env, but I removed that static publisher.

run the rosbag play separately after starting up everything else otherwise rviz would just crash).

I'm unsure what's going on. If you can spot particular error output, would you mind posting (Can that look similar to moveit/moveit_resources#170?)?

My biggest concern is the following messages :

[move_group-4] [ERROR] [1695826256.398988365] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 2
[move_group-4] [ERROR] [1695826256.399085964] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 3
[move_group-4] [ERROR] [1695826256.399060125] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 4
[move_group-4] [ERROR] [1695826256.399073164] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 5

Hm, no idea yet.
An easy thing to say is that this is tutorial, so we can ticket it and move forward?

@Tejas-Shastha
Copy link

this was not entirely straightforward. I had to make a couple of tweaks (ex: remove world->panda_link0 static tf from launch xml because its already published,

Ok...Not sure why it fails on your env, but I removed that static publisher.

I think the entity responsible for publishing this TF changes somewhere between all the configs. I would keep whatever works for the instructions of the tutorial (I did not test the tutorial environment, rather a custom environment of my own, so I am not sure what is correct either). Apologies if this created too much confusion!

I also found out that the error I mentioned above:


[move_group-4] [ERROR] [1695826256.398988365] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 2
[move_group-4] [ERROR] [1695826256.399085964] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 3
[move_group-4] [ERROR] [1695826256.399060125] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 4
[move_group-4] [ERROR] [1695826256.399073164] [moveit.ros.perception.shape_mask]: Missing transform for shape mesh with handle 5

is caused by TF issues. I guess that since the bag contains only 1 msg and it is being relaunched at a pretty high rate, it messes up TF? I recorded my own bag and tried it and got the same results. However, on a real robot with a live feed from an Intel realsense D435, I did not have this issue at all (except once when the camera dropped some frames I think, which is what led me to conclude this is a TF issue). So, as you suggested, maybe it is sufficient to declare this phenomenon as a warning and move on? A separate issue can be raised to investigate this better.

Overall, I tested the configuration suggestions you made with a real Panda FER1 and it works very well! (Again, my environment is somewhat different from what is prescribed in the tutorial). I think this PR adds sufficient value that it can be merged, I'm sure it would help many moveit users!

P.S. : I am apparently unable to change my review from "Changes requested" for some reason. Please consider this as approved.

@sjahr sjahr linked an issue Dec 1, 2023 that may be closed by this pull request
@tylerjw
Copy link
Contributor

tylerjw commented Dec 1, 2023

closes #708

@Tejas-Shastha
Copy link

@henningkayser Could you please review or push for a review of this PR?

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

Successfully merging this pull request may close these issues.

Perception pipeline tutorial uses ROS1 in ROS2 (Humble) documentation
4 participants