教程适用于Dashing以上版本,如foxy/galactic/humble。
2019年:
1. ROS2使用OpenCV基础_zhangrelay的博客-CSDN博客
2. ROS2进行人脸识别face_recognition_zhangrelay的博客-CSDN博客
2020-2021停更。
2022年:
1. ROS2+Gazebo11+Car+OpenCV巡线识别和速度转向控制学习
2. ROS2之OpenCV基础代码对比foxy~galactic~humble
3. ROS2之OpenCV人脸识别foxy~galactic~humble
不变的永远是那谜一般微笑的蒙娜丽莎。
ROS2学习基础:
OpenCV学习基础:
推荐学习网站:
geeksforgeeks基础不牢,地动山摇。
数学和编程一定要强,强,强。
水一水,啥都学不会的^_^
比如如下清扫机器人编程案例题:
机器人房间清洁器解决方案—— “机器人房间清洁器”给出,在二维网格中给定机器人,其中 0
代表一堵墙, 1
代表一个自由空间。
机器人的初始位置保证为空,并且机器人使用给定的 API 在网格内移动 Robot
。机器人必须清洁房间里的每个自由空间。
API机器人具有以下功能:
房间示意图:
房间数学简化模型:
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
简要说明:
提示:
参考C++程序:
class Solution {
public:
set> 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);
}
};