Skip to content

Failed to build on ros noetic on ubuntu 2004 #20

Open
@cyoahs

Description

@cyoahs

Hello,

I tried to install this package on ubuntu 2004. I tried package management tools, but apt only contains ros-noetic-xpp-msgs, ros-noetic-xpp-states and ros-noetic-xpp-states-dbgsym. When I try to build from source, error occured as

Errors     << xpp_vis:make /home/ycshao/repo/catkin_workspace/logs/xpp_vis/build.make.003.log
/home/ycshao/repo/catkin_workspace/src/xpp/xpp_vis/src/urdf_visualizer.cc: In member function ‘void xpp::UrdfVisualizer::StateCallback(const RobotStateJoint&)’:
/home/ycshao/repo/catkin_workspace/src/xpp/xpp_vis/src/urdf_visualizer.cc:73:85: error: no matching function for call to ‘robot_state_publisher::RobotStatePublisher::publishTransforms(std::map<std::__cxx11::basic_string<char>, double>&, ros::Time, std::string&)’
   73 |   robot_publisher->publishTransforms(joint_positions, ::ros::Time::now(), tf_prefix_);
      |                                                                                     ^
In file included from /home/ycshao/repo/catkin_workspace/src/xpp/xpp_vis/include/xpp_vis/urdf_visualizer.h:45,
                 from /home/ycshao/repo/catkin_workspace/src/xpp/xpp_vis/src/urdf_visualizer.cc:30:
/opt/ros/noetic/include/robot_state_publisher/robot_state_publisher.h:83:16: note: candidate: ‘virtual void robot_state_publisher::RobotStatePublisher::publishTransforms(const std::map<std::__cxx11::basic_string<char>, double>&, const ros::Time&)’
   83 |   virtual void publishTransforms(const std::map<std::string, double>& joint_positions, const ros::Time& time);
      |                ^~~~~~~~~~~~~~~~~
/opt/ros/noetic/include/robot_state_publisher/robot_state_publisher.h:83:16: note:   candidate expects 2 arguments, 3 provided
/home/ycshao/repo/catkin_workspace/src/xpp/xpp_vis/src/urdf_visualizer.cc:74:43: error: cannot convert ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} to ‘bool’
   74 |   robot_publisher->publishFixedTransforms(tf_prefix_);
      |                                           ^~~~~~~~~~
      |                                           |
      |                                           std::string {aka std::__cxx11::basic_string<char>}
In file included from /home/ycshao/repo/catkin_workspace/src/xpp/xpp_vis/include/xpp_vis/urdf_visualizer.h:45,
                 from /home/ycshao/repo/catkin_workspace/src/xpp/xpp_vis/src/urdf_visualizer.cc:30:
/opt/ros/noetic/include/robot_state_publisher/robot_state_publisher.h:84:44: note:   initializing argument 1 of ‘virtual void robot_state_publisher::RobotStatePublisher::publishFixedTransforms(bool)’
   84 |   virtual void publishFixedTransforms(bool use_tf_static = false);
      |                                       ~~~~~^~~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/xpp_vis.dir/build.make:63: CMakeFiles/xpp_vis.dir/src/urdf_visualizer.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:586: CMakeFiles/xpp_vis.dir/all] Error 2
make: *** [Makefile:141: all] Error 2

It seems in ros noetic, robot_publisher->publishFixedTransforms and robot_publisher->publishTransforms have different defination with previous ros distro. I finally fixed this problem by simply changing those two lines mentioned in the error messages. But this change breaks the TF relationship and results in incorrect display in rviz for links.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions