UGV Rover PI ROS2 8. Web 端自然语言交互

来自Waveshare Wiki
跳转至: 导航搜索
RaspRover
{{{name2}}}
{{{name3}}}
功能简介
特性 UGV Rover ROS2 小车
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
' 无特性,不解释
接口 TTL总线舵机控制接口 I2C UART

8. Web 端自然语言交互

本教程将介绍如何在 Web 端页面用自然语言直接控制机器人。在该教程中,我们使用 Ollama 命令行工具运行大型语言模型,通过命令行输入相应的命令来使用 Gemma 模型进行 JSON 指令生成,生成的 JSON 指令发送给机器人,支持机器人执行基础移动、辅助建图、导航等任务。


8.1 Ollama 简介

Ollama 是一个开源的大型语言模型服务工具,用于简化在本地运行大语言模型、降低使用大语言模型的门槛,同时还提供了一个丰富的预构建模型库,包括如 Qwen2、Llama3、Phi3、Gemma2 等开源的大型语言模型,可以轻松集成到各种应用程序中。Ollama 的目标是使大型语言模型的部署和交互变得简单,无论是对于开发者还是对于终端用户。


8.2 安装与配置 Ollama

1. 点击 Ollama 官网下载 Ollama 的安装包。官方 Ollama 支持不同操作系统下载,根据您的操作系统,选择相应的安装包进行下载。该教程中是在 Windows 操作系统安装的,下载完成后,运行安装包,按照提示完成安装过程。

ROS2 downloadollama.pngROS2 downloadollama1.png

2. 安装完成后,需要进行 Windows 系统环境变量配置。在“开始”菜单栏中,搜索“高级系统设置”,在系统设置中选择“环境变量”。

ROS2 setollama.png


3. 在用户变量中选择“新建”,变量名填入:“OLLAMA_HOST”,变量值填入:“:11434”,如下图。填完后点击“OK”进行保存。

ROS2 setollama1.png


4. 如下图显示即为添加成功,最后点击“OK”保存环境变量的配置。

ROS2 setollama2.png


8.3 下载大模型到本地

Ollama 支持 Ollama 模型库上提供的一系列模型,以下是一些可以下载的示例模型,该教程中使用的是 Gemma2:9B 模型。

ROS2 ollamamodel.png

注意:你应该至少有 8GB RAM 内存大小来运行 7B 的模型,16GB RAM 内存大小来运行 13B 的模型,32GB RAM 内存大小来运行 33B 的模型。我们教程中使用的是 Gemma2:9B 的模型,则需要保证你的电脑 RAM 内存大小有 16GB 及以上。

1. 首先,先确定你的电脑 RAM 内存大小有 16 GB 及以上。在“开始”菜单栏中搜索“任务管理器”,选择“内存”查看内存大小是 16GB 及以上即可。

ROS2 RAM.png

2. 接着在Windows 系统下,按 Ctrl+R 后输入“cmd”打开终端,通过 pull 命令从 Ollama 远程仓库完整下载大模型到本地。

ollama pull gemma2

3. 下载完成后,可以运行大模型进行测试,随机和 AI 进行对话测试。

ollama run gemma2

ROS2 runollama.png


8.4 更改 IP 地址

首先,先确定你进行 Ollama 部署的本地 IP 地址是多少,记住这个 IP 地址。

  • Windows 系统

按 Ctrl+R,输入 cmd 打开终端,在终端中输入查看 IP 地址的指令:

ipconfig

ROS2 ipconfig.png

记住这个 IP 地址,接着在树莓派操作系统中,打开 /home/ws/ugv_ws/src/ugv_main/ugv_chat_ai/ugv_chat_ai/ 这个目录下的 app.py 文件,如下图将第 85 行“:11434”前的 IP 地址更改为你前面所得到的本地 IP 地址。

ROS2 changeip.png

更改后按 Ctrl+S 保存退出即可。


8.5 底盘驱动

在启动底盘驱动之前,默认您已根据第一章 UGV Rover PI ROS2 1. 准备工作里的内容已结束主程序且远程连接上 Docker 容器。

在容器中,进入该产品 ROS 2 项目的工作空间:

cd /home/ws/ugv_ws

启动小车驱动节点:

ros2 launch ugv_bringup bringup_lidar.launch.py use_rviz:=true

此时,机器人云台会转至中位,摄像头面向前方,可以查看到该产品 Rviz2 模型界面,原地旋转小车可以看见模型中也会跟着一起旋转。

ROS2 RViz.png


8.6 启动 Web 端 AI 应用

打开一个新的 Docker 容器终端,点击左边侧栏中的“⭐”符号,双击打开 Docker 的远程终端,输入用户名:root,密码:ws。

ROS2 newDocker.png

运行 Web 端 AI 应用:

ros2 run ugv_chat_ai app

运行后成功后如下图所示:

ROS2 webai.png

接着在部署 Ollama 的操作系统的浏览器中,访问“树莓派 IP 地址:5000”这个网址进入 AI 应用的界面。如上图所示,这里访问的网址为 “192.168.10.131:5000”。

在与 AI 的聊天界面中,我们需要先给 AI 发一些提示,让 AI 反馈 JSON 指令,从而去控制机器人运动。下面是我们提供的提示,可以直接复制发送给 AI:

You are an assistant helping me with the simulator for robots.Here are some tips you can use to command the robot.
{"T": "1", "type": type, "data": data}
type: drive_on_heading back_up spin stop
data: num
you should return only json in code,without explanation
for examples,
"user": "move 2 units forward."
"assistant": {"T": 1, "type": "drive_on_heading", "data": 2}

"user": "move 2 units back."
"assistant": {"T": 1, "type": "back_up", "data": 2}

"user": "turn left 30 degrees."
"assistant": {"T": 1, "type": "spin", "data": 30}

"user": "stop."
"assistant": {"T": 1, "type": "stop", "data": 0}

等待 1 分钟左右,AI 会反馈直走 2m 的 JSON 指令,如下图:

ROS2 webai1.png

  • type:机器人运动类型。driver_on_heading:前进;back_up:后退;spin:旋转;stop:停止。
  • data:机器人运动的数值参数。前进或后退时,单位为 m;旋转时,单位为度。

接着,还需要启动机器人运动的相关接口,在 AI 反馈回 JSON 指令后,实际中的机器人才会进行相应地运动。打开一个新的 Docker 容器终端,运行以下指令:

ros2 run ugv_tools behavior_ctrl

运行完成后,未给机器人运动指令前不会有反馈出来。

示例:让机器人前进 1m。AI 应用会反馈前进 1m 的 JSON 指令,“ros2 run ugv_tools behavior_ctrl”这个指令会反馈出产品移动距离和现在距离等参数,完成 1m 的移动后机器人会停止。

ROS2 webai2.png