优美的曲线-turtlesim

Posted zhangrelay

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优美的曲线-turtlesim相关的知识,希望对你有一定的参考价值。

从开环到闭环的旅程-CoCube

优美的曲线-译


2022年所公开博客案例所有项目,都在2020年之前完成,并且全部经过3轮以上测试。 



当完美实现闭环之后,画曲线那就可以随心所欲啦。

想画什么,就能画什么。


核心代码:

float curve_k = 5.0/8.0;
float curve_t = 1;

goal_x=5.5+2.0*cos(curve_k*curve_t/200.0)*cos(curve_t/200.0);
goal_y=5.5+2.0*cos(curve_k*curve_t/200.0)*sin(curve_t/200.0);

如上这段代码,需要插入到:

#include "ros/ros.h"
#include "turtlesim/Pose.h"
#include "geometry_msgs/Twist.h"
#include "math.h"
 
#include <sstream>
 
ros::Subscriber sub;
ros::Publisher pub;
float goal_x = 2;
float goal_y = 2;
 
void sendVel(const turtlesim::Pose::ConstPtr& data)
    ros::NodeHandle n;
 
    pub = n.advertise<geometry_msgs::Twist>("/turtle1/cmd_vel",100);
 
    float curr_x = data->x;
    float curr_y = data->y;
    float curr_ang = data->theta;
 
    float dist = sqrt(pow(goal_x-curr_x,2) + pow(goal_y-curr_y,2));
    std::cout << "Distance = " << dist << std::endl;
 
    if(dist > 0.01)
        double ang = atan2((float)(goal_y-curr_y),(float)(goal_x-curr_x));
 
        std::cout << "Curr_ang = " << curr_ang << " | ang = " << ang << std::endl;
 
        geometry_msgs::Twist t_msg;
 
        t_msg.linear.x = 1.0*(dist);
        t_msg.angular.z = 4.0*(ang-curr_ang);
 
        pub.publish(t_msg);
    
    else
    
    	std::cout << "Mission Completed" << std::endl;
    	std::cout << "Please enter new coordinates" << std::endl;
    	std::cout << "Please enter goal_x:" << std::endl;
    	std::cin >> goal_x;
    	std::cout << "Please enter goal_y:" << std::endl;
    	std::cin >> goal_y;
    
 

 
int main(int argc, char **argv)
    ros::init(argc,argv,"goToGoal");
 
    ros::NodeHandle n;
 
    sub = n.subscribe("/turtle1/pose",100,sendVel);
 
    ros::spin();
 
 
    return 0;

如上代码有bug,需要修正,bug具体效果参考:

cocube稳定到振荡


为何这么做?

主要是对比开环和闭环曲线绘制的差异。如上全部都是闭环绘制。

需要turtle的位置信息反馈。 

2021-09-17 22:11:46 发布:

ROS2趣味题库之turtlesim魔幻步伐(轨迹类题型)

2021-09-26 16:11:57 发布:

玫瑰线轨迹如何规划?(desmos+ROS2+turtlesim+……)


收到一些反馈,大部分解答都集中在开环绘制,绘制精度不高,主要问题在于绘制路径出现重影模糊现象。

闭环绘制可以使得绘制品质极大提升,但题目发布1年多时间,没有收到此类交流。

一部分机器人工程专业学生,学习自动控制原理,只会背公式用其做题或完成考试,没有能够将其应用于各类真实场景中,难以做到灵活应用,大部分以机械记忆类学习为主。

轨迹跟踪控制是机器人路径规划最为基础的内容。

创新非常重要,尤其是在机器人和人工智能时代。

ROS机器人操作系统教学与应用的思考

当机器人和人工智能时代发展越快越好,我所工作学校毕业生的处境就愈发艰难。

如何将鲜活的知识与严密的思维紧密结合?首先,要回答一个问题:
为什么这么做?我考虑了如下三个问题。

22->第一个问题,人才培养与人才梯度的问题(人工智能与机器人人才缺口大)。分为三个方面考虑(教育资源分配不均加剧断层):
1 人才断层
成本高、资源浪费并存,重点大学相关人才起薪高,普通高校找工作难。
人才断层导致分工困难,由上而下,无法顺利完成,主管能力的“地平线”,是下属能力的“天花板”。
2 培养周期
没有良好思维训练等,没有树立终身学习等(铁饭碗等陈旧观念),断层后直接遇到天花板,无法成长,不能形成良性循环。
3 智慧型机器人对工作机会的取代,导致对人才要求的不断提高
标准化的工作迟早会被人工智能和机器人取代,标准化的教育也无法培养个性化的人才。明明学习的知识越来越多,为何越来越无用呢?


其实多年前就关注OpenAI,最近火热的ChatGPT。

ChatGPT:优化
语言模型
用于对话
我们训练了一个叫做ChatGPT的模型,它以对话方式进行交互。对话格式使ChatGPT能够回答后续问题、承认错误、质疑不正确的前提和拒绝不适当的请求。ChatGPT是InstructGPT的兄弟模型,它被训练为在提示中遵循指令并提供详细的响应。

博客关于OpenAI部分案例学习:

2019年:

ROS、OpenAI和Gazebo机器人与人工智能仿真与实践教研杂记(三)深度学习

物联网IoT Arduino 机器人ROS 人工智能OpenAI融合课程(幼儿园到大学)


-Fin- 


以上是关于优美的曲线-turtlesim的主要内容,如果未能解决你的问题,请参考以下文章

控制的开环和闭环-turtlesim

用MATLB仿真一个单闭环控制量,同时还存在两个开环控制变量的阶跃响应曲线。(自动控制方法是PID中的P控制。通过查表法直接给开环参数稳态最佳的大小)

优美的曲线(含蝴蝶线)-CoCube

优美的曲线(含蝴蝶线)-CoCube

汽车发动机开环和闭环的区别?

开环和闭环是什么意思?