
ROS1
文章平均质量分 76
小海聊智造
专注于设计和构建可扩展、高性能和可靠的软件系统。我拥有十年以上的行业经验,涵盖多个领域,包括企业级应用、云计算,AI智能 和大数据处理。
热衷于解决复杂的技术挑战,并通过创新的架构设计提供可持续的解决方案。我具备深厚的技术功底,熟悉多种编程语言和技术栈,如Java、Python、go等, 熟悉微服务架构和分布式系统设计。我善于分析业务需求和技术要求,提供可行的技术方案,并在团队中推动其实施和落地。
展开
-
ROS1 的通信机制
ROS是一个分布式框架,为用户提供多节点(进程)之间的通信服务,所有软件功能和工 具都建立在这种分布式通信机制上,所以ROS的通信机制是最底层也是最核心的技术。在大多数应用场景下,尽管我们不需要关注底层通信的实现机制,但是了解其相关原理一定会帮助我们在开发过程中更好地使用ROS。以下就ROS最核心的三种通信机制进行介绍。原创 2023-09-28 14:45:18 · 577 阅读 · 0 评论 -
ROS1 学习 Gazebo仿真
material 属性的作用与link里中material属性的作用相同,Gazebo无法通过中的material参数设置外观颜色,所以需要单独设置,否则默认情况下Gazebo中显示的模型全是灰白色。使用xacro设计的机器人URDF模型已经描述了机器人的外观特征和物理特性,虽然已经具备在Gazebo中仿真的基本条件,但是,由于没有在模型中加入Gazebo的相关属性,还是无法让模型在Gazebo仿真环境中动起来。类似于机器人模型中的差速控制器插件,传感器的Gazebo插件也需要在URDF模型中配置。原创 2023-10-13 10:27:30 · 923 阅读 · 0 评论 -
Ros1 学习12- tf坐标系广播与监听的编程实现
实现步骤创建一程序订阅海龟的相对于world的位置,即海龟发布的/turtle_name/pose消息,接受到消息数据后,创建tf的广播器,并初始化tf数据,广播world与海龟坐标系之间的关系;然后,创建一程序产生第2只海龟turtle2,实时监听tf广播数据,依据turtle2与turtle1之间的坐标关系计算turtle2的速度,向turtle2发布速度控制指令,实现海龟turtle2跟踪turtle1。原创 2023-11-17 18:06:16 · 338 阅读 · 0 评论 -
ROS1 学习11 坐标系tf 管理系统 简介及demo示例
坐标系是我们非常熟悉的一个概念,也是机器人学中的重要基础,在一个完整的机器人系统中,会存在很多坐标系,这些坐标系之间的位置关系该如何管理?ROS给我们提供了一个坐标系的管理神器——TF。比如在机械臂形态的机器人中,机器人安装的位置叫做基坐标系Base Frame,机器人安装位置在外部环境下的参考系叫做世界坐标系World Frame,机器人末端夹爪的位置叫做工具坐标系,外部被操作物体的位置叫做工件坐标系,在机械臂抓取外部物体的过程中,这些坐标系之间的关系也在跟随变化。原创 2023-11-13 13:31:17 · 720 阅读 · 0 评论 -
ros1 基础学习10 -全局字典参数的定义,获取,改值
在ROS Master中,存在一个参数服务器(ParameterServer),它是一个全局字典,即一个全局变量的存储空间,用来保存各个节点的配置参数。各个节点都可以对参数进行全局访问。原创 2023-11-10 15:16:25 · 707 阅读 · 0 评论 -
ros1 基础学习09 -自定义service服务开发示例
build_depend为编译依赖,这里依赖的是一个会动态产生message的功能包exer_depend为执行依赖,这里依赖的是一个动态runtime运行的功能包。原创 2023-11-10 13:21:21 · 630 阅读 · 0 评论 -
ROS1 学习01 - 架构体系
ROS架构如图所示,可以将其分为三个层次:OS层、中间层和应用层。原创 2023-09-28 13:39:39 · 263 阅读 · 0 评论 -
ros1 基础学习08- 实现Server端自定义四 Topic模式控制海龟运动
通过自定义名为 /turtle_command 的Service实现,中间传输消息的数据类型为std_srvs::Trigger(一种针对服务标准std_srvs下的数据定义)来通信。Server端接收这个Trigger信号后,可控制其是否要给海龟发送Twist指令,同时给Client发送Response反馈告诉它海龟的运动状态。Server端本身是进行模拟海龟运动的命令端,它的实现是通过给海龟发送速度(Twist)的指令,来控制海龟运动(本身通过Topic实现)。ROS Master负责管理节点。原创 2023-11-09 19:02:20 · 308 阅读 · 0 评论 -
ros1 基础学习07 - 模拟客户端生成小乌龟服务请求生成小乌龟
Sever端是海龟仿真器/turtlesim,Client端是待实现的程序,其作为Response的节点,并产生Request的请求,发给Server端。Server端收到Request请求后产生一只海龟,回馈一个Response给Client海龟产生是否成功。Service的名称为/spawn,中间传输消息的数据结构为turtlesim::Spawn。从图中可以看到下面的那个小乌龟就是通过启动模型客户端的动作产生的。如有权限问题切到root 用户继续执行。通过一下的命令就可以生成第二个小乌龟。原创 2023-11-09 18:49:23 · 795 阅读 · 0 评论 -
ros1 基础学习04- 自定义Publisher消息编程实现示例
cd进入工作空间下的代码空间, 创建功能包,并配置依赖在功能包里面的代码空间里编写C++代码文件在cmakelist文件里面配置编译规则cd到工作空间,编译工作空间,source设置环境变量打开roscore, 运行海龟仿真节点,运行功能包里发布者的节点。原创 2023-11-07 17:06:10 · 367 阅读 · 0 评论 -
ros1 基础学习05- 自定义订阅者Subscriber的编程实现
Publisher(Turtle Velocity),发布Message(即海龟的速度信息,以geometry_msgs::Twist的数据结构,包括线速度和角速度),通过Topic(/turtle1/cmd_vel)总线管道,将数据传输给Subscriber。“/turtle1/cmd_vel”这个topic是海归仿真器节点/turtlesim下自带的topic,可直接拿来用。我们需要在src里创建C++的代码文件以输入代码,文件名称为:pose_subscriber.cpp。在回调函数中完成消息处理。原创 2023-11-07 18:12:44 · 420 阅读 · 0 评论 -
ros1 基础学习06- 自定义topic 主题的发布,监听以及和消息体的定义
需要加入编译依赖和执行依赖,编译和执行均需要相关依赖功能包,在package.xml文件中添加以下内容。在Person.msg中输入如下内容完成.msg文件的创建,msg文件是ROS独有的格式。这样自定义topic 的发布和订阅就已经完成了,有问题评论区见。右键打开命令框,输入 touch Person.msg。就会在msg 目录下新增 Person.msg 文件。在功能包的下面新建 msg 文件夹,如下图所示。回到catkin_ws 再编译。原创 2023-11-08 11:43:35 · 779 阅读 · 0 评论