Gu.407 2024-01-04 14:26 采纳率: 50%
浏览 21
已结题

在使用ROS发布自定义消息类型控制乌龟画∞符号时遇到的问题

在配置完自定义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;
}


  • 写回答

18条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-01-04 14:27
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    在你提供的代码中,我注意到了一个潜在的问题。你在计算乌龟当前的位置时,代码如下:

    // 计算乌龟当前的位置
    double x = x1 + dx;
    double y = y1 + dy;
    

    这里你将乌龟的位置设定为两个圆参数方程的和。然而,根据你的描述,你希望乌龟画∞符号,即一个无限循环曲线。因此,乌龟的位置应该是两个圆参数方程的交点。你可以使用以下代码来计算乌龟的位置:

    // 计算乌龟当前的位置
    double x = x1;
    double y = y1;
    

    尝试修改乌龟位置计算的代码后,重新运行程序,看是否能够解决乌龟不动的问题。

    如果修改后仍然无法解决问题,请提供更多详细的错误信息或调试信息,以帮助我进一步诊断。

    评论

报告相同问题?

问题事件

  • 系统已结题 1月12日
  • 创建了问题 1月4日

悬赏问题

  • ¥15 k8s生产配置推荐配置及部署方案
  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环
  • ¥15 ADS已经下载好了,但是DAS下载不了,一直显示这两种情况,有什么办法吗,非常急!