原创 Toybrick RK3399Pro安裝ROS系統

    ROS(Robot Operating System)是一個適用於機器人軟件開發的元操作系統。它提供了操作系統應有的服務,包括硬件抽象、底層設備控制、常用函數實現、進程間消息傳遞以及包管理。它是一系列工具、庫和準則,旨在簡化在各種

原创 學習costmap代價地圖

0x00 什麼是costmap代價地圖     在機器人進行路徑規劃時,我們需要明白規劃算法是依靠什麼在地圖上來計算出來一條路徑的。依靠的是gmapping掃描構建的一張環境全局地圖,但是僅僅依靠一張原始的全局地圖是不行的。因爲這張地圖是

原创 Linux 下 platform 設備驅動

在Linux2.6 以後的設備驅動模型中,需要關心總線、設備和驅動3個實體,總線將設備和驅動綁定。在系統每註冊一個設備的時候,會尋找與之匹配的驅動;相反  ,在系統每註冊一個驅動的時候,會尋找與之匹配的設備,而匹配由總線完成。 一個現實的

原创 ROS_Dynamic Reconfig 動態參數調節

創建功能包(package) cd ~/catkin_ws/src catkin_create_pkg dynamic_refg roscpp dynamic_reconfigure cd .. catkin_make 向功能包添加動態

原创 Ros導航虛擬牆設置

        虛擬牆是在turtlebot2那裏調包出來修改的,主要在RVIZ上面佈置一些虛擬的牆體,並加進去虛擬的激光,好讓虛擬的牆體也擁有膨脹區域,機器人到達虛擬牆體能夠進行避障。 1、安裝好yocs_virtual_sensor的

原创 設備驅動中的異步通知與異步I/O

在設備驅動中使用異步通知可以使得再進行對設備的訪問時,由驅動主動通知用戶程序進行訪問。這樣,使用非阻塞I/O的應用程序無需輪詢機制查詢設備是否可訪問,而阻塞訪問也可以被類似“中斷”的異步通知所取代。除了異步通知以爲,應用還可以在發起I/O

原创 16線激光雷達3Dslam建圖算法BLAM使用

簡介: LiDAR-based real-time 3D localization and mapping github:https://github.com/erik-nelson/blam.git 官方視頻:https://youtu

原创 Linux中斷處理程序框架

設備的中斷會打斷內核進程的正常調度和運行,系統對更高吞吐率的追求勢必要求中斷服務程序儘量短小精悍。但是,這個良好的願望往往與現實不吻合。在多數真實的系統中,當中斷到來時,要完成的工作往往並不是短小的,它可能要進行大量的耗時處理。爲了在中斷

原创 多線激光雷達使用pointcloud_to_laserscan包實現三維轉二維

最終我們是要實現slam功能,而slam需要的是2D激光雷達,因此我們首先需要將3D線束轉換成2D線束。可以通過pointcloud_to_laserscan包實現。 1,安裝pointcloud_to_laserscan包 cd ~/

原创 Linux IIC核心、總線與設備驅動

總線僅僅使用SCL、SDA這兩根信號線就實現了設備之間的數據交互,極大地簡化了對硬件資源和PCB版佈線空間的佔用。因此,總線非常廣泛的使用在EEPROM、實時鐘、小型LCD等與CPU的接口中。Linux系統定義了驅動體系結構。在Linu

原创 Linux網絡設備驅動專題

網絡設備驅動是完成用戶數據包在網絡媒介上發送和接收的設備,他將上層協議傳遞下來的數據包已特定的媒介訪問控制方式發送,並將接收到的數據包傳遞給上層協議。Linux系統對網絡設備驅動定義了4個層次,分別爲:網絡協議接口層、網絡設備接口層、提供

原创 把當前ubuntu系統做成鏡像

Systemback是一個Ubuntu系統中用於發佈自定義系統鏡像和系統備份的軟件。有時候我們對自己的Ubuntu做了很多設置,比如各種軟件包,各種自定義的配置。我們想要在另一臺電腦上也安裝一個和我們一模一樣的系統,這個時候就會用到這種方

原创 設備驅動中的阻塞與非阻塞IO

阻塞和非阻塞I/O是設備訪問的兩種不同的模式,驅動程序可以靈活地支持這兩種用戶空間對設備的訪問方式。在Linux設備驅動下,可以使用等待隊列或輪詢操作實現對I/O的阻塞和非阻塞訪問。 阻塞操作是指在執行設備操作時,若不能獲取資源,則掛起進

原创 linux設備驅動中的併發控制

併發指的是多個執行單元同時、並行被執行,而併發的執行單元對共享資源(硬件資源和軟件上的全局變量,靜態變量等)的訪問很容易導致競態。在linux內核中,競態發生主要有以下幾種情況: 對稱多處理器(SMP)的多個CPU之間 單CPU內核進程與

原创 簡單字符設備程序

Linux下的驅動有字符設備驅動,塊設備驅動和網絡設備驅動。無論哪一種設備驅動,爲了減少內核的體積和易於內核的管理,驅動多以模塊的形式出現。對於內核模塊的編程,前面一節已經提到過,主要包括內核的加載函數和卸載函數,模塊的作者和GPL協議。