![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |
System Dependencies
Dependant Packages
Launch files
Messages
Services
Plugins
Recent questions tagged rm_utils at Robotics Stack Exchange
![]() |
rm_utils package from fyt2024_vision repoarmor_detector armor_solver rm_auto_aim rm_bringup rm_camera_driver rm_serial_driver rm_interfaces rm_robot_description rm_rune rune_detector rune_solver rm_utils |
ROS Distro
|
Package Summary
Tags | No category tags. |
Version | 0.9.0 |
License | Apache License 2.0 |
Build type | AMENT_CMAKE |
Use | RECOMMENDED |
Repository Summary
Description | 中南大学FYT战队RoboMaster24赛季视觉项目 |
Checkout URI | https://github.com/csu-fyt-vision/fyt2024_vision.git |
VCS Type | git |
VCS Version | main |
Last Updated | 2024-08-27 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | No category tags. |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- zhenpeng ge
Authors
rm_utils
1. 介绍
该模块提供通用的工具类以及函数,包括:
- 扩展卡尔曼滤波器 ExtendedKalmanFilter
- PnP解算器 PnPSolver
- 弹道补偿器 TrajectoryCompensator
- FYT日志库
- URL路径解析器 URLResolver
- 心跳发布者 HeartBeatPublisher
2. 使用方法
2.0 扩展卡尔曼滤波
见armor_solver/src/armor_solver_node.cpp
2.1 PnP解算
示例:
#include "rm_utils/math/pnp_solver.hpp"
// 1. 创建PnP解算器
// 构造函数参数(cv::Mat, cv::Mat, cv::PnPMethod):相机内参矩阵、畸变系数、解算方法(默认是IPPE)
auto pnp_solver = PnPSolver(camera_matrix, distortion_coefficients);
// 2. 为PnPSolver设置一个物体坐标系
std::vector<cv::Point3f> object_points = {
cv::Point3f(-1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, 1.0f, 0.0f),
cv::Point3f(1.0f, -1.0f, 0.0f),
cv::Point3f(-1.0f, -1.0f, 0.0f)
};
pnp_solver.setObjectPoints(object_points, "object_frame");
// 3. PnP解算
cv::Mat rvec, tvec;
pnp_solver.solvePnP(image_points, rvec, tvec, "object_frame");
// 对于打符来说,因为以前的PnP是直接返回一个表示位姿的Eigen::VectorXd,所以这里也提供了一个函数,用于将rvec和tvec转换为VectorXd
// 4. 获取位姿
Eigen::VectorXd pose = pnp_solver.getPose(rvec, tvec);
2.2 弹道补偿
示例:
#include "rm_utils/math/trajectory_compensator.hpp"
auto compensator = CompensatorFactory::createCompensator("ideal");
double pitch = 0;
Eigen::Vector3d p = Eigen::Vector3d(1.0, 0, 0);
double temp_pitch = pitch;
if (trajectory_compensator_->compensate(p, temp_pitch)) {
pitch = temp_pitch;
}
2.3 Eigen和cv::Mat的相互转换
示例:
#include "rm_utils/math/utils.hpp"
cv::Mat mat = cv::Mat::eye(3, 3, CV_32FC1);
Eigen::Matrix3f eigen_mat = utils::cvToEigen(mat);
cv::Mat mat2 = utils::eigenToCv(eigen_mat);
2.4 FYT日志库
示例:
#include "rm_utils/logger/log.hpp"
// 1. 初始化
// 参数:日志名称、日志文件路径、日志级别
FYT_REGISTER_LOGGER("test_logger", "/tmp/test_logger.log", INFO);
// 2. 使用
FYT_INFO("test_logger", "This is a test log");
int a = 1;
FYT_WARN("test_logger", "a = {}", a);
2.5 URL Resolver
能够用很方便的方式(类camera_info_url)访问文件和或ros2包的install目录
示例:
```cpp #include “rm_utils/url_resolver.hpp”
namespace fs = std::filesystem; fs::path model_path = utils::URLResolver::getResolvedPath(“package://armor_detector/model/lenet.onnx”);
if (fs::exists(model_path)) { std::cout«model_path.string()«std::endl; }
File truncated at 100 lines see the full file
Package Dependencies
Deps | Name |
---|---|
ament_cmake | |
ament_lint_auto | |
ament_lint_common | |
rclcpp | |
geometry_msgs | |
opencv | |
ceres | |
rcpputils |