在這個(gè)項(xiàng)目中,我們將配置AMD Kria? KR 260機(jī)器人入門套件來控制Trossen Robotics ReactorX 150機(jī)器人手臂。這個(gè)復(fù)雜的機(jī)器人手臂使用ROBOTIS ? IXEL伺服系統(tǒng),其中不僅包含電機(jī),還包含微控制器和網(wǎng)絡(luò)功能。雖然這使得機(jī)器人應(yīng)用所需的復(fù)雜電機(jī)驅(qū)動(dòng)成為可能,但這也意味著每個(gè)伺服系統(tǒng)都有幾個(gè)不同的驅(qū)動(dòng)和控制機(jī)制。通常,當(dāng)使用這種復(fù)雜的伺服和機(jī)器人應(yīng)用時(shí),需要大量的處理來規(guī)劃和解決機(jī)器人運(yùn)動(dòng)。
為了與這些機(jī)器人進(jìn)行交互和控制,工程師們經(jīng)常使用運(yùn)行在Linux上的機(jī)器人操作系統(tǒng)(ROS)。最常用的ROS版本是ROS 2,它更新了ROS框架和工具,以與更廣泛的環(huán)境一起工作,提供對(duì)實(shí)時(shí)環(huán)境的支持,并使用顯著更新的API。ROS 2為開發(fā)人員提供了硬件驅(qū)動(dòng)程序、機(jī)器人模型、數(shù)據(jù)庫等功能,并支持感知和同步定位與地圖(SLAM)。ROS 2還提供了一系列工具來幫助系統(tǒng)的開發(fā)或操作,例如提供3D可視化的RViz和模擬器Gazebo。
ROS 2是圍繞圖架構(gòu)構(gòu)建的;在此架構(gòu)中,處理發(fā)生在可以接收和發(fā)布有關(guān)節(jié)點(diǎn)的數(shù)據(jù)的節(jié)點(diǎn)中,例如傳感器,控制,規(guī)劃,執(zhí)行器定位或當(dāng)前狀態(tài)。節(jié)點(diǎn)通過主題連接在ROS圖上,主題是節(jié)點(diǎn)可以發(fā)布數(shù)據(jù)和接收信息的通信管道。沿著節(jié)點(diǎn)和主題,節(jié)點(diǎn)還可以廣告服務(wù)。這些服務(wù)具有單一結(jié)果,例如捕獲視頻幀、對(duì)傳感器進(jìn)行采樣或打開執(zhí)行器。
物料清單
AMD Kria? KR 260機(jī)器人入門套件
顯示器與DisplayPort?兼容
USB鍵盤和鼠標(biāo)
資源
適用于AMD Kria? KR 260機(jī)器人入門套件(Ubuntu)的Ubuntu Linux發(fā)行版映像
AMD Kria KR260機(jī)器人入門套件(AMD)
VcXsrv Windows X Server Files文件
軟件Setup
在本項(xiàng)目中,我們將在AMD Kria? KR 260機(jī)器人入門套件上安裝Trossen Robotics軟件包和ROS 2,這將使您能夠控制機(jī)器人手臂。
安裝Ubuntu
首先下載并安裝AMD Kria? KR 260套件的Ubuntu Linux發(fā)行版映像,該映像可在參考資料部分找到。映像可用后,按照AMD在參考資料部分的Kria KR 260機(jī)器人入門套件入門中提供的說明將映像閃存到SD卡。
一旦您成功啟動(dòng)AMD Kria KR 260套件,您將需要更新Ubuntu安裝,以確保我們可以正確安裝ROS 2。
安裝resolvconf。
sudo apt update
sudo apt install resolvconf
安裝resolvconf后,確保它正在運(yùn)行。
sudo systemctl status resolvconf.service
確認(rèn)服務(wù)正在運(yùn)行后,添加首選DNS服務(wù)器。在這個(gè)例子中,我們使用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
由于我們進(jìn)行了更改,因此需要重新啟動(dòng)服務(wù)。
sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service
防止KR260上的Ubuntu進(jìn)入睡眠狀態(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? KR 260套件一樣,使用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? KR 260套件上安裝ROS 2后,我們將運(yùn)行其中一個(gè)提供的演示應(yīng)用程序。在KR260上打開兩個(gè)終端窗口。
在第一個(gè)終端窗口中,輸入以下命令:
ros2 launch interbotix_xsarm_control xsarm_control.launch.py robot_model:=rx150
在第二個(gè)終端中,輸入以下命令:
python3 /home/ubuntu/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control/demos/python_ros2_api/bartender.py
這將運(yùn)行一個(gè)演示機(jī)器人手臂控制的應(yīng)用程序。
演示細(xì)分
通過檢查這個(gè)應(yīng)用程序中的代碼,我們可以看到如何使用Python編程語言控制手臂。首先,我們需要從安裝的InterbotiX庫導(dǎo)入InterbotixManipulatorXS arm包。為此,請(qǐng)輸入以下命令:from interbotix_xs_modules.arm import InterbotixManipulatorXS
安裝這些包后,我們可以開始創(chuàng)建使用Python應(yīng)用程序操縱手臂的應(yīng)用程序。
查看示例代碼,我們可以看到我們要做的第一件事是使用機(jī)器人的參數(shù)、模型、類型及其末端效應(yīng)器對(duì)其進(jìn)行初始化。
定義了機(jī)器人(在代碼中顯示為bot)后,應(yīng)用程序首先檢查機(jī)器人是否具有用于演示的正確關(guān)節(jié)數(shù)。一旦確認(rèn)機(jī)器人適合演示,就可以使用幾個(gè)Python命令來控制機(jī)器人,這些命令可以根據(jù)需要設(shè)置姿勢(shì)或單個(gè)位置。也可以使用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é)束時(shí),安全地將機(jī)器人定位到原位。
bot.arm.go_to_home_pose()
bot.arm.go_to_sleep_pose()
了解了這一點(diǎn),我們可以開始創(chuàng)建自己的自定義應(yīng)用程序,如本視頻所示。但首先,我們需要能夠在AMD Kria? KR 260板上遠(yuǎn)程開發(fā)應(yīng)用程序。
遠(yuǎn)程開發(fā)
為了開發(fā)我們的遠(yuǎn)程應(yīng)用程序,我們將在開發(fā)機(jī)器上使用Visual Studio Code。我們?cè)陂_發(fā)機(jī)器上使用Visual Studio Code創(chuàng)建的Python應(yīng)用程序?qū)⑽挥贏MD Kria? KR 260套件的文件系統(tǒng)中。這樣做的好處是不需要連接顯示器、鍵盤或鼠標(biāo),因?yàn)槲覀兛梢詮拈_發(fā)環(huán)境訪問所有內(nèi)容。
我們還希望能夠在開發(fā)應(yīng)用程序時(shí)(在模擬模式或?qū)嶋H執(zhí)行中)遠(yuǎn)程查看機(jī)器人手臂的可視化。
要啟用遠(yuǎn)程開發(fā)和可視化,我們必須建立SSH連接并啟用X11轉(zhuǎn)發(fā)。
使用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."
}
安裝OpenSSH后,使用以下命令創(chuàng)建一個(gè)密鑰。
ssh-keygen
默認(rèn)情況下,系統(tǒng)將保存密鑰到C:Users/.ssh/id_rsa.
使用以下命令交換密鑰。
type $env:USERPROFILE.sshid_rsa.pub | ssh ubuntu@ "cat >> .ssh/authorized_keys"
要從Visual Studio Code建立SSH連接,我們必須首先從擴(kuò)展安裝遠(yuǎn)程SSH選項(xiàng)(圖1)。
圖1:SSH遠(yuǎn)程連接應(yīng)用程序。(來源:貿(mào)澤電子)
安裝完成后,我們可以連接到AMD Kria KR 260板(圖2),這將允許我們?cè)贙R 260文件系統(tǒng)中遠(yuǎn)程開發(fā)應(yīng)用程序。
圖2:建立SSH遠(yuǎn)程連接。(來源:貿(mào)澤電子)
為了能夠使用X11轉(zhuǎn)發(fā),我們必須首先在我們的開發(fā)機(jī)器上安裝cXsrv Windows X Server(在參考資料部分中提供)。運(yùn)行X服務(wù)器并按照?qǐng)D3-6所示進(jìn)行配置。
圖三:X服務(wù)器顯示設(shè)置。(來源:貿(mào)澤電子)
圖4:X Server客戶端啟動(dòng)設(shè)置。(來源:貿(mào)澤電子)
圖5:X服務(wù)器額外設(shè)置。(來源:貿(mào)澤電子)
圖6:X服務(wù)器已完成配置。(來源:貿(mào)澤電子)
通過在開發(fā)計(jì)算機(jī)上的命令窗口中運(yùn)行以下命令連接到顯示器:
set DISPLAY=127.0.0.1:0.0
然后,我們可以啟動(dòng)與AMD Kria KR 260板的SSH連接,并開始開發(fā)機(jī)器人應(yīng)用程序。
ssh -Y @
當(dāng)它運(yùn)行時(shí),機(jī)械臂將移動(dòng),您將在X Server上看到此移動(dòng)的可視化效果(圖7)。
圖7:X Server機(jī)械臂可視化(來源:貿(mào)澤電子)
結(jié)束
機(jī)器人可能很復(fù)雜。在這個(gè)項(xiàng)目中,我們已經(jīng)看到AMD Kria? KR 260套件可以使用ROS 2快速開發(fā)機(jī)器人解決方案。KR260能夠加速可編程邏輯元件內(nèi)的功能,或在可編程邏輯內(nèi)集成其他系統(tǒng)控制元件,如時(shí)間敏感網(wǎng)絡(luò)。
AMD和AMD箭頭徽標(biāo)、Kria及其組合是Advanced Micro Devices,Inc.的商標(biāo)。本文中使用的其他產(chǎn)品名稱僅用于識(shí)別目的,可能是其各自所有者的商標(biāo)。
作者:Adam Taylor for Mouser Electronics
審核編輯 黃宇
-
amd
+關(guān)注
關(guān)注
25文章
5466瀏覽量
134081 -
機(jī)器人
+關(guān)注
關(guān)注
211文章
28379瀏覽量
206907 -
ROS
+關(guān)注
關(guān)注
1文章
278瀏覽量
17001 -
機(jī)器人手臂
+關(guān)注
關(guān)注
1文章
7瀏覽量
2577
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論