#include "carla_shenlan_lattice_planner/lattice_lqr_lateral_longitudinal.h"
#include <chrono>
#include <cstdio>
#include <functional>
#include <memory>
#include <string>
#include "rclcpp/rclcpp.hpp"
#include "std_msgs/msg/string.hpp"
//// ////
#include <algorithm>
#include <iomanip>
#include <iostream>
#include <iterator>
#include <map>
#include <queue>
#include <utility>
#include "time.h"
#include <ctime>
#include "dnn/hb_dnn.h"
#include "gflags/gflags.h"
#include "glog/logging.h"
#include "opencv2/core/mat.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
#define EMPTY ""
DEFINE_string(model_file, EMPTY, "model file path");
DEFINE_string(image_file, EMPTY, "Test image path");
DEFINE_int32(top_k, 5, "Top k classes, 5 by default");
enum VLOG_LEVEL {
EXAMPLE_SYSTEM = 0,
EXAMPLE_REPORT = 1,
EXAMPLE_DETAIL = 2,
EXAMPLE_DEBUG = 3
};
/*
#define HB_CHECK_SUCCESS(value, errmsg) \
do { \
//value can be call of function \
auto ret_code = value; \
if (ret_code != 0) { \
VLOG(EXAMPLE_SYSTEM) << errmsg << ", error code:" << ret_code; \
return ret_code; \
} \
} while (0);
*/
#define HB_CHECK_SUCCESS(value, errmsg) \
do { \
auto ret_code = value; \
if (ret_code != 0) { \
VLOG(EXAMPLE_SYSTEM) << errmsg << ", error code:" << ret_code; \
} \
} while (0)
typedef struct Classification {
int id;
float score;
const char *class_name;
Classification() : class_name(0), id(0), score(0.0) {}
Classification(int id, float score, const char *class_name)
: id(id), score(score), class_name(class_name) {}
friend bool operator>(const Classification &lhs, const Classification &rhs) {
return (lhs.score > rhs.score);
}
~Classification() {}
} Classification;
std::map<int32_t, int32_t> element_size{{HB_DNN_IMG_TYPE_Y, 1},
{HB_DNN_IMG_TYPE_NV12, 1},
{HB_DNN_IMG_TYPE_NV12_SEPARATE, 1},
{HB_DNN_IMG_TYPE_YUV444, 1},
{HB_DNN_IMG_TYPE_RGB, 1},
{HB_DNN_IMG_TYPE_BGR, 1},
{HB_DNN_TENSOR_TYPE_S8, 1},
{HB_DNN_TENSOR_TYPE_U8, 1},
{HB_DNN_TENSOR_TYPE_F16, 2},
{HB_DNN_TENSOR_TYPE_S16, 2},
{HB_DNN_TENSOR_TYPE_U16, 2},
{HB_DNN_TENSOR_TYPE_F32, 4},
{HB_DNN_TENSOR_TYPE_S32, 4},
{HB_DNN_TENSOR_TYPE_U32, 4},
{HB_DNN_TENSOR_TYPE_F64, 8},
{HB_DNN_TENSOR_TYPE_S64, 8},
{HB_DNN_TENSOR_TYPE_U64, 8}};
int prepare_tensor(hbDNNTensor *input_tensor,
hbDNNTensor *output_tensor,
hbDNNHandle_t dnn_handle);
int32_t read_image_2_tensor_as_nv12(std::string &image_file,
hbDNNTensor *input_tensor);
void get_topk_result(hbDNNTensor *tensor,
std::vector<Classification> &top_k_cls,
int top_k);
// using namespace std;
using std::placeholders::_1;
static const rclcpp::Logger LOGGER = rclcpp::get_logger("lattice_lqr_lateral_longitudinal");
LatticePlannerNode::LatticePlannerNode()
: Node("lattice_lqr_lateral_longitudinal")
/*'''**************************************************************************************
- FunctionName: None
- Function : None
- Inputs : None
- Outputs : None
- Comments : None
**************************************************************************************'''*/
{
this->declare_parameter<std::string>("roadmap_path", roadmap_path); // 读取路网文件名
this->declare_parameter<double>("target_speed", target_speed); // 读取目标速度
this->declare_parameter<double>("goal_tolerance", goalTolerance_); // 读取目标速度
this->declare_parameter<double>("speed_P", speed_P); // 读取参数
this->declare_parameter<double>("speed_I", speed_I);
this->declare_parameter<double>("speed_D", speed_D);
this->get_parameter<std::string>("roadmap_path", roadmap_path); // 读取路网文件名
this->get_parameter<double>("target_speed", target_speed); // 读取目标速度
this->get_parameter<double>("goal_tolerance", goalTolerance_); // 读取目标速度
this->get_parameter<double>("speed_P", speed_P); // 读取PID参数
this->get_parameter<double>("speed_I", speed_I);
this->get_parameter<double>("speed_D", speed_D);
float c_speed_, c_d_, c_d_d_, c_d_dd_, s0_;
this->declare_parameter<float>("c_speed", c_speed_); //读取Frenet规划器,初始目标速度
this->declare_parameter<float>("c_d", c_d_); //读取Frenet规划器,初始横向偏差
this->declare_parameter<float>("c_d_d", c_d_d_); //读取Frenet规划器,初始横向速度偏差
this->declare_parameter<float>("c_d_dd", c_d_dd_); //读取Frenet规划器,初始横向加速度偏差
this->declare_parameter<float>("s0", s0_); //读取Frenet规划器,初始纵向距离
this->get_parameter<float>("c_speed", c_speed_); //读取Frenet规划器,初始目标速度
this->get_parameter<float>("c_d", c_d_); //读取Frenet规划器,初始横向偏差
this->get_parameter<float>("c_d_d", c_d_d_); //读取Frenet规划器,初始横向速度偏差
this->get_parameter<float>("c_d_dd", c_d_dd_); //读取Frenet规划器,初始横向加速度偏差
this->get_parameter<float>("s0", s0_);
//加载路网文件
// std::cout << "roadmap_path: " << roadmap_path << " " << target_speed << std::endl;
//loadRoadmap(roadmap_path);
//GetWayPoints(); //在参考路径的基础上进行采点
// 构建相对平滑的Frenet曲线坐标系,一个中间暂时方案
//csp_obj_ = new Spline2D(wx_, wy_);
// 构造全局路径变量
//GenerateGlobalPath();
// Update Obstacle 添加虚拟障碍物
//UpdateStaticObstacle();
//pid_controller_longitudinal = std::make_unique<shenlan::control::PIDController>(speed_P, speed_I, speed_D);
//lqr_controller_lateral = std::make_unique<shenlan::control::LqrController>();
//lqr_controller_lateral->LoadControlConf();
//lqr_controller_lateral->Init();
/*
localization_data_subscriber = this->create_subscription<nav_msgs::msg::Odometry>("/carla/ego_vehicle/odometry", 10, std::bind(&LatticePlannerNode::OdomCallback, this, _1));
lacalization_data_imu_subscriber = this->create_subscription<sensor_msgs::msg::Imu>("/carla/ego_vehicle/imu", 10, std::bind(&LatticePlannerNode::IMUCallback, this, _1));
*/
vehicle_control_publisher = this->create_publisher<carla_msgs::msg::CarlaEgoVehicleControl>("/carla/ego_vehicle/vehicle_control_cmd", 10);
control_cmd.header.stamp = this->now();
control_cmd.gear = 1;
control_cmd.man
carla shenlan project cross
需积分: 0 111 浏览量
更新于2024-05-08
收藏 72.12MB ZIP 举报
标题中的"carla shenlan project cross"似乎指的是一个名为"Carla Shenlan"的项目,其中包含了跨平台或跨领域的元素。这个项目的具体细节没有在描述中给出,但我们可以根据提供的标签和压缩包文件名来推测一些可能的IT知识点。
标签"111"可能是一个版本号或者是项目的内部标识,但没有足够的信息来详细解释它的含义。
在压缩包的文件名称列表中,我们能看到以下关键文件:
1. **CMakeLists.txt** 和 **CMakeLists_.txt**:这通常是用于CMake构建系统的配置文件。CMake是一个跨平台的自动化构建系统,用来管理软件构建过程。CMakeLists.txt文件定义了项目如何被编译、链接和构建。CMakeLists_.txt可能是另一个版本或者临时的工作副本。
2. **package.xml**:在ROS(Robot Operating System)项目中,这是一个标准文件,它包含了关于ROS包的信息,如包的名称、版本、依赖项、作者等。这表明"Carla Shenlan"项目可能与ROS有关,是一个机器人或者自动化系统的软件组件。
3. **include**:通常包含头文件,这些头文件提供了C++或其他编程语言的接口定义,供其他源文件引用。
4. **deps_gcc9.3_j5**:这可能表示项目依赖于GCC 9.3版本的某些库,"j5"可能是构建环境或特定配置的标识。GCC是GNU Compiler Collection,是一个广泛使用的开源编译器套件。
5. **src**:通常存放项目的源代码文件。
6. **data**:可能包含项目运行所需的静态数据,如模型、配置文件等。
7. **launch**:在ROS中,这是存放启动脚本的地方,用于启动ROS节点和服务。
8. **rviz**:RViz是ROS的一个3D可视化工具,用于显示传感器数据和机器人状态。
9. **config**:这个目录可能包含各种配置文件,如参数设置、话题订阅和发布设置等。
综合这些信息,"Carla Shenlan"项目很可能是一个基于ROS的机器人或者自动化系统项目,使用C++作为主要编程语言,并且依赖于GCC 9.3编译器。项目使用CMake进行构建,具备3D可视化功能,并且拥有特定的数据集和配置设置。不过,没有更多的上下文信息,我们无法深入到具体的代码级理解。
_biubiubiu_
- 粉丝: 1
- 资源: 79
最新资源
- marisa-devel-0.2.4-4.el7.x64-86.rpm.tar.gz
- marisa-perl-0.2.4-4.el7.x64-86.rpm.tar.gz
- marisa-python-0.2.4-4.el7.x64-86.rpm.tar.gz
- marisa-tools-0.2.4-4.el7.x64-86.rpm.tar.gz
- matchbox-window-manager-1.2-16.1.20070628svn.el7.x64-86.rpm.tar.gz
- maven-3.0.5-17.el7.x64-86.rpm.tar.gz
- maven-antrun-plugin-1.7-8.el7.x64-86.rpm.tar.gz
- maven-antrun-plugin-javadoc-1.7-8.el7.x64-86.rpm.tar.gz
- maven-archiver-2.5-9.el7.x64-86.rpm.tar.gz
- maven-archiver-javadoc-2.5-9.el7.x64-86.rpm.tar.gz
- maven-artifact-2.2.1-47.el7.x64-86.rpm.tar.gz
- maven-artifact-manager-2.2.1-47.el7.x64-86.rpm.tar.gz
- maven-assembly-plugin-2.4-8.el7.x64-86.rpm.tar.gz
- maven-assembly-plugin-javadoc-2.4-8.el7.x64-86.rpm.tar.gz
- maven-cal10n-plugin-0.7.7-4.el7.x64-86.rpm.tar.gz
- maven-changes-plugin-2.8-7.el7.x64-86.rpm.tar.gz