# mem

#### 介绍
{**以下是 Gitee 平台说明,您可以替换此简介**
Gitee 是 OSCHINA 推出的基于 Git 的代码托管平台(同时支持 SVN)。专为开发者提供稳定、高效、安全的云端软件开发协作平台
无论是个人、团队、或是企业,都能够用 Gitee 实现代码托管、项目管理、协作开发。企业项目请看 [https://gitee.com/enterprises](https://gitee.com/enterprises)}

##### 使用cpu版本nms:
1. 替换模型,目录在/home/nvidia/workspace/etc/, cp object_detect_ihs.engine.nonms object_detect_ihs.engine.nms
2. pose_detector_ihs.cpp中,使用        postprocess_cpu(objs, score_thres), 注释 postprocess(objs, score_thres);
3. colcon build
4. LD_LIBRARY_PATH=./src/perception/camera_perception_b/lib_trt8.5:$LD_LIBRARY_PATH ros2 run perception camera_perception_b

计时:图片数量9564, 平均时间7.13487ms

##### 使用trt版本nms:
1. 替换模型,目录在/home/nvidia/workspace/etc/, cp object_detect_ihs.engine.nms object_detect_ihs.engine
2. pose_detector_ihs.cpp中,使用       注释 postprocess_cpu(objs, score_thres), 使用 postprocess(objs, score_thres);
3. colcon build
4. LD_LIBRARY_PATH=./src/perception/camera_perception_b/lib:$LD_LIBRARY_PATH ros2 run perception camera_perception_b

计时:图片数量12834, 平均时间8.23975ms
与cpu比,主要是推理时间长些。

##### lane detector 车道线关键点检测
代码调用示例如下,代码库中在 src/perception/camera_perception_b/camera_adapter.cpp:
```c++
    std::string lane_camname = "camera1";
    std::vector<std::vector<cv::Point2f>> lanes;
    // 图片坐标转换到世界坐标, ground points
    std::vector<std::vector<cv::Point2f>> lanes_gpts; 
    lane_detector_->process(images[lane_camname], lanes);
    CameraInfo* cam_info = CameraInfo::get_inst();
    for(auto &lane : lanes){
        std::vector<cv::Point2f> gpts;
        // 确保输入坐标是归一化的图片坐标, 输出坐标系,原点后车轮中心点,XYZ正方向为前左上
        cam_info->convert_uv2xy(lane_camname, lane, gpts);
        lanes_gpts.push_back(std::move(gpts));
    }
```
1. LaneDetector是一个单例
2. 确保车道线模型存在 /home/nvidia/workspace/etc/lane_detector.engine
3. 车道线检测返回结果lanes vector, 第一层是有多少车道线,第二层是车道线有多少点,存的点是归一化的图片坐标,乘以图片宽高后画在图片上
4. 目前只传入camera1图片
5. orin上面测试,一帧6ms
6. 目前检测的车道线,是行车方向车道线,另一侧车道线未标注,模型也未检测
7. lanes_gpts 存放着地面坐标系坐标,单位是米

#### 软件架构
软件架构说明


#### 安装教程

1.  xxxx
2.  xxxx
3.  xxxx

#### 使用说明

1.  xxxx
2.  xxxx
3.  xxxx

#### 参与贡献

1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request


#### 特技

1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)