RoArm-M2-S 6. 使用 Foxglove 进行 Web 端控制

来自Waveshare Wiki
跳转至: 导航搜索
RoArm-M2-S
{{{name2}}}
{{{name3}}}
功能简介
特性 RoArm-M2-S 机械臂
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 TTL总线舵机控制接口 I2C UART

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 地址。

M2-S改变网络连接方式.png

按 Ctrl+Alt+T 打开一个新终端,获取 IP 地址:

ifconfig

获取设备 enp0s3 中的 inet 后面的 IP 地址,例如:192.168.10.175,记住这个的 IP 地址。

M2-S获取ip地址.png


  • 注册 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 账号的电脑上,推荐使用谷歌浏览器。

  1. 在Foxglove 的个人用户界面,点击“Open connection”,会弹出一个 Open a new connection 的窗口。 M2-S启动FoxgloveWeb应用.png

  2. 在 Open a new connection 窗口中填写前面获取到的虚拟机 IP 地址。例如:我获取到的虚拟机 IP 地址为 192.168.10.122,则输入以下内容: M2-S启动FoxgloveWeb应用1.png

  3. 在谷歌浏览器地址栏右侧,有一个三角形图标,由于谷歌浏览器默认禁止不安全的脚本运行,所以你需要手动让它允许加载不安全的脚本。 M2-S启动FoxgloveWeb应用2.png

  4. 点击名称为三维的窗口(有网格地面的窗口),左侧会出现三维面板的控制面板,点击该控制面板左侧下方的“自定义图层”,将该列展开,接着再展开 URDF。若将“自定义图层”展开后没有 URDF,则点击“自定义图层”右侧的三个点,选择“添加 URDF”。
    • URDF(Unified Robot Description Format)是一种用于完整描述机器人模型的XML格式。它包括了描述机器人连杆(links)、关节(joints)以及其他物理属性(如摩擦、惯性等)的标签。URDF 在 ROS(机器人操作系统)中被广泛使用,用于3D模型的可视化、碰撞检测、路径规划等功能。
  5. 在 URDF 中的 URL 里填写以下内容,让 Foxglove 直接印用 URDF 文件:
    package://roarm_description/urdf/roarm_description_web_app.urdf
    
  6. 同时确定“自定义图层”中上一个“话题”列表里的“/robot_description”后面的眼睛是关闭状态的(如下图),否则将会现实错误的 URDF 模型(这个是 Foxglove 和 ROS2 通信的一个bug,直接从话题导入 URDF 会导致每个模型会有一个错误的旋转角度)。 M2-S启动FoxgloveWeb应用3.png

这样,在三维窗口中就可以看见现实机器人的模型了,你可以通过鼠标左右键和中键来调整三维窗口中的视图。


6.5 方向盘控制

1. 点击页面左上角的“添加面板”,选择“远程操纵”,会出现一个新的“远程操纵”窗口。

M2-S方向盘控制.png


2. 点击这个“远程操纵”窗口,左侧会出现一个“远程操纵”面板,在“Topic”中选择“/webappcontrol”这个话题。就可以看到在远程操纵窗口内出现一个方向盘的控制按键。

M2-S方向盘控制1.png

注意:如果你的“Topic”里面没有“/webappcontrol”这个话题,你需要在虚拟机内手动关闭 Web 应用控制节点之后再重新运行:ros2 run roarm_moveit_cmd webappcontrol


3. 在左侧的远程操纵面板内,可以分别定义方向盘上下左右按键的功能和方向,然后就可以通过方向盘来控制机械臂了。

  • Field:改变坐标控制的轴
    • linear-x:X 轴方向运动;
    • linear-y:Y 轴方向运动;
    • linear-z:Z 轴方向运动;
  • Value:-1 和 1 这两个值分别代表相反的运动方向,其他值无效。

M2-S方向盘控制2.png


自此,你已经学会了使用 Foxglove Web 应用来控制机械臂了,后续你可以根据 Foxglove 的官方教程再开发其它功能。

RoArm-M2-S ROS2 Humble + Moveit2 教程