拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

挑战一周学会ROS(第六天)

挑战一周学会ROS(第六天)

话题通讯/服务通讯的比较:
两者的实现流程是比较相似的:

1,消息的发布方/客户端

2,消息的订阅方/服务端

3,话题名称

4,数据载体

哎呀呀,很久没更新了,其实不是懒而是前面的那些其实你找一个博主随便敲敲都能搞出来,一定注意细节,其他的都是照猫画虎,接下来登场的才是真正黄金的地方

静态坐标变换

一句话搞定:

rosrun tf2_ros static_transform_publisher x偏移量 y偏移量 z偏移量 z偏航角度 y俯仰角度 x翻滚角度 父级坐标系 子级坐标系

乌龟的跟随仿真

实现流程:

1,先启动乌龟的GUI(用户图形界面),生成一只新的小乌龟

2,创建两个乌龟相对于世界坐标系的发布(同一个节点启动两次,传入不同的参数turtle1 turtle2)

3,订阅并转换成turtle1 turtle2之间的相对关系

4,计算速度消息并发布(线速度,角速度)

python版本实现

这个内在逻辑其实很有东西:

组合逻辑

两个速度同时下发:

  1. 只要存在距离,就持续向前走;
  2. 只要目标不在正前方,就同步转向对准目标;
  3. 当 turtle1 和 turtle2 完全重合时:dx=0, dy=0,线速度、角速度全部变为 0,乌龟自动停下。

rosbag

机器人传感器获取到的信息,有时需要实时处理,有时可能只是采集数据,事后分析

本质:

rosbag本质也是ros的节点,当录制的时候,rosbag是一个订阅节点,可以订阅话题消息并将其订阅到的数据写入磁盘文件,当重放时,rosbag是一个发布节点,可以读取磁盘文件,发布文件中的话题消息

rosbag实现录制和重放

rosbag写入文件

#! /usr/bin/env python import rospy import rosbag from std_msgs.msg import String """ 需求:写出消息数据到磁盘上的bag文件 流程: 1.导包 2.初始化 3.创建rosbag对象并且打开文件流 4.写数据 5.关闭流 """ if __name__ =="__main__": #2.初始化 rospy.init_node("write_bag_p") #3.创建rosbag对象并且打开文件流 bag = rosbag.Bag("hello_p.bag","w") #4.写数据 msg = String() msg.data = "hello bag!" bag.write("/liaoTian",msg) bag.write("/liaoTian",msg) bag.write("/liaoTian",msg) bag.write("/liaoTian",msg) bag.write("/liaoTian",msg) #5.关闭流 bag.close()

以python文件的形式实现读文件

#! /usr/bin/env python import rospy import rosbag """ 需求:读取磁盘上的bag文件 流程: 1.导包 2.初始化 3.创建rosbag对象并且打开文件流 4.读数据 5.关闭流 """ if __name__ =="__main__": # 2.初始化 rospy.init_node("read_bag_p") # 3.创建rosbag对象并且打开文件流 bag = rosbag.Bag("hello_p.bag","r") # 4.读数据 msgs = bag.read_messages("/liaoTian") for topic,msg,time in msgs: rospy.loginfo("话题:%s,消息:%s,时间:%s", topic, msg.data, time ) # 5.关闭流 bag.close()

rqt工具箱:

在调用工具时以图形化操作替代了命令操作,应用更便捷,提高效率

ROS基于QT框架,针对机器人开发提供一系列可视化工具

三大组成:

1.rqt --- 核心实现,开发人员无需关注

2.rqt_common_plugins --- rqt中常用的工具套件

3.rqt_robot_plugins --- 运行中和机器人交互的插件(rviz)

当初非常难搞的乌龟生成,现在be like

工具核心作用常用场景启动指令
rqt_graph可视化节点、话题、服务连接拓扑图排查节点通信断开、话题收发异常rqt_graph
rqt_console集中查看全系统日志,分级过滤报错信息定位程序崩溃、硬件 / 代码警告错误rqt_console
rqt_plot绘制话题数值实时曲线,支持导出数据观测速度、IMU、测距、PID 输出等数值变化rqt_plot
rqt_bag图形化录制、回放、裁剪 bag 数据包离线复现机器人实验、保存传感器数据调试rqt_bag
返回列表