本文敘述透過配置AMD Kria KR260機器人入門套件控制Trossen Robotics ReactorX 150機器手臂運行,以及說明處理非常複雜的伺服系統(tǒng)和機器人應(yīng)用時,所需要進行大量處理來規(guī)劃和解決機器人運動。
本文將介紹如何透過配置AMD Kria KR260機器人入門套件來控制Trossen Robotics ReactorX 150機器手臂。這款複雜的機器人手臂使用ROBOTIS DYNAMIXEL伺服系統(tǒng),其中不僅包含馬達,還包含微控制器和網(wǎng)路功能。雖然這使得機器人應(yīng)用所需的複雜馬達驅(qū)動成為可能,但這也意味著每個伺服系統(tǒng)都有幾種不同的驅(qū)動和控制機制。通常,在處理如此複雜的伺服系統(tǒng)和機器人應(yīng)用時,需要進行大量處理來規(guī)劃和解決機器人運動。
為了與此類機器人進行互動和控制,工程師經(jīng)常使用在Linux上運行的機器人作業(yè)系統(tǒng)(ROS) 。最常用的ROS版本是ROS 2,它更新了ROS架構(gòu)和工具,以適應(yīng)更廣泛的環(huán)境,提供對即時環(huán)境的支持,並使用顯著更新的API。
ROS 2為開發(fā)人員提供了硬體驅(qū)動程式、機器人模型、資料類型以及對感知和同步定位與建圖(SLAM)的支援等功能。ROS 2還提供一系列有助於系統(tǒng)開發(fā)或操作的工具,例如提供3D視覺化的RViz和模擬器Gazebo。
ROS 2是圍繞圖形架構(gòu)建構(gòu)的;在此架構(gòu)中,處理會在節(jié)點中進行,這些節(jié)點可以接收並發(fā)佈有關(guān)節(jié)點的資料,例如感應(yīng)器、控制、規(guī)劃、致動器定位或目前狀態(tài)。ROS圖上的節(jié)點透過主題連接,主題是一種通訊管道,節(jié)點可以向其發(fā)佈和接收資訊。此外,節(jié)點還可以提供或使用服務(wù)。這些服務(wù)具有單一結(jié)果,例如捕獲視訊幀、對感測器進行採樣或打開執(zhí)行器。
軟體設(shè)定
在這個專案中,我們將在AMD Kria KR260機器人入門套件上安裝Trossen機器人軟體包和ROS 2,這將使您能夠控制機器人手臂。
安裝Ubuntu
首先下載並安裝AMD Kria KR260套件的Ubuntu Linux發(fā)行版映像檔。映像檔可用後,請按照AMD在「資源」一節(jié)的「Kria KR260 機器人入門套件入門」中提供的指示,將映像檔閃動至SD卡上。
成功啟動AMD Kria KR260套件後,將需要更新Ubuntu安裝以確保我們可以正確安裝ROS 2。
1.安裝resolvconf。
sudo apt update
sudo apt install resolvconf
2.安裝resolvconf後,請確保其正在運作。
sudo systemctl status resolvconf.service
3.確認(rèn)服務(wù)正在運作後,新增首選DNS伺服器。在此範(fàn)例中,使用Google的DNS。
echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolvconf/resolv.conf.d/head
echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolvconf/resolv.conf.d/head
4.由於進行了更改,因此需要重新啟動服務(wù)。
sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service
5.防止KR260上的Ubuntu進入睡眠狀態(tài)。
sudo gsettings set org.gnome.desktop.session idle-delay 0
sudo systemctl mask suspend.target
安裝ROS 2
為了安裝ROS 2和控制Trossen Robotics X系列手臂的軟體包,我們將稍微修改一下用於Raspberry Pi的指令。Raspberry Pi與AMD Kria KR260套件一樣,使用 Arm64(aarch64)指令集架構(gòu)。
Trossen函式庫支援的ROS 2最新版本是ROS 2 Humble。使用以下命令安裝 ROS 2和Trossen庫:
cd ~
sudo apt install curl
curl 'https://raw.githubusercontent.com/Interbotix/interbotix_ros_manipulators/main/interbotix_ros_xsarms/install/rpi4/xsarm_rpi4_install.sh' > xsarm_rpi4_install.sh
sed -i 's/sudo apt-get update && sudo apt -y upgrade/sudo apt-get update/g' xsarm_rpi4_install.sh
chmod +x xsarm_rpi4_install.sh
./xsarm_rpi4_install.sh -d humble -j rx150
演示應(yīng)用程式
在AMD Kria KR260套件上安裝ROS 2後,我們將執(zhí)行提供的演示應(yīng)用程式之一。在 KR260 上開啟兩個終端機視窗。
1. 在第一個終端機視窗中,輸入以下命令:
ros2 launch interbotix_xsarm_control xsarm_control.launch.py robot_model:=rx150
2. 在第二個終端機中,輸入以下命令:
python3 /home/ubuntu/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control/demos/python_ros2_api/bartender.py
這將運行一個演示機器人手臂控制的應(yīng)用程式。
演示分解
透過檢查此應(yīng)用程式中的程式碼,可以了解如何使用Python程式語言控製手臂。首先,我們需要從安裝的InterbotiX庫中匯入InterbotixManipulatorXSarm套件。為此,請輸入以下指令:from interbotix_xs_modules.arm import InterbotixManipulatorXS
安裝這些套件後,就可以開始建立使用Python應(yīng)用程式操作手臂的應(yīng)用程式。
從範(fàn)例程式碼可以看到,首先要使用機器人的參數(shù)、模型、類型及其末端執(zhí)行器對其進行初始化。
定義機器人(如bot程式碼所示)後,應(yīng)用程式首先檢查機器人是否具有用於演示的正確數(shù)量的關(guān)節(jié)。一旦確認(rèn)適合演示,就可以使用多個Python命令來控制機器人,這些命令會根據(jù)需要設(shè)定姿勢或單個位置。也可以使用Python調(diào)用來開啟和關(guān)閉夾具。
bot = InterbotixManipulatorXS("rx150", "arm", "gripper")
if (bot.arm.group_info.num_joints < 5):
print('This demo requires the robot to have at least 5 joints!')
sys.exit()
bot.arm.set_ee_pose_components(x=0.3, z=0.2)
bot.arm.set_single_joint_position("waist", np.pi/2.0)
bot.gripper.open()
bot.arm.set_ee_cartesian_trajectory(x=0.1, z=-0.16)
bot.gripper.close()
最後,演示通過將機器人安全地定位到其原始位置而結(jié)束。
bot.arm.go_to_home_pose()
bot.arm.go_to_sleep_pose()
知道了這一點,我們就可以開始創(chuàng)建自訂應(yīng)用程式。但首先,我們需要能夠在 AMD Kria KR260主機板上遠端開發(fā)應(yīng)用程式。
遠端開發(fā)
為了開發(fā)遠端應(yīng)用程式,我們將在開發(fā)電腦上使用Visual Studio Code。在開發(fā)電腦上使用Visual Studio Code建立的Python應(yīng)用程式將位於AMD Kria KR260 套件的檔案系統(tǒng)中。這還有一個好處是不需要連接顯示器、鍵盤或滑鼠,因為可以從開發(fā)環(huán)境存取所有內(nèi)容。
我們還希望在開發(fā)應(yīng)用程式時,能夠遠端檢視機器人手臂的可視化畫面(在模擬模式或?qū)嶋H執(zhí)行中)。
為了實現(xiàn)遠端開發(fā)與視覺化,必須建立SSH連線並啟用X11轉(zhuǎn)送。
1. 使用 Windows Powershell以下命令安裝 OpenSSH。
Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# Install the OpenSSH Server
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
# Start the sshd service
Start-Service sshd
# OPTIONAL but recommended:/code>
Set-Service -Name sshd -StartupType 'Automatic'
# Confirm the Firewall rule is configured. It should be created automatically by setup. Run the following to verify
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
2. 安裝OpenSSH後,使用以下命令建立金鑰。
ssh-keygen
預(yù)設(shè)情況下,系統(tǒng)會將金鑰儲存到C:\Users\/.ssh/id_rsa.
3. 使用以下命令交換金鑰。
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh ubuntu@ "cat >> .ssh/authorized_keys"
要從Visual Studio Code建立SSH連接,必須先從擴充套件中安裝遠端 SSH 選項(圖一)。

| 圖一 : : SSH遠端連線應(yīng)用(source:Mouser Electronics) |
|
當(dāng)安裝完成之後,可以連接到AMD Kria KR260板(圖二),這將允許我們在 KR260檔案系統(tǒng)中遠端開發(fā)應(yīng)用程式。

| 圖二 : :建立SSH遠端連線(source:Mouser Electronics) |
|
為了能夠使用X11轉(zhuǎn)發(fā),必須先在開發(fā)電腦上安裝cXsrv Windows X Server。運行X Server 並對其進行配置,如圖三至圖六所示。

| 圖三 : : X伺服器顯示設(shè)定(source:Mouser Electronics) |
|

| 圖四 : : X 伺服器用戶端啟動設(shè)定(source:Mouser Electronics) |
|

| 圖五 : : X伺服器額外設(shè)定(source:Mouser Electronics) |
|

| 圖六 : : X伺服器完成設(shè)定(source:Mouser Electronics) |
|
透過在開發(fā)電腦上的命令視窗中執(zhí)行以下指令來連接到顯示器:
set DISPLAY=127.0.0.1:0.0
然後可以啟動與AMD Kria KR260板的SSH連接,並開始開發(fā)機器人應(yīng)用程式。
ssh -Y @
運行時,機器人手臂將移動,您將在X伺服器上看到此移動的視覺化畫面(圖 七)。

| 圖七 : : X 伺服器機械手臂視覺化畫面(source:Mouser Electronics) |
|
總結(jié)
機器人技術(shù)可能很複雜。在這個專案中,我們看到AMD Kria KR260套件可以使用ROS 2快速開發(fā)機器人解決方案。KR260能夠?qū)崿F(xiàn)可程式邏輯元件內(nèi)的功能加速,或在可程式邏輯內(nèi)整合進一步的系統(tǒng)控制元件,例如時敏網(wǎng)路。
(本文由貿(mào)澤電子提供;Adam Taylor為嵌入式系統(tǒng)教授、工程領(lǐng)導(dǎo)者及FPGA/系統(tǒng)單晶片和電子設(shè)計專家)