ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question
0

QoS not member of rclcpp and qmock comparison warning

asked 2019-07-15 15:07:04 -0600

Ed C. gravatar image

Environment

  • Turtlebot3 Waffle
  • Intel NUC
  • ubuntu 18.04
  • ROS2 Crystal

Problem

I ran into trouble with the ROS2 Turtlebot3 install Robotis eManula Section 15. In particular see Section 15.1.1.3 "Install Turtlebot3 ROS2 Packages".

I get a QoS not member of rclcpp error and qmock comparison warning during the tb3 build. See detailed build log at question end.

I suspect that my crystal repositories don't match the turtlebot3.repos configuration file I downloaded.

Reference

Compilation Error on latest version of RCLCPP

Maintaining a Source Checkout of ROS 2

Question

Am I on the right track? I am hoping I can fix this by downloading the crystal version of tutlebot3.repos but I don't understand how to do that. I was hoping I could replace 'ros2' with 'crystal' in the following wget but that doesn't work.

$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/turtlebot3/ros2/turtlebot3.repos

I suspect another possibility is to update or upgrade crystal or Ubuntu but I need to know whether that is appropriate. I have destroyed build environments that I could not recover from by doing inappropriate updates/upgrades.

Build Detail

$ colcon build --symlink-install
Starting >>> nav2_common
Starting >>> nav_2d_msgs
Starting >>> angles
Starting >>> behaviortree_cpp
Finished <<< nav2_common [1.54s]                                   
Starting >>> nav2_msgs
Finished <<< angles [3.46s]                                      
Starting >>> nav2_voxel_grid
[Processing: behaviortree_cpp, nav2_msgs, nav2_voxel_grid, nav_2d_msgs]
Finished <<< nav2_voxel_grid [43.8s]                                   
Starting >>> cv_bridge
[Processing: behaviortree_cpp, cv_bridge, nav2_msgs, nav_2d_msgs]              
Finished <<< nav_2d_msgs [1min 31s]                                            
Starting >>> dwb_msgs
Finished <<< cv_bridge [1min 1s]            
Starting >>> camera_calibration_parsers
Finished <<< behaviortree_cpp [1min 54s]    
Starting >>> cartographer
Finished <<< camera_calibration_parsers [29.7s]                                
Starting >>> cartographer_ros_msgs
[Processing: cartographer, cartographer_ros_msgs, dwb_msgs, nav2_msgs]         
[Processing: cartographer, cartographer_ros_msgs, dwb_msgs, nav2_msgs]         
[Processing: cartographer, cartographer_ros_msgs, dwb_msgs, nav2_msgs]         
[Processing: cartographer, cartographer_ros_msgs, dwb_msgs, nav2_msgs]         
[Processing: cartographer, cartographer_ros_msgs, dwb_msgs, nav2_msgs]         
Finished <<< dwb_msgs [3min 42s]                                               
Starting >>> gazebo_dev
Finished <<< gazebo_dev [3.56s]                                                
Starting >>> gazebo_msgs
[Processing: cartographer, cartographer_ros_msgs, gazebo_msgs, nav2_msgs]      
[Processing: cartographer, cartographer_ros_msgs, gazebo_msgs, nav2_msgs]      
Finished <<< cartographer_ros_msgs [4min 14s]                                  
Starting >>> image_transport
--- stderr: image_transport                  
/home/eepp/turtlebot3_ws/src/gazebo/camera_info_manager/image_transport/src/camera_publisher.cpp: In constructor ‘image_transport::CameraPublisher::CameraPublisher(rclcpp::Node*, const string&, rmw_qos_profile_t)’:
/home/eepp/turtlebot3_ws/src/gazebo/camera_info_manager/image_transport/src/camera_publisher.cpp:93:22: error: ‘QoS’ is not a member of ‘rclcpp’
   auto qos = rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(custom_qos));
                      ^~~
/home/eepp/turtlebot3_ws/src/gazebo/camera_info_manager/image_transport/src/camera_publisher.cpp:93:34: error: ‘rclcpp::QoSInitialization’ has not been declared
   auto qos = rclcpp::QoS(rclcpp::QoSInitialization::from_rmw(custom_qos));
                                  ^09:58, 15 July 2019 (PDT)09:58, 15 July 2019 (PDT)09:58, 15 July 2019 (PDT)~
make[2]: *** [CMakeFiles/image_transport.dir/src/camera_publisher.cpp.o] Error 1
make[1]: *** [CMakeFiles/image_transport.dir/all] Error 2
make: *** [all] Error 2
---
Failed   <<< image_transport    [ Exited with code 2 ]
Aborted  <<< nav2_msgs                                   
Aborted  <<< gazebo_msgs                                 
--- stderr: cartographer                     
In file included from /usr/src/googletest/googlemock/include/gmock/gmock-spec-builders.h:75:0,
                 from /usr/src/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h:43,
                 from /usr/src/googletest/googlemock/include/gmock/gmock.h:61,
                 from /home/eepp/turtlebot3_ws ...
(more)
edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
0

answered 2019-07-16 07:08:54 -0600

alsora gravatar image

The QoS class has been introduced in ROS2 Dashing release ( the one after Crystal).

Apparently the Turtlebot repository has only a ros2 branch and not a specific branch for each ROS2 distribution. The ros2branch requires Dashing. https://github.com/ROBOTIS-GIT/turtle...

I suggest you to update your ROS distribution to Dashing, as it is the first long term release of ROS2.

You can follow the instructions here https://index.ros.org/doc/ros2/Instal...

edit flag offensive delete link more

Comments

Thank you. This is what I anticipated. I will happily move to Dashing. I will also complain that this requirement does not follow acceptable release guidelines followed by ROS1.

My complaint is that two weeks ago I was advised that the navigation2 and TB3 releases were available in Crystal and not yet ready for Dashing. I also knew that Crystal’s EOL is December 2019. My conservative approach was to bring myself up to speed with ROS2 on supported component versions on Crystal and use the next several weeks to move to Dashing. I have long experienced hiccups between ROS releases. For example, I installed Kinetic early in its release cycle but moved quickly back to Indigo because Kinetic didn’t support packages I required and I liked the stability on Indigo. I revisit Kinetic later.

Furthermore, it clearly says in the Rototis emanual that the ROS2 implementation has been ...(more)

Ed C. gravatar image Ed C.  ( 2019-07-16 15:22:04 -0600 )edit

IMO The Robotis manual has always been updated very slowly compared to the actual code. An alternative that you have is also to go back to an old commit of the turtlebot source code. Turtlebot was working fine with Crystal, it's just a matter of using the correct version of the code. This commit should work for you 1bcb4196baf8f849a74328cc3ba06b8a6446fd68

alsora gravatar image alsora  ( 2019-07-17 09:50:34 -0600 )edit

Question Tools

2 followers

Stats

Asked: 2019-07-15 15:07:04 -0600

Seen: 638 times

Last updated: Jul 16 '19