24 #include <Eigen/Geometry> 29 #include <sensor_msgs/Imu.h> 30 #include <trajectory_msgs/MultiDOFJointTrajectory.h> 36 void callback(
const sensor_msgs::ImuPtr& msg) {
55 int main(
int argc,
char** argv) {
56 ros::init(argc, argv,
"waypoint_publisher");
59 ROS_INFO(
"Started waypoint_publisher.");
64 if (args.size() != 2 && args.size() != 3) {
65 ROS_ERROR(
"Usage: waypoint_publisher <waypoint_file>" 66 "\nThe waypoint file should be structured as: space separated: wait_time [s] x[m] y[m] z[m] yaw[deg])");
71 const float DEG_2_RAD =
M_PI / 180.0;
73 std::ifstream wp_file(args.at(1).c_str());
75 if (wp_file.is_open()) {
78 while (wp_file >> t >> x >> y >> z >> yaw) {
82 ROS_INFO(
"Read %d waypoints.", (
int) waypoints.size());
92 nh.
advertise<trajectory_msgs::MultiDOFJointTrajectory>(
95 ROS_INFO(
"Wait for simulation to become ready...");
107 ROS_INFO(
"Start publishing waypoints.");
109 trajectory_msgs::MultiDOFJointTrajectoryPtr
msg(
new trajectory_msgs::MultiDOFJointTrajectory);
111 msg->points.resize(waypoints.size());
112 msg->joint_names.push_back(
"base_link");
113 int64_t time_from_start_ns = 0;
114 for (
size_t i = 0; i < waypoints.size(); ++i) {
Subscriber subscribe(const std::string &topic, uint32_t queue_size, void(T::*fp)(M), T *obj, const TransportHints &transport_hints=TransportHints())
static const int64_t kNanoSecondsInSecond
ROSCPP_DECL void init(int &argc, char **argv, const std::string &name, uint32_t options=0)
void msgMultiDofJointTrajectoryPointFromEigen(const EigenTrajectoryPoint &trajectory_point, trajectory_msgs::MultiDOFJointTrajectoryPoint *msg)
void publish(const boost::shared_ptr< M > &message) const
std::vector< std::string > V_string
void callback(const sensor_msgs::ImuPtr &msg)
WaypointWithTime(double t, float x, float y, float z, float _yaw)
Publisher advertise(const std::string &topic, uint32_t queue_size, bool latch=false)
int64_t time_from_start_ns
Eigen::Vector3d position_W
int main(int argc, char **argv)
ROSCPP_DECL void shutdown()
ROSCPP_DECL void removeROSArgs(int argc, const char *const *argv, V_string &args_out)
#define ROS_ERROR_STREAM(args)
static constexpr char COMMAND_TRAJECTORY[]
std::vector< mavros_msgs::Waypoint > waypoints
ROSCPP_DECL void spinOnce()
void setFromYaw(double yaw)