![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ROS入门学习
ROS入门学习,简介,安装,结构,实例等方面入手,快速入门
大厂offer宝典
这个作者很懒,什么都没留下…
展开
-
25. tf坐标系广播与监听的编程实现
pkg需要的依赖:roscpp rospy tf turtlesim(例子)1. broadcaster(得到坐标系关系并发布到树中)1.1 头文件部分:#include <ros/ros.h>#include <tf/transform_broadcaster.h>#include <turtlesim/Pose.h> 海龟的位置是通过turtlesim不断往外发布的1.2 main函数部分:int main(int a...原创 2020-09-13 17:07:53 · 294 阅读 · 0 评论 -
24. ROS中的坐标管理系统
机器人中的坐标变换:TF(Transform)功能包:一个管理整个机器人坐标的功能包。一个已经做好了的封装包。所有坐标系都是通过tree树下图构保存在树中。激光雷达来获得深度信息(下图),base_link可以认为是一个地盘,那么雷达与地盘相当于两个坐标系。比如雷达检测到距离墙面是0.3, 但是我们的base_link具体是距离墙面多少呢?所以需要一个算法转换。上面是只有两个节点的树结构。举例子:可以尝试用命令:rosrun tf view_frames(需要监听一段原创 2020-09-13 17:06:38 · 296 阅读 · 0 评论 -
23. Rospy-time
》》点赞,收藏+关注,理财&技术不迷路《《原创 2020-08-27 16:58:15 · 325 阅读 · 0 评论 -
22.Roscpp/Rospy:Param_demo
》》点赞,收藏+关注,理财&技术不迷路《《参数服务器严格来说不能说是一个通信方式,只能说是一个字典用来储存。同一个功能做两个API。Param_demo.cppParam_demo_cpp.launch在launch文件里面也可以设置参数,两个标签param和rosparam都可以加载参数。Rospy-Param相关...原创 2020-08-27 16:57:29 · 173 阅读 · 0 评论 -
21.Roscpp/Rospy:Service_demo
》》点赞,收藏+关注,理财&技术不迷路《《步骤获得topic_demo一样。Package/srvPackage 首先一定要先建立一个package,有了package才有地方存放源代码等一些东西。定义好message一个node代码放在talker.cpp里面另一个node代码放在listner.cpp里面写完代码一定要修改CMakeLists&package.xml告诉编译系统去编译这些文件。Server.cppNodehandle..原创 2020-08-27 16:56:56 · 148 阅读 · 0 评论 -
20.Roscpp/Rospy:Topic_demo
》》点赞,收藏+关注,理财&技术不迷路《《主要详讲roscpp。rospy直接放上模板。Roscpp-topic两个进程,node1不断发发GPS信息坐标和状态给node2,node2不断地计算。实际:node1 可以是一个传感器,它从串口或者传感器读取数据,然后通过ros封装变成一个message。Package 首先一定要先建立一个package,有了package才有地方存放源代码等一些东西。定义好message一个node代码放在talker.cpp里面.原创 2020-08-27 16:55:49 · 323 阅读 · 0 评论 -
19.Client Library(客户端库)_ROSPY模板:
》》点赞,收藏+关注,理财&技术不迷路《《RospyPython是一个编译类语言,自己会解释,所以不需要CMakeLists,但是我们还是要写,因为不是因为python,而是它要管message_generation就是python里用到的这个类型,必须要经过编译才可以用。Rospy-Node相关在一个python文件中必须import rospy这个client library我们才可以用它的所有方法。Rospy-publisher模板:功能:创建一个 ..原创 2020-08-24 21:32:07 · 800 阅读 · 0 评论 -
18.Client Library(客户端库)_ROSCPP模板:
》》点赞,收藏+关注,理财&技术不迷路《《Client library就是对不同编程语言接口的统称。不同语言最好用ros里面最底层相同的接口,再根据不同语言进行不同封装。和我们说的API概念相似。它比API层级更高一些,因为它在API上又封装了一层。它其实就是一个接口,我们不需要每次都去用TCPIP去写,把底层流程封装好,让我们方便调用。Roscpp 执行效率很高,适合图像处理之类的。Rospy 开发效率很高,适合开发各种小工具。Roscpp:Roscpp 是...原创 2020-08-24 21:31:45 · 347 阅读 · 0 评论 -
17.Rosbag(数据记录和回放)
》》点赞,收藏+关注,理财&技术不迷路《《可以选择要记录的topic,长度大小都可以自己定。记录好了后存在一个.bag文件里面,然后可以对其进行回放。原理:记录的时候就是创建一个node,然后把你需要订阅的topic都接收然后打上时间戳再保存下来。然后接下来我们可以尝试移动机器人,现在也可以关掉这个terminal了。这个时候也可以通过rostopic list / info 对比父点来确认是记录下来了,也可以尝试rosrun image_view image_view原创 2020-08-24 21:30:52 · 374 阅读 · 0 评论 -
16.ROS常用工具:Rviz/rqt
》》点赞,收藏+关注,理财&技术不迷路《《RViz(The Robot Visualization tool可视化工具):作用:把一些抽象的复杂的传感器信息以图像的方式传给我们,方便监控和调试。实例:运行rviz导入机器人:Add里面可以添加组件,但是一定要先运行 roslaunch!!!!!!必须有launch文件才可以!!机器人现在是白色的,因为现在frame是map的frame,我们应该调为机器人的frame。因为他都是默认打到map这个fra.原创 2020-08-24 21:28:52 · 1310 阅读 · 0 评论 -
15.ROS常用工具:Gazebo
》》点赞,收藏+关注,理财&技术不迷路《《Gazebo:其实除了Gazebo还有很多其他的仿真工具;V-Rep,Matlab,Carsim(无人驾驶)。Gazebo是和ROS兼容性最好的;因为Gazebo和ROS都是由OSRF这个组织开发的。仿真工具(模拟器)里面一定会有物理引擎。Gazebo兼容很多物理引擎,但它主要用默认用ODE物理引擎。实例:Roslaunch 环境(robot_sim_demo)鼠标基本操作:略具体可以上Gezabo官网查询。..原创 2020-08-24 21:28:15 · 349 阅读 · 0 评论 -
14.Action通信方式
》》点赞,收藏+关注,理财&技术不迷路《《升级版的service。在某些service情况下,server处理时间非常非常长,client不知道server到底在干嘛,所以这里我们需要Action.Server——>Client:Status——>server所处状态;result——>动作处理完后返回结果(一次)就是动作完成后;Feedback——>实时状态(多次)不断地返回状态。长时间:小车移动,机械臂移动,从A点移动到B点。等等可抢占:这个任原创 2020-08-24 21:27:44 · 264 阅读 · 0 评论 -
13.Parameter Server(参数服务器)
》》点赞,收藏+关注,理财&技术不迷路《《这里不管是talker或者listener都可以去找到 master设置一个变量,比如上图,Talker找到了master 设置了一个变量 setParam(“foo”,1)设置了一个叫作“foo”(参数名)的变量,储存数值为 ‘1’。listner就可以访问master我需要一个叫作foo变量的参数,然后master就会传给listener。比如现在listner已经获得了参数foo的值是 1,但是要是这个时候 talker修改了参数值为2,l原创 2020-08-24 21:26:57 · 260 阅读 · 0 评论 -
12.Topic VS Service
》》点赞,收藏+关注,理财&技术不迷路《《Tpoic VS ServiceRPC:在一个进程(node)里面去调用另一个进程(node)的函数原创 2020-08-24 21:26:26 · 64 阅读 · 0 评论 -
11.Service通信
》》点赞,收藏+关注,理财&技术不迷路《《右边的node就是摄像头,检测所有人的动作,然后把所有pose发送到 /pose,node左边的就是偶尔需要需要某些人体动作,所以不是全部需要。这样就很麻烦。没有人调用service就不会执行,有人调用它才会执行。比如上面例子,人体识别的node写成一个server,其他程序如果需要人体坐标,就来调用这个服务,然后计算好了人体坐标再把结果传出来,如果不要,他就不会用。同步:client发完一个请求后,就一直在原地等着,会被阻塞,直到nodeB (原创 2020-08-24 21:25:43 · 387 阅读 · 0 评论 -
10.以小海龟为例讲解通信方式
》》点赞,收藏+关注,理财&技术不迷路《《1.设置roscoreturtlesim ———— $ rosrun turtlesim turtlesim_node ———— 运行海龟海龟键盘操作 ———— $ rosrun turtlesim turtle_teleop_key ———— 运行对它的键盘我们现在来查看一下:2.ROS Topics刚才打开的turtlesim_node 和turtle_teleop_key 两个node就是通过Topic通信的。.原创 2020-08-24 21:24:27 · 270 阅读 · 0 评论 -
9.ROS的通信方式 & topic通信
》》点赞,收藏+关注,理财&技术不迷路《《总共有四种通信方式。Topic是最常用的通信方式。Topic 通信方式:ROS中最常用的通信方式:Topic(topic是以/开头的)Topic类似于一个频道,A在里面发消息,B订阅这个频道,然后从topic中获取A发送的信息。(采用的是发布和订阅这种消息传递形式,是单向的!!!!!!)什么是异步?比如我的node1,是一个摄像头程序,它可以发送一些topic,比如它可以发送RGB图像信息,有些有深度传感器的可以.原创 2020-08-23 03:12:27 · 1099 阅读 · 0 评论 -
8.master/node/运行一个简单例子
》》点赞,收藏+关注,理财&技术不迷路《《一个管家:master (节点管理器)Master有两个功能(如下),节点之间可以相互联系,但是一定会先联系master,然后通过master介绍认识其他node,然后再node直接由联系。Roscore(启动master,$roscore)Rosout 就是告诉我们现在有什么error 有什么warning然后把它记录下来。Parameter server: 做一些参数介绍(日后讲)Node(ROS的进程):一.原创 2020-08-23 03:11:51 · 228 阅读 · 0 评论 -
7.简单实操
》》点赞,收藏+关注,理财&技术不迷路《《创建一个工作空间:xiangliu@xiangliu-virtual-machine:~$ mkdir -p catkin_ws/src这里加 -p是因为:mkdir [-p] dirName参数说明:-p 确保目录名称存在,不存在的就建一个在工作目录下,建立一个名为 AAA 的子目录 :mkdir AAA在工作目录下的 BBB 目录中,建立一个名为 Test 的子目录。 若 BBB 目录原本不存在,则建立一个。(注:本例原创 2020-08-23 03:11:18 · 156 阅读 · 0 评论 -
6.常用的软件包管理指令
》》点赞,收藏+关注,理财&技术不迷路《《Rosdep和第五点不一样的地方就是,rosdep是从github上面克隆下来的依赖。Rospack find 名字xiangliu@xiangliu-virtual-machine:~$ rospack find test2(定位包的路径)/home/xiangliu/catkin_ws/src/test2Rospack listRosdepRosls:要么roscd进入该文件夹再ls,或者直接从外部rosls显示x原创 2020-08-23 02:25:31 · 105 阅读 · 0 评论 -
5. ROS中的包(package)
》》点赞,收藏+关注,理财&技术不迷路《《基本定义:ROS本质上就是有一个又一个的package组成的,package可以说是ROS的细胞。在catkin_make的时候它会一个一个的去找package然后生成目标文件。一个package可以有多个节点。判断是否为Package :一个文件夹要被ROS认为是package的话,必须包含以下两个文件:这两个文件必不可少:1.编译规则 2. 自我描述Package 组成与结构:CMakeLists.txt.原创 2020-08-23 02:24:37 · 716 阅读 · 0 评论 -
4. 简单创建一个ROS工作区
》》点赞,收藏+关注,理财&技术不迷路《《$ mkdir -p〜/ catkin_ws / src$ cd〜/ catkin_ws /$ catkin_make该catkin_make命令是与工作的便捷工具柳絮工作区。第一次在工作区中运行它,它将在“ src”文件夹中创建一个CMakeLists.txt链接。请注意,对于Arch Linux用户,干净的catkin工作区中的第一个catkin_make命令必须为:$ catkin_make -DPYTHON_EXECUTABLE.原创 2020-08-23 02:23:58 · 431 阅读 · 0 评论 -
3. ROS的文件系统(工程结构)
》》点赞,收藏+关注,理财&技术不迷路《《Catkin + 工作空间:rosbuild已经不用!Catkin 是 ROS定制的编译构建系统,对CMake的扩展。总之,Catkin就是用来编译ROS程序的。Catkin工作空间,就是一个文件夹。,组织和管理功能包的文件夹,以catkin工具编译。对它的创建,克隆修改之类的,都在这个文件夹中完成。Catkin_make(建立工作空间):其实catkin_make最主要的功能是编译,我们写完了代码要catkin_mak.原创 2020-08-23 02:23:18 · 173 阅读 · 0 评论 -
2. ROS安装(官网教程/简单好用)
》》点赞,收藏+关注,理财&技术不迷路《《https://www.ros.org/ 本文翻译自官网安装教程,附上原网站目录:安装配置您的Ubuntu存储库配置Ubuntu存储库以允许“受限”,“ Universe”和“ Multiverse”。您可以按照Ubuntu指南中的说明进行操作。设置您的sources.list设置您的计算机以接受来自package.ros.org的软件。sudo sh -c'echo“ deb http://packa...原创 2020-08-23 02:22:58 · 3602 阅读 · 0 评论 -
1. ROS简介
》》点赞,收藏+关注,理财&技术不迷路《《目录:ROS (ROBOT OPERATION SYSTEM)什么是ROSROS就是现在用的最广的一个操作系统,一个机器人操作系统(类似于电脑的weindows,linux----)实际不是一个操作系统,二十类似于操作系统,用于连接真正操作系统(windows,linux等)和你写的程序。相当于一个中间件。ROS__框架:ROS最重要的一部分就是 框架。 很多时候讲ROS就是在讲他的通信框架分布..原创 2020-08-23 02:20:53 · 313 阅读 · 0 评论 -
ROS创建一个workspace最简易流程(附带解释)
》》点赞,收藏+关注,理财&技术不迷路《《创建一个ROS Workspace 的方法总结:mkdir -p ~/catkin_ws/srccd ~/catkin_ws/srccatkin_init_workspacecd ~/catkin_ws/catkin_makesource devel/setup.bash1.mkdir -p ~/catkin_ws/src解析:在 /home/你的用户名目录/ 下创建一个ROS工作空间,即文件夹catkin_ws,原创 2020-08-23 02:17:48 · 585 阅读 · 0 评论