办公问答网

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 106|回复: 1

小菜鸟学ROS

[复制链接]

1

主题

4

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-2-17 11:54:30 | 显示全部楼层 |阅读模式
这几天看到一个非常好的B站教程,强烈推荐!
自己跟着写了一遍,很多细节这次都搞懂了,这个讲得非常好。简单做一个笔记,是自己在重复过程中忘记的语法问题。ROS的内容不多,用起来只需要知道那几个功能,学完之后觉得整体非常清晰。但是知其然知其所以然难,这个视频把ROS的设计机制讲清楚了,而且追根溯源,当时为什么斯坦福要设计这一套框架,作者小哥当时负责什么,用王者荣耀里面的角色做比喻也是非常有趣,作者是一个很幽默厉害的人,很喜欢这个视频,也许是我看到现在觉得最好的一个系列的视频。
B站视频链接:13.在ROS中,使用C++编写Publisher发布者节点



ros publisher





ros subscriber



roslaunch






写几个自己写代码的时候出错的点
1.要包含头文件 include<std_msgs/String.h>
2.是ros::NodeHandle不是handler
3.主函数中,参数char旁边的const要去掉。main(int argc, char *argv[]}
4.ros::Subscriber注意拼写
5.发布者是nh.advertise<数据类型>(“话题名称”,缓存长度)
6.订阅者是nh.subscribe(“话题名称”,缓存长度,回调函数),
注意subscribe不需要定义接受的消息类型了,不是像publish一样写泛型函数,而是需要补充一个回调函数。
7.创建一个包是catkin_create_pkg 包名 依赖项
8.ros::spin()让节点保持运行别退出,ros::spinOnce()每次在while(ros::ok)的循环里面每次都检查一次输入的数据。
9. #include "geometry_msgs/Twist" 不是<>,是“”,这个就是高等机构动力学里面的旋量,一个六维的向量同时表示线速度和角速度。
10. 如果一个publisher在主函数和回调函数里都要用到,那应该把它定义为一个全局变量,然后在主函数里定义,不然(不在一开始定义全局变量)就是在回调函数中无法调用,在Gazebo中无法响应。
11. 有意识地记住自己定义的pub和sub,明确他们是干嘛的,在哪里用到,不要出现在定义的时候出现变量未定义这种问题。
回复

使用道具 举报

3

主题

13

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2025-5-19 01:02:04 | 显示全部楼层
围观 围观 沙发在哪里!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|办公问答网

GMT+8, 2025-7-5 02:10 , Processed in 0.085105 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc. Templated By 【未来科技 www.veikei.com】设计

快速回复 返回顶部 返回列表