本文敘述透過配置AMD Kria KR260機器人入門套件控制Trossen Robotics ReactorX 150機器手臂運行,以及說明處理非常複雜的伺服系統和機器人應用時,所需要進行大量處理來規劃和解決機器人運動。
本文將介紹如何透過配置AMD Kria KR260機器人入門套件來控制Trossen Robotics ReactorX 150機器手臂。這款複雜的機器人手臂使用ROBOTIS DYNAMIXEL伺服系統,其中不僅包含馬達,還包含微控制器和網路功能。雖然這使得機器人應用所需的複雜馬達驅動成為可能,但這也意味著每個伺服系統都有幾種不同的驅動和控制機制。通常,在處理如此複雜的伺服系統和機器人應用時,需要進行大量處理來規劃和解決機器人運動。
為了與此類機器人進行互動和控制,工程師經常使用在Linux上運行的機器人作業系統(ROS) 。最常用的ROS版本是ROS 2,它更新了ROS架構和工具,以適應更廣泛的環境,提供對即時環境的支持,並使用顯著更新的API。
ROS 2為開發人員提供了硬體驅動程式、機器人模型、資料類型以及對感知和同步定位與建圖(SLAM)的支援等功能。ROS 2還提供一系列有助於系統開發或操作的工具,例如提供3D視覺化的RViz和模擬器Gazebo。
ROS 2是圍繞圖形架構建構的;在此架構中,處理會在節點中進行,這些節點可以接收並發佈有關節點的資料,例如感應器、控制、規劃、致動器定位或目前狀態。ROS圖上的節點透過主題連接,主題是一種通訊管道,節點可以向其發佈和接收資訊。此外,節點還可以提供或使用服務。這些服務具有單一結果,例如捕獲視訊幀、對感測器進行採樣或打開執行器。
軟體設定
在這個專案中,我們將在AMD Kria KR260機器人入門套件上安裝Trossen機器人軟體包和ROS 2,這將使您能夠控制機器人手臂。
安裝Ubuntu
首先下載並安裝AMD Kria KR260套件的Ubuntu Linux發行版映像檔。映像檔可用後,請按照AMD在「資源」一節的「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.確認服務正在運作後,新增首選DNS伺服器。在此範例中,使用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.由於進行了更改,因此需要重新啟動服務。
sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service
5.防止KR260上的Ubuntu進入睡眠狀態。
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)指令集架構。
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
演示應用程式
在AMD Kria KR260套件上安裝ROS 2後,我們將執行提供的演示應用程式之一。在 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
這將運行一個演示機器人手臂控制的應用程式。
演示分解
透過檢查此應用程式中的程式碼,可以了解如何使用Python程式語言控製手臂。首先,我們需要從安裝的InterbotiX庫中匯入InterbotixManipulatorXSarm套件。為此,請輸入以下指令:from interbotix_xs_modules.arm import InterbotixManipulatorXS
安裝這些套件後,就可以開始建立使用Python應用程式操作手臂的應用程式。
從範例程式碼可以看到,首先要使用機器人的參數、模型、類型及其末端執行器對其進行初始化。
定義機器人(如bot程式碼所示)後,應用程式首先檢查機器人是否具有用於演示的正確數量的關節。一旦確認適合演示,就可以使用多個Python命令來控制機器人,這些命令會根據需要設定姿勢或單個位置。也可以使用Python調用來開啟和關閉夾具。
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()
最後,演示通過將機器人安全地定位到其原始位置而結束。
bot.arm.go_to_home_pose()
bot.arm.go_to_sleep_pose()
知道了這一點,我們就可以開始創建自訂應用程式。但首先,我們需要能夠在 AMD Kria KR260主機板上遠端開發應用程式。
遠端開發
為了開發遠端應用程式,我們將在開發電腦上使用Visual Studio Code。在開發電腦上使用Visual Studio Code建立的Python應用程式將位於AMD Kria KR260 套件的檔案系統中。這還有一個好處是不需要連接顯示器、鍵盤或滑鼠,因為可以從開發環境存取所有內容。
我們還希望在開發應用程式時,能夠遠端檢視機器人手臂的可視化畫面(在模擬模式或實際執行中)。
為了實現遠端開發與視覺化,必須建立SSH連線並啟用X11轉送。
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
預設情況下,系統會將金鑰儲存到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遠端連線應用(source:Mouser Electronics) |
|
當安裝完成之後,可以連接到AMD Kria KR260板(圖二),這將允許我們在 KR260檔案系統中遠端開發應用程式。
圖二 : :建立SSH遠端連線(source:Mouser Electronics) |
|
為了能夠使用X11轉發,必須先在開發電腦上安裝cXsrv Windows X Server。運行X Server 並對其進行配置,如圖三至圖六所示。
圖三 : : X伺服器顯示設定(source:Mouser Electronics) |
|
圖四 : : X 伺服器用戶端啟動設定(source:Mouser Electronics) |
|
圖五 : : X伺服器額外設定(source:Mouser Electronics) |
|
圖六 : : X伺服器完成設定(source:Mouser Electronics) |
|
透過在開發電腦上的命令視窗中執行以下指令來連接到顯示器:
set DISPLAY=127.0.0.1:0.0
然後可以啟動與AMD Kria KR260板的SSH連接,並開始開發機器人應用程式。
ssh -Y @
運行時,機器人手臂將移動,您將在X伺服器上看到此移動的視覺化畫面(圖 七)。
圖七 : : X 伺服器機械手臂視覺化畫面(source:Mouser Electronics) |
|
總結
機器人技術可能很複雜。在這個專案中,我們看到AMD Kria KR260套件可以使用ROS 2快速開發機器人解決方案。KR260能夠實現可程式邏輯元件內的功能加速,或在可程式邏輯內整合進一步的系統控制元件,例如時敏網路。
(本文由貿澤電子提供;Adam Taylor為嵌入式系統教授、工程領導者及FPGA/系統單晶片和電子設計專家)