C++踩坑记录
1. 数组智能指针 在创建指向数组的智能指针时需要注意传入模板的类型需要加中括号,例如创建八个元素的整数数组指针std::unique_ptr<int[]> ptr = std::make_unique<int[]>(8) 2. 移位操作 移位运算符即按二进制形式把所有数字向左移动相应的位数,高位舍弃,空位补0。因此移位后返回的字符宽度与需要移位的数字字符宽度保持一致 注意移动的位数不得超过变量的字符宽度,不然会导致未定义行为 此时便出现了易错点:移位操作时存在整数提升现象,即小于或等于int的整数类型在运算时会被自动提升为int或unsigned int(当int不够存储原类型数据),这样是不安全的,因此需要在移位前先显示进行类型转换 参考文章C++ 整数提升与移位陷阱 参考文章C++移位运算符详解 3. 判断两个double类型是否相等 由于浮点数储存的精度问题,直接使用相等运算符(==)判断两个double类型的数是否相等可能会导致意外的结果,因此可以设置一个极小的阈值作为两数相差的上限 bool isEqual(double a, double ...
fast-lio2调试笔记
1. 为点云保存到地图中增加触发条件 1.1 添加控制参数 // 在现有全局变量区域添加 bool start_save_pcd = false; // 控制是否开始保存点云 1.2 修改publish_frame_world函数 将现有的publish_frame_world函数替换为以下版本: void publish_frame_world(const ros::Publisher & pubLaserCloudFull) { if(scan_pub_en) { PointCloudXYZI::Ptr laserCloudFullRes(dense_pub_en ? feats_undistort : feats_down_body); int size = laserCloudFullRes->points.size(); PointCloudXYZI::Ptr laserCloudWorld( \ new Poi...
网站自动申请续签SSL证书
1. 安装 acme.sh 使用root账户登录阿里云,然后安装此项目(由于阿里云国内服务器无法访问github,所以要使用gitee拉取项目,可以参考官方文档) git clone https://gitee.com/neilpang/acme.sh.git cd acme.sh ./acme.sh --install -m my@example.com my@example.com替换成自己邮箱 重新加载环境变量和切换CA证书类型 # 重新加载环境变量 source ~/.bashrc # CA证书类型默认使用ZeroSSL,切换成Let's Encrypt acme.sh --set-default-ca --server letsencrypt 2. 配置阿里云DNS API 一次选择阿里云控制台 - 访问控制 RAM - 身份管理 - 用户 - 创建用户 填写登录名称,勾选使用永久AccessKey访问 分别复制AccessKey ID和AccessKey Secret的值,并保存好 然后点击添加权限。搜索DNS,选择AliyunDNSFullAccess 3. 申...
Livox-mid360激光雷达运行fast-lio2
所用的环境: Linux版本:Ubuntu 20.04 ROS版:Noetic 1. mid-360配置 将mid-360通过网口与电脑相连,然后给mid360上电 设置有线连接的IPv4地址: 地址设为192.168.1.50 子网掩码设为255.255.255.0 网关设为192.168.1.1 2. 安装Livox SDK2 2.1 源码安装 git clone https://github.com/Livox-SDK/Livox-SDK2.git cd Livox-SDK2/ mkdir build && cd build cmake .. make -j sudo make install 2.2 运行Livox-SDK2示例 进入Livox-SDK2/samples/livox_lidar_quick_start这个文件夹,找到mid360_config.json,把 host_ip 改成 192.168.1.50 进入Livox-SDK2/build/samples/livox_lidar_quick_start这个文件夹运行如下代码 ./...
第十一章TRPO算法
TRPO算法的重点体现在策略函数的更新方式上 策略目标部分理论推导请参考强化学习教程相关章节 策略函数差异的约束主要体现在线性搜索部分 共轭梯度法的讲解见求解对称正定线性方程组的共轭梯度法
第十章Actor-Critic算法
虽然采用时序差分法来指导网络学习,但是此算法仍是在一个episode结束后才进行网络更新
第九章策略梯度算法
理论讲解部分过于简单,可参考强化学习教程相关章节
AEDE参数解读
1. localPlanner中的参数 pathFolder 存放离线待选路径的位置 vehicleLength,/vehicleWidth 车辆尺寸,用于近距离旋转碰撞检测 sensorOffsetX / sensorOffsetY 传感器转换到车辆参考点 twoWayDrive 能否倒车行驶 laserVoxelSize / terrainVoxelSize 激光雷达点云/地形点云的降采样体素网格大小。较大值会更强下采样,减少点云量,提高速度但丢细节;较小值保留更多点但计算量增大。 useTerrainAnalysis 是否启用地形分析,决定了是使用原始激光雷达点云还是预处理后的地形点云进行障碍物检测和路径决策 checkObstacle 是否启用障碍物检测 checkRotObstacle 是否检测车辆旋转时车身与障碍物的碰撞风险 adjacentRange 路径规划时考虑障碍物的最大范围和路径搜索范围 obstacleHeightThre 障碍物高度阈值,当点云的intensity即地形高度超过该阈值时,视为障碍物 groundHeightThre 地面高度阈值...
TARE代码解读
本代码主只是用来做自主探索时的上层路径规划和重定位 exploration_path keypose_graph navigation_boundary_publisher rolling_grid tare_planner_node utils graph lidar_model planning_env rolling_occupancy_grid tare_visualizer viewpoint grid_world local_coverage_planner pointcloud_manager sensor_coverage_planner tsp_solver viewpoint_manager 1. exploration_path 实现探索路径的类 2. keypose_graph 3. navigation_boundary_publisher 在Matterport3D 仿真环境时,从src/tare_planner/data/boundary.ply文件读取探索边界信息并发送出去 输入为空 输出为/navigation_boundary 4. rol...