ROS2学习笔记
文章平均质量分 65
ROS2学习个人笔记
Raine_Yang
这个作者很懒,什么都没留下…
展开
-
ROS2自学笔记:动作
动作是ROS2中一个通信机制,一般分为发送指令,汇报进度,汇报任务完成的步骤。动作有以下特定:1 客户端,服务器模型:双向通信机制2 服务器端唯一,客户端不唯一3 同步通信:因为要定期反馈信息,所以需要同步通信4 消息接口类型.action动作为应用层通信机制,其底层为话题和服务。发送开始和结束任务利用服务,而定期反馈利用话题监测动作信息显示动作列表显示一个动作详细信息发送动作请求:发送动作请求并接受反馈示例:模拟旋转机器人发送动作请求旋转360度,程序每旋转30度会进行一次反馈,最终显示是否原创 2022-06-25 16:37:31 · 649 阅读 · 0 评论 -
ROS2自学笔记:通信接口
通信接口是任何通信(话题,服务,动作)的一个规范类型。通信时收发的数据要满足接口要求通信接口定义方式:1 话题为单向传输,因此只要说明要发送的数据,如:话题接口类型为.msg文件2 服务为双向传输,要说明请求和应答数据,中间用—隔开:服务接口类型为.srv文件3 动作要求三部分:目标,结果,反馈:ROS2官方自带通信接口:打开位置:computer->other location->opt->ros->foxy->share话题接口(msg):更简单的办法是使用终端指令显示所有接口查询原创 2022-06-22 22:39:25 · 987 阅读 · 0 评论 -
ROS2自学笔记:服务
服务是ROS2一种通信方式,具有以下特点:1 客户端,服务器模型:不同于话题单向通信,服务可以进行双向通信,客户端发起请求,服务器端进行应答2 同步通信机制:通信双端同步通信,如果一方无法收到会发送另一端3 服务端唯一,客户端不唯一:一对多通信4 .srv文件定义请求和应答数据结构:服务通信消息类型为.srv示例1 加法计算器客户端说明:1 from learning_interface.src import AddTwoInts引入服务接口类型AddTwoInts2 self.client原创 2022-06-19 17:53:00 · 1203 阅读 · 0 评论 -
ROS2学习笔记:Launch脚本
这一步把所有launch文件夹下,config文件夹下,和rviz文件夹下的文件进行声明(*代表所有文件),这样编译器会把这些文件复制到install文件夹下,可以后续运行。文件在learning_launch功能包,launch文件夹下parameters_nonamespace.launch.py文件。在一些大型系统可能会有多个launch文件,可以把多个launch文件嵌套在一个launch文件会更方便。对节点重命名为rviz2。在launch文件里可以覆盖节点在源码里的名称,进行重命名。...原创 2022-07-21 09:40:56 · 869 阅读 · 0 评论 -
ROS2自学笔记:参数
参数为ROS2系统中的全局字典,类似于编程语言里的全局变量,具有以下特点:1 全局共享字典2 由键和值构成3 可以动态监控,在一个程序里对参数的修改在其他程序里也会生效在终端操作参数:1 查询参数列表2 获取参数描述3 获取参数4 修改参数5 保存参数保存一个节点全部参数如果要保存参数到另一个文件,可以使用重定向将终端信息保存到一个yaml文件里(参数文件类型为yaml)6 读取参数将一个节点所有参数设为保存的参数文件里的值示例1在程序中创建,读取,修改参数1 self.timer原创 2022-07-05 16:27:12 · 2140 阅读 · 0 评论 -
ROS2学习笔记:DDS
DDS里所有节点可以在DataBus发布和订阅消息,不过DataBus有许多并行通路,各个节点互不干扰。这里QoS设为reliable,和前者不符。会发现订阅者尽管订阅的话题名称和发布者一致,但由于QoS不同无法通信。在创建发布者对象时,第三个参数之前讲是消息队列长度,也可以为qos原则。还是利用helloworld话题通信程序作为例子,不过在这里我们为发布者和订阅者都配置QoS设置。创建订阅者对象,在这个第四个参数确定了订阅者使用的QoS标准。定义QoS原则,这里要和发布者保持一致,否则无法通信。...原创 2022-07-18 16:17:16 · 966 阅读 · 0 评论 -
ROS2自学笔记:Rviz可视化工具
rviz订阅其他节点话题,得到数据,并将数据渲染为图像。调用相机驱动libgazebo_ros_camera.so,可以重定向话题名称改为自己要取的名字。rviz为显示平台,可以显示获得的二维或三维信息,数据来源可以为gazebo也可为其他方式。gazebo为仿真平台,在没有实体机器人时可以使用gazebo模拟机器人环境。宏定义相机模块,名称usb_camera,参数prefix(用于补全名称)设置相机画面宽1280,高720,颜色空间类型R8G8B8。设置相机外观与位置,盒型,黑色。...原创 2022-07-23 10:14:00 · 2156 阅读 · 0 评论 -
ROS2自学笔记:RQT可视化工具
severity代表日志级别,分为debuginfowarnerrorfatal,越往右等级越高,点击一个栏目可以取消显示该等级信息。RQT还可以请求服务,选择Plugins->services->servicecaller。点加号新建话题,话题选turtle1/cmd_vel,消息类型会自动识别为Twist。可以在界面里点击修改参数,勾选该话题会实现发布,修改Freq可以改变发布频率。运行海龟模拟器,让海龟撞墙,可以显示RQT显示打印的日志信息。RQT可以快捷发布,修改话题。...原创 2022-07-23 10:56:32 · 1541 阅读 · 0 评论 -
ROS2自学笔记:TF坐标管理
创建广播器对象,该对象在ROS2里是定义好的,在前面fromgeometry_msgs.msgimportTransformStamped即可。创建订阅者获取海龟动作信息,消息类型为Pose,消息名称为参数turtlename/pose,相当于订阅该海龟位置信息(Pose),回调函数turtle_pose_callback,缓存为1。这里两个节点都为turtle_tf_broadcaster,用于发布位置坐标,不过通过名称进行区分,并且传入参数分别为turtle1和turtle2。...原创 2022-07-21 15:40:39 · 1911 阅读 · 0 评论 -
ROS2自学笔记:Gazebo物理仿真平台
4对于之后可能多次使用的link和joint也使用宏定义封装,这里对轮子的宏定义包括了link,和车底座的joint,颜色,驱动装置。找到mbotlaunch文件路径,learning_gazebo功能包,launch文件夹,mbot.launch.py文件。创建node_robot_state_publisher节点,设置功能包,可执行文件,输出,参数。在文件开头把所有用到的常数,如机器人尺寸,进行宏定义,这样在之后修改时只需要修改常数,而不用在程序里找每一处数据。prefix参数用于补全车轮名称(...原创 2022-07-22 16:42:38 · 2005 阅读 · 1 评论 -
ROS2自学笔记:URDF机器人建模
childlink为连接并在parentlink上运动的link,此处为left_wheel_link。2包含link和joint,link为刚体部分,joint为连杆,驱动部分。一般机器人可以分为以下四个部件硬件系统,驱动系统,传感系统,控制系统。parentlink为被连接的link,此处为base_link。描述机器人外观,物理属性,碰撞体积,每个link会成为一个坐标系。该机器人有一个圆柱底座,两个驱动轮,两个支撑万向轮。设置形状为圆柱,高0.16m,半径0.20m。...原创 2022-07-22 09:46:16 · 895 阅读 · 0 评论 -
ROS2自学笔记:launch文件完整编写流程
launch文件可以放在任何文件夹下。对于一个对应节点的launch文件可以放在该节点功能包下,但是如果一个launch文件对应多个节点,最好在工作空间里新建一个功能包(ament_cmake和ament_python都可以,只是之后配置会有一点不同)在功能包initiator下创建文件夹launch,launch文件夹下创建launch文件,同时删除功能包里原有src和include文件夹。在launch文件功能包的package.xml文件下对launch文件要启动的节点所对应功能包进行声明。...原创 2022-08-01 18:44:33 · 2352 阅读 · 1 评论 -
ROS2自学笔记:机器视觉基础
一般分为采集图像,分析图像,和输出结果。采集过程即为把光信号转换为数字信号,一般依靠光源和相机。分析过程即为特征提取,标记等操作,最后转化为输出的机器人动作或可视化显示。安装ros2相机标准节点,该节点读取摄像头信息并发布图像,支持各种类型的usb相机。image_raw代表原图,原图一般数据量较大,如果要通过无线传输会较慢。image_raw_compressed为压缩后图片,一般可以压缩70%-s代表plugin,即RQT要显示的数据类型。注要在RQT界面里选择要订阅的话题才能显示图片。...原创 2022-08-02 16:04:02 · 2306 阅读 · 0 评论 -
ROS2自学笔记:工作空间和功能包
工作空间:存放项目开发相关文件的文件夹ROS2工作空间一般有这几块:src 代码空间,存储代码install 安装空间:存储编译好的文件build 编译空间:存储编译中间文件log 日志空间:存储编译及运行中的日志文件可以创建多个工作空间创建工作空间:在home下新建文件夹dev_ws,在dev_ws里创建文件夹src安装pip安装rosdepc,rosdepc是国内版rosdep,由于rosdep要连接外网,速度很慢且经常连接失败,rosdepc可以快速初始化安装后初始化rosdepc使用r原创 2022-06-17 21:21:16 · 660 阅读 · 0 评论 -
Ubuntu安装ROS2完整教程和踩坑经历
使用设备:虚拟机,Ubuntu 20.04LTS系统安装ROS2 Foxy1 设置编码:2 添加源到这一步很大概率会报错:这里首先查找raw.githubusercontent.com的IP地址::https://www.ipaddress.com把找到的IP地址复制到host文件加入地址:(前面的IP地址以查到的数字为准)下一步:3 安装ROS2对于新加入的源,这一步可能出现没有公钥,由于安全问题不可更新报错信息会提示要加入的公钥,输入以下指令:这一步很可能出现网络连接不稳定,导致无法下载原创 2022-06-15 00:08:05 · 5752 阅读 · 3 评论 -
ROS2自学笔记:开发环境配置
安装git:安装vscode进入官网https://code.visualstudio.com/下载linux版本deb文件在官网下载会很慢,在这里可以通过更换国内镜像加速:1 右键下载进度条,复制下载链接2 将下载地址复制到新地址栏,并把原地址里az764295.vo.msecnd.net改vscode.cdn.azure.cn例如:https://az764295.vo.msecnd.net/stable/7f6ab5485bbc008386c4386d08766667e155244e/VSCo原创 2022-06-17 20:12:02 · 558 阅读 · 0 评论 -
ROS学习笔记1:基本命令示例
linux打开命令行快捷键ctrl+alt+Tctrl + C 停止当前任务Linux命令:pwd: 显示当前路径ls:显示目录下文件ls -a:显示隐藏文件 (隐藏文件以 . 开头)mkdir 文件名:创建文件夹touch 文件名:创建文件ROS2命令:ros2 run 功能包 节点: 运行某个功能包里具体一个功能节点ros2 node:ros2 node list:显示正在运行的节点ros2 node info 节点:显示一个节点的信息ros2 topic:ros2 topic原创 2022-06-16 22:10:19 · 204 阅读 · 0 评论 -
ROS2自学笔记:话题
话题实现节点之间的通讯。话题有这样几个基本特定:1 发布、订阅模型:发出一个话题的节点称为发布者,接受一个话题的节点称为订阅者2 订阅者和发布者不唯一:每一个节点都可以发布或订阅话题,实现多对多通信3 异步通信:一个话题发布后可以在之后被订阅4 .msg文件定义通信的消息结构:话题通信有着标准的通信格式,称为消息示例:hello world发布及订阅发布者:1 from std_msgs.msg import String导入String消息类型2 self.pub = self.create原创 2022-06-18 18:33:01 · 3374 阅读 · 1 评论 -
ROS2 自学笔记:节点
节点是执行具体任务的一个进程,是机器人的“细胞”,具有以下特点:1 节点为独立的可执行文件2 节点可以使用不同编程语言3 节点可以分布式运行在不同主机4 节点通过节点名称进行管理节点的生命周期:1 编程接口初始化2 创建节点并初始化3 实现节点功能4 销毁节点并关闭接口示例:hello world输出面向过程版本:程序说明:1 from rclpy.node import Node我们这个程序作为一个节点,因而要引入Node库2 rclpy.init(args=args)初始化p原创 2022-06-18 17:29:44 · 1315 阅读 · 0 评论