前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >优美的曲线-turtlesim

优美的曲线-turtlesim

作者头像
zhangrelay
发布2022-12-13 17:04:03
3360
发布2022-12-13 17:04:03
举报

从开环到闭环的旅程-CoCube

优美的曲线-译


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



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

想画什么,就能画什么。


核心代码:

代码语言:javascript
复制
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);

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

代码语言:javascript
复制
#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具体效果参考:

https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-6e43165c0a.css

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- 


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档