在配置完自定义msg和cpp文件后,运行出现乌龟不动的现象
自定义msg如下
float64 x_velocity
float64 z_angular_velocity
cpp文件如下
#include <ros/ros.h>
#include "/home/gzh030311/ROS_ws/devel/include/turtle_ctrl/ref_cmd.h"
#include <cmath>
int main(int argc, char** argv) {
ros::init(argc, argv, "turtle_movement");
ros::NodeHandle node;
ros::Publisher ref_cmd_pub = node.advertise<turtle_ctrl::ref_cmd>("/ref_cmd", 10);
ros::Rate rate(10);
double R = 3.0; // 第一个圆的半径
double r = 1.0; // 第二个圆的半径
double d = 2.0; // 两个圆心之间的距离
while (ros::ok()) {
double t = ros::Time::now().toSec();
// 第一个圆的参数方程
double x1 = R * cos(t);
double y1 = R * sin(t);
// 第二个圆的参数方程
double x2 = (R - r) * cos(t) + d * cos((R - r) * t / r);
double y2 = (R - r) * sin(t) - d * sin((R - r) * t / r);
// 计算两个圆上某点的切线方向
double dx = x2 - x1;
double dy = y2 - y1;
// 计算乌龟当前的位置
double x = x1 + dx;
double y = y1 + dy;
// 计算乌龟当前的速度和角速度
turtle_ctrl::ref_cmd msg;
msg.x_velocity = sqrt(pow(dx, 2) + pow(dy, 2)); // x轴速度
msg.z_angular_velocity = atan2(dy, dx); // z轴角速度
ref_cmd_pub.publish(msg);
rate.sleep();
}
return 0;
}