RoArm-M2-S 6. 使用 Foxglove 进行 Web 端控制
| ||||||||||||||||||||||
|
6. 使用 Foxglove 进行 Web 端控制
本章节的 Web 应用基于 Foxglove 提供的组件来实现,你需要注册一个 Foxglove 账号才可以使用,但需要注意的是,有些网络环境受限的地区可能无法访问这个网站,如果无法访问这个网站可以跳过本章教程,可以直接进行第七章节的教程学习,第七章节中的 Web 应用控制机械臂不依赖互联网。
6.1 Foxglove Studio 简介
Foxglove Studio 是一个开源的软件,用于可视化、调试和控制你的机器人。它提供了一个用户友好的界面,让你能够直接与机器人的数据进行交互。Foxglove Studio 支持多种数据格式,包括 ROS(Robot Operating System)消息、JSON、CSV 等。Foxglove Studio 的核心功能包括数据可视化、实时和历史数据查看、布局自定义等。此外,Foxglove Studio 还提供了一个插件系统,允许用户根据需要增加新的功能和工具。
6.2 获取虚拟机 IP 地址并注册 Foxglove 账号
- 获取虚拟机 IP 地址
在获取虚拟机系统的 IP 地址之前,需要更改虚拟机系统的网络连接方式,点击 Oracle VM VirtualBox 上方的“设备”→“网络”→“网络”,将连接方式改为“桥接网卡”,最后点击“确定”,不能为默认的“网络地址转换(NAT)”,否则查看不到虚拟机系统的 IP 地址。
按 Ctrl+Alt+T 打开一个新终端,获取 IP 地址:
ifconfig
获取设备 enp0s3 中的 inet 后面的 IP 地址,例如:192.168.10.175,记住这个的 IP 地址。
- 注册 Foxglove 账号
接着使用与虚拟机同一局域网内的电脑(也可以是运行 VirtualBox 的电脑或者虚拟机系统)访问 Foxglover 账号注册页面。
6.3 启动 Foxglove Web 应用
按 Ctrl+Alt+T 打开一个新终端,进入机械臂 ROS2 的工作空间,运行 ROS2 的机械臂驱动节点:
cd ~/roarm_ws_em0/ ros2 run roarm_driver roarm_driver
按 Ctrl+Alt+T 再打开一个新终端,进入机械臂 ROS2 的工作空间,开启机械臂控制的相关节点:
cd ~/roarm_ws_em0/ ros2 launch moveit_servo demo.launch.py
打开第三个新终端,进入机械臂 ROS2 的工作空间,运行 ROS2 中的 Web 应用控制节点:
cd ~/roarm_ws_em0/ ros2 run roarm_moveit_cmd webappcontrol
最后再打开一个新终端,总共需要打开四个终端分别运行不同的工作节点,进入机械臂 ROS2 的工作空间,启动 Foxglove Web 应用:
cd ~/roarm_ws_em0/ ros2 launch foxglove_bridge foxglove_bridge_launch.xml address:=192.168.10.175
需要将上面 address 后的 IP 地址替换成你自己虚拟机系统的 IP 地址(即前面获取到的那个 IP)。
6.4 在 Foxglove Web 应用中实现机械臂模型
这一小节的操作需要在同一局域网内的电脑上,最好是刚刚注册 Foxglove 账号的电脑上,推荐使用谷歌浏览器。
- 在Foxglove 的个人用户界面,点击“Open connection”,会弹出一个 Open a new connection 的窗口。
- 在 Open a new connection 窗口中填写前面获取到的虚拟机 IP 地址。例如:我获取到的虚拟机 IP 地址为 192.168.10.122,则输入以下内容:
- 在谷歌浏览器地址栏右侧,有一个三角形图标,由于谷歌浏览器默认禁止不安全的脚本运行,所以你需要手动让它允许加载不安全的脚本。
-
点击名称为三维的窗口(有网格地面的窗口),左侧会出现三维面板的控制面板,点击该控制面板左侧下方的“自定义图层”,将该列展开,接着再展开 URDF。若将“自定义图层”展开后没有 URDF,则点击“自定义图层”右侧的三个点,选择“添加 URDF”。
- URDF(Unified Robot Description Format)是一种用于完整描述机器人模型的XML格式。它包括了描述机器人连杆(links)、关节(joints)以及其他物理属性(如摩擦、惯性等)的标签。URDF 在 ROS(机器人操作系统)中被广泛使用,用于3D模型的可视化、碰撞检测、路径规划等功能。
-
在 URDF 中的 URL 里填写以下内容,让 Foxglove 直接印用 URDF 文件:
package://roarm_description/urdf/roarm_description_web_app.urdf
- 同时确定“自定义图层”中上一个“话题”列表里的“/robot_description”后面的眼睛是关闭状态的(如下图),否则将会现实错误的 URDF 模型(这个是 Foxglove 和 ROS2 通信的一个bug,直接从话题导入 URDF 会导致每个模型会有一个错误的旋转角度)。
这样,在三维窗口中就可以看见现实机器人的模型了,你可以通过鼠标左右键和中键来调整三维窗口中的视图。
6.5 方向盘控制
1. 点击页面左上角的“添加面板”,选择“远程操纵”,会出现一个新的“远程操纵”窗口。
2. 点击这个“远程操纵”窗口,左侧会出现一个“远程操纵”面板,在“Topic”中选择“/webappcontrol”这个话题。就可以看到在远程操纵窗口内出现一个方向盘的控制按键。
注意:如果你的“Topic”里面没有“/webappcontrol”这个话题,你需要在虚拟机内手动关闭 Web 应用控制节点之后再重新运行:ros2 run roarm_moveit_cmd webappcontrol
3. 在左侧的远程操纵面板内,可以分别定义方向盘上下左右按键的功能和方向,然后就可以通过方向盘来控制机械臂了。
- Field:改变坐标控制的轴
- linear-x:X 轴方向运动;
- linear-y:Y 轴方向运动;
- linear-z:Z 轴方向运动;
- Value:-1 和 1 这两个值分别代表相反的运动方向,其他值无效。
自此,你已经学会了使用 Foxglove Web 应用来控制机械臂了,后续你可以根据 Foxglove 的官方教程再开发其它功能。