EGO_Planner代码学习(二):轨迹服务器ego_planner/traj_server代码流程

这篇具有很好参考价值的文章主要介绍了EGO_Planner代码学习(二):轨迹服务器ego_planner/traj_server代码流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


上一节我们学习了EGO_Planner的启动流程,下面我们来看一看 roslaunch ego_planner single_run_in_exp.launch启动了 ego_planner/traj_server结点后,该结点都做了什么工作呢

ego_planner/traj_server代码流程

我们查看一下src/planner/plann_manage文件夹下的CMakeLists文件,发现ego_planner/traj_server是通过编译该文件夹下src/traj_server.cpp文件生成的,下面我们就看看这个traj_server.cpp的代码流程。

1->	创建结点  traj_server
2->	订阅规划轨迹 :planner/bspline
	回调函数:bsplineCallback()
	2.1->	收到轨迹,创建两个变量pos_pts konts分别接收geometry_msgs/Point[]类型的pos_pts 和时间变量konts
	2.2->	用收到的pos_pts,konts创建新的均匀B样条曲线pos_traj
	2.3->	计算后面要用的变量:
		start_time_	//等于收到轨迹的成员变量:起始时间
		traj_id_	//等于收到轨迹的成员变量:id
		traj_		//插入pos_traj及其一阶导、二阶导
		traj_duration_	///总时间
	2.4->	receive_traj_=true
3->	创建发布者:pos_cmd_pub ,往 /position_cmd 话题上发布 PositionCommand 类型的数据
4->	创建定时器,间隔10ms进入回调函数一次	
	回调函数 cmdCallback()4.1->	是否收到了轨迹receive_traj_=true,没有的话跳出函数
	4.2->	计算现在的时间和起始时间的间隔 t_cur = time_now-start_time_
	4.3->	判断 t_cur  在不在总时间区间内
		4.3.1->	t_cur < traj_duration_	
			计算当前t_cur的pos vel acc yaw(后面导航命令用),再算一个pos_f(不知道干嘛用的)
		4.3.2->	t_cur > traj_duration_
			计算终点pos ,vel acc 设0,yaw不变; 
		4.3.3->	t_cur < 0
			报错
	4.4->	把pos vel acc yaw等信息装入cmd里,pos_cmd_pub 发布一次cmd到/position_cmd
5->	在cmd指令里设置控制器增益系数
6->	1.0sleep,ros::spin()

	traj_server.cpp 子函数calculate_yaw()
	->参数:double t_cur,vector3d &pos ,ros::Time time_now ,ros::Time time_last
	->功能:计算yaw角方向,变化率,并对输出进行限幅,把yaw输出限制在[-PI,PI]
	->输出:pair of <yaw,yaw_dot>	

通过上述分析,我们发现ego_planner/traj_server结点其实就是为了将规划器发布的轨迹planner/bspline转化为控制器指令cmd并上传到position_cmd话题上。
下一节,我们分析ego_planner_node结点在启动后经历了那些流程。文章来源地址https://www.toymoban.com/news/detail-728005.html

到了这里,关于EGO_Planner代码学习(二):轨迹服务器ego_planner/traj_server代码流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何在服务器使用GPU跑深度学习代码

    每个人都有他们偏好的工具和工作流程。就我个人而言,我喜欢使用 PyCharm Professional Edition 作为我的集成开发环境,选择使用 HengYuan Cloud\\\'s OSS.exe 和 FileZilla 进行文件传输,并且我倾向于使用 Xshell 来处理命令行操作。这些工具的组合满足了我的所有需求,并使我的工作效率最

    2024年04月12日
    浏览(41)
  • 【学习记录】服务器上用Python代码下载ERA5 Hourly 数据

    需要下载至少20年的多个变量不同pressure level的ERA5 hourly数据,其中单一变量31层、4个时刻的数据约为245MB,所有数据下下来约有8T。在对比了网上现有的下载ERA5数据的方法考虑到储存问题,决定借助服务器利用python脚本下载数据,将单个变量的每日的结果存成一个文件。 ERA

    2024年02月02日
    浏览(53)
  • 如何在云服务器上跑深度学习的代码?(ResNet50为例)

    ✅ 个人简介:南京邮电大学,计算机科学与技术,在读本科 兴趣领域:数据结构、C/C++ ● 小编选择的 “矩池云”,感觉操作比较方便,也能跑通代码。 ● 矩池云官网 :https://www.matpool.com。 ● 一进去,经过一些 “操作” 能获得 5 元的体验金,可以用来练手。 ● 然后打开

    2024年01月18日
    浏览(34)
  • 【深度学习】教你怎样远程连接云服务器跑自己本地电脑上的代码

    自己要跑的代码包 本地电脑上打开、调试代码的工具----------本文使用PyCharm 远程连接用的深度学习云服务器环境------------本文使用AuToDL这款AI服务器(推荐使用,实惠好用) 自己用到的代码包如下: 用PyCharm打开代码包,如下: 点击‘文件’---- ‘设置’----------- ‘工具’

    2024年02月05日
    浏览(42)
  • 研一小白记录第一次在实验室服务器上跑深度学习的代码全过程(实验室服务器上跑代码详细全过程哦)

    你在服务器上跑过代码吗?哇~你跑过!是啥样的...每回见别人跑都会问并且羡慕会在大服务器上跑代码的哈哈哈在研究生刚开学前还甚至不知道什么是服务器,更是无法想象在除了自己能看得见摸得着的电脑屏幕之外跑代码的样子。直到有天开会自己坐在了一个大大的“黑箱

    2024年02月02日
    浏览(42)
  • 【C语言开源库】 一个只有500行代码的开源http服务器:Tinyhttpd学习

    项目搬运,带中文翻译: https://github.com/nengm/Tinyhttpd 在嵌入式中,我们HTTP服务器用得最多的就是boa还有就是goahead,但是这2个代码量比较大,而Tinyhttpd只有几百行,比较有助于我们学习。 直接make之后,所以假如html有执行权限先把它去除了,chmod 600 index.html color.cgi、date.cgi必须

    2024年02月11日
    浏览(34)
  • 【深度学习】手把手教你使用 PyCharm 在 Auto DL 远程服务器上运行代码

    文章性质: 实操记录 💻 主要内容: 主要记录了如何使用 PyCharm 在 Auto DL 上运行代码。 相关文档: 使用 PyCharm 在 Auto DL 远程服务器上运行代码 - 知乎 相关博客: 使用 PyCharm 连接远程服务器(AutoDL)训练 YOLOv5 - CSDN博客  冷知识+1: 小伙伴们不经意的 点赞 👍🏻 与 收藏 ✨

    2024年03月21日
    浏览(55)
  • C/C++轻量级并发TCP服务器框架Zinx-游戏服务器开发002:框架学习-按照三层结构模式重构测试代码+Tcp数据适配+时间轮定时器

    三层结构重构原有功能 自定义消息类,继承UserData,添加一个成员变量szUserData 定义多个Role类继承Irole,重写ProcMsg函数,进行不同处理 定义protocol类,继承Iprotocol,重写四个函数,两个函数时原始 数据和用户数据之间的转换;另两个用来找消息处理对象和消息发 送对象。 定

    2024年02月21日
    浏览(41)
  • Zinx框架-游戏服务器开发002:框架学习-按照三层结构模式重构测试代码+Tcp数据适配+时间轮定时器

    三层结构重构原有功能 自定义消息类,继承UserData,添加一个成员变量szUserData 定义多个Role类继承Irole,重写ProcMsg函数,进行不同处理 定义protocol类,继承Iprotocol,重写四个函数,两个函数时原始 数据和用户数据之间的转换;另两个用来找消息处理对象和消息发 送对象。 定

    2024年02月05日
    浏览(44)
  • Fast Planner——代码解读参考资料整理

    参数解读 主要函数解读 概率栅格地图,概率更新过程的公式推导过程 全概率公式、贝叶斯公式 一. kinodynamic a_star(前端hybrid A_star动力学路径搜索) 1.1启发函数的计算 1.2 Compute shot Traj 1.3 节点扩张 1.4 节点剪枝 1.5 返回kinopath与 getsamples 二、B样条曲线设置 2.1 均匀B样条设置

    2024年02月05日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包