Tmux Tutorial

1. The Core Concept Everything in tmux relies on a Prefix Key. By default, this is Ctrl + b. You press Ctrl and b together, release them, and then press the command key. 2. Quick Cheat Sheet Session Management (Run these in the terminal) Goal Command Start new session tmux new -s training (Name it so you can find it later) Detach (Leave running) Press Ctrl+b then d List running sessions tmux ls Re-attach to session tmux attach -t training Kill a session tmux kill-session -t training Window (Tab) Management (Inside tmux) Goal Shortcut (Press Ctrl+b first!) New Window c Close Window & (or type exit in the shell) Next Window n Previous Window p Rename Window , Pane (Split) Management (Inside tmux) Goal Shortcut (Press Ctrl+b first!) Split Vertically % (Shift + 5) Split Horizontally " (Shift + ‘) Move Focus Arrow Keys Zoom Pane z (Makes current pane fullscreen; press again to unzoom) Scroll Mode [ (Then use arrows/PgUp to scroll. Press q to quit) 3. The “Training Dashboard” Workflow Since you have 8 GPUs, you shouldn’t just run the script. You should monitor it. Here is how to set up a professional view: ...

November 30, 2025 · 2 min · 408 words · xxraincandyxx

Robocup: Get Started

ROS2 Jazzy 基础 参考官方文档:https://docs.ros.org/en/jazzy/index.html 请将所有<一些中文>替换成你想要的,合适的内容,不保留尖括号<``> 系统环境 使用 Ubuntu24.04 LTS 系统 Mac 系统:操作差别不大,可参考本文继续配置、使用 ROS2 Windows 系统:请先安装 Ubuntu24.04 LTS 虚拟系机,或安装 Ubuntu24.04 LTS(双)系统,WSL 没有经过测试, 但确定的是不支持 Windows 系统。 创建并使用使用虚拟环境,Python=3.12 请使用vscode编辑器 以下教程基于 bash, 使用其他 shell 的读者请注意甄别. 安装 ROS2 Jazzy 更新安装器 apt 1sudo apt update 2sudo apt upgrade 3sudo apt install software-properties-common 4sudo add-apt-repository universe 确定环境支持 UTF-8 1locale # 检查环境是否支持UTF-8 2# 若返回不是UTF-8,请执行以下命令 3 4sudo apt install locales # 安装或更新locale 5sudo locale-gen en_US en_US.UTF-8 6sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 7export LANG=en_US.UTF-8 8 9locale # 再次检查 apt 添加 ROS2 的包路径(使 apt 可以获取到 ROS2 安装包) 1sudo apt install curl -y # 安装或更新curl 2export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F\" '{print $4}') 3curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb" 4sudo dpkg -i /tmp/ros2-apt-source.deb 再次更新 apt 1sudo apt update 2sudo apt upgrade 安装 ros-dev-tool 以及 ROS2 Jazzy 1sudo apt install ros-dev-tools 2sudo apt install ros-jazzy-desktop 3# 此处的ros选择desktop版本(操作简便,有GUI), 4# 但base版本也是受欢迎的,假如你认可自己,请安装ros-jazzy-base 5# 机器人本身运行的是base版本 初始化 ROS2 1souce /opt/ros/jazzy/setup.bash 2# 将.bash换成你使用的SHELL 创建 ROS2 项目 建立工作空间 1cd <你的工作目录> # 工作目录一般英文为 workspace, 请务必认识 2mkdir -p <你的项目名称>/src 3cd <你的项目名称>/src 配置,使用包(packages) 选择以下两种类型的一种包创建 创建一个Cmake包(适用于纯C++或者python与C++都有的包) 1# 用pkg工具创建一个包 2ros2 pkg create --build-type ament_cmake <包名称> 3# 执行成功后你将会看到一个包目录,里面包含基本包信息 4 5# 证书默认是Apache-2.0 创建一个python包(适用于纯python的包) 1# 用pkg工具创建一个包 2ros2 pkg create --build-type ament_python <包名称> 3# 执行成功后你将会看到一个包目录,里面包含基本包信息 4# 证书默认是Apache-2.0 5 6# 安装pytest依赖 7pip install pytest 包信息检查,编辑(Cmake与python包均需要) 1# 确保package.xml文件中依赖声明包含以下配置信息 2# 添加在<license>与<test_depend>之间,与其他组分空行隔开 3<depend>rclcpp</depend> 4<depend>std_msgs</depend> 5 6# 输入你自己可用的邮箱,名字随意,但是只用一个名字不换 7# 如果你有使用github,请使用你github绑定的邮箱和昵称 8<maintainer email="<你的邮箱>"><你的名字></maintainer> python包需要修改setup.py ...

November 17, 2025 · 7 min · 1462 words · xxraincandyxx

Robocup: ROS Tutorial

DX-ROS 教程 from 西安交通大学笃行机器人队 认识 ROS 什么是 ROS?一个生动的比喻 想象一下,我们要建造一个机器人。这个机器人需要有: 眼睛 (摄像头、激光雷达) 大脑 (用于决策的电脑,如 NUC、树莓派) 四肢 (轮子、机械臂) 神经系统 (连接以上所有部分的线路和信号) 如果从零开始,我们需要自己编写代码来读取摄像头数据,自己设计一套通信协议把数据发送给大脑,大脑处理完后,再用一套协议把指令发给轮子。如果中途换了一个摄像头,或者增加一个机械臂,可能整个通信系统都要重写。这非常复杂且低效。 ROS (Robot Operating System,机器人操作系统) 就是来解决这个问题的。 核心比喻: 如果把构建机器人比作搭乐高,那么 ROS 就是那一套标准尺寸的乐高积木块。它为你提供了各种基础模块(如通信、驱动、算法库)和一套统一的拼接标准。你不再需要自己制造砖块,只需专注于如何用这些标准积木搭建出你想要的酷炫模型。 需要澄清的一个误区: ROS 虽然名字里有“操作系统”,但它并不是像 Windows 或 Ubuntu 那样的真正意义上的操作系统。它更应该被称为一个“元操作系统”(meta-operating system)或者软件框架。它运行在 Linux(主要是 Ubuntu)系统之上,为机器人软件开发提供了一整套强大的工具和库。 我们为什么选择 ROS? 在团队项目中,统一的技术栈和开发规范至关重要。ROS 为我们提供了以下核心优势: 标准化与模块化 (Standardization & Modularity) 团队协作利器:负责视觉的同学、负责控制的同学和负责决策的同学可以各自开发自己的模块(ROS 里叫“节点”),只要遵守 ROS 的通信约定,就能无缝集成。你不用关心队友的代码是怎么写的,只需要知道如何订阅他发布的数据即可。 高复用性:为 A 项目写的激光雷达驱动,可以几乎不加修改地用到 B 项目中。 强大的工具链 (Powerful Tools) rviz:一个超级强大的 3D 可视化工具,可以让你“看”到机器人感知到的一切,比如点云、摄像头图像、坐标系、导航路径等。调试必备! rqt_graph:可以实时显示整个系统的计算图,各个模块之间的通信关系一目了然。 rosbag:可以录制和回放 ROS 系统中所有的数据流。这意味着你可以在现场把传感器数据录下来,然后带回实验室无限次地重放,进行算法调试,极大提高了效率。 庞大的开源社区和生态 (Vibrant Community & Ecosystem) 你不是一个人在战斗!几乎所有你遇到的问题,都有人在网上提问和解答过。 有无数现成的、高质量的功能包(Package)可以直接使用,例如: Navigation2 (nav2): 移动机器人导航领域的行业标准。 MoveIt: 机械臂运动规划的瑞士军刀。 Gazebo: 一个功能强大的物理仿真环境,可以让你在软件里测试机器人。 ROS 概念 中文 人体类比 解释 Nodes 节点 大脑功能区/器官 一个个独立的、可执行的程序。例如,camera_node 负责发布图像,motor_control_node 负责控制电机。 Topics 话题 广播频道 节点之间异步通信的“管道”。一个节点往某个话题上发布(Publish)数据,其他感兴趣的节点可以从这个话题订阅(Subscribe)数据。这是一种一对多的广播模式。 Messages 消息 语言/信号 在话题上传输的数据。消息有严格的、预先定义好的数据类型。例如,/cmd_vel 话题上传输的就是速度指令消息。 Services 服务 问答/请求 一种一对一的、同步的请求-响应(Request-Response)通信模式。一个节点(Client)发起请求,另一个节点(Server)处理后返回结果。适合用于执行那些需要确认结果的短暂任务(例如“重置里程计”)。 Actions 动作 布置任务并汇报进度 一种带有连续反馈的、异步的通信模式。用于执行长时间任务(例如“导航到 20 米外的 A 点”)。客户端发送一个目标,服务器在执行过程中会周期性地发回反馈(Feedback),任务完成后再发送最终结果(Result)。 Master 主节点 “通信录”/“总机” 整个 ROS 系统的“注册中心”。它不处理具体数据,只负责帮助各个节点找到彼此。启动任何 ROS 系统前,必须先启动 Master。(仅 ROS1) ROS1 and ROS2 在你开始学习和搜索资料时,很快会发现一个重要事实:ROS 有两个主要的版本——ROS 1 和 ROS 2。它们之间有显著的差异,而我们团队将主要使用 ROS 2,并将现有的程序从 ROS1 迁移到 ROS2。 ...

November 12, 2025 · 22 min · 4582 words · xxraincandyxx

Robocup: Teamwork

赛道选择 赛道 https://github.com/xxraincandyxx/Robocup-docs/tree/master/docs QQ 优先选择 通用服务机器人项目 (General Purpose Service Robot - GPSR) 赛道(文件 5.2),而不是居家服务机器人项目(文件 5.1)。 选择通用服务机器人的原因: 硬件匹配度与技术挑战多样性: 机械臂核心任务: GPSR 的核心任务包括准确接受指令、获取物品、递交给客人、清理垃圾(抓取和放置) 。这些任务高度依赖机械臂功能,能最大化地发挥其作用,并为团队提供更复杂的抓取与操作挑战。 核心技术涵盖广: GPSR 的测试重点包括定位、导航、抓取、人/物识别、人机交流和自然语言处理 (NLP)。这涵盖了移动服务机器人技术栈的几乎所有关键领域,能为 12 人团队提供多样化的工作分配。 团队分工优势: GPSR 任务的模块化程度高,涵盖导航、视觉、机械臂操作和高层语义理解/交互。这非常适合 12 人团队进行合理分组和并行开发,减少模块间的耦合。 高效性(C++ 优化)的体现: 虽然两个项目都可以用 C++ 优化,但 GPSR 中的 导航、动态避障、实时目标检测(物品/人)、以及机械臂运动规划(MoveIt 2) 都是性能优化的关键点,全部可以用 C++ 在 ROS2 中高效实现。 赛道对比 居家服务机器人(Home Service) 通用服务机器人 (GPSR) 团队适配性 核心任务 自主巡游,识别家庭成员的日常行为 (如躺下、摔倒、挥手),并做出运动反馈。 自然语言交互,区分主人/客人,抓取指定物品并递送,拾取垃圾并放入垃圾桶。 GPSR 的抓取与自然语言任务更适合多硬件集成和团队分工。 关键技术 人体/人脸识别、人体行为识别、物品识别、自主导航、机械臂操作。 人体/人脸识别、物品识别、自主导航、语音交互/NLP、机械臂抓取。 GPSR 的NLP/抓取模块为 C++ 优化和团队分组提供了更清晰的界限。 ROS2 系统结构(基于 GPSR) 为了构建一个高效、可靠、集成 C++ 和 Python 的 ROS2 系统,我建议采用三层架构和 C++ 优先策略。 ...

November 12, 2025 · 5 min · 868 words · xxraincandyxx

Robocup: C++ Style Convention

1. 通用原则 总体规范参考 Google 规范,略有改动 详见 $\rightarrow$ https://google.github.io/styleguide/cppguide.html 使用或借助 AI 写代码请务必自己理解每个代码都在干什么 行宽不超过 80 字符,设置 vscode 行宽 80 字符线: Ctrl(Cmd) + , 或者 File $\rightarrow$ Preferences $\rightarrow$ Settings 搜索:ruler ,Editor: Ruler一栏编辑 settings.json: 1{ 2 "editor.rulers": [80] // 原有配置的基础上添加这一行 3} .cc 文件与.cpp 文件本质没区别,统一使用.cpp 后缀 代码可读性第一,避免过度优化或炫技 变量、函数、类名应自解释,避免无意义缩写(如 a, tmp1),除非是广泛接受的缩写(如 id, url, cmd) 错误处理必须显式,不能忽略可能的异常、错误码或返回值 全英文注释:统一,正式,美观,且标点只使用半角标点(英文字符) 标点(: , ; . ? !)前不加空格,后加一个空格, (() [] {} "" '')外侧加空格内测不加 (- _)前后不加空格,其余所有运算符前后都有空格 在函数名和左括号之间不要留空格。在参数列表的逗号后留一个空格。 int add(a, b); 避免在圆括号、方括号或花括号内部紧邻留空格。 list[1:5] dict = {'key': value} 声明与初始化尽可能的靠近,如 ...

November 12, 2025 · 7 min · 1292 words · xxraincandyxx