自动驾驶
yolo5自动驾驶
1、重要!更换U盘的操作指引
2、关闭开机自启动大程序
3、Linux基础
4、YoloV5训练集
5、自动驾驶基础调试(代码解析)
6、自动驾驶特调
7、自动驾驶原理
8、PID算法理论
9、阿克曼运动学分析理论
10、建立运动学模型
常用命令
首次使用
一、原理分析
麦克纳姆轮运动学分析
二、AI大模型
3、AI大模型类型和原理
4、RAG检索增强和模型训练样本
5、具身智能机器人系统架构
6、具身智能玩法核心源码解读
7、配置AI大模型
三、深度相机
2、颜色标定
10、深度相机的基础使用
11、深度相机伪彩色图像
12、深度相机测距
13、深度相机色块体积测算
14、深度相机颜色跟随
15、深度相机人脸跟随
16、深度相机KCF物体跟随
17、深度相机Mediapipe手势跟随
18、深度相机视觉循迹自动驾驶
19、深度相机边缘检测
四、多模态视觉理解
20、多模态语义理解、指令遵循
21、多模态视觉理解
22、多模态视觉理解+自动追踪
23、多模态视觉理解+视觉跟随
24、多模态视觉理解+视觉巡线
25、多模态视觉理解+深度相机距离问答
26、多模态视觉理解+SLAM导航
27、多模态视觉理解+SLAM导航+视觉巡线
28、意图揣测+多模态视觉理解+SLAM导航+视觉功能
五、雷达
8、雷达基础使用
思岚系列雷达
六、建立地图
9、Gmapping建图
cartographer快速重定位导航
RTAB-Map导航
RTAB-Map建图
slam-toolbox建图
cartographer建图
Navigation2多点导航避障
Navigation2单点导航避障
手机APP建图与导航
七、新机器人自动驾驶与调整
多模态视觉理解+SLAM导航
新机器人自动驾驶
场地摆放及注意事项
启动测试
识别调试
无人驾驶的车道保持
无人驾驶路标检测
无人驾驶红绿灯识别
无人驾驶之定点停车
无人驾驶转向决策
无人驾驶之喇叭鸣笛
无人驾驶减速慢行
无人驾驶限速行驶
无人驾驶自主泊车
无人驾驶综合应用
无人驾驶融合AI大模型应用
八、路网规划
路网规划导航简介
构建位姿地图
路网标注
路网规划结合沙盘地图案例
九、模型训练
十、YOLOV11开发
多机通讯配置
汝城县职业中等专业学校知识库-信息中心朱老师编辑
-
+
首页
三、深度相机
19、深度相机边缘检测
19、深度相机边缘检测
### 边缘检测 #### 1、内容说明 本节课程说明了如何利用深度图像来进行边缘检测,结合底盘,实现了小车在边缘处停下,防止坠落的风险。后续可拓展成深度图像避障的功能。本节内容需要在终端中输入指令。 #### 2、程序启动 首先,在终端中,输入以下指令启动相机, `ros2 launch ascamera hp60c.launch.py` 成功启动相机后,另外开启一个终端,终端输入以下指令,启动边缘检测程序, ``` #小车底层 ros2 launch yahboomcar_bringup yahboomcar_bringup_M1_launch.py #边缘检测 ros2 run yahboomcar_depth Edge_Detection ```  如上图所示,程序启动后,会打印显示当前状态是停止,按下空格键改变状态,按下空格键后,小车如果没有检测到边缘的话,小车会往前移动,打印“Moving....”;如果检测到边缘后,则会停车,打印“Stop!!!”。   #### 3、核心代码 程序代码路径: 我们的机器人主板,程序代码路径为 ``` /home/jetson/yahboomcar_ros2_ws/yahboomcar_ws/src/yahboomcar_depth/yahboomcar_depth/Advanced/Edge_Detection.py ``` 导入必要的库文件, ``` import rclpy from rclpy.node import Node from sensor_msgs.msg import Image from geometry_msgs.msg import Twist from arm_msgs.msg import ArmJoints from cv_bridge import CvBridge import cv2 import numpy as np import threading ``` 深度图像解码格式 `encoding = ['16UC1', '32FC1']` 初始化变量以及定义发布者和订阅者, ``` def __init__(self, name): super().__init__(name) self.pub_vel = self.create_publisher(Twist,'/cmd_vel',1) self.sub_depth = self.create_subscription(Image,"/ascamera_hp60c/camera_publisher/depth0/image_raw",self.get_DepthImageCallBack,100) #小车往前的速度 self.lin_x = 0.1 self.Joy_active = False self.depth_bridge = CvBridge() self.move_flag = False ``` 深度图像话题回调函数,以及计算中心点深度距离信息, ``` def get_DepthImageCallBack(self,msg): depth_image = self.depth_bridge.imgmsg_to_cv2(msg, encoding[1]) #调用线程传入获取到的深度图像,计算深度信息 compute_ = threading.Thread(target=self.compute_dist, args=(depth_image,)) compute_.start() compute_.join() key = cv2.waitKey(10) if key == 32: self.move_flag = True cv2.imshow("frame", depth_image) def compute_dist(self,result_frame): frame = cv2.resize(result_frame, (640, 480)) depth_image_info = frame.astype(np.float32) #判断当前状态是否为移动状态,如果是则判断中心点的距离,如果不是,则调用函数,发布停车指令,并且打印信息 if self.move_flag == True: #判断中心点,也就是x=320,y=240的点的深度信息是否大于0.3m,如果是,则调用函数,发布停车指令,如果否,则调用函数,发布前进指令。 if depth_image_info[240, 320]/1000>0.3: self.pubVel(0,0,0) self.move_flag = False print("Stop!!!") else: self.pubVel(self.lin_x,0,0) print("Moving....") else: self.pubVel(0,0,0) print("Stop status now!Press the SPACEBAR to change the state.") ``` 发布速度函数 ``` def pubVel(self,vx,vy,vz): vel = Twist() vel.linear.x = float(vx) vel.linear.y = float(vy) vel.angular.z = float(vz) self.pub_vel.publish(vel) ``` 传入三个变量,分别是x方向的速度、y方向的速度以及角速度,赋值后,调用self.pub_vel.publish(vel)发布速度话题。
admin
2025年11月30日 19:16
2
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期
AI