利用ROS和计算机视觉技术实现A.R.E.S.机器人的高级功能
立即解锁
发布时间: 2025-09-18 01:33:38 阅读量: 3 订阅数: 4 AIGC 

# 利用ROS和计算机视觉技术实现A.R.E.S.机器人的高级功能
## 1. 使用ROS对A.R.E.S.进行编程
在A.R.E.S.完成组装并安装好必要的软件和固件后,我们就可以使用ROS(机器人操作系统)实现对其的远程控制。
### 1.1 测试相机
点击播放按钮开始视频流,我们可以在VLC媒体播放器中看到相机的画面。测试完成后,断开USB - C电缆并重新连接到A.R.E.S.的面部,至此完成A.R.E.S.组件的测试阶段。
### 1.2 创建ROS节点
我们可以从GitHub仓库中获取预先存在的ROS工作空间,然后按照以下步骤创建ROS节点:
1. 使用PuTTY(Windows系统)或终端(Linux系统),通过运行设置脚本后获得的IP地址登录到Raspberry Pi 3B+。
2. 运行以下命令将ROS工作空间复制到当前目录(注意不要忘记末尾的点):
```bash
cp -r code/Chapter13/code/ares_ws .
```
3. 进入工作空间:
```bash
cd ares_ws
```
4. 加载ROS环境:
```bash
source /opt/ros/humble/setup.bash
```
5. 在构建ROS节点之前,查看要构建的代码。使用nano编辑器查看代码:
```bash
nano src/ares/ares/robot_control.py
```
### 1.3 代码分析
#### 1.3.1 权限设置
在初始化方法中,我们需要设置权限以使用serial0端口:
```python
password = 'sudo-password'
command = 'chmod a+rw /dev/serial0'
subprocess.run(f'echo {password} | sudo -S {command}', shell=True, check=True)
```
需要注意的是,出于安全考虑,不建议将管理员密码放在文件中,但在严格控制的开发环境中,为了更改serial0端口的权限,我们可以这样做。
#### 1.3.2 串口设置
在初始化方法中,将ser实例变量设置为serial0,即连接Pico H的端口:
```python
self.ser = serial.Serial('/dev/serial0', 115200, timeout=1)
```
#### 1.3.3 消息发送方法
send_message()方法用于格式化命令并通过串口发送消息:
```python
def send_message(self, command):
if command.strip() == 's' and self.last_command_sent == 's':
print("Skip sending 's' command to avoid sending it two times in a row")
return
framed_command = f"<{command}>\n"
print(f"Sending framed command: {framed_command.strip()}")
self.ser.write(framed_command.encode())
self.get_logger().info(f"Sent command: {command.strip()}")
self.last_command_sent = command.strip()
```
该方法会检查当前命令是否为's'且上一次发送的命令也是's',以避免连续发送's'命令,减少通信通道中的冗余信号。
### 1.4 构建和运行节点
1. 执行colcon命令构建代码:
```bash
colcon build
```
2. 构建完成后,加载节点:
```bash
source install/setup.bash
```
3. 运行节点以通过IoT操纵杆控制机器人:
```bash
ros2 run ares robot_control
```
建议在发送命令之前将A.R.E.S.放在测试台上。运行节点后,就可以使用之前构建的IoT操纵杆控制A.R.E.S.。
## 2. 为A.R.E.S.添加计算机视觉功能
接下来,我们将为A.R.E.S.添加计算机视觉功能,使其能够识别物体并通过短信提醒我们物体的存在。以识别狗为例,我们将集成OpenCV和YOLO深度学习算法。
### 2.1 技术要求
- 具备Python编程的中级知识
- 拥有A.R.E.S.机器人
- 一台具有GUI风格操作系统的计算机,如Raspberry Pi 5、macOS或Windows
### 2.2 探索计算机视觉
计算机视觉始于20世纪50年代,经过多年的发展,在图像处理算法和GPU的引入等关键里程碑的推动下,取得了显著进展。现代计算机视觉技术可以实现实时图像分析和复杂模型。
在计算机视觉中,有几个重要的概念需要区分:
| 术语 | 描述 |
| ---- | ---- |
| 图像识别 | 检测图像中的特征或模式 |
| 物体识别 | 识别图像或视频中的不同物体,但不指定其精确位置 |
| 物体检测 | 不仅识别物体,还能定位物体的空间位置,通常使用边界框 |
| 图像分类 | 分析整个图像并将其分配到特定类别 |
对于A.R.E.S.,我们将使用物体检测功能,在视频流中为检测到的物体创建边界框。
### 2.3 引入OpenCV
OpenCV是计算机视觉领域的基础工具,提供了丰富的实时图像处理功能。我们可以通过以下步骤开始使用OpenCV:
#### 2.3.1 查看图像
1. 打开终端窗口,可以使用Raspberry Pi 5的操作系统或其他选择的操作系统。
2. 创建项目目录和子目录(用于存储图像):
```bash
mkdir -p Chapter14/images
```
3. 进入新目录:
```bash
cd Chapter14
```
4. 从GitHub仓库下载测试图像:
```bash
curl -o images/toronto.png https://raw.githubusercontent.com/PacktPublishing/Internet-of-Things-Programming-Projects-2nd-Edition/main/Chapter14/images/toronto.png
```
5. 创建Python虚拟环境:
```bash
python -m venv ch14-env --system-site-packages
```
6. 激活虚拟环境:
```bash
source ch14-env/bin/activate
```
7. 安装opencv - python库:
```bash
pi
```
0
0
复制全文
相关推荐






