两个软件相互交换数据_六轴算法机软件使用说明
RAA (1.00a) ( Robot Arm Algorithms 1.00a 六軸算法機軟件使用說明 :
作者覺得,在實際應用中,正逆解求解工具可以理解為一個類似數學計算器的
東西:不需要每個研究者都花幾個月來鉆正逆解,而把精力花在更高級的機械臂
應用領域,比如視覺抓取、人機協同等場景。
為了讓這款“計算器”更加方便,本軟件增加了直線和折線路徑規劃功能,作者承諾以后會不斷開發完善,實現更多的功能,解決所有可能的 BUG,比如說更多更方便的路徑模式、移動基座模式下的抓取等,都有待開發。
本款軟件適合大家拿來作基礎逆解和路徑規劃,可以用于二次開發的基礎計算軟件。它計算速度較快,可以滿足較高的實時性需求。軟件使用 socket 網絡接口對外通信,附贈客戶端例程,方便客戶開發使用。
軟件介紹
? 本軟件適用于 win7 等 windows 系統,采用 C/S 模式進行運算服務:
主要算法功能由可執行文件“RAA100A.EXE ” 實現,文件運行后,開啟一個 socket 網絡服
務器,端口 號 9001,用戶通過客戶端與之進行數據計算請求和交互。
服務端代碼:
server = socket.socket()
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(('127.0.0.1', 9001))
客戶端推薦使用代碼:
client = socket.socket()
socket.socket.settimeout(client,0.50)
client.connect(('127.0.0.1', 9001))
軟件下載時,用戶可以一并得到附贈的客戶端例程源碼,供用戶二次開發時參考使用。
例程系 Python 代碼編寫,附有詳細的注釋。
? 軟件涵蓋四個主要功能模塊:
1. UR 型(以下簡稱‘U型’?結構機械臂正逆解。
2. U 型機械臂實時控制和路徑規劃,包含直線路徑插值和折線路徑插值。
3. ABB 型(以下簡稱‘A型’?機械臂正逆解。
4. 附帶機械臂部分奇異位姿的 A 級解決方案,讓插值化的實時控制可以路過奇異點而不
必刻意篩選規避。
? 應用細節說明:
可以將客戶端和服務器放到一臺電腦上使用,也可以放到不同的電腦上,放到不同的電腦時,
客戶端軟件的連接語句中的 127.0.0.1 應改為服務器所在電腦的 IP 地址。
路徑規劃中,客戶端可以通過位置姿態控制指令(本表下面會提到,比如 361
號包?讓 RAA 服務器返回一些控制數據,根據這些控制數據,客戶端可以讓
機械臂處于某些特定的位姿并讓服務器一一記下這些不同的點對應的位姿矩陣,
這些位姿點形成的點集 可以成為一條折線路徑的規劃依據(當然也可以只有兩
個點被記下來,此時路徑規劃簡化為直線路徑?。然后客戶端可以在讓服務器
記住所有必要的點后,讓 RAA 開始規劃路徑并發回。
客戶端也可以自己記下這些點并一起發給 RAA,讓 RAA 拿到這些點后一并把規劃路徑發
回來。實現方式是,客戶把這些點作為求逆的原數據,把這些點的位姿矩陣用表 2中的
350/351 號包組合 按照順序依次發給 RAA 服務器。服務器會自動按照發來的順序自動產生
一個點集,這個點集與路徑規劃中 RAA 服務器自己記下來的那個點集是一模一樣的模式。
發完以后,直接向服務器發出路徑規劃請求,也就是向 RAA 發送一個表 2中
的 303 包,那么就可以接收到路徑規劃的路徑序列*。
需要注意的是,在發送第一個矩陣之前,為了防止有其它點被預先記錄
在 RAA 的當前點集里面,可以縣發送 302包對其進行清空。
路徑發回的方式是,約每隔 50ms RAA 發給客戶端一個‘1’號包(‘1’號
包的含義請參閱下面表格:‘表 1 RAA 服務器發出的:’?,客戶端
根據包 data2~data7 里面的浮點數,讓機械臂進行運動。
b) 逆解和正解 C/S 溝通邏輯介紹:
逆解時,客戶端發給 RAA 服務器‘350’‘351’兩個配對包,RAA 根據這兩個包的 12 個數據
重新組裝出一個位姿矩陣;
然后逆解,把計算結果中的優選解發給客戶端,發給客戶端時用的是‘11’號包。
正解時,客戶端發給 RAA 服務器‘352’號包,提供正解需要的六個角度,RAA 服務器逆解
以后,用兩個配對包‘12’‘13’發回客戶端一個位姿矩陣。
C/S 溝通數據包模式(請對照例程閱讀,直觀理解?:
所有 RAA 服務器和客戶端之間的數據包都是下面這個模式,一共八個字段,占用尺寸為 56
的一個 buffer。當需要傳送六個角度信息的時候,使用一個包,data2~data7 來承載六個浮點
數,當需要傳送一個 4*4 矩陣時,因為矩陣前三行 12個數有意義,就用兩個包一共 12 個浮
點數來傳送,兩個包使用 data1 的數字來配對。
data0 data1 date2 data3 data4 data5 data6 data7
以 99 號確認包為例,打包的典型的語句為:*
data_confirm=struct.pack('?hdddddd',False,99,0,0,0,0,0,0)
接收方的解包指令為:
struct.unpack('?hdddddd',data_confirm)
數據包各字段在 C 語言概念下的數據類型:
bool short double double double double double double
數據包各字段在 Python 語言概念下的數據類型:
bool int float float float float float float
data2~data7:一共六個浮點數,用來承載六軸角度信息或者矩陣位姿信息,承載矩陣位姿
信息時,連續使用兩個數據包剛好發出矩陣里的前三行 12個有效數據。發送方將矩陣的前
三行 12 個數字依次放入兩個數據包里面,做好配對標識發送兩個數據包出去;接收方收到
兩個成對的信息后,可以將其組合成發送方的原始矩陣。 信息的配對依靠 data2 的標識數字。
比如 12 和 13 被規劃為一對,收到兩個數據包以后,就可以組合了。
data0:在服務器向客戶端傳送一系列數據包的時候(比如路徑規劃信息,是需要在一定時
間內不斷的向客戶端發送關節角度信息?,該數據為 True 表示沒有傳送完畢,False表示傳
送完畢了。 客戶端可以根據這個字段來判斷是否需要中斷接收的循環進入下一個工作環節。
data2:信令字段,是一個整數,RAA 和客戶端之間交流指令和請求用的。
總結
以上是生活随笔為你收集整理的两个软件相互交换数据_六轴算法机软件使用说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: steam怎么看邮箱绑定的账号_lol手
- 下一篇: 戴尔optiplex3020主板接线_戴