0x00 官方通知;

最新消息:OriginBot V2.0.2版本正式发布,新增Webviz可视化点击查看

0x01 Webviz基本概念;

Webviz和rviz一样都是ROS开发中的可视化利器。区别在于rviz只能运行在ros环境中,而Webviz可能多平台运行,还可以在网页上调试运行,所见即所得。这非常适合像我这种不喜欢使用命令行的小白。

而本期我们要介绍的Froxglove就是Webviz的一种,专门用于ROS2;以下是该软件的demo界面:

5172bf6066f7fbf69c621e3034f1c54.png

是不是很强大的样子,迫不及待的想试一下。

0x02 软件安装;

参考:WebViz可视化 - OriginBot智能机器人开源套件

但是这个软件不好下载,需要用梯子才能下载成功,这里小编给大家分享一下百度网盘的下载链接:

链接:https://pan.baidu.com/s/1tJ7Cs7Y2J3hFuNzC4EJGeg 

提取码:7jlx

我是用的是Win11系统。

image.png

0x03 环境搭建;

Foxglove有两种连接ros的方式:

1、离线模式(bag回放)

2、在线连接(websocket,TCP)

这里我们使用在线连接的方式,所以需要安装Foxglove的软件包,

#安装rosbridge,此处使用galactic目的为避免与tros冲突,不影响通信效果
$ sudo apt install ros-galactic-rosbridge-suite

注意,需要将Originbot小车的镜像更新到最新版,旧版无法找到该功能包。新版中安装了 ros-galactic。

安装完成后即可调用以下命令启动Froxglove bridge

$ source /opt/ros/galactic/setup.bash
$ ros2 launch rosbridge_server rosbridge_websocket_launch.xml

1.png

0x04 Foxglove 界面可视化;

参考Originbot打开一个新的连接。以下是我小车的IP地址。

2.png

连接成功之后就可以使用各种 panel 啦,Foxglove就是由各种的pannel组成的。

image.png

0x05 添加相机可视化;

首先使用以下命令启动小车相机:

ros2 launch originbot_bringup camera.launch.py

随后在 Foxglove 中添加图像面板,订阅压缩后的图像数据/compressed_image,就显示出来啦。

右边的是我添加的远程操纵面板,用于发布小车的cmd_vel数据;

3.png

0x05 添加Originbot小车状态;

Display a color-coded label to indicate threshold values in your data.

显示一个颜色编码的标签,以指示数据中的阈值。

'通用 '面板中的 'Message path' 和 'style'设置如下:

Message path to the data value you want to track

要跟踪的数据值的消息路径,ROS消息数据;

Style of indicator ("Bulb" or "Background")

第二个选项用于设置标签形状,Bulb为灯泡形状,Background为背景颜色。

随后设置最重要的 '规则'

Comparison :

How you want to compare your incoming data with your threshold value ("Equal to", "Less than", "Less than or equal to", "Greater than", or "Greater than or equal to")

您希望如何将传入数据与阈值进行比较(“等于”、“小于”、“低于”、“大于”或“大于”)

Compare with:

Threshold value (string, number, or boolean) to compare your incoming data against

用于比较传入数据的阈值(字符串、数字或布尔值)

Color:

当条件正确时显示的颜色;

Label:

当条件正确时显示的文字;

添加‘指示器’面板,并显示小车状态。指示器面板设置示例如下:

image.png

5.png

0x06 通过Foxglove发布速度话题cmd_vel;

添加发布面板,设置发布的Topic为:/cmd_vel,Message schema格式类型为:geometry_msgs/msg/Twist

随后在编辑框中设置要发布的JSON格式数据如下:

{
  "linear":
  {
    "x": 0,
    "y": 0,
    "z": 0
  },
  "angular": 
  {
    "x": 0,
    "y": 0,
    "z": 0
  }
}

image.png

点击Publish发布按钮,即可在ROS小车中收到Foxglove发来的数据;

0x07 通过Foxglove调用小车的服务;

小车上有两个常用的服务,originbot_buzzer,originbot_led;

Service Call,还不明白什么是Service的同学,可以去看一下古月老师的21讲。

添加Service面板,设置Service Name为:/originbot_led

Request 内容为:

{

  "on": true

}

image.png

但是很奇怪,这里的请求失败了,不知道是不是格式错了,有请求成功的小伙伴可以在评论区告诉我一下。

Foxglove调用服务失败的话,咱们还可以使用 ssh连接 + 命令行的方式调用服务:

$ ros2 service list                  # 查看服务列表
$ ros2 service type    # 查看服务数据类型
$ ros2 service call      # 发送服务请求

参考:服务 - ROS2入门教程 (guyuehome.com)

0x08 结语;

这个小车已经陪伴我一年了。

一转眼2023一年就过去了,2023的最后三个月是在长沙做PCB Layout,认识了很多朋友,在长沙真的很快乐。

2023有很多想做的事情,但是由于计划的不好,没有预案,做项目,东一下西一下,走偏了,不敢加大投资,把时间都浪费掉了。

2024集中精力,再接再厉。聚气而凝神,则万事通,达可为也。