Namespaces | |
| directions | |
Classes | |
| struct | CartographyChangesQueue |
| struct | CartographyConfig |
| class | Csc3dCartographyProcessor |
| class | CscEntityPositionManager |
| class | CscLidar2DEngineSimulated |
| class | CscLidar3DEngineSimulated |
| class | CscLidarEngine |
| class | CscLidarEngineRplidar |
| class | CscPlaceCartography |
| class | CscPointCloud3d |
| class | CscPointCloudMatcher |
| class | CscRealEntity3dLidarValues |
| class | CscSlam3dMap |
| struct | CscSlam3dMapVoxelChanges |
| struct | CscSlam3dMapVoxelChangesListener |
| struct | CscSlam3dMapVoxelDiff |
| struct | CscSlam3dMapVoxelGrid |
| struct | CscSlam3dMapVoxelKey |
| struct | CscSlam3dMapVoxelKeyHash |
| struct | CscSlam3dProbabilisticVoxel |
| class | CscSlam3dProbabilisticVoxelGrid |
| class | CscSlamEngine |
| struct | FrameMetadata |
| struct | LidarExtrinsics |
| struct | LidarExtrinsicsSidecar |
| struct | LidarImuData |
| class | LidarValues |
| class | LidarValuesSnapshot |
| struct | LikelihoodMonitor |
| struct | OdoDelta |
| struct | OdometryData |
| struct | OdometryDeltaSidecar |
| struct | Pose2D |
| struct | VoxelHash |
Typedefs | |
| typedef pcl::PointXYZI | PointT |
| typedef pcl::PointCloud< PointT > | PointCloudT |
| typedef uint64_t | CscLidarMode |
| typedef PointMatcher< float > | PM |
| typedef PM::DataPoints | DP |
| typedef PointMatcherIO< float > | PMIO |
| typedef Eigen::MatrixXf | Matrix |
Enumerations | |
| enum | CscEntityPositionSource { Entity = 0, LidarLocalization = 1, Simulator = 2, CoreInstruction = 3 } |
| enum | CscLidarModeList : CscLidarMode { cscLidarModePaused = 1ULL << 0, cscLocalisation = 1ULL << 2, cscSlam = 1ULL << 4 } |
| enum | CscSlamCellOccupancyStatus : uint8_t { CscSlamCellOccupancyStatus::SlamCellOccupancyStatus_Unknown, CscSlamCellOccupancyStatus::SlamCellOccupancyStatus_Free, CscSlamCellOccupancyStatus::SlamCellOccupancyStatus_Occupied } |
Functions | |
| static bool | isStaticOdometryDelta (const FrameMetadata &meta, float maxTranslationCm, float maxYawDeg) |
| template<typename T > | |
| static T | clampValue (T v, T lo, T hi) |
| static Eigen::Matrix4f | makeYawOffsetTransform (float yawRad) |
| Eigen::Matrix4f | makeRobotFromLidarTransform (const LidarExtrinsicsSidecar &e) |
| Eigen::Matrix4f | makeRobotDeltaTransform (const OdometryDeltaSidecar &odo) |
| Eigen::Matrix4f | makeLidarDeltaFromMetadata (const FrameMetadata &meta) |
| static bool | readFile (const fs::path &path, std::string &out) |
| static double | extractDouble (const std::string &text, const std::string &key, double fallback=0.0) |
| static int | extractInt (const std::string &text, const std::string &key, int fallback=0) |
| static std::vector< OdoDelta > | loadOdometryJsons (const fs::path &folder) |
| static std::vector< Pose2D > | integrateOdometry (const std::vector< OdoDelta > &deltas, bool invertYaw, bool invertDelta) |
| static float | extractYawY (const Eigen::Matrix3f &R) |
| static Eigen::Matrix4f | projectToPlanarMotion (const Eigen::Matrix4f &T) |
| void | toSimulatorPoint (CscPoint3dOriented *point) |
| void | convertOdometryDeltaToRobotReferenceFrame (double &deltaPositionX, double &deltaPositionY, double &deltaPositionZ, double previousYaw) |
| CscQuaternion | extractNavigationQuaternionFromEntityQuaternion (const CscQuaternion &entityQuaternion) |
| double | extractNavigationYawFromEntityQuaternion (const CscQuaternion &entityQuaternion) |
| vector< CscPoint3d > | transformPointsLidarLocalToWorld (const vector< CscPoint3d > &pointCloud, const CscPoint3d &entityPosition, const CscQuaternion &entityRotationQuaternion) |
| CscPoint3d | transformPointLidarLocalToWorld (const CscPoint3d &localPoint, const CscPoint3d &entityPosition, const CscQuaternion &entityRotationQuaternion) |
| CscPoint3d | transformPointWorldToLidarLocal (const CscPoint3d &worldPoint, const CscPoint3d &entityPosition, const CscQuaternion &entityRotationQuaternion) |
| void * | updateLidarValuesThreadActionLoop (void *argument) |
| bool | checkRPLIDARHealth (RPlidarDriver *drv) |
| DP | cscPointsToPMDataPoints (const vector< const CscPoint3d * > &points, bool XZTo2DOnly) |
| void | unpack_row_col_7_11_ptr (const uint8_t *&ptr, uint16_t &row, uint16_t &col) |
| uint16_t | read_u16_le_ptr (const uint8_t *&ptr) |
| OdometryData | composeLocalOdometryDelta (const OdometryData &a, const OdometryData &b) |
| ptr< CObservation2DRangeScan > | lidarValuesToMrptObservation (const std::map< double, double > &scanDegreesCentimeters, double maxDistanceMeters=8.0) |
| CActionCollection::Ptr | createOdometryActionFromDiff (const CPose2D &incr, bool isSimulatedEntity) |
| static std::string | PFAlgorithmToString (CParticleFilter::TParticleFilterAlgorithm algo) |
| void | resetSampling (size_t particlesCount, const ptr< COccupancyGridMap2D > &slamMap, CMonteCarloLocalization2D *slamLocalization, CscLogger *logger) |
| void | injectRandomPosesPartial (mrpt::slam::CMonteCarloLocalization2D &pf, mrpt::maps::COccupancyGridMap2D &grid, const mrpt::bayes::CParticleFilter::TParticleFilterOptions &pfOpts, double percent) |
| double | scanMapConsistency_LL_per_ray (const std::shared_ptr< mrpt::maps::COccupancyGridMap2D > &grid, const std::shared_ptr< mrpt::obs::CObservation2DRangeScan > &scan, const mrpt::poses::CPose2D &entityPose) |
| bool | hasNearbySupportedStructureDT (const std::vector< std::pair< int, int >> &clusterCells, const std::vector< uint8_t > &support, int W, int H, int maxShiftCells) |
| string | mrptPoseToJson (const TPose2D &pose) |
| string | mrptPointToJson (const TPoint2D &point) |
| CscPoint2dOriented | mrptPoseToCscPointOriented (const TPose2D &pose) |
| CscPoint2d | mrptPointToCscPoint (const TPoint2D &point) |
| static std::string | pose2dToString (const mrpt::poses::CPose2D &p) |
| pcl::PointCloud< pcl::PointXYZ >::Ptr | buildPclCloudFromCurrentFrameVoxelized (const std::vector< CscPoint3d > &cloudCm, float voxelSizeMeters, size_t maxPoints, const CscSlamEngine::Slam3dParams &slam3dParams) |
| pcl::PointCloud< pcl::PointXYZ >::Ptr | buildLocalPclCloudFromProbabilisticVoxels (const CscSlam3dMap &map, const CPose3D ¢erPose, double radiusMeters, float voxelSizeMeters, size_t maxPoints) |
| ENUM (CscSlam3dMapVoxelDiffType, SLAM3D_VOXEL_DIFF_TYPE_ADD, SLAM3D_VOXEL_DIFF_TYPE_REMOVE) | |
| ENUM (CscSlam3dMapVoxelChangesMode, SLAM3D_VOXEL_CHANGES_MODE_DIFFS, SLAM3D_VOXEL_CHANGES_MODE_FULL_REBUILD) | |
| double | distancePoints (const TPoint2D &pointA, const TPoint2D &pointB) |
| double | distancePoints (const TPose2D &poseA, const TPose2D &poseB) |
| CscPoint2d | toMrptReferenceFrame (const CscPoint3d &point) |
| CscPoint3d | toMrptReferenceFrame3d (double x, double y, double z) |
| CscPoint3d | fromMrptReferenceFrame3d (double mx, double my, double mz) |
Variables | |
| static std::unique_ptr< CscLogger > | logger = CscLogger::getForCategory("CscLidarEngine") |
| static const string | cartographyPointsFilename = "allPoints.csv" |
| const string | PLACE_TAG_FROM_CARTOGRAPHY = "FromCartography" |
| constexpr double | mrptGridSideMeters = 16 |
| constexpr double | mrptGridResolution = 0.04 |
| const string | CARTOGRAPHY_STORAGE_CARTO_PREFIX = "carto__" |
| const string | CARTOGRAPHY_STORAGE_DIRECTORY = string(CSC_DEFAULT_OUT_DIR) + "/CscSLAMCartographies" |
| static const float | SLAM_3D_MAP_VOXEL_SIZE_METERS = 0.015 |
| static const float | SLAM_3D_ICP_VOXEL_SIZE_METERS = 0.05f |
| static CParticleFilter::TParticleFilterAlgorithm | PF_algorithm = CParticleFilter::pfAuxiliaryPFOptimal |
| const double | localizationOccupancyThreshold = 0.25 |
| static LikelihoodMonitor | lkmon |
| long long | perturbationCounter = -1 |
| typedef uint64_t conscience_core::lidar::CscLidarMode |
| typedef PM::DataPoints conscience_core::lidar::DP |
| typedef Eigen::MatrixXf conscience_core::lidar::Matrix |
| typedef PointMatcher<float> conscience_core::lidar::PM |
| typedef PointMatcherIO<float> conscience_core::lidar::PMIO |
| typedef pcl::PointCloud<PointT> conscience_core::lidar::PointCloudT |
| typedef pcl::PointXYZI conscience_core::lidar::PointT |
|
strong |
| pcl::PointCloud<pcl::PointXYZ>::Ptr conscience_core::lidar::buildLocalPclCloudFromProbabilisticVoxels | ( | const CscSlam3dMap & | map, |
| const CPose3D & | centerPose, | ||
| double | radiusMeters, | ||
| float | voxelSizeMeters, | ||
| size_t | maxPoints | ||
| ) |
| pcl::PointCloud<pcl::PointXYZ>::Ptr conscience_core::lidar::buildPclCloudFromCurrentFrameVoxelized | ( | const std::vector< CscPoint3d > & | cloudCm, |
| float | voxelSizeMeters, | ||
| size_t | maxPoints, | ||
| const CscSlamEngine::Slam3dParams & | slam3dParams | ||
| ) |
| bool conscience_core::lidar::checkRPLIDARHealth | ( | RPlidarDriver * | drv | ) |
|
static |
| OdometryData conscience_core::lidar::composeLocalOdometryDelta | ( | const OdometryData & | a, |
| const OdometryData & | b | ||
| ) |
|
inline |
parameters in Conscience ref frame
| previousYaw | standard Conscience yaw -> positive to the right if looking from above |
| CActionCollection::Ptr conscience_core::lidar::createOdometryActionFromDiff | ( | const CPose2D & | incr, |
| bool | isSimulatedEntity | ||
| ) |
| DP conscience_core::lidar::cscPointsToPMDataPoints | ( | const vector< const CscPoint3d * > & | points, |
| bool | XZTo2DOnly | ||
| ) |
|
inline |
|
inline |
| conscience_core::lidar::ENUM | ( | CscSlam3dMapVoxelChangesMode | , |
| SLAM3D_VOXEL_CHANGES_MODE_DIFFS | , | ||
| SLAM3D_VOXEL_CHANGES_MODE_FULL_REBUILD | |||
| ) |
| conscience_core::lidar::ENUM | ( | CscSlam3dMapVoxelDiffType | , |
| SLAM3D_VOXEL_DIFF_TYPE_ADD | , | ||
| SLAM3D_VOXEL_DIFF_TYPE_REMOVE | |||
| ) |
|
static |
|
static |
|
inline |
use this to retrieve transformation quaternion from entity current quaternion, it extracts actual entity rotation when "still" and looking forward (removing base rotation which is not relevant when rotating sensor with no rotation on the robot -> base rotation is not part of the actual rotation in sensors rotations)
| entityQuaternion | entity current rotation quaternion, as returned by CscEnvironmentSimulator::getEntityPositionAndRotationQuaternion(entitySN) |
|
inline |
use this instead of buggy CscPoint3dOriented::toStandardEulerY(), it extracts actual entity rotation when "still" and looking forward
| entityQuaternion | entity current rotation quaternion, as returned by CscEnvironmentSimulator::getEntityPositionAndRotationQuaternion(entitySN) |
|
static |
|
inline |
| bool conscience_core::lidar::hasNearbySupportedStructureDT | ( | const std::vector< std::pair< int, int >> & | clusterCells, |
| const std::vector< uint8_t > & | support, | ||
| int | W, | ||
| int | H, | ||
| int | maxShiftCells | ||
| ) |
| void conscience_core::lidar::injectRandomPosesPartial | ( | mrpt::slam::CMonteCarloLocalization2D & | pf, |
| mrpt::maps::COccupancyGridMap2D & | grid, | ||
| const mrpt::bayes::CParticleFilter::TParticleFilterOptions & | pfOpts, | ||
| double | percent | ||
| ) |
|
static |
|
static |
| ptr<CObservation2DRangeScan> conscience_core::lidar::lidarValuesToMrptObservation | ( | const std::map< double, double > & | scanDegreesCentimeters, |
| double | maxDistanceMeters = 8.0 |
||
| ) |
|
static |
| Eigen::Matrix4f conscience_core::lidar::makeLidarDeltaFromMetadata | ( | const FrameMetadata & | meta | ) |
| Eigen::Matrix4f conscience_core::lidar::makeRobotDeltaTransform | ( | const OdometryDeltaSidecar & | odo | ) |
| Eigen::Matrix4f conscience_core::lidar::makeRobotFromLidarTransform | ( | const LidarExtrinsicsSidecar & | e | ) |
|
static |
| CscPoint2d conscience_core::lidar::mrptPointToCscPoint | ( | const TPoint2D & | point | ) |
| string conscience_core::lidar::mrptPointToJson | ( | const TPoint2D & | point | ) |
| CscPoint2dOriented conscience_core::lidar::mrptPoseToCscPointOriented | ( | const TPose2D & | pose | ) |
| string conscience_core::lidar::mrptPoseToJson | ( | const TPose2D & | pose | ) |
|
static |
|
static |
|
static |
|
inline |
|
static |
| void conscience_core::lidar::resetSampling | ( | size_t | particlesCount, |
| const ptr< COccupancyGridMap2D > & | slamMap, | ||
| CMonteCarloLocalization2D * | slamLocalization, | ||
| CscLogger * | logger | ||
| ) |
| double conscience_core::lidar::scanMapConsistency_LL_per_ray | ( | const std::shared_ptr< mrpt::maps::COccupancyGridMap2D > & | grid, |
| const std::shared_ptr< mrpt::obs::CObservation2DRangeScan > & | scan, | ||
| const mrpt::poses::CPose2D & | entityPose | ||
| ) |
|
inline |
|
inline |
| void conscience_core::lidar::toSimulatorPoint | ( | CscPoint3dOriented * | point | ) |
This method is used to convert the euler with a standard euler format to the one used in the simulator
|
inline |
|
inline |
|
inline |
|
inline |
| void* conscience_core::lidar::updateLidarValuesThreadActionLoop | ( | void * | argument | ) |
| const string conscience_core::lidar::CARTOGRAPHY_STORAGE_CARTO_PREFIX = "carto__" |
| const string conscience_core::lidar::CARTOGRAPHY_STORAGE_DIRECTORY = string(CSC_DEFAULT_OUT_DIR) + "/CscSLAMCartographies" |
|
static |
|
static |
| const double conscience_core::lidar::localizationOccupancyThreshold = 0.25 |
|
static |
|
constexpr |
|
constexpr |
| long long conscience_core::lidar::perturbationCounter = -1 |
|
static |
| const string conscience_core::lidar::PLACE_TAG_FROM_CARTOGRAPHY = "FromCartography" |
|
static |
|
static |