原创 證明:任意整數與其倒序數的差能被9整除

什麼是倒序數,舉個例子,1234的倒序數就是4321,9527的倒序數就是7259 證明過程: 假設整數X是兩位數a1a2,則其倒序數Y就是a2a1 X-Y = a1a2 - a2a1 = 10 (a1 - a2) + (a2 - a

原创 andorid與ros互操作的關鍵點

如果想通過android設備與基於ROS的機器人互操作,通常可選擇rosjava庫 rosjava可以看做是ros的java client library,所以可以像rospy、roscpp那樣在Linux終端使用 對於安卓,rosjav

原创 portaudio回調方式實現錄製任意長度的音頻

portaudio是一個跨平臺音頻庫,類似於SDL作爲跨平臺圖像庫一樣,只是在系統原生音頻庫(alsa、oss)上封裝了一層 portaudio自帶的錄音示例代碼只有同步IO模式,沒有異步IO模式,而異步IO能釋放主線程,是更好的方式 爲

原创 使用VIM編寫Makefile時如何避免tab被擴展成4個空格

一般寫代碼的時候,都將tab鍵轉換成4個空格(通過set expandtab命令) 不過,寫Makefile的時候,tab有特殊含義——表明這行是規則,不是目標——不能轉換成空格 但是執行set noexpandtab命令又麻煩,怎麼辦

原创 ROS環境變量ROS_IP的真正含義

當你需要2臺以上ROS機器互相通信時,就需要將其中一臺選爲master,其餘的作爲slave,然後僅在master上運行roscore 那麼slave怎麼知道master的IP和端口號呢?通過ROS_MASTER_URI獲取,但是

原创 使用python實現快速批量重命名

適用場景 文件名格式不對,但目錄層級沒問題,不需要移動文件位置,只是重命名 另外腳本耗時越短越好 解決思路 使用os.walk遍歷每一個子目錄 遍歷當前子目錄的每一個文件 檢查當前文件是否需要重命名 調用os.rename重命名

原创 JNA進階應用,自定義native類型

問題的提出 經常有一些C/C++庫,會自定義一些在不同平臺上 長度不同的native類型,例如我之前遇到的8字節的enum問題,MvPixelType枚舉類型,在windows平臺是4字節整型,在Linux平臺意外變成了8字節長整

原创 發現海康機器人工業相機SDK的兩個BUG,順便發佈我的Java封裝

背景 我司最近有款輪式巡檢機器人用到了海康機器人的工業相機MV-CA060-10GC,我們的開發平臺是樹莓派(運行Ubuntu Server 1804),開發語言是Java,但該相機沒有Java SDK,於是我決定自己開發一個。

原创 樹莓派上enum的size一會爲4一會爲8,咋回事?

最近在嘗試用樹莓派控制海康機器人的相機,採用JAVA技術棧,發現相同的SDK接口函數 int MV_CC_SaveImageEx2( IN void* handle, MV_SAVE_IMAGE_PARAM_EX

原创 JNA進階應用,註冊回調

回調通常用僅含一個方法的接口表示 假如有個C語言接口的SDK函數,用於註冊幀回調,當相機拍攝到一幀照片時,SDK調用用戶註冊的回調函數對這塊圖像幀進行處理(一般就是將其壓縮編碼成jpg碼流)。它的聲明長這樣 MV_CAMCTRL_

原创 JNA進階應用,訪問Union

Java想訪問C代碼編譯的動態庫,一般通過JNA方式實現,該方式好處是不用像JNI方式那樣編寫C wrapper代碼,省去在Java工程裏管理C代碼的麻煩,但類型轉換的坑卻變多了。 最近在調試一款工業相機,它的主機接口有USB、G

原创 讓cherrypy監聽系統內所有活動網卡傳入的請求

cherrypy是一個python版的web server + application framework 默認情況下,它只監聽localhost(對應lo虛擬網卡)傳入的請求 如果你想讓它監聽系統內所有活動網卡傳入的請求,則需要在qui

原创 Java的generics跟C++的template有何區別?

討論來自stackoverflow 詳細解釋大家看原文,只翻譯結論 Java代碼裏出現的尖括弧看上去很像C++的template,但其實正式名字叫generics,它不像C++模板(一個加強版的C宏預處理器),而是一個避免 強制類型轉換

原创 將C語言宏定義轉換成字符串!

適用場景舉例 流媒體處理系統中,採樣率是個很重要的參數,很多地方都要用,如果用來分配內存,則 #define SAMPLE_RATE 16000 如果用來配置第三方庫,則 #define SAMPLE_RATE "16000" 這樣每次改

原创 libuvc_camera啓動報錯Invalid mode問題的解決辦法

libuvc_camera是ROS下的一個軟件包,用於將USB攝像頭的視頻內容發佈到Topic上,但是啓動時 roslaunch uvc.launch 經常會遇到以下報錯: process[camera/mycam-1]: st