Skip to content

OpenCV 给药移动机器人,HITSZ 2024 数字图像处理课程设计任务 1

License

Notifications You must be signed in to change notification settings

MaxwellJay256/DDR4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DDR4

HITSZ 2024 数字图像处理课程设计任务 1,代号 Drug Delivery Robot 2024,简称 DDR4。

Basic Information

  • Collaborator: Maxwell JayCY
  • Language: C++
  • Environment: Ubuntu 20.04, ROS Noetic, OpenCV, cv_bridge, dashgo_driver
  • ZED camera image: width = 672, height = 376

Run

Run the commands below:

catkin_make
source devel/setup.bash
roslaunch drug-delivery-robot drug-delivery-robot.launch

Demo

blue

green

Features

  • 运行连续流畅,车速适中,无停顿
  • 完全基于视觉反馈,没有开环的控制环节——所以你明白你调的参数都是什么
  • 算法简单易懂
  • color_split_tool.cpppill_recognition_tool.cpp 小工具助你调试

Explanation

机器人需要做 2 件事情:

  1. 沿密集路障筒表示的道路前进
  2. 在 T 字路口识别两种药片的图片,如果是蓝色药片则左转,绿色药片则右转

1. 怎么用视觉避障?

用 HSV 阈值分割出橘色的路障筒,并以此算出车道的中心线,用一个 P 控制器(见 patrolControl 函数)调整机器人的 yaw 角速度,使其沿中心线前进。

2. 怎么判断进入和离开路口?

划定一个 roi_cone(Demo 中绿色矩形框),机器人越接近路口,则框中的路障筒越大,ROI 中的橘色像素点应当越多。

当橘色的像素个数超过阈值 cone_pixel_thershold_in,则进入转向状态(phase = 1);如果转向完成,则 roi_cone 中橘色像素应当变少,故当 cone_pixel_count 小于 cone_pixel_thershold_out 时,回到巡线状态(phase = 0)。

3. 怎么识别药片并转向?

用 HSV 阈值分别分割出蓝色和绿色,用 findContours 函数找出药片轮廓,再数出药片个数。

考虑到背景中有很多噪点元素会被误识别,所以这里也划定了一个 ROI(roi_pill,Demo 中红色矩形框)。如果绿色轮廓比蓝色轮廓多,则给 1. 中的 error 加一个偏差,使机器人左转;反之则右转。

About

OpenCV 给药移动机器人,HITSZ 2024 数字图像处理课程设计任务 1

Topics

Resources

License

Stars

Watchers

Forks