博文

使用全局扩展脚本对任意 clash 节点组中所有节点添加前置代理,实现链式代理效果

 全局扩展脚本 function main(config, profileName) {   const DIALER_PROXY = "中转节点组"; // 这里需要填写完整的前置代理组名称   const GROUP_SUFFIX = "落地节点组";    // 这里填写需要通过前置代理连接的所有节点所在组后缀   // 用于存储需要添加 dialer 的代理名称(去重)   const proxiesToDial = new Set();   // 第一步:遍历 proxy-groups,收集所有在 "IPLC节点" 组中的代理名   config["proxy-groups"]?.forEach(group => {     if (group?.name?.endsWith(GROUP_SUFFIX)) {       console.log(group.proxies);       (group.proxies || []).forEach(proxyName => {         if (typeof proxyName === 'string') {           proxiesToDial.add(proxyName);           console.log(proxyName);         }         // 如果是嵌套数组或其他结构,可扩展处理       });     }   });   // 第二步:遍历全局 proxies,为匹配的代理添加 dialer-proxy   config.proxies?.forEach(proxy => {     if (typeof proxy === 'object' ...

remmina 在 ubuntu 下剪贴板粘贴图像至 RDP 协议的 Windows 主机

 remmina rdp 协议所使用的后端 freerdp 是支持粘贴文件和图像。 但是在 remmina 中只实现了粘贴图像。 根据这一篇 issue 中提到的  File copy&paste clipboard [RDP] For those users looking for a way to copy image as I did: On Ubuntu 21.10 copying image actually works from/to Firefox, Telegram, Screenshot app... And does not work in Chrome and Chrome-bases applications like WALC (WhatsApp client) 从 Windows 中复制的图像无法直接粘贴至 Chrome 和基于该内核的应用,需要先粘贴到其他软件,例如 LibreOffice 中,再进行复制。 对于 Ubuntu 的屏幕截图粘贴至 Windows ,也需要先粘贴至其他软件再进行复制粘贴。  

系统与数据备份

使用 VHDX 虚拟磁盘安装系统,可以做到 硬盘单分区,避免系统盘剩余空间浪费。同时为系统预留充足空间。  单文件备份与恢复较为方便。  但是可能会影响系统性能,而且 VHDX 文件变大后无法再变小。  将 Users 文件夹通过目录软连接的方式移动到虚拟硬盘外面,将用户数据与系统隔离。如果是全新安装系统,可以参考  在Windows安装过程移动Users(AppData)目录  如果系统已经安装完成,则参考  修改 Users 文件夹路径  ,在 PE 下进行操作,同时注意 PE 中挂载的 VHDX 磁盘与目标硬盘的盘符。 根据 3-2-1 原则 3:存储3 份完整文件,一份原件加上两份拷贝。2:将文件起码保存在两种不同的介质上。1:将一份拷贝保存在异地。 由于使用 NAS 受网线速率的瓶颈,笔记本使用 2.5G 及以上速率网卡较为不便,且大部分电脑目前都有 2 个 m.2 硬盘位,故使用另外一块硬盘实现“文件保存在两种不同的介质上”。 在工作和生活中可能会遇到误删文件、硬盘损坏、电脑丢失。 对于误删文件,需要对文件进行多版本备份,对于硬盘损坏,需要对系统进行备份(最好是无感进行,无需其他环境),对于硬件丢失,需要用云服务,且需要有文件区块级别的增量备份。 对于备份软件选取的要求:方便(有 GUI),无感(后台进行,不影响当前工作),增量备份(备份多个版本的系统速度快)。 原来笔者一直使用 Diskgenius 的分区到镜像 功能作为备份,但是没有定时备份,需要手动操作,无法对文件区块进行增量备份,而且进行增量备份后,只能删除最后的时间点,不能删除最开始的时间点。 最后选取了 duplicati 作为备份软件,相比较与其他软件,开源免费带 GUI。 下面是关于 duplicati 的配置。 为了做到无感备份,在 Windows 下软件可以使用微软的 VSS 功能,需要以管理员模式启动软件,在 duplicati 中需要手动开启,其选项为 snapshot-policy 。 如果需要以管理员权限进行自启动,需要先再任务管理器中关闭原来的自启动,通过任务计划程序手动添加任务。 如果你不想备份到其他硬盘,需要使用 duplicati 内置的云服务商进行备份,且文件较大,则可以关闭文件校验,避免备份后下载...

ROS in Docker

 主要参考 An Updated Guide to Docker and ROS 2 Docker 安装 Docker Desktop 为了统一性,在 Linux 上为虚拟机,请安装 Docker Engine: FAQs for Docker Desktop for Linux 管理容器和镜像使用 VsCode 的 Docker 插件就够了。 Dockerfile 编写 参考 turtlebot3_behavior_demos_dockerfile osrf镜像 https://github.com/osrf/docker_images 通常 osrf 开发,ros官方生产部署。 base 层从现有镜像开始,适配项目所需环境(设备驱动,功能包依赖)。 overlay 层将代码复制到镜像内,一般用于部署。 dev 层适配项目开发环境,将代码直接映射至容器内。 可能会用到的实用工具参考 https://github.com/sskorol/ros2-humble-docker-dev-template docker-compose.yml 参考 turtlebot3_behavior_docker_compose 根据镜像层分为三个服务,将配置设置分开,使用时仅需启动对应的一个服务。 如果是部署,则基于 overlay 层配置,编写 command 参数启动相应服务。 如果是开发,则启动 dev 层服务。 如果需要用到显卡 https://github.com/dusty-nv/jetson-containers https://github.com/niladut/ros2-docker-workspace

Robomaster 2023赛季哨兵设计思路

  目前方案 麦克纳姆轮底盘,弹仓置于底盘,因供弹链,所以 NUC 无法放置于云台中心点,转动惯量相比于普通步兵较大。 因 USB3.0 滑环成本较高,故 NUC ,雷达受相机位置所限制只能放置于云台。 基于算法层面的考虑 此前在 RMUA 所有队伍都是使用 2d 激光雷达进行定位,实力较强的队伍会在定位算法上进行创新。 后来基于 3d 激光雷达的里程计算法越来越成熟,fast-lio, point-lio,定位准确,精度高。鉴于 RMUC 场地的复杂性(盲道,斜坡),故使用 3d 雷达方案进行定位。 对比 3d 雷达里程计算法在较为空旷地区(体育馆)以及走廊会出现定位缓慢、漂移,需要参照物较多的地形。 CPU 占用比 2d 点云匹配位置估计算法较高。 为何规划导航使用基于 2d 而不是 3d 的算法 ego-planner 也是比较成熟的 3d 路径规划算法,但是考虑到相比于 2d 规划导航,当时哨兵组开发人员更熟悉 2d 规划导航,时间紧迫,故没有评估其可行性。 为何使用 roborts 框架 虽然该框架较为复杂(相比 move_base),但是有前人的代码可以参考(RMUA),而且开发灵活。 基于成本方面的考虑 设备 mid-360 相比于 2d 雷达并不是特别贵,而且范围广,自带 imu,雷达里程计算法稳定(相对)。 位置 由于云台相机位置,如果需要将 NUC 通过滑环,则需要购买 2k+ 可以通过 USB3.0 的滑环,所以 NUC 暂时放在滑环上层,由于底盘需要自旋,所以雷达也暂时放在云台上(当然也可以考虑华工的龙门架,雷达倒置放置在最高处与底盘固连)。 其他学校 在哨兵出现的第一年(2023年),深圳大学使用的是 fast-lio + move_base(靠慢速和双云台避免雷达运动畸变),华南农业大学使用的是 2d 雷达修...