Пример #1
0
int main(int argc, char **argv) {

  ros::init(argc, argv, "pid_roll");
  ros::NodeHandle nh;
  ros::NodeHandle node_priv("~");

  node_priv.param<double>("p",p,1.0);
  node_priv.param<double>("i",i,1.0);
  node_priv.param<double>("d",d,1.0);
  node_priv.param<double>("im",im,.3);
  node_priv.param<double>("dm",dm,-.3);

  message_filters::Subscriber<imu_3dm_gx4::FilterOutput> imu_sub(nh, "/state/filter",1);
  message_filters::Subscriber<geometry_msgs::Vector3Stamped> accel_sub(nh, "angular_set_pt",1);

  dynamic_reconfigure::Server<riptide_navigation::pidConfig> server;
  dynamic_reconfigure::Server<riptide_navigation::pidConfig>::CallbackType f;
  f = boost::bind(&dyn_callback, _1, _2);
  server.setCallback(f);

  typedef message_filters::sync_policies::ApproximateTime<imu_3dm_gx4::FilterOutput, geometry_msgs::Vector3Stamped> MySyncPolicy;
    message_filters::Synchronizer<MySyncPolicy> sync(MySyncPolicy(100), imu_sub, accel_sub);  
    sync.registerCallback(boost::bind(&callback,_1,_2));

    a_e = nh.advertise<geometry_msgs::Vector3Stamped>("accel_error_roll", 1);
  ros::spin();

}
Пример #2
0
int main(int argc, char **argv)
{
  ros::init(argc, argv, "imu_state");

  ros::NodeHandle nh;

  message_filters::Subscriber<sensor_msgs::Imu> imu_sub(nh, "imu/imu", 1);
  message_filters::Subscriber<imu_3dm_gx4::FilterOutput> filter_sub(nh, "imu/filter", 1);

  typedef message_filters::sync_policies::ApproximateTime<sensor_msgs::Imu, imu_3dm_gx4::FilterOutput> approx;
  message_filters::Synchronizer<approx> sync(approx(10), imu_sub, filter_sub);
  sync.registerCallback(boost::bind(&callback, _1, _2));

  unifier = nh.advertise<sensor_msgs::Imu>("state/imu", 1);

  // tform.getOrigin().setX(0.0);
  // tform.getOrigin().setY(0.0);
  // tform.getOrigin().setZ(0.0);
  // tform.frame_id_ = "";
  // tform.child_frame_id_ = "";

  ros::spin();
}