UGV Rover PI ROS2 9. Web 端控制工具
| ||||||||||||||||||||||
|
9. Web 端控制工具
本章节介绍基于 Web 的控制台工具。该机器人项目使用的是 Vizanti Web 工具,Vizanti 是一个基于 Web 的可视化和控制工具,旨在更方便地操作机器人的 ROS2 功能。该应用程序试图尽可能精确地在浏览器上复制 RViz 的正交 2D 视图。第二个目标是允许通过自定义按钮和参数重新配置,规划和执行移动与任务指令,例如目标点和路径点。
默认您已根据第一章 UGV Rover PI ROS2 1. 准备工作里的内容已结束主程序且远程连接上 Docker 容器。在容器中,启动 Web 应用,ip 为树莓派的 IP 地址(也是登陆 Docker 容器的 IP 地址):
ros2 launch ugv_web_app bringup.launch.py host:=ip
运行成功后会如下显示:
然后再同一局域网的电脑上(也可以是树莓派系统),打开浏览器(最好是谷歌浏览器),在地址栏输入树莓派的 IP 地址 + :5100,例如:192.168.10.212:5100。
此时,由于没有启动机器人的相关节点,因此在 Web 界面中没有任何数据显示。
9.1 控制小车移动
9.1.1 运行小车驱动节点
打开一个新的 Docker 容器终端,点击左边侧栏中的“⭐”符号,双击打开 Docker 的远程终端,输入用户名:root,密码:ws。
启动小车驱动节点:
ros2 launch ugv_bringup bringup_lidar.launch.py use_rviz:=true
启动后,Web 界面中会出现一个 TF 坐标系图,同时,也会出现该产品 RViz 2 模型界面。
下面介绍 Web 界面的通用工具:
9.1.2 控制小车移动
接着,我们先添加一个操纵杆小组件用来控制小车移动。点击“Add Widgets”,选择“Teleop Joystick”,会在 Web 界面出现一个圆圈按钮,通过这个按钮可以控制小车移动。
9.2 建图
在启动建图节点之前,先要确保上述底盘驱动节点已关闭运行。需要先参考 UGV Rover PI ROS2 4. 基于激光雷达的二维建图或者 UGV Rover PI ROS2 5. 基于深度相机的三维建图里的内容启动建图节点。
启动后,在 Web 界面中点击“Add Widgets”,选择“Map”。
接着,点击“Map”图标,将 Topic 选择为 /map,这样就能看见 RViz 界面中的地图了。
最后再通过手柄或者键盘控制小车移动进行建图,或者也可以通过前面添加的操纵杆小组件控制小车移动进行建图,建完图后也参考建图教程里的指令进行地图保存。
9.3 导航
建完图后,在 Docker 容器中,运行启动导航的指令:
ros2 launch ugv_nav nav.launch.py use_rviz:=true
该指令中没有指定 use_localization,默认使用的是基于 AMCL 算法的导航,详情可参考 UGV Rover PI ROS2 6. 自动导航部分的教程说明。
通过将“Map”小组件里的 Topic 设置为 /map,则可以看见前面建图完成所保存的地图,该地图和 RViz2 界面中所显示的地图一致。
在 Web 界面中点击“Add Widgets”,选择“2D Pose Estimate”和“2D Nav Goal”这两个个小组件进行添加。
可以使用“2D Pose Estimate”在地图上指出机器人的位置,绿色箭头的方向是机器人云台朝前的方向。
在地图上为机器人选择一个目标位置。您可以使用“2D Nav Goal”工具向机器人发送目标位置和目标方向。在 Web 界面的地图上指出机器人想要自动导航至的位置(目标点),紫色箭头的方向是机器人云台朝前的方向。指出目标位置后松开鼠标,机器人会移动至该目标位置。
自此,可以通过 Web 端控制工具去控制机器人移动、建图及导航等。用户还可根据自己的需求去扩展和开发其余组件的功能。