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

dime's profile - activity

2018-03-23 08:03:26 -0500 received badge  Good Question (source)
2017-04-18 10:41:17 -0500 received badge  Nice Question (source)
2014-08-27 06:36:20 -0500 received badge  Famous Question (source)
2014-06-24 10:09:34 -0500 received badge  Notable Question (source)
2014-06-24 10:09:34 -0500 received badge  Popular Question (source)
2014-05-13 12:46:38 -0500 asked a question roswtf says ERROR The following nodes should be connected but aren't

I'm having trouble using the transforms published via a rosbag file. I start roscore, then I run my node (called output_data) which simply subscribes to a PointStamped topic, and wants to transform this point to another frame and print it out. I then run rosbag play mybagfile.bag.

When the rosbag is running, I can see the tf tree is correctly formed with rosrun tf view_frames. I can also verify that the transform is working by doing "rosrun tf tf_echo destframe sourceframe".

However, my output_data node thinks that any frame I give it doesn't exist. More specifically, I'm calling transformPoint(target_frame, point_in, point_out), but "target_frame" never exists.

The real clue comes from running roswtf while this is happening. I get the following (hopefully) relevant info:

    WARNING The following node subscriptions are unconnected:
     * /output_data_node:
       * /tf_static
    Found 1 error(s).
    ERROR The following nodes should be connected but aren't:
       * /play_1400020743429896445->/output_data_node (/tf)

Question is, what does it mean by "should be connected", and how do I "connect" them. All of this is running on the localhost.

2014-05-06 05:11:55 -0500 received badge  Famous Question (source)
2014-05-04 07:59:21 -0500 received badge  Enthusiast
2014-05-02 07:29:24 -0500 received badge  Notable Question (source)
2014-05-01 04:27:24 -0500 received badge  Popular Question (source)
2014-04-30 14:32:39 -0500 asked a question Transforming robot_pose_ekf/odom to another frame - problem

Hi all,

I am currently trying to take the output of robot_pose_ekf/odom (a geometry_msgs/PoseWithCovarianceStamped) and transform this to another frame (not the world frame). I have tried the following:

void odomCallback(const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped>& msg);
tf::TransformListener tf_;
tf::MessageFilter<geometry_msgs::PoseWithCovarianceStamped> * tf_filter_;
message_filters::Subscriber<geometry_msgs::PoseWithCovarianceStamped> odom_sub_;

Within my Node's constructor:

std::string target_frame_("minefield");
tf_filter_ = new tf::MessageFilter<geometry_msgs::PoseWithCovarianceStamped>(odom_sub_, tf_, target_frame_, 10);
tf_filter_->registerCallback( boost::bind(&Robot::odomCallback, this, _1) );

And the callback:

void Robot::odomCallback(const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped>& msg)
{
    cout << "msg->header.frame_id: " << msg->header.frame_id << endl;
    x_ = msg->pose.pose.position.x;
    y_ = msg->pose.pose.position.y;
    yaw_ = tf::getYaw(msg->pose.pose.orientation);
}

And the error message:

 /usr/include/boost/function/function_template.hpp:1064:16:   instantiated from ‘boost::function<R(T0)>::function(Functor, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type) [with Functor = boost::_bi::bind_t<void, boost::_mfi::mf1<void, Robot, const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&>, boost::_bi::list2<boost::_bi::value<Robot*>, boost::arg<1> > >, R = void, T0 = const boost::shared_ptr<const geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&, typename boost::enable_if_c<boost::type_traits::ice_not<boost::is_integral<Functor>::value>::value, int>::type = int]’
    /opt/ros/hydro/include/message_filters/simple_filter.h:75:85:   instantiated from ‘message_filters::Connection message_filters::SimpleFilter<M>::registerCallback(const C&) [with C = boost::_bi::bind_t<void, boost::_mfi::mf1<void, Robot, const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&>, boost::_bi::list2<boost::_bi::value<Robot*>, boost::arg<1> > >, M = geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> >]’
    /home/dime/hratc2014_workspace_3.1/src/bb_nav/src/bb_rwalk_simple.cpp:240:79:   instantiated from here
    /usr/include/boost/bind/bind.hpp:313:9: error: no match for call to ‘(boost::_mfi::mf1<void, Robot, const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&>) (Robot*&, const boost::shared_ptr<const geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&)’
    /usr/include/boost/bind/mem_fn_template.hpp:136:65: note: candidates are:
    /usr/include/boost/bind/mem_fn_template.hpp:163:7: note: R boost::_mfi::mf1<R, T, A1>::operator()(T*, A1) const [with R = void, T = Robot, A1 = const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&]
    /usr/include/boost/bind/mem_fn_template.hpp:163:7: note:   no known conversion for argument 2 from ‘const boost::shared_ptr<const geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >’ to ‘const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&’
    /usr/include/boost/bind/mem_fn_template.hpp:168:25: note: template<class U> R boost::_mfi::mf1::operator()(U&, A1) const [with U = U, R = void, T = Robot, A1 = const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&]
    /usr/include/boost/bind/mem_fn_template.hpp:176:25: note: template<class U> R boost::_mfi::mf1::operator()(const U&, A1) const [with U = U, R = void, T = Robot, A1 = const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&]
    /usr/include/boost/bind/mem_fn_template.hpp:184:7: note: R boost::_mfi::mf1<R, T, A1>::operator()(T&, A1) const [with R = void, T = Robot, A1 = const boost::shared_ptr<geometry_msgs::PoseWithCovarianceStamped_<std::allocator<void> > >&]
    /usr/include/boost ...
(more)
2014-04-08 07:31:52 -0500 received badge  Student (source)
2014-04-07 14:30:48 -0500 received badge  Famous Question (source)
2014-04-03 15:45:57 -0500 received badge  Notable Question (source)
2014-04-03 10:46:28 -0500 commented answer Problems installing hydro from source

I pulled the source for ROS because we needed to include a third-party modification to parts of the navigation stack (and it was only available in source). Then, I need to also use some dependencies that get installed when I use rosdep on the catkin workspace provided by the competition (HRATC2014). However, rosdep installs these in /opt/ros/hydro. My catkin install complained about being mixed type packages so we have to use catkin_make_isolated, which installed it into my home directory. I haven't been able to figure out how to make my local, source compiled ROS know where the other libraries are. I tried ROS_PACKAGE_PATH / LD_LIBRARY_PATH, etc., but there's some concept I'm missing here. It still doesn't seem to integrate well (i.e. controller_manager/spawn -- one of the dependencies, is never found). I'd have though there'd just be an environment variable that we could ... (more)

2014-04-03 06:35:40 -0500 received badge  Popular Question (source)
2014-04-03 06:11:59 -0500 received badge  Editor (source)
2014-04-02 11:35:18 -0500 asked a question Problems installing hydro from source

Hi,

I can successfully install the catkin (wet?) packages using the install from source on Ubuntu instructions found on the ROS website. However, I seem to still be missing packages that are installed when I install from binary. Looking at the Wiki for installing from source, it mentions "To utilize the things installed there simply source that file. Lets do that now before building the rest of ROS:". However, it never mentions how to build the rest of ROS.

So I figured, let's look at the source install documentation from Groovy. It is very similar, but has how to build the ROS (dry) packages. However, when I try to follow those instructions, substituting hydro for groovy, it tells me that there are no dry packages for Hydro.

I still don't understand why these files are not there when I compile from source, unless possibly they aren't actually part of ROS. They (apt-get packages) get installed as part of the dependency process when installing the HRATC2014 framework. See below:

dime@hratc4:~$ dpkg -S /opt/ros/hydro/lib/libhusky_gazebo_plugins.so /opt/ros/hydro/lib/libcontroller_manager.so 
ros-hydro-husky-gazebo-plugins: /opt/ros/hydro/lib/libhusky_gazebo_plugins.so
ros-hydro-controller-manager: /opt/ros/hydro/lib/libcontroller_manager.so

These don't get installed as part of the source install, so do I need to look elsewhere for their source?

Edit: You are correct, and this is the web page we are following. The problem is, currently robot_pose_ekf does not integrate GPS data. However, clearpath robotics has code (navigation stack) with a modified robot_pose_ekf that does integrate GPS data. Please Google "clearpath robotics robot_pose_ekf" (I can't post links yet due to karma). At the bottom it says "where to get the code", and you can see the github directory where we're getting the modified navigation stack. Note, that this is the entire navigation stack, not just robot_pose_ekf. Being new to the ROS ecosystem, we just assumed we could replace the navigation directory in the ROS source, build (which we did succesfully) and run it. However, we still need extra packages provided by the HRATC2014 competition, and weren't able to integrate them with our compiled version -- this is where we are hung up...the ROS desktop-full is installed (along with needed .so files from HRATC2014) in /opt/ros. My custom build of ROS with modified navigation stack is in home_dir/catkin_workspace1/install_isolated. Should I be doing the navigation source build in an "overlay" workspace? And by all means, if I'm simply asking something that's documented, just point me in the right direction, because I haven't been able to find it. Thanks for all your help.