首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
牛客858610822号
南阳理工学院 深度学习
发布于河南
关注
已关注
取消关注
@魏郑钢:
ROS学习笔记
ros学习笔记 目录结构 CMakeLists.txt package.xml catkin工作空间 catkin_make 包管理指令 Metapackage 通信架构(计算图层级) master roscore 命令 node 节点 rosrun命令 rosnode命令 roslaunch命令 通信方式 Topic Service 异同 后续 Action Parameter Server 命令行 launch文件 node(API) 常用工具 Gazebo RViz The Robot Visualization tool rqt rosbag Moveit Client Library roscpp C++的接口 ros::init() ros::NodeHandle ros::master ros::this_node ros::service ros::param ros::names rospy python的接口 Node Topic Service Param Time TF & URDF TF树 urdf Unified Robot Description Format 出错处理 依赖安装 rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y 参考资料 目录结构 |--src 源代码| |--package 是编译的基本单位| |--CMakeLists.txt 编译规则、依赖等| |--package.xml 属性信息| |--scripts 脚本文件夹| | |--python脚本| | |--shell脚本| |--include 头文件.h| |--src C++源文件| |--srv 服务| | |--*.srv | |--msg 消息| | |--*.msg| |--action 动作| | |--*.action| |--launch launch配置文件| | |--*.launch| |--config 参数配置文件| | |--*.yaml|--build cmake和catkin缓存中间文件|--devel 编译生成的目标文件 CMakeLists.txt package.xml catkin工作空间 命名规则为 workspace_name/src 创建命令为 mkdir -p ~/catkin_ws/srccd ~/catkin_wscatkin_make catkin_make 作用为编译,同时可以起到初始化工作空间的目的 在编译完之后要用source命令刷新当前环境 source ~/catkin_ws/devel/setup.bash,刷新完之后才能运行编译生成的ros可执行环境。但是每个终端都需要运行才行,可以直接更新到.bashrc文件中echo "source ~/catkin_ws/devel/setup.bash " >> ~/.bashrc,直接更新环境变量。 rosbuild是早期的编译命令,现在已经被catkin_make淘汰 包管理指令 rospack 查找某个包的地址rospack find package_name 列出本地所有包rospack list roscd 跳转到某个包路径下 roscd package_name rosls 列出包文件信息 rosls package_name rosed 编辑包中文件 rosed package_name file_name catkin_create_pkg 创建包 catkin_create_pkg pkg_name [deps]deps是依赖名,可以有多个 rosdep 安装依赖rosdep install package_name Metapackage 功能相似的包的集合,主要用于安装的时候使用。sudo apt-get install ros-kinetic-[Metapackage_name] 通信架构(计算图层级) master 节点管理器,每个node启动时都需要在master进行注册,类似与微服务架构中的服务管理***能。 roscore 命令 roscore 该命令功能: 启动master节点 启动rosout节点 负责日志输出 启动parameter server 参数服务器 node 节点 一个node实际上就是一个进程,master实际上也是一个node,但是它的功能是对其他node进行管理。 由于机器人一般都有非常多的零部件,所以每个部分一般都需要一个进程对其进行管理,例如摄像头模块、雷达模块等都需要单独的进程才能完成任务,这里的每个进程在ros中被称为节点node。 rosrun命令 该命令的功能是启动一个node rosrun [pkg_name] [node_name] rosnode命令 管理和查看某个node信息 rosnode list列出在运行的node信息 rosnode info [node_name]显示某个node的详细信息 rosnode kill [node_name]结束运行某个node roslaunch命令 roslaunch [pkg_name] [file_name.launch]启动master节点以及多个node 其中的.launch文件就配置了需要启动的node有关信息【启动规则】 通信方式 Topic 异步通信方式 publish-subscribe通信机制 nodeA向这个Topic发送(publish)消息,然后nodeB订阅(subscribe)这个Topic,然后nodeB就能收到nodeA发送的消息。所以可以进行一对多的消息发送,也可以多对一。 Message topic通信方式定义的数据类型 定义在.msg文件中 每个msg文件定义一种通信格式,相当于面向对象中的类,然后node在发送的时候是发送一个msg格式的数据。 基本格式包括:bool,int8,int16,int32,uint,float32,float64,string,time,duration,header,不定长数组array[],定长数组array[n] sensor_msgs/Image(sensor_msgs/msg/Image.msg) 定义了传输一幅图的数据格式 rostopic list列出当前所有topic rostopic info /topic_name显示某个topic的属性信息 rostopic echo /topic_name显示某个topic的内容 rostopic pub /topic_name ...向某个topic发布内容 rosmsg list列出系统上所有msg rosmsg show /msg_name显示某个msg内容 (这里显示的是msg的格式内容) Service 同步通信方式 request-reply方式通信 srv Service通信格式,定义在.srv文件中 rosservice 与 rostopic对应 rosservice list列出当前所有活跃的service rosservice info service_name显示某个service的属性信息 rosservice call service_name args调用某个service rossrv 与 rosmsg对应 rossrv list列出系统上所有srv rossrv show srv_name显示某个srv内容 异同 后续 在定义了msg和srv后需要对package.xml和CMakeList.txt进行修改,添加相关依赖才能运行。 Action 类似Service,在通信过程中有执行状态的反馈,更常用于那些执行时间较长,并且可能需要中断和被抢占的任务节点中。 action通信的数据格式 定义在.action文件中 Parameter Server 参数服务器,存储各种参数的一种字典格式。可以使用命令行,launch文件和node节点的api进行读写。 感觉像是一种全局变量的维护方式。 命令行 命令 含义 rosparam list 列出当前所有参数的值 rosparam get param_key 显示某个参数的值 rosparam set param_key param_value 设置某个参数的值 rosparam dump file_name 保存参数到文件(文件格式为YAML文件) rosparam load file_name 从文件读取参数 rosparam delete param_key 删除参数 launch文件 node(API) 略 常用工具 Gazebo 仿真工具,模拟器,ODE物理引擎 RViz The Robot Visualization tool 可视化调试工具 rqt 可视化工具,基于qt开发 rqt_graph:显示通信架构 rqt_plot:绘制曲线 rqt_console:查看日志 rosbag 命令行工具,记录和回放数据流(top数据流) 命令 含义 rosbag record <topic_names> 记录某些topic的数据到bag文件中 rosbag record -a 记录所有topic到bag文件中 rosbag play <bag-files> 回放bag文件中记录的数据 Moveit 机械臂常用的专用工具 Client Library ROS编程的库 对API进行了进一步的封装,一些标准接口。 编程的具体方法与细节。 http://docs.ros.org/api/ roscpp C++的接口 官方文档:http://docs.ros.org/en/api/roscpp/html/ 具体见该https://www.bilibili.com/video/BV1mJ411R7Ni?p=22&spm_id_from=pageDriver 视频中有一系列例子及讲解。 #include<ros/ros.h>//导入自定义的一些msg之类的头文件... ros::init() ros::NodeHandle ros::master ros::this_node ros::service ros::param ros::names rospy python的接口 http://wiki.ros.org/rospy import rospyimport mathfrom topic_demo.msg import gps #自己定义的各种msg等等都需要import Node Topic 其中queue_size(队列长度)如果传入为None会变成同步方式,只有是一个整数才是异步方式。 Service Param Time Time是表示时刻的类 Duration是表示时间(持续时间)的类 TF & URDF TF: TranForm 坐标系变换 URDF:机器人描述规范 TF树 机器人每个frame(以每个部件为中心的坐标系)之间的连接关系,每个连接关系都有一个node来进行维护,这些节点将消息发布到tf的topic中,然后从这些消息中就可以恢复得到一棵完整的tf树,这些消息可以反映每个部件之间的相对位移关系。 tf的具体消息格式以及消息发送和接收方法略【详情见视频】 命令 含义 rosrun tf view_frames 根据当前的tf树(最近5s内的tf消息)创建一个tf图 rosrun rqt_tf_tree rqt_tf_tree 查看当前的tf树(动态变化) rosrun tf tf_echo [reference_frame] [target_frame] 查看两个frame之间的变换关系 urdf Unified Robot Description Format 定义机器人结构 link 核心部件 joint 两个link之间的连接部件(连接关系) 出错处理 依赖安装 rosdep install --from-paths src --ignore-src --rosdistro=kinetic -y 报错信息如下 ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies: robot_sim_demo: Cannot locate rosdep definition for [yocs_cmd_vel_mux] navigation_sim_demo: Cannot locate rosdep definition for [dwa_local_planner] slam_sim_demo: Cannot locate rosdep definition for [hector_mapping]ERROR: the following packages/stacks could not have their rosdep keys resolvedto system dependencies 使用sudo apt-get install ros-kinetic-[] 命令将缺失的包都进行安装再次运行即可。 参考资料 视频教程ros入门:https://www.bilibili.com/video/BV1mJ411R7Ni?p=1
点赞 1
评论 0
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
01-19 12:20
牛客首席活动官
1.19-1.25参与话题,发贴得牛币&京东卡!
社区内容需要你来分享参与话题、分享你的经历/经验、发布原创内容... 只要参与社区活动,就有机会获得实物奖励和流量推荐!一起共创牛客社区~一、创作话题(👇点击话题名称查看创作要求👇)话题(点击参与👇)活动奖励💰找工作以来,你最看不惯__1.发布帖子or图片≥50字,奖励30牛币2.帖子阅读量≥1000,奖励50牛币阅读量取周一至次周一以上奖励取最高项发奖,每个话题下每人有多次获奖机会,快去积极参与吧👈哪些公司开春招了?你都在哪些场所面过试?实习怎么做才有更好的产出实习生工资多少才算正常?AI coding的工具分享1.发布帖子or图片≥50字,奖励30牛币2.帖子阅读量≥1000,奖...
点赞
评论
收藏
分享
01-22 16:59
清华大学 Java
我给 AI 提过的最离谱 Java 需求
有一次我对 AI 提了一个离谱到自己都觉得好笑的 Java 需求:“帮我写一个程序,自动找出所有内存泄漏、生成修复补丁,并直接提交到 Git。”这需求看起来像“自动化神器”,但本质是想让 AI 变成一个会理解业务、会分析代码、会操作版本库的全能工程师。更离谱的是我还加了一句:“顺便统一项目所有日志格式、处理所有异常,并回滚到上一版本。”AI 当然给了我一套很完整的方案,但我知道真正落地会非常复杂,也很可能把项目搞崩。后来我才明白,离谱的需求可以问,但别指望 AI 代替工程师做所有决定。
你给AI提过哪些离谱的需...
点赞
评论
收藏
分享
2025-12-12 11:27
门头沟学院 Java
感觉错过寒假实习了
现在在saas开发实习,想着寒假前投个大点的千人厂,结果boss没几个,大部分全是小厂,大佬们觉得年后实习岗位会变多吗,想年后找个大点的厂子
点赞
评论
收藏
分享
01-09 20:49
快手_测试开发(实习员工)
下一站,快手
最近也面了好几家公司字节-抖音研发:一面挂,脏面评了B站-直播测试:面试官觉得我服务端测试经验不足,半小时结束,手撕都没出百度acg质量部:面试官不开摄像头,一直盯着我那没意义的项目的一个点狠狠攻击,半小时结束,无手撕,应该是 kpi 面了快手-商业化:一面 50 分钟大部分在问实习,因为上一段实习和这个面试的很垂直,又问了一些数据库和 redis,消息队列的八股手撕:力扣 80 删除有序数组中的重复项当天晚上约二面隔一天二面:25 分钟问了实习,一道三数之和,反问后结束,面试官说会稍微看重一点代码能力半小时后 hr联系口头 offer,当天下午发 offer快手效率这一块因为快手这个业务组和我上一段实习,非常垂直,面试起来也比较得心应手吧,进度推的也很快最近期末周,又要复习,又要面试,回学校前,还在上班,这三个叠一起,真的感觉忙不过来了,再加上一开始的字节和 B 站秒挂,很大程度上给我了一些打击,不过好在挺了过来继续加油吧附:之前一直投快手,简历挂了两页
牛客66512506...:
那个百度acg是不是个小哥啊,老是问些底层问题狠狠为难,然后kpi
哪些公司在招寒假实习?
点赞
评论
收藏
分享
01-22 13:59
柠檬微趣_HR(准入职员工)
柠檬微趣内推,柠檬微趣内推码
柠檬微趣前端一面1. 自我介绍2. JS定义变量方式?let const var区别?3. 为什么用const定义变量不可以被修改?底层原理?一定不能改?4. `let a = 1; let a = 2;` 会发生什么?会报什么错?5. `var a = 1; var a = 2;` 可以吗?`var a = 1; let a = 2;` 呢?6. `var`特性(如变量提升)?`console.log(a); var a = 1;` 的结果是什么?7. JS中基本数据类型?分别存储在哪里(栈/堆)?8. `let a = {}; b = a; `修改b会影响a吗(会)如何避免(深拷贝)9. ...
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
备战春招,网申一键填写工具,发布了!!!
2.8W
2
...
实习产出如何包装?
7857
3
...
【官方活动】牛客新春计划:给陌生人的一封信
6993
4
...
27双非非科班4段实习从字节tt到腾讯wxg
6130
5
...
32岁程序员猝死,底薪3千要24h待岗
5462
6
...
27届实习时间线
4666
7
...
我爸对计算机行业的看法,是否准确?
4663
8
...
专科工作一年后的心里话
3860
9
...
第一次被同事气笑了
3006
10
...
【牛客娘创作大赏】来生成牛客娘表情包,送牛币,送牛客娘周边
2922
创作者周榜
更多
正在热议
更多
#
哪些公司开春招了?
#
9420次浏览
115人参与
#
工作压力大怎么缓解
#
137317次浏览
1228人参与
#
上班以后,你还有哪些坚持的爱好?
#
6737次浏览
167人参与
#
找工作以来,你最看不惯__
#
13108次浏览
286人参与
#
你都在哪些场所面过试?
#
18689次浏览
218人参与
#
AI coding的好用工具分享
#
17039次浏览
357人参与
#
互联网公司评价
#
478159次浏览
4053人参与
#
实习怎么做才有更好的产出
#
11283次浏览
204人参与
#
实习教会我的事
#
51456次浏览
399人参与
#
你最近因为什么迷茫?
#
32712次浏览
463人参与
#
实习离职怎么跟领导说
#
75746次浏览
420人参与
#
实习生工资多少才算正常?
#
11994次浏览
189人参与
#
拼多多工作体验
#
44227次浏览
283人参与
#
四大天坑是哪四家?
#
99827次浏览
234人参与
#
机械制造面试记录
#
307779次浏览
3152人参与
#
你给AI提过哪些离谱的需求?
#
5591次浏览
159人参与
#
领导做过最不靠谱的事
#
12153次浏览
203人参与
#
工作一周年分享
#
49882次浏览
256人参与
#
为了实习逃课值吗?
#
61928次浏览
517人参与
#
选offer应该考虑哪些因素
#
139083次浏览
980人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务