ORCA-3D避障代码和原理解析 如果 timeHorizon 值较小,智能体会更靠近其他智能体时才做出速度调整,这样它的速度选择会更加灵活,但也可能导致更频繁或更剧烈的速度变化,增加碰撞的风险。如果 timeHorizon 值较大,智能体会较早地预测与其他智能体的潜在碰撞并做出反应,从而可以有更早的速度调整。如果 timeStep 为 0.1 秒,则表示每隔 0.1 秒,仿真系统会更新智能体的状态并计算新的速度和位置。timeHorizon 决定了智能体在计算避免与其他智能体碰撞时的时间范围,即预测多久之后可能会发生碰撞。
基于激光雷达的无人机相互避障 首先,#include可能难以直接定位到UAVPosVel.h,需要在cmakelist中的include_directories添加其生成路径,即xxx/devel/include/package_name。其次,UAVPosVel.h中的类不叫UAVPosVel,他生成了一个模板函数,所以使用时应该重新定义。但c++和python自定义消息稍有不同,不能直接引用头文件,然后直接用消息名称使用,如下。ORCA需要一个自定义话题的输入,也就是一个包含速度和位置的消息。ORCA是主要的避障算法。
Ubuntu: GIT push 遇到 Access denied 问题 再次使用``命令查看并复制公钥在“设置”-“安全设置”-“SSH公钥”中添加公钥。遇到 Access denied ,通常与SSH认证或者权限设置有关。如果这个文件不存在,需要生成一个新的SSH密钥(需要连续按三次空格)如果是HTTPS地址,需要改成SSH地址。公钥格式如下,全部复制进来。
Ego-planner:三维建图 grid_map.cpp 与 路径规划解析 膨胀后的栅格地图占据状态,膨胀指的是在原本的障碍物栅格上增加一圈无人机的体积,这样可以把无人机看成一个质点处理。:初始的栅格地图占据状态,一维数组。他是把空间的3维数据映射到1维去处理的;数据来进行转换填充的,(没错,ego也可以利用点云来建图,也就是无需d435i进行输入,可以替换为激光雷达):用于记录raycast过程中射线经过该栅格的次数,也就是命中和未命中的总次数。ego避障里面比较重要的功能是对环境进行栅格地图进行避障。: 三维栅格地图的体积,是地图尺寸/分辨率获得的。
线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法 求解的时候需要求解的是f(x)的最小值,其实求解的就是f(x)'=0的地方。求解非线性最小二乘,就需要用到牛顿法,高斯牛顿法,或者LM法。最小二乘分为线性最小二乘和非线性最小二乘。目标函数都是min||f(x)||牛顿法是将f(x)进行二阶泰勒展开。最小二乘目标函数都是。牛顿法/高斯梯度下降。
opencv 存储像素值为浮点数的图像 (.tiff) 在存储深度图像时,怎么也存储不对存储成png形式时,会自动把转换成查阅资料才发现可以通过来存储像素值为浮点数的图片在python和c++的opencv库中都能实现。
Gazebo中手动建立模型 + realsense模型深度修改 control + x 退出,并选择save and exit保存模型。z由上图编辑界面的level1和level2决定。然后画墙体x和y的位置,点击右键暂停画图。control + B建立墙体。
无人机群ros通信 在ROS基础上,配置主机和从机,实现主机和从机的话题联通。在主机roscore启动,可以看到无人机所有话题。在一个局域网内获取无人机的机载电脑ip。通过地面站ssh到机载电脑,实现通信。
自动驾驶:基于光流法的相机初始标定 x1构建重投影误差,优化H来进一步得到相机之间的变化Rt,然后根据车辆坐标系的移动Rt,可以计算出相机到车辆的标定Rt。x1,其中x1和x2分别是上一帧和当前帧相机坐标系下的点(x,y,1),我们可以根据x2 - H。X1表示三维坐标点,在平面P上,因此X1沿着平面法向量n的投影距离为d。frame1中的点可以由以下公式转换到frame2中。Ax = xB问题求解,旋转和平移分步求解法。假设相机在两个不同位置拍摄同一个平面(路面)因此我们就得到了平面的单应性矩阵。提取出连续两帧之间的稀疏光流。
激光雷达&毫米波雷达 Lidar采样率一定,因此帧率越高,角分辨率越低;反之帧率越低,角分辨率越高。角分辨率:点云图像中相邻两个点之间的夹角(应该是同一个激光束扫描得到的)采样率:激光雷达每秒进行有效采集的此书,也就是1s内产生的点云数量。扫描频率/帧率:是转速的意思,10Hz就是1s转10圈。分辨率(激光光束夹角越小分辨率越高,0.1度)通过发射接受信号的频率差,计算目标距离和速度。反射率(一般探测10%以上反射率的目标)线数(32/64/128)探测距离:0.3-200m。