ROS
文章平均质量分 61
Overboom
这个作者很懒,什么都没留下…
展开
-
[ros] --- 配置ros主从机
ROS支持多机互通,可以设置一台主机,多台从机,主机中运行roscore,启动master节点,从机直接运行其他节点,在配置好的机器之间就可以互相通信了,就像在同一台机器上一样。具体应该如何配置呢?详细步骤如下:1、IP设置一个主机,多个从机,每个先都设定为同一网段下固定IP。2、修改~/.bashrc文件主从机都需要修改~/.bashrc文件,添加以下内容:主机中添加:从机中添加:注意,在这里的ROS_MASTER_URI指明的是作为主机的IP,因此主机从机这里要设置为一致的IP,另外最好加原创 2022-06-11 12:43:04 · 3049 阅读 · 0 评论 -
[ros robot] --- 机器人系统仿真
1 机器人系统仿真概念机器人系统仿真:是通过计算机对实体机器人系统进行模拟的技术,在 ROS 中,仿真实现涉及的内容主要有三:对机器人建模(URDF)、创建仿真环境(Gazebo)以及感知环境(Rviz)等系统性实现。2 机器人系统仿真相关组件机器人的系统仿真是一种集成实现,主要包含三部分:URDF 用于创建机器人模型Gzebo 用于搭建仿真环境Rviz 图形化的显示机器人各种传感器感知到的环境信息三者应用中,只是创建 URDF 意义不大,一般需要结合 Gazebo 或 Rviz 使用,在 G原创 2022-05-11 13:08:28 · 1241 阅读 · 0 评论 -
[ROS常用组件] --- rqt工具箱
1 认识rqt概念:ROS基于 QT 框架,针对机器人开发提供了一系列可视化的工具,这些工具的集合就是rqt作用:可以方便的实现 ROS 可视化调试,并且在同一窗口中打开多个部件,提高开发效率,优化用户体验。组成:rqt 工具箱组成有三大部分rqt——核心实现,开发人员无需关注rqt_common_plugins——rqt 中常用的工具套件rqt_robot_plugins——运行中和机器人交互的插件(比如: rviz)2 rqt常用插件:rqt_graph简介:可视化显示计算图启动原创 2022-05-11 13:08:14 · 1920 阅读 · 0 评论 -
[ROS常用组件] --- rosbag
1 认识rosbag概念:是用于录制和回放 ROS 主题的一个工具集。作用:实现了数据的复用,方便调试、测试。本质:rosbag本质也是ros的节点,当录制时,rosbag是一个订阅节点,可以订阅话题消息并将订阅到的数据写入磁盘文件;当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息。2 rosbag使用_命令行需求:ROS 内置的乌龟案例并操作,操作过程中使用 rosbag 录制,录制结束后,实现重放实现:1.准备创建目录保存录制的文件mkdir ./xxx原创 2022-05-11 13:08:01 · 925 阅读 · 0 评论 -
[ROS基础] --- TF坐标转换
1 TF坐标转换概念tf:TransForm Frame,坐标变换坐标系:ROS 中是通过坐标系统开标定物体的,确切的将是通过右手坐标系来标定的。TF左边转换作用:在 ROS 中用于实现不同坐标系之间的点或向量的转换。说明在ROS中坐标变换最初对应的是tf,不过在 hydro 版本开始, tf 被弃用,迁移到 tf2,后者更为简洁高效,tf2对应的常用功能包有:tf2_geometry_msgs:可以将ROS消息转换成tf2消息。tf2: 封装了坐标变换的常用消息。tf2_ros:为tf2提原创 2022-05-11 13:07:43 · 1398 阅读 · 1 评论 -
ros::spin ros::spinOnce使用细节
1 ros::spin()代码示例Person.msgstring nameuint8 ageuint8 sexuint8 unknown = 0uint8 male = 1uint8 female = 2person_publisher.cpp#include <ros/ros.h>#include "learning_topic/Person.h"int main(int argc, char **argv){ // ROS节点初始化原创 2022-04-11 22:10:17 · 582 阅读 · 0 评论 -
[ROS基础] --- 创建工作空间
0 引言我们在windows下使用集成IDE创建工程的时候,是不需要自己手写cmake/makefile去管理工程的,但是在linux下新建c/cpp项目的时候,在创建文件夹的时候,就需要想好文件的层级结构,以及手动编写cmake/makefile管理工程。在linux下怎么创建ros项目呢?我个人理解,ros相当于一个集成的IDE,我们用对应的指令去创建项目的时候,系统会自动生成管理项目的cmake文件。1 ROS文件系统在介绍怎么创建ros项目之前,先要理解ROS文件系统的相关概念。ROS文原创 2022-04-11 22:09:39 · 3429 阅读 · 0 评论 -
[ROS通信机制] ---话题通信
1 话题通信模型话题通信模型涉及三个角色,如下图所示:ROS master : 管理者Talker / Publisher :发布者Listener / subscriber :订阅者ROS Master 负责保管 Talker 和 Listener 注册的信息,并匹配话题相同的 Talker 与 Listener,帮助 Talker 与 Listener 建立连接,连接建立后,Talker 可以发布消息,且发布的消息会被 Listener 订阅。2 话原创 2022-04-11 22:09:18 · 268 阅读 · 0 评论 -
[ROS通信机制] ---话题通信之自定义msg类型
0 自定义msg引入背景在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如: 激光雷达的信息… std_msgs 由于描述性较差而显得力不从心,这种场景下可以使用自定义的消息类型.1 自定义msg类型1> 定义msg文件功能包下新建msg文件夹,添加原创 2022-04-11 22:08:50 · 570 阅读 · 0 评论 -
[ROS通信机制] --- 服务通信
1 服务通信理论模型服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色:ROS master(管理者)Server(服务端)Client(客户端)ROS Master 负责保管 Server 和 Client 注册的信息,并匹配话题相同的 Server 与 Client ,帮助 Server 与 Client 建立连接,连接建立后,Client 发送请求信息,Server 返回响应信息。整个流程由以下步骤实现:0> Server注册Server 启动后,会通过原创 2022-04-11 22:08:15 · 337 阅读 · 0 评论 -
[ROS通信机制] --- 参数服务器
1 参数服务器理论模型参数服务器实现是最为简单的,该模型如下图所示,该模型中涉及到三个角色:ROS Master (管理者)Talker (参数设置者)Listener (参数调用者)ROS Master 作为一个公共容器保存参数,Talker 可以向容器中设置参数,Listener 可以获取参数。整个流程由以下步骤实现:1.Talker 设置参数Talker 通过 RPC 向参数服务器发送参数(包括参数名与参数值),ROS Master 将参数保存到参数列表中。2.Listener原创 2022-04-11 22:07:11 · 730 阅读 · 0 评论 -
[ros基础] --- roslaunch使用详解
1 为什么需要launch文件在节点少,程序小的情况下可以一个一个节点来启动,测试运行效果;但是当工程规模大,需要的节点多时就显得比较费劲,用.launch文件来启动可以将需要的节点同时启动,不用再一个一个进行。为工程搭建提高了效率,里面还有很多参数灵活使用会带来非常高效的调试。roslaunch的概念:launch 文件是一个 XML 格式的文件,可以启动本地和远程的多个节点,还可以在参数服务器中设置参数。NOTE:roslaunch 命令执行launch文件时,首先会判断是否启动了 rosco原创 2022-04-11 22:06:25 · 12976 阅读 · 0 评论 -
ROS错误及其解决方法
新建工作空间,在执行catkin_make的时候报错The specified base path “/home/ghy/catkin_qt” contains a CMakeLists.txt but “catkin_make” must be invoked in the root of workspace…..解决方法:unlink ./CMakeLists.tx原创 2022-03-16 22:34:11 · 940 阅读 · 0 评论 -
ros中获取包路径
ROS 环境中可以使用ros::package ::getPath来实现类似的C++路径获取ros::package ::getPath路径获取正确方法1.cpp文件:头文件 #include <ros/package.h>ros::package::getPath(package_name.toStdString())2.cmake:find_package(roslib)catkin_package(INCLUDE_DIRS includeLIBRARIES ${PRO原创 2022-03-16 22:31:58 · 1511 阅读 · 0 评论