trac_ik build error on Debian Stretch for ROS lunar; no match for ‘operator=’

Issue #46 resolved
Bas de Bruijn created an issue

Hi,

I'm trying to build trac_ik on Debian Stretch. I'd like to use the trac kinematics with planning in Moveit. I've installed the apt-packages for ros-lunar from deb http://packages.ros.org/ros/ubuntu stretch main

When invoking catkin_make I get the following error (first mention copied below, full error at https://gist.github.com/luminize/ac3a79ae2b3d35f8d5f0faebb3534011)

I'd like to fix this but I'm not sure where to start. If somebody would walk me through I'd love to make a PR for this.

Cheers, Bas

/home/bas/catkin_ws/src/trac_ik/trac_ik_lib/src/trac_ik.cpp: In constructor TRAC_IK::TRAC_IK::TRAC_IK(const string&, const string&, const string&, double, double, TRAC_IK::SolveType)’:
/home/bas/catkin_ws/src/trac_ik/trac_ik_lib/src/trac_ik.cpp:91:70: error: no match for operator= (operand types are boost::shared_ptr<const urdf::Joint> and urdf::JointConstSharedPtr {aka std::shared_ptr<const urdf::Joint>}’)
       joint = robot_model.getJoint(chain_segs[i].getJoint().getName());
                                                                      ^
In file included from /usr/include/boost/shared_ptr.hpp:17:0,
                 from /usr/include/boost/date_time/time_clock.hpp:17,
                 from /usr/include/boost/thread/thread_time.hpp:9,
                 from /usr/include/boost/thread/lock_types.hpp:18,
                 from /usr/include/boost/thread/pthread/thread_data.hpp:12,
                 from /usr/include/boost/thread/thread_only.hpp:17,
                 from /usr/include/boost/thread/thread.hpp:12,
                 from /usr/include/boost/thread.hpp:13,
                 from /home/bas/catkin_ws/src/trac_ik/trac_ik_lib/include/trac_ik/trac_ik.hpp:37,
                 from /home/bas/catkin_ws/src/trac_ik/trac_ik_lib/src/trac_ik.cpp:32:
/usr/include/boost/smart_ptr/shared_ptr.hpp:524:18: note: candidate: boost::shared_ptr<T>& boost::shared_ptr<T>::operator=(const boost::shared_ptr<T>&) [with T = const urdf::Joint]
     shared_ptr & operator=( shared_ptr const & r ) BOOST_NOEXCEPT
                  ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:524:18: note:   no known conversion for argument 1 from urdf::JointConstSharedPtr {aka std::shared_ptr<const urdf::Joint>}’ to const boost::shared_ptr<const urdf::Joint>&
/usr/include/boost/smart_ptr/shared_ptr.hpp:533:18: note: candidate: template<class Y> boost::shared_ptr<T>& boost::shared_ptr<T>::operator=(const boost::shared_ptr<Y>&) [with Y = Y; T = const urdf::Joint]
     shared_ptr & operator=(shared_ptr<Y> const & r) BOOST_NOEXCEPT
                  ^~~~~~~~
/usr/include/boost/smart_ptr/shared_ptr.hpp:533:18: note:   template argument deduction/substitution failed:
/home/bas/catkin_ws/src/trac_ik/trac_ik_lib/src/trac_ik.cpp:91:70: note:   urdf::JointConstSharedPtr {aka std::shared_ptr<const urdf::Joint>}’ is not derived from const boost::shared_ptr<X>
       joint = robot_model.getJoint(chain_segs[i].getJoint().getName());

Comments (2)

  1. Log in to comment