
ROS学习笔记
文章平均质量分 83
2022年,自己终于考上了自己心仪学校的研究生,即将开启一段充满挑战与惊喜的旅程。拟录取之后,在家闲来无事,打算学习一下ROS来为自己的研究生生涯做好准备。
Ubuntu系统版本:20.04
老师推荐:赵虚左(奥特学园)
摇滚马侬
知识的广度来自知识的深度。
展开
-
二十九、URDF集成Rviz基本流程
在rviz中显示一个盒状机器人。原创 2022-10-09 21:15:08 · 727 阅读 · 0 评论 -
二十七、rqt常用插件
【代码】二十七、rqt常用插件。原创 2022-10-01 16:02:14 · 885 阅读 · 0 评论 -
二十六、rosbag功能包
对于传感器获取到的信息,有两种处理方式,一种是实时处理,另一种是先存储起来,后期在进行处理。显然,第二种处理方式更加灵活,在ROS中,提供了rosbag功能包来进行数据的存储和读取。rosbag本质上也是一个节点,在录制信息时,是一个订阅者,在回放信息时是一个发布者,因此也可以用以下命令进行数据的录制回放。原创 2022-10-01 11:34:30 · 1556 阅读 · 0 评论 -
二十五、TF坐标变换实操
创建turtle2,用于跟随turtle1发布相对于世界坐标系的乌龟坐标根据坐标计算turtle2的线速度和角速度。原创 2022-09-23 22:31:25 · 756 阅读 · 0 评论 -
二十四、TF坐标变换(四):多坐标变换及坐标系关系查看
在父级坐标系world下,有两个子级坐标系son1,son2,已知两个子级坐标系相对于父级坐标系的关系,求出son1相对于son2的坐标原点的关系,以及son1中的一点相对于son2中的关系。这时,我们就可以先发布son1,son2相对于world的坐标关系,然后创建TF订阅对象,通过tf2功能包完成坐标转换。在ros系统中,可以通过相应的功能包生成树形结构的坐标系图谱。...原创 2022-07-21 19:04:07 · 1111 阅读 · 1 评论 -
二十三、TF坐标变换(三):动态坐标变换
所谓动态坐标变换,是指两个坐标系之间的相对位置是变化的代码运行:运行结果:2.2 订阅方实现代码实现:运行结果:三、Python实现3.1 发布方实现代码实现运行结果:3.2 订阅方实现代码实现:运行结果:四、时间戳相关(订阅方)在ROS中,程序先通过buffer存储订阅到的不同坐标系的相对关系,然后获取子级坐标系中的坐标点,二者通过时间戳进行匹配4.1 静态坐标变换在静态坐标变换中,不同坐标系的相对关系不变,所以时间戳时间既可以是当前的,原创 2022-07-11 22:47:52 · 870 阅读 · 0 评论 -
二十二、TF坐标变换(二):静态坐标变换
在一个小车上,雷达主体和小车主体的物理中心点不同,具有一定的偏移量。为了获得雷达探测到的物体相对于小车主体物理中心的坐标,需要知道雷达相对于小车主体的偏移量和旋转量,通过偏移量和旋转量进行坐标变换测试是否发布成功方法一:方法二:通过rviz输入命令rviz设置Fixed Frame,选择父级坐标系作为参考坐标系点击Add,选择TF即可,效果如下图所示订阅方实现:代码实现:运行结果:2.3 Python实现发布方实现订阅方实现原创 2022-07-10 11:52:24 · 1141 阅读 · 0 评论 -
二十一、TF坐标变换(一):坐标msg消息
在机器人运动的过程中,需要通过传感器感知周围物体的方位。由于传感器和机器人不在同一个坐标系中,所以需要坐标系的转换。在ROS中,直接封装了相关的模块:坐标转换(TF)在ROS系统中,是通过右手坐标系标定物体的,如下图所示:相对于tf,tf2更加简洁高效,常用的功能包有:tf2_geometry_msgs:可以将ROS消息转换成tf2消息。tf2: 封装了坐标变换的常用消息。tf2_ros:为tf2提供了roscpp和rospy绑定,封装了坐标变换常用的API...原创 2022-07-09 11:19:13 · 295 阅读 · 0 评论 -
二十、ROS分布式通信
ROS是一个分布式控制环境,这就需要不同计算机上的不同节点进行通信,通过网络设置,可实现不同计算机上的不同节点进行通信原创 2022-07-09 00:54:18 · 652 阅读 · 0 评论 -
十九、ROS 参数名称设置
在ROS中,参数名称可能出现重名,他不像话题重名那样,可以采用重映射加以解决。但是,可以通过添加不同的前缀,来区分不同的参数原创 2022-07-09 00:05:17 · 393 阅读 · 0 评论 -
十八、ROS话题名称设置
在ROS中,有时会出现话题名称重名现象,导致信息发布,接收不匹配;有时也需要话题名称不同的节点相互通信。这时,就需要使用话题名称重映射的方法来解决问题在ROS操作系统中,提供了ros-noetic-teleop-twist-keyboard键盘控制包,话题名为cmd_vel,在turtlesim功能包中,其键盘控制话题为/turtle1/cmd_vel,通过话题重映射,来实现二者的通信...原创 2022-07-08 21:43:28 · 1416 阅读 · 0 评论 -
十七、ROS功能包重名和节点名重名解决办法
所谓工作空间覆盖,是指在不同的工作空间中,存在重名的功能包的情形。在ROS开发中,在同一工作空间中,功能包不会重名。但是,不同的工作空间中,可能会出现功能包重名的现象。更新检索路径在根目录下:打印ROS功能包检索路径命令:可见,路径越靠后,优先级越高,功能包重名时,会按照优先级进行查找,优先级高的先被执行当含有重名功能包时,可能会出现执行异常的情况。比如,C功能包执行时,依赖A中的turtle功能包,但却执行了B中的turtle功能包,由于两个功能包重名,功能有差别,从原创 2022-07-02 23:49:57 · 2845 阅读 · 2 评论 -
十六、ROS的launch文件标签(二)
param rosparam arg group原创 2022-06-26 01:30:31 · 276 阅读 · 0 评论 -
十五、ROS的launch文件标签(一)
ROS中的launch文件标签原创 2022-06-25 11:42:14 · 262 阅读 · 0 评论 -
十四、ROS元功能包
当完成一个系统性的功能,可能涉及到不同的子功能包,为了提高安装功能包的效率,在ROS中,提供了一个可以将不同的功能包打包成一个的功能包的方式,直接调用打包后的功能包即可,该包成为元功能包(MetaPackage)该功能包是一个虚包,没有实质性的功能,但是它依赖了其他的软件包,可以通过这种方法将功能包组合起来...原创 2022-06-24 18:32:07 · 418 阅读 · 0 评论 -
十三、ROS中的头文件与源文件,Python模块导入
在功能包下的include/功能包名 目录下新建hello1.h头文件2. 配置c_cpp_propertise.json文件中的includepath属性需要加入自己编写的头文件路径3.编写可执行文件4. 配置CMakeLists.txt文件头文件配置可执行文件配置5.编译执行2、设计头文件,可执行文件与源文件分离1. 编写头文件2. 配置c_cpp_propertise.json文件中的includepath属性需要加入自己编写的头文件路径...原创 2022-06-23 22:22:39 · 1452 阅读 · 0 评论 -
十二、ROS常用API汇总(Python)
ROS常用API汇总(Python)原创 2022-06-17 21:18:05 · 2250 阅读 · 0 评论 -
十一、ROS常用API汇总(C++)
作用:初始化ROS节点参数:返回值:void使用:argc,argv: 按照ROS中的特定格式进行设置参数,那么ROS就可以使用这些参数,比如设置全局参数,参数服务器中的参数,给节点重命名等例:设置参数服务器中的参数options: 在ROS中,只能运行一个相同的节点,为了解决这一问题,引入了options选项,其原理是给相同的节点设置随机数,从而避免重复...原创 2022-06-16 23:57:39 · 1041 阅读 · 0 评论 -
十、参数服务器之参数的修改实现
在项目中,有一些功能是通过参数服务器实现的。有事,需要修改相应的参数,这时,我们就可以通过相关命令来获取相应参数,进而修改相应的参数原创 2022-06-15 11:26:38 · 243 阅读 · 0 评论 -
九、服务通信之客户端的替代实现
在服务通信中,有时需要我们新建一个客户端,这时候我们可以通过相关命令获取服务话题,数据类型,从而新建客户端对服务端发起请求。原创 2022-06-15 00:45:56 · 113 阅读 · 0 评论 -
八、话题通信之话题的替代与监听
在我们运行小乌龟案例的时候,我们可以通过方向键控制其运行,那我们怎么通过自己的代码来控制其运行呢。方法其实很简单,由于小乌龟的案例是通过话题通信的方式,那么我们就可以通过相关命令获取该通信的话题,话题所包含的消息类型以及详细信息,然后通过代码设置相应的话题即可。2.消息获取rostopic type 节点名/话题名返回结果:3.获取消息格式rosmsg info 消息名返回结果:其中,linear代表线速度,angular代表角速度,单位为弧度。在本项目中,线速度只有X方向,角原创 2022-06-14 23:08:43 · 512 阅读 · 0 评论 -
七、ROS常用命令(二):rosservice、rossrv、rosparam
七、ROS常用命令(二):rosservice、rossrv、rosparam原创 2022-06-08 12:30:06 · 3142 阅读 · 0 评论 -
六、ROS常用命令(一):rosnode、rostopic、rosmsg
ROS 常用命令原创 2022-06-08 11:05:57 · 2136 阅读 · 0 评论 -
五、参数服务器原理,代码实现
参数服务器类似于一个数据容器,用于多节点之间的数据共享,流程如下:数据类型:* 32-bit integers2、代码实现1.C++在C++中,有两套API可以完成相同的功能查删常用命令:原创 2022-06-04 22:55:44 · 381 阅读 · 0 评论 -
四、服务通信原理,代码实现
服务通信原理,代码实现原创 2022-06-02 22:50:28 · 486 阅读 · 0 评论 -
三、话题通信之创建自己的信息格式
1、流程1. 在功能包下创建msg文件夹,用于盛放.msg文件2. 定义Person.msg文件string nameuint16 agefloat64 height3. 编辑配置文件package.xml文件加入两个依赖包,第一个是编译时的依赖包,第二个是运行时的依赖包<build_depend>message_generation</build_depend><exec_depend>message_runtime</exec_depend原创 2022-05-27 20:51:45 · 146 阅读 · 0 评论 -
二、话题通信原理,代码实现
1、通信原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mD4FeHnd-1653135541680)(01话题通信模型.jpg)]整个通信过程分为六步,0-4步采用RPC协议,5-6步采用TCP协议。此外,第一步和第二步不分先后,但由于talker注册需要花费时间,可能导致订阅者无法接收到前几条消息,可通过设置延迟进行解决。0、talker注册talker通过RPC协议向master注册节点信息:话题名:barRPC地址:12341、listener注册原创 2022-05-21 20:20:08 · 652 阅读 · 0 评论 -
一、境外资源屏蔽,helloworld,Terminator,VsCode与ROS实现,lanuch文件,ROS命令,ROS计算图
进入src文件夹,添加一来进入功能包的src文件创建helloworld_c.cpp文件编辑ROS包下的Cmaklists.txt文件进入工作空间再次编译(一共编译两次)执行注意:source ./devel/setup.bash 只能在当前终端下运行ROS节点,新的终端需要重新运行source ./devel/setup.bash 命令,才能运行ROS节点,解决办法:法一:直接编辑.bashrc文件,最后添加source ./devel/setup.bash (需要crtl+原创 2022-05-15 22:29:49 · 370 阅读 · 0 评论