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模板擴展與常見問題