# junkcar
Author: innns
![car](config/oc.jpg)
+ 工程训练大赛,物流小车,智能搬运机器人,视觉方案
+ 某些地方需要更换路径。建议先浏览一遍代码x
+ 建议给识别颜色区域加上自己的ROI,注意图像尺寸以及判断物料的条件
+ 靶心像素距离偏离与机械臂移动距离的系数是在我们车上计算出的,不同车不同角度拍摄都需要重新计算(我们有一个斜向下拍靶子的摄像头)
+ 串口代码使用了`gezp`写的`2019 RoboMasterOS`中的内容,GPL协议。
---
## [详细文档](report/report.pdf)(其实是个课设报告改的)
使用了[UESTC_Lab_Report_LaTeX_Template](https://github.com/zshufan/UESTC_Lab_Report_LaTeX_Template)的模板
## 环境
+ Raspberry Pi 4 2021-03-04-raspios-buster-arm64 (具体版本无所谓)
+ OpenCV 4.5.2 + contrib (条形码需要contrib)
### 具体环境配置
[junkcar Env](config/environment/junkcar_Env.md)
### 编译
```shell
# cd到包含CMakeLists.txt的这个目录
mkdir build
cd build
cmake ..
make -j8
# main 文件就是可执行文件
```
## 通信协议
### 数据帧封装
16字节数据帧
| 帧头*1 | 命令位*1 | 数据位*12 | 校验位*1 | 帧尾*1 |
| -------- | -------- | ----------- | --------- | --------- |
| [0] 0xAA | [1] CMD | [2-13] DATA | [14] 0xF0 | [15] 0xBB |
小端模式
### 协议定义
```cpp
typedef enum : unsigned char
{
// >>>>>> 发送用
CMD_CURRENT_COLOR = 0x01, // 当前检测到的颜色 条形码读取的颜色
CMD_TARGET_POS = 0x02, // 当前检测到的靶心
CMD_QR_MISSION = 0x03, // 二维码读取的任务
CMD_ALL_COLOR = 0x04, // 所有颜色读取
CMD_ACK = 0x05, // 确认 切换相机 切换靶心等
CMD_STORE_POS = 0x06, // 库存区域位置
// >>>>>> 接收用
CMD_SET_MODE = 0x11, // 检测颜色/检测靶心
CMD_SWITCH_CAM = 0x12 // 切换相机
} SerialPortCMD;
//>>>>>>树莓派端数据接口>>>>>
bool SerialInterface::current_color(char color_num)
{
FixedPacket packet;
packet.loadData(CMD_CURRENT_COLOR, 1);
packet.loadData(color_num, 2);
packet.pack();
return sendPacket(packet) == 0;
}
bool SerialInterface::all_color(char m1, char m2, char m3, char m4, char m5, char m6)
{
FixedPacket packet;
packet.loadData(CMD_ALL_COLOR, 1);
packet.loadData(m1, 2);
packet.loadData(m2, 3);
packet.loadData(m3, 4);
packet.loadData(m4, 5);
packet.loadData(m5, 6);
packet.loadData(m6, 7);
packet.pack();
return sendPacket(packet) == 0;
}
bool SerialInterface::target_pos(int target_x, int target_y, int target_z)
{
FixedPacket packet;
packet.loadData(CMD_TARGET_POS, 1);
packet.loadData(target_x, 2);
packet.loadData(target_y, 6);
packet.loadData(target_z, 10);
packet.pack();
return sendPacket(packet) == 0;
}
bool SerialInterface::QR_mission(char m1, char m2, char m3, char m4, char m5, char m6)
{
FixedPacket packet;
packet.loadData(CMD_QR_MISSION, 1);
packet.loadData(m1, 2);
packet.loadData(m2, 3);
packet.loadData(m3, 4);
packet.loadData(m4, 5);
packet.loadData(m5, 6);
packet.loadData(m6, 7);
packet.pack();
return sendPacket(packet) == 0;
}
bool SerialInterface::temp(int target_x, int target_y, int target_z)
{
FixedPacket packet;
packet.loadData(CMD_TEMP, 1);
packet.loadData(target_x, 2);
packet.loadData(target_y, 6);
packet.loadData(target_z, 10);
packet.pack();
return sendPacket(packet) == 0;
}
```
#### Pi发给32
##### 当前颜色
| 帧头*1 | 命令位*1 | 数据位*1 | 校验位*1 | 帧尾*1 |
| -------- | -------- | ---------------- | --------- | --------- |
| [0] 0xAA | [1] 0x01 | [2] (char) COLOR | [14] 0xF0 | [15] 0xBB |
```cpp
enum COLOR : unsigned char
{
NONE = 0x00,
RED = 0x01,
GREEN = 0x02,
BLUE = 0x03
};
```
##### 靶心位置
| 帧头*1 | 命令位*1 | 数据位*12 | 校验位*1 | 帧尾*1 |
| -------- | -------- | ----------------------------------------------------------- | --------- | --------- |
| [0] 0xAA | [1] 0x02 | [2-5] (int) pos_x ; [6-9] (int) pos_y ; [10-13] (int) pos_z | [14] 0xF0 | [15] 0xBB |
+ 左 pos_x 正
+ 前 pos_y 正
+ 逆 pos_z 正
##### 任务顺序
| 帧头*1 | 命令位*1 | 数据位*12 | 校验位*1 | 帧尾*1 |
| -------- | -------- | ---------------------- | --------- | --------- |
| [0] 0xAA | [1] 0x03 | [2-7] (char) COLOR * 6 | [14] 0xF0 | [15] 0xBB |
```cpp
enum COLOR : unsigned char
{
NONE = 0x00,
RED = 0x01,
GREEN = 0x02,
BLUE = 0x03
};
```
##### 一次扫完所有颜色
| 帧头*1 | 命令位*1 | 数据位*12 | 校验位*1 | 帧尾*1 |
| -------- | -------- | ---------------------- | --------- | --------- |
| [0] 0xAA | [1] 0x04 | [2-7] (char) COLOR * 6 | [14] 0xF0 | [15] 0xBB |
```cpp
enum COLOR : unsigned char
{
NONE = 0x00,
RED = 0x01,
GREEN = 0x02,
BLUE = 0x03
};
```
#### 32发给Pi
##### 设置 MODE
| 帧头*1 | 命令位*1 | 数据位*12 | 校验位*1 | 帧尾*1 |
| -------- | -------- | -------------------------------- | --------- | --------- |
| [0] 0xAA | [1] 0x11 | [2] DETECT_MODE ; [3] TARGET_POS | [14] 0xF0 | [15] 0xBB |
```cpp
enum DETECT_MODE : unsigned char
{
DEFAULT_MODE = 0x00, // 空模式 0
COLOR_MODE = 0x01, // 读取颜色 1 国赛读取条形码
TARGET_MODE = 0x02, // 寻找靶心 2
QR_MODE = 0x03, // 读取二维码 3
ALL_COLOR_MODE = 0x04, // 读取所有颜色 4
STORE_MODE = 0x06
};
// enum COLOR: N R G B
enum TARGET_POS : unsigned char
{
NONE_TAR = 0x00,
LEFT_TAR = 0x01,
CENTER_TAR = 0x02,
RIGHT_TAR = 0x03
};
```
##### 切换相机
| 帧头*1 | 命令位*1 | 数据位*12 | 校验位*1 | 帧尾*1 |
| -------- | -------- | ----------- | --------- | --------- |
| [0] 0xAA | [1] 0x12 | [2] CAM_NUM | [14] 0xF0 | [15] 0xBB |
```cpp
enum CAM_NUM : unsigned char
{
COLOR_CAM = 0x00,
TARGET_CAM = 0x01
};
```
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~ 人工智能学习总结成果,希望可以帮到大家,有疑问欢迎随时沟通~
资源推荐
资源详情
资源评论
收起资源包目录
《人工智能》--工程训练大赛 2021国赛 智能搬运机器人 视觉代码。UESTC Ordinary Car。.zip (113个子文件)
lab_report(zh_cn).aux 8KB
lab_report(zh_cn).bbl 425B
FDi.bib 421B
lab_report(zh_cn).blg 876B
Detector.cpp 35KB
serial_port.cpp 8KB
USB_Cam.cpp 5KB
serial_demo.cpp 5KB
Cam_MT.cpp 4KB
fixed_packet.cpp 4KB
test_detector.cpp 3KB
test_config.cpp 3KB
serial_interface.cpp 3KB
fixed_common_base.cpp 3KB
main_without_my_task.cpp 2KB
tcp-server.cpp 2KB
serialport_trans_dev.cpp 2KB
test_MT.cpp 2KB
tcp-client.cpp 1KB
test_udp_server.cpp 1KB
udp-server.cpp 1KB
test_udp_client.cpp 1KB
udp-client.cpp 1KB
main.cpp 327B
proto.csv 385B
.gitattributes 31B
.gitignore 132B
lab_report(zh_cn).synctex.gz 88KB
Detector.h 9KB
Cam_MT.h 4KB
fixed_packet.h 3KB
essential.h 2KB
serial_interface.h 2KB
serial_port.h 2KB
USB_Cam.h 2KB
serialport_trans_dev.h 2KB
trans_dev_interface.h 2KB
fixed_common_base.h 2KB
My_Test.hpp 15KB
My_Task.hpp 10KB
TCP_Server.hpp 5KB
TCP_Client.hpp 3KB
TCP_IP.hpp 1KB
oc.jpg 4.04MB
car.jpg 3.97MB
car_pos.jpg 2.92MB
detect_tar.jpg 2.32MB
car_s.jpg 1.47MB
car_cam.jpg 495KB
Pi.jpg 326KB
O1CN01PQEBQq2Kje2yi9DQk_!!559269593.jpg 216KB
舵机机械臂.jpg 153KB
色环_.jpg 152KB
0916_L.jpg 140KB
颜色摄像头.jpg 131KB
0916_R.jpg 128KB
0916_C.jpg 115KB
1.jpg 106KB
色环.jpg 102KB
nano.jpg 101KB
场地.jpg 97KB
靶子摄像头.jpg 95KB
car_sw.jpg 86KB
Cs_G.jpg 83KB
Cs_B.jpg 83KB
Cs_R.jpg 83KB
hsv.jpg 82KB
原料区.jpg 77KB
物料.jpg 67KB
半成品区.jpg 63KB
all.jpg 57KB
HSV_param.jpg 53KB
settings.json 2KB
c_cpp_properties.json 2KB
LICENSE 34KB
lab_report(zh_cn).log 40KB
junkcar_Env.md 6KB
README.md 6KB
report.pdf 7.56MB
lab_report(zh_cn).pdf 7.56MB
多个颜色.pdf 20KB
process.pdf 20KB
single_color.pdf 17KB
识别靶心.pdf 17KB
单个颜色.pdf 15KB
process.pdf_tex 6KB
logo.png 38KB
test_find_target.py 6KB
test_hough.py 5KB
set_config.py 5KB
RealTimeCap.py 3KB
creat_proto_interface.py 2KB
show_pic.py 2KB
take_pic.py 2KB
1.py 2KB
test_HSV.py 1KB
bar.py 1KB
get_x_y.py 814B
camera.rules 3KB
one_punch.sh 2KB
共 113 条
- 1
- 2
资源评论
季风泯灭的季节
- 粉丝: 1854
- 资源: 3371
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- java项目,课程设计-ssm留学生交流互动论坛网站.zip
- 【小程序毕业设计】基于微信小程序的运营商软件源码(完整前后端+mysql+说明文档).zip
- 【小程序毕业设计】汉语学习微信小程序的设计与实现源码(完整前后端+mysql+说明文档).zip
- centos7脚本解析json插件
- C#ASP.NET超市在线购物商城源码 便利店商城源码数据库 SQL2008源码类型 WebForm
- 基于二阶锥约束的ieee33节点潮流计算
- 创维8A12机芯 E730系列 升级天赐3.2.2 V014.001.019 主程序软件 电视刷机 固件升级包
- C++基于梯度的在线安全轨迹生成器+项目源码+文档说明+代码注释
- 【小程序毕业设计】牛人答辩微信小程序源码(完整前后端+mysql+说明文档).zip
- PPSSPP-macOS.dmg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功