优美的曲线-turtlesim

news2024/11/17 19:45:40

从开环到闭环的旅程-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- 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/82758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DubboSPI使用以及使用方式源码解读

DubboSPI流程图 为什么Dubbo要自己实现SPI java spi 会一次性实例化扩展点所有实现&#xff0c;机制并不能根据获取自己想要的类 获取一个类的实现对象 javaSPI 具有局限性&#xff1a; 1、没法给实现类起别名 2、没法实现包装类。类似AOP的原理 3、没法实现自动注入 4、没法…

[附源码]Python计算机毕业设计SSM基于大数据的汽车流量监控(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

ESP32 ESP-IDF + LVGL + SquareLine Studio 设计 UI 界面

陈拓 2022/12/10-2022/12/12 1. 概述 关于SquareLine Studio&#xff0c;乐鑫官方的ESP技术文章有介绍&#xff1a;在 ESP 开发板上开发 UI 不再复杂 - 知乎如果您尝试过在没有图形库的情况下开发 UI&#xff0c;那么您一定知道这有多困难。幸运的是&#xff0c;由乐鑫芯片驱动…

线性代数---第六章---二次型

1二次型方的系数为主对角线上的元素 我起码要会如何根据二次型写矩阵A 2规范形是系数为1&#xff0c;-1&#xff0c;0的标准型 3二次型的正惯性指数和负惯性指数 4任一个n阶实对称阵&#xff0c;必然既相似又合同于对角阵 5用配方法化二次型为标准阵 6 正交变换得到的对角阵上…

【产品分析】从用户体验五要素分析——微信读书

本文从用户体验五要素&#xff1a;表现层面、框架层 、战略层、范围层、结构层&#xff0c;对微信读书进行了分析。 前言 互联网发展的速度也加速了知识更新的速度&#xff0c;也许今天你还手握焦点技能&#xff0c;明天就可能被遗忘在角落。一应俱全的网课、铺天盖地的资讯加…

Autosar PWM配置及使用

文章目录前言PWMPwmChannelPwmAssignedHwUnitPwmChannelIdPwmCoherentUpdatePwmDutycycleDefaultPwmIdleStatePwmNotificationPwmChannelClassPwmPeriodDefaultPwmPolarityPwmReferenceChannelPwmSafetySignalPwmShiftValuePWM输出偏移的使用PwmConfigurationOfOptApiServicesP…

Coreform Cubit (csimsoft Trelis)

Coreform Cubit (csimsoft Trelis) Coreform Cubit(csimsoft Trelis)是Coreform公司开发的最强大、最高效的工程工具之一。通常&#xff0c;公司都会启动自己的Mash项目。对于CFD分析&#xff0c;他们有FEA。这个软件可以开始你的工作&#xff0c;添加你自己的印第安形状&#…

2023年湖北建设厅七大员建筑八大员考试什么时候报名?甘建二

2023年湖北建设厅七大员建筑八大员考试什么时候报名&#xff1f; 建设厅七大员和建筑八大员有什么关系呢&#xff1f;有区别吗&#xff1f; 甘建二老师告诉你&#xff0c;建设厅七大员和建筑八大员没有区别&#xff0c;只是叫法不一样而已&#xff0c;都是一个东西。 七大员和…

Kunbernetes——二进制单节点部署

常见的k8s部署方式 1.Mini kube Minikube是一个工具&#xff0c;可以在本地快速运行一个单节点微型K8s&#xff0c;仅用于学习预览K8s的一些特性使用 部署地址: https://kubernetes.io/docs/setup/minikube 2.Kubeadmin Kubeadmin也是一个工具&#xff0c;提供kubeadm init和…

基于python的opencv中SGBM立体匹配算法实现

文章目录前言一、SGBM和SGM的区别&#xff1f;1.预处理2.代价计算3.动态规划4.后处理二、SGBM的python-opencv的实现SGBM 参数选择参考文章前言 SGBM的核心是SGM算法&#xff0c;自OpenCV2.4.6开始就已经被开源&#xff0c;非常的方便&#xff0c;并被广泛使用。 一、SGBM和SGM…

几何角度理解相机成像过程

本笔记从几何角度来理解相机的成像过程&#xff0c;我们生活在三维世界中&#xff0c;相机所捕捉到的画面是2D的&#xff0c;3D空间中的点是如何投影到2D平面的过程是本笔记关注的。 预设场景 本笔记讨论的东西基于以下场景&#xff1a; 在一个房间内放了一台相机&#xff0c;…

入职阿里的秘密武器,阿里内部“Java学习笔记”,由浅入深,通俗易懂!

导言 提起阿里&#xff0c;行外人联想到的关键词无非是“交易”、“淘宝”、“支付宝”&#xff0c;但对于程序员来说&#xff0c;阿里庞大的技术体系才是最吸引人的。实际上阿里作为国内一线互联网公司的头把交椅&#xff0c;内部的技术体系和发展都是备受关注的&#xff0c;…

Network-UART VHDL设计及仿真实现

设计内容: 实现UART及实时系统完成收发UART操作的测试系统,要求如下: 本工程包括一个测试系统,UART. UART包括baud波特率模块、UART的transfer and receive模块等 1 Objective The objective of this project is to design and build a complete UART in VHDL. Upon comp…

为什么电子商务物流对电商商家的业务很重要?

正是电子商务物流的推动推动了企业发展包括最大渠道在内的整体生态系统;店内提货、电子商务、分销商、经销商、合作伙伴和全球制造商&#xff0c;推动新客户的增长。电子商务巨头的目标是推动更多的销售并提高客户忠诚度。  无论是内部还是第三方物流公司&#xff0c;改进的电…

【小塔秉匠地图】

运行对应地图 1.先清空url运行一遍 2.填上url再次运行就可以了 对地图操作的方法 handleRowClick(row, column, event) {if (row) {this.send(camToAnchor,{name: row.ancName}) // camToAnchor:定位到锚点;ancName锚点的唯一标识} },send(funcName, options) {console.l…

优维低代码:Theme Mode 页面主题和模式

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 连载…

React 18:state概念与使用、注意问题

一、概念与基本使用 props中的所有属性都是不可变的&#xff0c;这使得React组件不能随着props的改变而改变。但在实际的开发中&#xff0c;我们更希望的是数据发生变化时&#xff0c;页面也会随着数据一起变化。React为我们提供了state用来解决这个问题。 state和props类似&…

类的赋值与浅拷贝

类的浅拷贝与深拷贝 变量的赋值操作 只是形成两个变量&#xff0c;实际上还是指向同一个对象浅拷贝 Python拷贝一般都是浅拷贝&#xff0c;拷贝时&#xff0c;对象包含的子对象内容不拷贝因此&#xff0c;源对象与拷贝对象会引用同一个子对象深拷贝 使用copy模块的deepcopy函数…

[附源码]JAVA毕业设计疫情防控期间网上教学管理(系统+LW)

[附源码]JAVA毕业设计疫情防控期间网上教学管理&#xff08;系统LW&#xff09; 项目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 …

window下生成SANs证书给ingress用

1.安装openssl openssl下载地址&#xff1a;http://slproweb.com/products/Win32OpenSSL.html http://slproweb.com/products/Win32OpenSSL.html 下载指定版本exe安装。 2. 修改openssl配置 为了方便我们copy一份openssl.cfg&#xff0c;用来修改 C:\Users\vamcl\Deskto…