Wiki
Wiki
按文档与章节组织的长期知识库。北极熊导航复现日志
- ⌂文档首页
- 1简介
- 2环境配置与运行
- 3机器人模型与仿真
- 3.1robot_description(机器人模型与关节定义)
- 3.2MID360安装位置
- 3.3Launch与包依赖配置
- 3.4仿真视觉优化(可选)
- 3.5添加地图
- 4硬件对接与控制
- 4.1Linux与MCU数据对接
- 4.2Serial_Comm(串口通信)
- 4.3Joy(手柄控制)
- 4.4MID360与TF联调
- 5导航参数
- 5.1Point_LIO(激光与IMU融合里程计,建图与定位算法)
- 5.2loam_interface(Point-LIO输出的坐标与话题适配)
- 5.3sensor_scan_generation(雷达点云换系与底盘、云台位姿转换)
- 5.4terrain_analysis(近场地面与障碍高差分析)
- 5.5terrain_analysis_ext(扩展远场地形与近远场结果合并)
- 5.6fake_vel_transform(云台系速度转换与底盘自旋)
- 5.7small_gicp_relocalization(先验点云地图重定位)
- 5.8pointcloud_to_laserscan(三维地形点云转二维扫描)
- 5.9slam_toolbox(二维地图生成与轨迹优化)
- 5.10bt_navigator(行为树导航任务调度)
- 5.11controller_server(路径跟踪、进度检查与到达判定)
- 5.12local_costmap(局部障碍代价地图)
- 5.13global_costmap(全局规划代价地图)
- 5.14map_server(已有二维地图加载与发布)
- 5.15map_saver(二维栅格地图保存)
- 5.16planner_server(Theta*全局路径规划)
- 5.17smoother_server(全局路径平滑)
- 5.18behavior_server(恢复行为与空闲方向移动)
- 5.19waypoint_follower(逐点导航与到点等待)
- 5.20velocity_smoother(速度限幅与加减速平滑)
- 5.21pb_teleop_twist_joy_node(手柄输入与可替换控制入口)
- 6开发问题与排查
- 7rosbag2
- 8决策
- 9ros2control
- 10RM仿真
STM32CubeIDE-VScode环境搭建
OpenCV教程
ESP32教程
Nuxt.js网站框架
Docker教程
ROS2机器人操作系统教程
- ⌂文档首页
- 1ROS2介绍
- 2入门操作
- 3工作空间与功能包
- 4四大通信
- 5ROS2其他通信机制
- 6Launch
- 7回溯rosbag2
- 8坐标变换TF
- 9可视化平台RVIZ2与URDF建模语言
- 10Stage_Ros2仿真平台
- 11Gezebo仿真平台
- 11.1Gezebo Classic
- 11.2Ignition Gazebo(Gazebo Fortress)
- 11.3Gz Sim(Gazebo Harmonic)
- 11.4将Ign Gazebo迁移至Gz Sim
- 12机器人导航Navigation2(仿真篇)
- 12.1Humble导航仿真
- 12.2Jazzy导航仿真
- 12.3Humble与Jazzy导航的差异
- 12.4有限状态机FSM与行为树BT
- 12.4.1有限状态机(Finite State Machine)
- 12.4.2BehaviorTree.CPP v3.8.7
- 12.4.2.1基本概念
- 12.4.2.2控制与装饰规则
- 12.4.2.3第一个完整程序
- 12.4.2.4节点之间传数据
- 12.4.2.5持续任务与中止
- 12.4.2.6组合实际任务
- 12.4.2.7Groot1
- 12.4.3BehaviorTree.CPP v4.10.0
- 12.4.3.1基本概念
- 12.4.3.2控制与装饰规则
- 12.4.3.3第一个完整程序
- 12.4.3.4节点之间传数据
- 12.4.3.5持续任务与中止
- 12.4.3.6组合实际任务
- 12.4.3.7脚本与前后置条件
- 12.4.3.8全局Blackboard与数据更新
- 12.4.3.9Groot2
- 12.4.4v3与v4区别及迁移
- 13Linux硬件通信
- 13.1UART串口通信
- 13.1.1Boost.Asio库
- 13.1.2ROS2 Serial Driver库
- 13.2CAN通信
- 13.2.1SocketCAN
- 13.2.2ROS2_SocketCAN
- 13.3TCP通信
- 13.3.1Boost.Asio库
- 13.4UDP通信
- 13.4.1Boost.Asio库
- 14机器人硬件
- 14.1机器人组成
- 14.2工控机之远程开发环境
- 14.2.1远程开发SSH
- 14.2.2远程访问桌面
- 14.3工控机之外接USB设备
- 14.4分布式搭建
- 14.5优化日志
- 14.6硬件平台
- 14.6.1里程计Odom
- 14.6.2惯性计IMU
- 14.6.3激光雷达LiDAR
- 14.6.4相机Camera
- 14.6.5全球定位GNSS
- 14.6.6手柄JOY
- 14.6.7键盘控制节点
- 14.7坐标系与话题关系
- 14.8硬件平台进阶
- 14.8.1轮式里程计标定与融合
- 14.8.1.1轮式里程计标定
- 14.8.1.2轮式里程计与IMU融合
- 14.8.2激光雷达工具
- 14.8.3相机使用进阶
- 15ROS2_Control
- 15.1Humble版本
- 15.1.1环境准备与源码地图
- 15.1.2ros2_control整体工作过程
- 15.1.3运行第一个RRBot实例
- 15.1.4从零创建学习工作区
- 15.1.5URDF与控制接口
- 15.1.6YAML与launch启动过程
- 15.1.7从零编写模拟硬件插件
- 15.1.8状态接口与命令接口源码
- 15.1.9硬件与控制器生命周期
- 15.1.10read-update-write控制周期
- 15.1.11状态广播与机器人显示
- 15.1.12命令转发与常用控制接口
- 15.1.13Joint-Trajectory-Controller
- 15.1.14机械臂物理仿真
- 15.1.15DiffBot与差速底盘控制
- 15.1.16差速底盘物理仿真
- 15.1.17多接口与硬件类型
- 15.1.18从零编写控制器
- 15.1.19管理器与资源管理源码
- 15.1.20实时循环与异步通信
- 15.1.21虚拟串口与模拟下位机
- 15.1.22单执行器实物接入
- 15.1.23完整机器人与进阶实例
- 15.1.24综合工程与系统排错
- 15.2Jazzy版本
- 15.2.1环境准备与源码地图
- 15.2.2ros2_control整体工作过程
- 15.2.3运行第一个RRBot实例
- 15.2.4从零创建学习工作区
- 15.2.5URDF与控制接口
- 15.2.6YAML与spawner启动过程
- 15.2.7从零编写模拟硬件插件
- 15.2.8状态接口与命令接口源码
- 15.2.9硬件与控制器生命周期
- 15.2.10read-update-write控制周期
- 15.2.11状态广播与机器人显示
- 15.2.12命令转发与控制模式
- 15.2.13Joint-Trajectory-Controller
- 15.2.14Harmonic机械臂物理仿真
- 15.2.15DiffBot与差速底盘控制
- 15.2.16Harmonic差速底盘仿真
- 15.2.17多接口与硬件类型
- 15.2.18从零编写控制器
- 15.2.19管理器与资源管理源码
- 15.2.20实时循环与异步通信
- 15.2.21虚拟串口与模拟下位机
- 15.2.22单执行器实物适配
- 15.2.23完整机器人与进阶实例
- 15.2.24综合工程与系统排错
- 16Moveit2工业机器人机械臂
- 17机器人导航Navigation2(实体篇)
- 18MicroROS
- 19Webots仿真平台
- 20OpenCV
电控视觉环境搭建
STM32-FreeRTOS教程
C/C++教程
- ⌂文档首页
- 1C++开发环境搭建与测试
- 1.1Linux开发环境搭建与测试
- 1.2Windows开发环境搭建与测试
- 2C++基础初识
- 3数据类型与数据存放
- 4输入输出
- 5运算符
- 6程序流程结构
- 7数组
- 8函数与头文件
- 9指针
- 10结构体与共用体
- 11内存分区与生命周期
- 12引用
- 13函数提高
- 14命名空间
- 15类和对象
- 15.1封装
- 15.2对象初始化和清理
- 15.3对象模型与this指针
- 15.4友元与运算符重载
- 15.5继承
- 15.6多态
- 16函数指针
- 17文件操作
- 18异常处理
- 19模板
- 20STL提高编程
- 20.1STL初识
- 20.2std::array
- 20.3string容器
- 20.4vector 容器
- 20.5deque 容器
- 20.6stack 容器
- 20.7queue 容器
- 20.8list 容器
- 20.9set / multiset 容器
- 20.10map / multimap 容器
- 20.11函数对象与谓词
- 20.12常用算法
- 21C++类型转换
- 22现代C++
- 22.1auto
- 22.2nullptr
- 22.3using
- 22.4enum class
- 22.5范围 for 循环
- 22.6结构化绑定
- 22.7constexpr
- 22.8RAII
- 22.9智能指针
- 22.10右值引用和移动语义
- 22.11Lambda 表达式
- 22.12std::function
- 22.13std::bind
- 22.14std::optional
- 22.15std::variant
- 22.16std::span
- 22.17std::format / std::print
- 22.18std::chrono
- 22.19并发、并行与协程
- 22.19.1并发是什么
- 22.19.2并行是什么
- 22.19.3协程是什么
- 22.19.4并发编程
- 22.19.5std::thread
- 22.19.6mutex 与 RAII 锁
- 22.19.7std::atomic
- 22.19.8condition_variable
- 22.19.9future、async、promise 与 packaged_task
- 22.19.10jthread 与 stop_token
- 22.19.11semaphore、latch 与 barrier
- 22.20std::filesystem
- 22.21modules 简介
- 23常用库学习
- 23.1Boost.Asio异步IO库
- 23.1.1定时器与异步 IO
- 23.1.2Boost.Asio 基础
- 23.1.3串口通信教学
- 23.1.4串口通信串口包协议实例
- 23.1.5TCP 通信
- 23.1.6UDP 通信
- 23.1.7机器人工程写法与 ROS2 集成
- 23.2Eigen线性代数库
- 23.3OpenCV计算机视觉库
- 23.4PCL点云库
- 23.5Sophus 李群李代数库
- 24CMake工程模板
- 24.1CMakePresets与构建安装
- 24.2顶层CMake与公共编译选项
- 24.3src与lib模块CMake详解
- 24.4第三方库依赖写法
- 24.5模板扩展与常见问题