[ROS Q&A] Couldn’t find an AF_INET address for [ ]

[ROS Q&A] Couldn’t find an AF_INET address for [ ]

Hi! In this video we see how to solve the problem “Couldn’t find an AF_INET address for []” by answering a real question on ROS Answer.

Step1. Create a project in Robot Ignite Academy(RIA)

We have the best online ROS course available in RIA. It helps you learn ROS in the easiest way without setting up ROS environment locally. The only thing you need is a browser! Create an account here and start to browse the trial course for free now!

Step 2. Create new package and source file

You can type the following command in a shell to create a new package called tutorial with the roscpp and std_msgs dependencies.

cd ~/catkin_ws/src
catkin_create_pkg tutorial roscpp std_msgs

Now create a source file called tutorial_node.cpp under the tutorial/source directory and paste the following code from ROS Wiki

#include "ros/ros.h"
#include "std_msgs/String.h"

#include <sstream>

/**
 * This tutorial demonstrates simple sending of messages over the ROS system.
 */
int main(int argc, char **argv)
{
  /**
   * The ros::init() function needs to see argc and argv so that it can perform
   * any ROS arguments and name remapping that were provided at the command line.
   * For programmatic remappings you can use a different version of init() which takes
   * remappings directly, but for most command-line programs, passing argc and argv is
   * the easiest way to do it.  The third argument to init() is the name of the node.
   *
   * You must call one of the versions of ros::init() before using any other
   * part of the ROS system.
   */
  ros::init(argc, argv, "talker");

  /**
   * NodeHandle is the main access point to communications with the ROS system.
   * The first NodeHandle constructed will fully initialize this node, and the last
   * NodeHandle destructed will close down the node.
   */
  ros::NodeHandle n;

  /**
   * The advertise() function is how you tell ROS that you want to
   * publish on a given topic name. This invokes a call to the ROS
   * master node, which keeps a registry of who is publishing and who
   * is subscribing. After this advertise() call is made, the master
   * node will notify anyone who is trying to subscribe to this topic name,
   * and they will in turn negotiate a peer-to-peer connection with this
   * node.  advertise() returns a Publisher object which allows you to
   * publish messages on that topic through a call to publish().  Once
   * all copies of the returned Publisher object are destroyed, the topic
   * will be automatically unadvertised.
   *
   * The second parameter to advertise() is the size of the message queue
   * used for publishing messages.  If messages are published more quickly
   * than we can send them, the number here specifies how many messages to
   * buffer up before throwing some away.
   */
  ros::Publisher chatter_pub = n.advertise<std_msgs::String>("chatter", 1000);

  ros::Rate loop_rate(10);

  /**
   * A count of how many messages we have sent. This is used to create
   * a unique string for each message.
   */
  int count = 0;
  while (ros::ok())
  {
    /**
     * This is a message object. You stuff it with data, and then publish it.
     */
    std_msgs::String msg;

    std::stringstream ss;
    ss << "hello world " << count;
    msg.data = ss.str();

    ROS_INFO("%s", msg.data.c_str());

    /**
     * The publish() function is how you send messages. The parameter
     * is the message object. The type of this object must agree with the type
     * given as a template parameter to the advertise<>() call, as was done
     * in the constructor above.
     */
    chatter_pub.publish(msg);

    ros::spinOnce();

    loop_rate.sleep();
    ++count;
  }


  return 0;
}

To compile the code, let’s move to tutorial/CMakeLists.txt and uncomment the following part

...
add_executable(${PROJECT_NAME}_node src/tutorial_node.cpp)
...
target_link_libraries(${PROJECT_NAME}_node
  ${catkin_LIBRARIES}
)

Now you can run catkin_make  and source devel/setup.bash under the catkin_ws to compile the code and run it with

rosrun tutorial tutorial_node

Notice:

We no longer run the ros master for you in RDS, to start a ros master type roscore  in a new shell.

Now you should see the publisher is publishing.

Step 3. Reproduce the error

You can simply have this error if you put the node initializer before the node handle create

...
  ros::init(argc, argv, "talker"); //Correct place: Before the node handle create

  ros::NodeHandle n;
  
  //ros::init(argc, argv, "talker"); //Wrong place
...

Take away today:

You must call ros::init() before creating the first NodeHandle

 

Edit by Tony Huang

[ROS Q&A] Aerodynamic parameters of lift-drag plugin


Learn how to use the lift drag plugin in GAzebo using ROS and urdfs: http://answers.gazebosim.org/question/15331/need-information-on-aerodynamic-parameters-of-lift-drag-plugin/

Q:Need information on aerodynamic parameters of lift-drag plugin
A: Create a simple sphere moved by a moving fin that has applied drag coeficients and no lift.

[ROS Q&A] – Service global name error


Q: I’m having a lot of troubles doing the following in ROS: I would like to subscribe to a fakeARpublisher and resend a pose information through a service. In short, I did a script that it is subscribed to a topic and at the same time acts like a server for a service called LocalizePart. The code is given below:

A: Hello,

I had formatted your code got something like this:

Finally, I’ve reproduced your problem and concluded that to solve it you only have to import the server response library.

ROS creates 3 classes for each service message: Service definition, Request message and Response message. You should take a look here: http://wiki.ros.org/rospy/Overview/Services

Following the code I’ve posted, I had just to replace this:

from myworkcell.srv import LocalizePart

with this:

from myworkcell.srv import LocalizePart, LocalizePartResponse

I hope it can help you!

[ROS Q&A] Navigate with RTAB-Map


In this video we show how to Navigate using the move_base node combined with RTAB-Map. See question: https://answers.ros.org/question/275410/navigation/

Q: I have obtained a map using RTAB-Map. Now I want to use the point cloud obtained to navigate.

A: You need to do several things:
1. Built a 2D map based on LaserScan.
2. Tune a little bit the rtabmap_ros node.
3. Localize the robot in the map.
4. Navigate!

[ROS Q&A] How to use GetModelState service from Gazebo in python


In this video we show how to get the model state of a model in Gazebo using ROS Topics with Python. See question: https://answers.ros.org/question/261782/how-to-use-getmodelstate-service-from-gazebo-in-python/

Q: I try to get the state of a model in Gazebo but the returned value is always zero.

A: You have to call the /gazebo/get_model_state service passing the name of the model and the name of a link.

[ROS Q&A] Publishing and Subscribing a custom message


Q: writing a publisher and subscriber and unsure how to finish it
A: I have create a package (my_pkg) with two nodes, trying to reproduce your situation.. It is like that:

catkin_create_pkg my_pkg rospy std_msgs message_generation message_runtime

———Want to learn ROS really FAST and master the latest Robotics topics?———–
::Visit Robot Ignite Academy, the online Academy that teaches you ROS really FAST, from beginner to master, using only a web browser: https://goo.gl/LBT7EN
Robot Ignite Academy is an integrated ROS learning platform which contains a series of online ROS tutorials tied to online simulations, giving you the tools and knowledge to understand and create any ROS based robotics development.

——————Are you a ROS expert and want to develop FAST your next ROS project?———–

:: Then, use the ROS Development Studio (RDS) for your next project: https://goo.gl/EtFqmE
With the ROS Development Studio, you will be able to:
– Develop ROS programs for robots in a faster way, with an already setup IDE environment that includes autocomplete.
– Test the programs in real time on the provided simulated robots. Use the provided simulations or upload your own. Quickly see the results of your programming.
– Debug using graphical ROS tools.
– Test what you have developed on RDS in the real robot (if you have it 😉
all of these are using ONLY a web browser without any installation and not limited by any operating system. DEVELOP FOR ROS USING WINDOWS, LINUX OR OSX.

Pin It on Pinterest