March 2018
Intermediate to advanced
1396 pages
42h 14m
English
To obtain some insight of how Gazebo does that, we are going to take a sneak peek inside the diffdrive_plugin.cpp file. You can find it at https://github.com/ros-simulation/gazebo_ros_pkgs/blob/kinetic-devel/gazebo_plugins/src/gazebo_ros_skid_steer_drive.cpp.
The Load function performs the function of registering the subscriber of the topic, and when a cmd_vel topic is received, the cmdVelCallback() function is executed to handle the message:
void GazeboRosSkidSteerDrive::Load(physics::ModelPtr _parent, sdf::ElementPtr _sdf) { ... ... // ROS: Subscribe to the velocity command topic (usually "cmd_vel") ros::SubscribeOptions so = ros::SubscribeOptions::create<geometry_msgs::Twist>(command_topic_ , 1, boost::bind(&GazeboRosSkidSteerDrive::cmdVelCallback, ...