在学习gazebo过程中发现很多gazebo的ros插件发布的时间戳都是系统时间。
因为系统仿真时需要按照一定倍率放慢,即使将rosparam /use_sim_time设置为true也无法控制插件的时间。
我目前的的解决办法只能是修改源码,下载源码后找到对应cpp文件修改
比如对于GazeboRosPackages\src\gazebo_ros_pkgs\gazebo_plugins\src\gazebo_ros_joint_state_publisher.cpp
找到代码
ros::Time current_time = ros::Time::now();
修改为:
common::Time current_simtime = this->world_->SimTime();//parent->GetWorld()->SimTime()
ros::Time current_time(current_simtime.sec, current_simtime.nsec);
同理,对于 gazebo_ros_diff_drive.cpp进行修改
返回到GazeboRosPackages\目录
source devel/setup.bash
catkin_make
这样就可以重新编译。