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

Peter Listov's profile - activity

2021-06-06 15:51:21 -0500 received badge  Great Question (source)
2018-08-08 01:44:06 -0500 received badge  Notable Question (source)
2018-08-08 01:44:06 -0500 received badge  Famous Question (source)
2017-08-25 09:51:29 -0500 received badge  Good Question (source)
2017-04-16 09:46:30 -0500 received badge  Popular Question (source)
2017-04-13 12:16:28 -0500 answered a question Problem debugging ROS nodes on Mac OS X

The issue seems to be OS specific. Well explained here. Had to switch to lldb though.

2017-04-07 04:48:33 -0500 received badge  Organizer (source)
2017-04-07 04:46:23 -0500 asked a question Problem debugging ROS nodes on Mac OS X

Hello Community,

I am on Mac OS X 10.11.4, ROS Jade and have some strange problems debugging ROS nodes with gdb or lldb. Namely, debugger is not able to locate ROS related shared libraries.

Here is gdb output for example:

    Starting program: /Users/plistov/EPFL/ROS/ros_catkin_ws/devel_isolated/test_package/lib/test_package/ekf_node 
dyld: Library not loaded: libtf2_ros.dylib
  Referenced from: /Users/plistov/EPFL/ROS/ros_catkin_ws/devel_isolated/test_package/lib/test_package/ekf_node
  Reason: image not found

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00007fff5fc01075 in ?? ()

While DYLD_LIBRARY_PATH points to the folder containing this lib. Furthermore, I did not manage to launch standard ROS nodes. Rosbag for instance:

(gdb) exec-file rosbag
"/Users/plistov/EPFL/ROS/ros_catkin_ws/install/bin/rosbag": not in executable format: File format not recognised

I have not experienced any problems debugging non-ROS related applications on my computer before. I, therefore, will very appreciate any hint or advice.

Thanks, Peter

2017-03-24 04:24:27 -0500 received badge  Enthusiast
2016-11-09 10:04:58 -0500 received badge  Famous Question (source)
2016-10-18 19:30:20 -0500 received badge  Notable Question (source)
2016-10-16 03:21:07 -0500 received badge  Popular Question (source)
2016-10-14 05:37:14 -0500 asked a question Depencies resolution for ROS packages

Hello,

I accidentally removed BLAS library from my computer, and after that the system suggests that a whole bunch of ROS packages are no more required:

    The following packages were automatically installed and are no longer required:
  collada-dom-dev collada-dom2.4-dp-base collada-dom2.4-dp-dev freeglut3
  freeglut3-dev gazebo5 gazebo5-common gazebo5-plugin-base gir1.2-gtk-2.0
  hddtemp hdf5-helpers libarmadillo4 libarpack2 libassimp-dev libassimp3
  libatk1.0-dev libavcodec-dev libavformat-dev libavutil-dev libbz2-dev
  libcairo-script-interpreter2 libcairo2-dev libcf0 libcv-dev libcvaux-dev
  libdap-dev libdap11 libdapclient3 libdapserver7 libdc1394-22-dev
  libeigen3-dev libepsilon1 libflann-dev libflann1.8 libfltk1.1 libfltk1.1-dev
  libfontconfig1-dev libfreeimage-dev libfreeimage3 libfreetype6-dev
  libfreexl1 libgazebo5 libgdal-dev libgdal1h libgdk-pixbuf2.0-dev
  libgeos-3.4.2 libgeos-c1 libgeos-dev libgif-dev libgl2ps-dev libgl2ps0
  libglib2.0-dev libgsl0-dev libgsl0ldbl libgtk2.0-dev libgtkglext1
  libgts-0.7-5 libgts-bin libgts-dev libharfbuzz-dev libharfbuzz-gobject0
  libhdf4-0-alt libhdf4-alt-dev libhdf5-7 libhdf5-dev libhighgui-dev
  libice-dev libilmbase-dev libjasper-dev libkml0 liblz4-1 liblz4-dev
  libnetcdf-dev libnetcdfc++4 libnetcdfc7 libnetcdff5 libogdi3.2 libogg-dev
  libogre-1.8-dev libogre-1.8.0 libopencv-calib3d-dev libopencv-calib3d2.4
  libopencv-contrib-dev libopencv-contrib2.4 libopencv-core-dev
  libopencv-core2.4 libopencv-dev libopencv-features2d-dev
  libopencv-features2d2.4 libopencv-flann-dev libopencv-flann2.4
  libopencv-gpu-dev libopencv-gpu2.4 libopencv-highgui-dev
  libopencv-highgui2.4 libopencv-imgproc-dev libopencv-imgproc2.4
  libopencv-legacy-dev libopencv-legacy2.4 libopencv-ml-dev libopencv-ml2.4
  libopencv-objdetect-dev libopencv-objdetect2.4 libopencv-ocl-dev
  libopencv-ocl2.4 libopencv-photo-dev libopencv-photo2.4
  libopencv-stitching-dev libopencv-stitching2.4 libopencv-superres-dev
  libopencv-superres2.4 libopencv-ts-dev libopencv-ts2.4 libopencv-video-dev
  libopencv-video2.4 libopencv-videostab-dev libopencv-videostab2.4
  libopencv2.4-java libopencv2.4-jni libopenexr-dev libopenni-dev
  libopenni-sensor-pointclouds0 libopenni0 libpango1.0-dev libpcl-1.7-all
  libpcl-1.7-all-dev libpcl-1.7-bin libpcl-1.7-doc libpcl-apps-1.7
  libpcl-apps-1.7-dev libpcl-common-1.7 libpcl-common-1.7-dev
  libpcl-features-1.7 libpcl-features-1.7-dev libpcl-filters-1.7
  libpcl-filters-1.7-dev libpcl-geometry-1.7-dev libpcl-io-1.7
  libpcl-io-1.7-dev libpcl-kdtree-1.7 libpcl-kdtree-1.7-dev
  libpcl-keypoints-1.7 libpcl-keypoints-1.7-dev libpcl-octree-1.7
  libpcl-octree-1.7-dev libpcl-outofcore-1.7 libpcl-outofcore-1.7-dev
  libpcl-people-1.7 libpcl-people-1.7-dev libpcl-recognition-1.7
  libpcl-recognition-1.7-dev libpcl-registration-1.7
  libpcl-registration-1.7-dev libpcl-sample-consensus-1.7
  libpcl-sample-consensus-1.7-dev libpcl-search-1.7 libpcl-search-1.7-dev
  libpcl-segmentation-1.7 libpcl-segmentation-1.7-dev libpcl-surface-1.7
  libpcl-surface-1.7-dev libpcl-tracking-1.7 libpcl-tracking-1.7-dev
  libpcl-visualization-1.7 libpcl-visualization-1.7-dev libpixman-1-dev
  libplayerc++3.0 libplayerc++3.0-dev libplayerc3.0 libplayerc3.0-dev
  libplayercommon3.0 libplayercommon3.0-dev libplayercore3.0
  libplayercore3.0-dev libplayerdrivers3.0 libplayerdrivers3.0-dev
  libplayerinterface3.0 libplayerinterface3.0-dev libplayerjpeg3.0
  libplayerjpeg3.0-dev libplayertcp3.0 libplayertcp3.0-dev libplayerwkb3.0
  libplayerwkb3.0-dev libproj0 libprotobuf-dev libprotobuf-lite8 libprotoc-dev
  libprotoc8 libpyside-dev libpyside-py3-1.2 libpyside1.2 libqhull-dev
  libqhull6 libqwt-dev libqwt5-qt4 libqwt6 libraw1394-dev libraw1394-tools
  libruby1.9.1 libsdformat2 libsdformat2-dev libshiboken-dev
  libshiboken-py3-1.2 libshiboken1.2 libsimbody3.5 libsm-dev libspatialite-dev
  libspatialite5 libspnav0 libstatgrab9 libswscale-dev libtar-dev libtar0
  libtbb-dev libtbb2 libtheora-dev liburdfdom-dev liburdfdom-headers-dev
  liburdfdom-model-state0.2 liburdfdom-model0.2 liburdfdom-sensor0.2
  liburdfdom-world0.2 liburiparser1 libvtk-java libvtk5-dev libvtk5-qt4-dev
  libvtk5.8 libvtk5.8-qt4 libwebp-dev libwebpdemux1 libxaw7-dev
  libxcb-shm0-dev libxcomposite-dev libxcursor-dev libxerces-c-dev
  libxerces-c3.1 libxft-dev libxi-dev libxinerama-dev libxmu-dev
  libxmu-headers libxpm-dev libxrandr-dev libxrender-dev libxss-dev libxt-dev
  libyaml-cpp-dev libyaml-cpp0.5 libzzip-0-13 libzzip-dev opencv-data
  openni-utils proj-bin proj-data python-matplotlib python-matplotlib-data
  python-opencv python-opengl python-psutil python-pydot python-pyparsing
  python-pyside python-pyside.phonon python-pyside.qtcore
  python-pyside.qtdeclarative python-pyside.qtgui python-pyside.qthelp
  python-pyside.qtnetwork python-pyside.qtopengl python-pyside.qtscript
  python-pyside.qtsql python-pyside.qtsvg python-pyside.qttest
  python-pyside.qtuitools python-pyside.qtwebkit python-pyside.qtxml
  python-qt4-dev python-qt4-gl python-qwt5-qt4 python-sip-dev python-support
  python-tz python-vtk robot-player-dev ros-jade-actionlib
  ros-jade-actionlib-msgs ros-jade-actionlib-tutorials ros-jade-angles
  ros-jade-bond ros-jade-bond-core ros-jade-bondcpp ros-jade-bondpy
  ros-jade-camera-calibration ros-jade-camera-calibration-parsers
  ros-jade-camera-info-manager ros-jade-cmake-modules ros-jade-collada-parser
  ros-jade-collada-urdf ros-jade-common-msgs ros-jade-common-tutorials
  ros-jade-compressed-depth-image-transport
  ros-jade-compressed-image-transport ros-jade-control-msgs ros-jade-cv-bridge
  ros-jade-depth-image-proc ros-jade-desktop ros-jade-diagnostic-aggregator
  ros-jade-diagnostic-analysis ros-jade-diagnostic-common-diagnostics
  ros-jade-diagnostics ros-jade-driver-base ros-jade-dynamic-reconfigure
  ros-jade-eigen-conversions ros-jade-eigen-stl-containers
  ros-jade-executive-smach ros-jade-filters ros-jade-gazebo-msgs
  ros-jade-geometric-shapes ros-jade-geometry ros-jade-geometry-msgs
  ros-jade-geometry-tutorials ros-jade-image-common ros-jade-image-geometry
  ros-jade-image-pipeline ros-jade-image-proc ros-jade-image-rotate
  ros-jade-image-transport ros-jade-image-transport-plugins
  ros-jade-image-view ros-jade-interactive-marker-tutorials
  ros-jade-interactive-markers ros-jade-joint-state-publisher ...
(more)
2016-04-27 10:17:40 -0500 received badge  Favorite Question (source)
2015-12-16 09:36:58 -0500 received badge  Nice Answer (source)
2015-08-28 05:48:50 -0500 marked best answer controller fails to initialize

Hallo!

I've created a simple joint-controller as described in this tutorial: link text

Here is the code robocv_controller_file.h

   #include <pr2_controller_interface/controller.h>
   #include <pr2_mechanism_model/joint.h>

   namespace my_controller_ns{

   class MyControllerClass: public pr2_controller_interface::Controller
    {
      private:
       pr2_mechanism_model::JointState* left_wheel_state_;
         pr2_mechanism_model::JointState* right_wheel_state_;
         double init_pos1_;
         double init_pos2_;

     public:
     virtual bool init(pr2_mechanism_model::RobotState *robot,
                  ros::NodeHandle &n);
      virtual void starting();
       virtual void update();
      virtual void stopping();
    };
    }

robocv_controller_file.cpp

include "robocv_controller/robocv_controller_file.h"

#include <pluginlib class_list_macros.h="">

namespace my_controller_ns {

/// Controller initialization in non-realtime bool MyControllerClass::init(pr2_mechanism_model::RobotState *robot, ros::NodeHandle &n) { std::string left_wheel, right_wheel;

 if (!n.getParam("left_wheel", left_wheel))
 {
   ROS_ERROR("No joint given in namespace: '%s')",
             n.getNamespace().c_str());
   return false;
 }

 left_wheel_state_ = robot->getJointState(left_wheel);
 if (!left_wheel_state_)
 {
   ROS_ERROR("MyController could not find joint named '%s'",
             left_wheel.c_str());
   return false;
 }

//////////////////////////////////////////////////////////////////// if (!n.getParam("right_wheel", right_wheel)) { ROS_ERROR("No joint given in namespace: '%s')", n.getNamespace().c_str()); return false; }

 right_wheel_state_ = robot->getJointState(right_wheel);
 if (!right_wheel_state_)
 {
   ROS_ERROR("MyController could not find joint named '%s'",
             right_wheel.c_str());
   return false;
 }
 return true;

}

/// Controller startup in realtime void MyControllerClass::starting() { init_pos1_ = left_wheel_state_->position_; init_pos2_ = right_wheel_state_->position_; }

/// Controller update loop in realtime void MyControllerClass::update() { double desired_pos = init_pos1_ + 15 * sin(ros::Time::now().toSec()); double current_pos = left_wheel_state_->position_; left_wheel_state_->commanded_effort_ = -10 * (current_pos - desired_pos); right_wheel_state_->commanded_effort_ = -10 * (current_pos - desired_pos); }

/// Controller stopping in realtime void MyControllerClass::stopping() {} } // namespace PLUGINLIB_DECLARE_CLASS(controller,MyControllerPlugin, my_controller_ns::MyControllerClass, pr2_controller_interface::Controller)

It works fine. Then i wrote another one:

   #include <pr2_controller_interface/controller.h>
   #include <pr2_mechanism_model/joint.h>

    namespace my_controller_ns{

    class MyControllerClass: public pr2_controller_interface::Controller
    {
     private:
      pr2_mechanism_model::JointState* joint_state_;
      double init_pos_;

      public:
      virtual bool init(pr2_mechanism_model::RobotState *robot,
                 ros::NodeHandle &n);
       virtual void starting();
       virtual void update();
       virtual void stopping();
        };
        }

And appropriate C++ file:

#include "wheel_controller/wheel_controller_file.h"

#include <pluginlib class_list_macros.h="">

namespace my_controller_ns {

/// Controller initialization in non-realtime bool MyControllerClass::init(pr2_mechanism_model::RobotState *robot, ros::NodeHandle &n) { std::string joint_name; if (!n.getParam("/joint_name", joint_name)) { ROS_ERROR("No joint given in namespace: '%s')", n.getNamespace().c_str()); return false; }

 joint_state_ = robot->getJointState(joint_name);
 if (!joint_state_)
 {
   ROS_ERROR("MyController could not find joint named '%s'",
             joint_name.c_str());
   return false;
 }
 return true;

}

/// Controller startup in realtime void MyControllerClass::starting() { init_pos_ = joint_state_->position_; }

/// Controller update loop in realtime void MyControllerClass::update() { double desired_pos = init_pos_ + 15 * sin(ros::Time::now().toSec()); double current_pos = joint_state_->position_; joint_state_->commanded_effort_ = -10 * (current_pos - desired_pos); }

/// Controller stopping in realtime void MyControllerClass::stopping() {} } // namespace

PLUGINLIB_DECLARE_CLASS(wheel_controller,MyControllerPlugin, my_controller_ns::MyControllerClass, pr2_controller_interface::Controller)

When i'm trying to load the second controller rxconsole shows me this error:

Node: /gazebo
Time: 1365.017000000
Severity: Error
Location: /home/robot/peter_workspace/sandbox/controller        /src/robocv_controller_file.cpp:MyControllerClass::init:16
 Published Topics: /rosout, /tf, /gazebo/paused, /clock, /gazebo/link_states, /    gazebo/model_states, /gazebo/parameter_descriptions, /gazebo/parameter_updates,   /joint_states, /mechanism_statistics

 No joint given in namespace: '/wheel_controller')

For some reason it refers to robocv_controller source file. rospack plugins shows that both plugins are registered:

robot@Robot2:~/peter_workspace/sandbox/wheel_controller$ rospack plugins --attrib=plugin pr2_controller_interface
controller /home/robot/peter_workspace/sandbox/controller/controller_plugins.xml
velocity_controller /home/robot/peter_workspace/sandbox/velocity_controller/controller_plugins.xml
wheel_controller /home/robot/peter_workspace/sandbox/wheel_controller/controller_plugins.xml
ethercat_trigger_controllers /opt ...
(more)
2015-06-26 21:14:31 -0500 received badge  Nice Answer (source)
2014-09-24 15:15:19 -0500 received badge  Nice Question (source)
2014-08-15 07:53:46 -0500 received badge  Famous Question (source)
2014-07-15 06:21:49 -0500 received badge  Nice Question (source)
2014-04-20 06:51:47 -0500 marked best answer how to get robot state vector from gazebo?

Hallo. I've got teleoperating car-like robot model in Gazebo. Also I have hokuyo lidar on it. Is there any simple method to get robot state vector (pose and twist) in global (gazebo) coordinate system?
I need this for publishing odometry in simulation. I've several methods like laser_scan_matching or adding special p3d-controller, but cannot i use them cause my real robot does ot have lidar and uses another control principles. Or I need to calculate wheel-odometry like i do on my real robot?

2014-04-20 06:51:45 -0500 marked best answer insufficient GL support

Hallo. When i'm trying to launch gazebo empty_world this error appears:

Insufficient GL support
[gazebo-1] process has died [pid 13871, exit code -11].
log files: /home/listov/.ros/log/733761ce-f83a-11e1-9641-e83935533c12/gazebo-1*.log                                                               
all processes on machine have died, roslaunch will exit
shutting down processing monitor...

Also there is similar problem with rviz:

[ INFO] [1346947909.751136360]: rviz revision number 1.6.7
[ INFO] [1346947909.751191239]: ogre_tools revision number 1.6.3
[ INFO] [1346947909.751208547]: compiled against OGRE version 1.7.3 (Cthugha)
[ INFO] [1346947909.843687341]: Loading general config from [/home/listov/.rviz/config]
[ INFO] [1346947909.843806595]: Loading display config from [/home/listov/.rviz/display_config]
[ INFO] [1346947909.916929322]: RTT Preferred Mode is PBuffer.
[ERROR] [1346947909.921440824]: Caught exception while loading: OGRE EXCEPTION(3:RenderingAPIException): Unexpected failure to determine a GLXFBConfig in GLXWindow::create at /tmp/buildd/ros-electric-visualization-common-1.6.3/debian/ros-electric-visualization-common/opt/ros/electric/stacks/visualization_common/ogre/build/ogre_src_v1-7-3/RenderSystems/GL/src/GLX/OgreGLXWindow.cpp (line 302)

My configuration:
Video card: nVIDIA GeForce GT520
Driver: LINUX X64 (AMD64/EM64T) DISPLAY DRIVER version 304.43
OS: Ubuntu 11.10 64 bit
ROS: electric

I saw the similar problem with Fedora but i'm not sure it'll help me (i'm quite new with Linux).

So i'll appreciate any help. thanks.

2014-04-20 06:51:42 -0500 marked best answer car-like robot navigation in gazebo

Hallo. I've got urdf car-like robot model, which i can teleoperate in gazebo. Also i've added hokuyo laser scan to it. The question is: what are next steps to realize navigation on my robot? What are the basic principles of implementing navigation?

Is there any useful links or tutorials?

Can i somehow modify move_base for my robot?

Thanks.

2014-04-20 06:51:39 -0500 marked best answer cannot subscribe plugin

Hallo! I want my plugin (joint controller) to be subscribed to the publisher node, which publishes messages of that type:

            int64 Acceleration
            float64 Angle

So the problem is i cannot subscribe to them. Here is my code for plugin^ .h - file:

   #include <pr2_controller_interface/controller.h>
   #include <pr2_mechanism_model/joint.h>
   #include "/home/robot/peter_workspace/sandbox/drive_base/msg_gen/cpp/include/drive_base/Drive.h"
   #include "ros/ros.h"

   namespace my_controller_ns{

   class MyControllerClass: public pr2_controller_interface::Controller
   {
   private:

     ros::NodeHandle n;
     ros::Subscriber robocv_controller; 
     ros::Publisher drive_cmd_publisher;

     pr2_mechanism_model::JointState* left_wheel_state_;
     pr2_mechanism_model::JointState* right_wheel_state_;
     double init_pos1_;
     double init_pos2_;

   public:

     //int64_t acceleration_ctrl;
     //double angle_ctrl;

     virtual bool init(pr2_mechanism_model::RobotState *robot, ros::NodeHandle &nh);
     virtual void starting();
     virtual void update();
     virtual void stopping();
     virtual void chatterCallback(const drive_base::Drive::ConstPtr& msg);      
   };
   }

And the CPP - file:

  #include "robocv_controller/robocv_controller_file.h"
   #include <pluginlib/class_list_macros.h>
   #include "/home/robot/peter_workspace/sandbox/drive_base/msg_gen/cpp/include/drive_base/Drive.h"
   #include "ros/ros.h"


namespace my_controller_ns{

   void chatterCallback(const drive_base::Drive::ConstPtr& msg)
   {
    ROS_INFO("i g0t %lld %f", msg->Acceleration, msg->Angle);
    //acceleration_ctrl = msg->Acceleration;
    //angle_ctrl = msg->Angle;
   }

   /// Controller initialization in non-realtime
   bool MyControllerClass::init(pr2_mechanism_model::RobotState *robot,
                               ros::NodeHandle &nh)
   {
     n = nh;

     robocv_controller = n.subscribe("/command", 100, &MyControllerClass::chatterCallback, this);

     std::string left_wheel, right_wheel;

     if (!n.getParam("left_wheel", left_wheel))
     {
       ROS_ERROR("No joint given in namespace: '%s')",
                 n.getNamespace().c_str());
       return false;
     }

     left_wheel_state_ = robot->getJointState(left_wheel);
     if (!left_wheel_state_)
     {
       ROS_ERROR("MyController could not find joint named '%s'",
                 left_wheel.c_str());
       return false;
     }

/////////////another wheel/////////////////////

     if (!n.getParam("right_wheel", right_wheel))
     {
       ROS_ERROR("No joint given in namespace: '%s')",
                 n.getNamespace().c_str());
       return false;
     }

     right_wheel_state_ = robot->getJointState(right_wheel);
     if (!right_wheel_state_)
     {
       ROS_ERROR("MyController could not find joint named '%s'",
                 right_wheel.c_str());
       return false;
     }
     return true;
   }


   /// Controller startup in realtime
   void MyControllerClass::starting()
   {
     init_pos1_ = left_wheel_state_->position_;
     init_pos2_ = right_wheel_state_->position_;
   }


   /// Controller update loop in realtime
   void MyControllerClass::update()
   {
    // double desired_pos = init_pos1_ + 15 * sin(ros::Time::now().toSec());
     double desired_pos = 0.45;
     double current_pos = left_wheel_state_->position_;
     double current_pos_right = right_wheel_state_->position_;
     left_wheel_state_->commanded_effort_ = -150 * (current_pos - desired_pos);
     right_wheel_state_->commanded_effort_ = -150 * (current_pos_right - desired_pos);
   }


   /// Controller stopping in realtime
   void MyControllerClass::stopping()
   {}

} //namespace

PLUGINLIB_DECLARE_CLASS(controller,MyControllerPlugin, 
                         my_controller_ns::MyControllerClass, 
                         pr2_controller_interface::Controller)

Thank you for help!

2014-03-23 05:53:54 -0500 received badge  Nice Answer (source)
2014-01-28 17:30:01 -0500 marked best answer Predefined global path for robot navigation

Hallo, ROS users.
What I want is to use predefined global path for navigation. So I have a 2D map and do not want to use global_planner to compute a plan, but my own set of path points. I think it's a common thing but never met a question about this kind of move_base forking.
Could anybody give me a hint or neat approach for solving the problem? Where can I store this set of points?
How do I provide these points to move_base?
How many points (or sampling step) do I need for stable navigation?

Thanks a lot for help!

2014-01-28 17:28:06 -0500 marked best answer navigation stack vs my node

Hallo!

Is it possible to subscribe to user node from base_local_planner?

I'm trying to experiment with obstacle avoidance perfomance of my robot by integrating my emergency stop node that set a flag if an obstacle appears in it's field of view (narrow segment). Then given that flag I want to throw a banch of trajectories (which lie in this segment), generated by createTrajectories() function in base_local_planner package. I wonder if it's possible somehow to subscribe to this node so base-local_planner could use this flag.

2014-01-28 17:27:32 -0500 marked best answer How to add simple controller to my robot

Hi! I'm newbie with ROS. I'm trying to simulate my robot in Gazebo. It's a 4-wheel car-based platform.

First I created urdf-file, describing my model:

<?xml version="1.0"?>

<robot name="robocv" xmlns:controller="&lt;a href=" http:="" playerstage.sourceforge.net="" gazebo="" xmlschema="" #controller"="">http://playerstage.sourceforge.net/gazebo/xmlschema/#controller" xmlns:interface="http://playerstage.sourceforge.net/gazebo/xmlschema/#interface">

 <link name="base_link">
   <visual>
     <origin rpy="0 0 0" xyz="0 0 0.17"/>
     <geometry>
       <box size="0.6 0.3 0.2"/>
     </geometry>
      <material name="blue">
       <color rgba="0 0 0.8 1"/>
       </material>
   </visual>
   <collision>
     <origin rpy="0 0 0" xyz="0 0 0.17"/>
     <geometry>
       <box size="0.6 0.3 0.2"/>
     </geometry>
</collision>
<inertial>
 <mass value="10"/>
 <inertia ixx="1.0" ixy="0.4" ixz="0.4" iyy="4" iyz="0.4" izz="4"/>
</inertial>
 </link>
<gazebo reference="base_link">
</gazebo>

 <link name="front_left_wheel">
   <visual>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
      <material name="random">
       <color rgba="0.6 0.7 0.8 1"/>
       </material>
  </visual>
   <collision>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
</collision>
<inertial>
 <mass value="0.5"/>
 <inertia ixx="0.2" ixy="0.2" ixz="0.2" iyy="0.2" iyz="0.2" izz="0.3"/>
</inertial>
 </link>

      <link name="front_right_wheel">
   <visual>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
 <material name="random"/>
  </visual>
   <collision>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
</collision>
<inertial>
 <mass value="0.5"/>
 <inertia ixx="0.2" ixy="0.2" ixz="0.2" iyy="0.2" iyz="0.2" izz="0.3"/>
</inertial>
 </link>

  <link name="back_left_wheel">
   <visual>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
 <material name="random"/>
  </visual>
   <collision>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
</collision>
<inertial>
 <mass value="0.5"/>
 <inertia ixx="0.2" ixy="0.2" ixz="0.2" iyy="0.2" iyz="0.2" izz="0.3"/>
</inertial>
 </link>

  <link name="back_right_wheel">
   <visual>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
 <material name="random"/>
  </visual>
   <collision>
     <geometry>
       <cylinder length="0.1" radius="0.07"/>
     </geometry>
</collision>
<inertial>
 <mass value="0.5"/>
 <inertia ixx="0.2" ixy="0.2" ixz="0.2" iyy="0.2" iyz="0.2" izz="0.3"/>
</inertial>
 </link>

  <link name="front_left_wheelholder">
   <visual>
     <geometry>
       <cylinder length="0.01" radius="0.01"/>
     </geometry>
 <material name="random"/>
  </visual>
<inertial>
 <mass value="0.5"/>
 <inertia ixx="0.2" ixy="0.2" ixz="0.2" iyy="0.2" iyz="0.2" izz="0.3"/>
</inertial>
 </link>

  <link name="front_right_wheelholder">
   <visual>
     <geometry>
       <cylinder length="0.01" radius="0.01"/>
     </geometry>
 <material name="random"/>
  </visual>
<inertial>
 <mass value="0.5"/>
 <inertia ixx="0.2" ixy="0.2" ixz="0.2" iyy="0.2" iyz="0.2" izz="0.3"/>
</inertial>
 </link>

  <link name="back_left_wheelholder">
   <visual>
     <geometry>
       <cylinder length="0.01" radius="0.01"/>
     </geometry>
 <material name="random"/>
  </visual>
<inertial>
 <mass value="0.5"/>
 <inertia ixx="0.2" ixy="0.2" ixz="0.2" iyy="0.2" iyz="0.2" izz="0 ...
(more)