ROS2自动驾驶
yolo5自动驾驶
1、重要!更换U盘的操作指引
2、关闭开机自启动大程序
3、Linux基础
4、YoloV5训练集
5、自动驾驶基础调试(代码解析)
6、自动驾驶特调
7、自动驾驶原理
8、PID算法理论
9、阿克曼运动学分析理论
10、建立运动学模型
常用命令
!重要!首次使用
一、原理分析
麦克纳姆轮运动学分析
二、AI大模型
3、AI大模型类型和原理
4、RAG检索增强和模型训练样本
5、具身智能机器人系统架构
6、具身智能玩法核心源码解读
7、配置AI大模型
8、配置API-KEY
三、深度相机
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大模型应用
八、路网规划
路网规划导航简介
构建位姿地图
路网标注
路网规划结合沙盘地图案例
路径重规划
九、模型训练
1、数据采集
2、数据集标注
3、YOLOv11模型训练
4、模型格式转换
十、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
13
转发
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期
AI