ROS2之OpenCV的微笑入门资料篇

这篇教程介绍了如何在ROS2 (Dashing, Foxy, Galactic, Humble) 中结合OpenCV进行机器人导航和图像处理。内容包括基础的OpenCV图像处理、人脸识别以及使用DFS算法进行房间清洁机器人的路径规划。通过维护访问单元格的HashSet,确保机器人遍历所有可达区域并进行清洁。
部署运行你感兴趣的模型镜像

教程适用于Dashing以上版本,如foxy/galactic/humble。


2019年:

1. ROS2使用OpenCV基础_zhangrelay的博客-优快云博客

2. ROS2进行人脸识别face_recognition_zhangrelay的博客-优快云博客 

 


2020-2021停更。


2022年:

1. ROS2+Gazebo11+Car+OpenCV巡线识别和速度转向控制学习

2. ROS2之OpenCV基础代码对比foxy~galactic~humble

3. ROS2之OpenCV人脸识别foxy~galactic~humble

 


不变的永远是那谜一般微笑的蒙娜丽莎


ROS2学习基础:

  • 编程核心 C++和Python需要熟练掌握 
  • 算法核心 机器人学相关知识点
  • ……

OpenCV学习基础:

  • 数字图像处理相关知识点
  • ……

推荐学习网站:

geeksforgeeks

基础不牢,地动山摇。

数学和编程一定要强,强,强。

水一水,啥都学不会的^_^


比如如下清扫机器人编程案例题:

问题陈述

机器人房间清洁器解决方案—— “机器人房间清洁器”给出,在二维网格中给定机器人,其中 0 代表一堵墙, 1 代表一个自由空间。

机器人的初始位置保证为空,并且机器人使用给定的 API 在网格内移动 Robot。机器人必须清洁房间里的每个自由空间。

API机器人具有以下功能:

  • boolean move():如果下一个单元格可以无障碍到达,则返回true,否则返回false。
  • void turnLeft(): 左转
  • void turnRight(): 右转
  • function void clean():清理当前房间。

房间示意图:

房间数学简化模型:

room = [
[1,1,1,1,1,0,1,1],
[1,1,1,1,1,0,1,1],
[1,0,1,1,1,1,1,1],
[0,0,0,1,0,0,0,0],
[1,1,1,1,1,1,1,1]
]

机器人位置(从0计数):

row = 1, col = 3

 简要说明:

  • 房间中的所有网格都标记为 0 或 1。
  • 0 表示该单元格被阻止,而 1 表示该单元格可访问。
  • 机器人最初从位置 row = 1, col = 3 开始。
  • 从左上角开始,它的位置是下面一排,右边三列。

提示:

  1. 解决这个问题的主要思想是使用 带有回溯的递归
  2. 从机器人的 API 和当前参考位置 (0,0) 开始。
  3. 此外,维护一个HashSet,用于存储相对于参考位置的访问单元格。
  4. 现在,对于每个位置,探索所有四个相邻的方向并检查机器人是否能够朝那个方向移动?
  5. 此外,检查新坐标是否必须未被访问。
  6. 如果以上几点为真,则探索新坐标。
  7. 此外,要返回到具有相同方向的机器人的同一个单元格,将向右转动机器人两次,然后移动到前一个单元格,然后再向右两次以存储之前的方向。
  8. 上述程序,自机器人访问每个房间以来,清洁所有自由空间。

参考C++程序:

class Solution {
public:
    set<array<int,3>> vis;
    void dfs(int x,int y,int dir,Robot& robot){
        robot.clean();
        for(int d=0;d<4;d++){
            int new_dir = (dir+d)%4;
            if(new_dir==0 and !vis.count({x-1,y,new_dir}) and robot.move()){
                vis.insert({x-1,y,new_dir});
                dfs(x-1,y,new_dir,robot);
            }
            if(new_dir==1 and !vis.count({x,y+1,new_dir}) and robot.move()){
                vis.insert({x,y+1,new_dir});
                dfs(x,y+1,new_dir,robot);
            }
            if(new_dir==2 and !vis.count({x+1,y,new_dir}) and robot.move()){
                vis.insert({x+1,y,new_dir});
                dfs(x+1,y,new_dir,robot);
            }
            if(new_dir==3 and !vis.count({x,y-1,new_dir}) and robot.move()){
                vis.insert({x,y-1,new_dir});
                dfs(x,y-1,new_dir,robot);
            }
            robot.turnRight();
        }
        robot.turnRight();
        robot.turnRight();
        robot.move();
        robot.turnRight();
        robot.turnRight();
    }
    void cleanRoom(Robot& robot) {
        dfs(0,0,0,robot);
    }
};

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值