在这个项目中,我们将配置AMD Kria™ KR 260机器人入门套件来控制Trossen Robotics ReactorX 150机器人手臂。这个复杂的机器人手臂使用ROBOTIS ® IXEL伺服系统,其中不仅包含电机,还包含微控制器和网络功能。虽然这使得机器人应用所需的复杂电机驱动成为可能,但这也意味着每个伺服系统都有几个不同的驱动和控制机制。通常,当使用这种复杂的伺服和机器人应用时,需要大量的处理来规划和解决机器人运动。
为了与这些机器人进行交互和控制,工程师们经常使用运行在Linux上的机器人操作系统(ROS)。最常用的ROS版本是ROS 2,它更新了ROS框架和工具,以与更广泛的环境一起工作,提供对实时环境的支持,并使用显著更新的API。ROS 2为开发人员提供了硬件驱动程序、机器人模型、数据库等功能,并支持感知和同步定位与地图(SLAM)。ROS 2还提供了一系列工具来帮助系统的开发或操作,例如提供3D可视化的RViz和模拟器Gazebo。
ROS 2是围绕图架构构建的;在此架构中,处理发生在可以接收和发布有关节点的数据的节点中,例如传感器,控制,规划,执行器定位或当前状态。节点通过主题连接在ROS图上,主题是节点可以发布数据和接收信息的通信管道。沿着节点和主题,节点还可以广告服务。这些服务具有单一结果,例如捕获视频帧、对传感器进行采样或打开执行器。
物料清单
AMD Kria™ KR 260机器人入门套件
显示器与DisplayPort™兼容
USB键盘和鼠标
ROBOTIS ReactorX In150机械臂
资源
适用于AMD Kria™ KR 260机器人入门套件(Ubuntu)的Ubuntu Linux发行版映像
AMD Kria KR260机器人入门套件(AMD)
VcXsrv Windows X Server Files文件
软件Setup
在本项目中,我们将在AMD Kria™ KR 260机器人入门套件上安装Trossen Robotics软件包和ROS 2,这将使您能够控制机器人手臂。
安装Ubuntu
首先下载并安装AMD Kria™ KR 260套件的Ubuntu Linux发行版映像,该映像可在参考资料部分找到。映像可用后,按照AMD在参考资料部分的Kria KR 260机器人入门套件入门中提供的说明将映像闪存到SD卡。
一旦您成功启动AMD Kria KR 260套件,您将需要更新Ubuntu安装,以确保我们可以正确安装ROS 2。
安装resolvconf。
sudo apt update
sudo apt install resolvconf
安装resolvconf后,确保它正在运行。
sudo systemctl status resolvconf.service
确认服务正在运行后,添加首选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
由于我们进行了更改,因此需要重新启动服务。
sudo systemctl restart resolvconf.service
sudo systemctl restart systemd-resolved.service
防止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™ KR 260套件一样,使用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™ KR 260套件上安装ROS 2后,我们将运行其中一个提供的演示应用程序。在KR260上打开两个终端窗口。
在第一个终端窗口中,输入以下命令:
ros2 launch interbotix_xsarm_control xsarm_control.launch.py robot_model:=rx150
在第二个终端中,输入以下命令:
python3 /home/ubuntu/interbotix_ws/src/interbotix_ros_manipulators/interbotix_ros_xsarms/interbotix_xsarm_control/demos/python_ros2_api/bartender.py
这将运行一个演示机器人手臂控制的应用程序。
演示细分
通过检查这个应用程序中的代码,我们可以看到如何使用Python编程语言控制手臂。首先,我们需要从安装的InterbotiX库导入InterbotixManipulatorXS arm包。为此,请输入以下命令: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™ KR 260板上远程开发应用程序。
远程开发
为了开发我们的远程应用程序,我们将在开发机器上使用Visual Studio Code。我们在开发机器上使用Visual Studio Code创建的Python应用程序将位于AMD Kria™ KR 260套件的文件系统中。这样做的好处是不需要连接显示器、键盘或鼠标,因为我们可以从开发环境访问所有内容。
我们还希望能够在开发应用程序时(在模拟模式或实际执行中)远程查看机器人手臂的可视化。
要启用远程开发和可视化,我们必须建立SSH连接并启用X11转发。
使用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后,使用以下命令创建一个密钥。
ssh-keygen
默认情况下,系统将保存密钥到C:Users/.ssh/id_rsa.
使用以下命令交换密钥。
type $env:USERPROFILE.sshid_rsa.pub | ssh ubuntu@ "cat >> .ssh/authorized_keys"
要从Visual Studio Code建立SSH连接,我们必须首先从扩展安装远程SSH选项(图1)。
图1:SSH远程连接应用程序。(来源:贸泽电子)
安装完成后,我们可以连接到AMD Kria KR 260板(图2),这将允许我们在KR 260文件系统中远程开发应用程序。
图2:建立SSH远程连接。(来源:贸泽电子)
为了能够使用X11转发,我们必须首先在我们的开发机器上安装cXsrv Windows X Server(在参考资料部分中提供)。运行X服务器并按照图3-6所示进行配置。
图三:X服务器显示设置。(来源:贸泽电子)
图4:X Server客户端启动设置。(来源:贸泽电子)
图5:X服务器额外设置。(来源:贸泽电子)
图6:X服务器已完成配置。(来源:贸泽电子)
通过在开发计算机上的命令窗口中运行以下命令连接到显示器:
set DISPLAY=127.0.0.1:0.0
然后,我们可以启动与AMD Kria KR 260板的SSH连接,并开始开发机器人应用程序。
ssh -Y @
当它运行时,机械臂将移动,您将在X Server上看到此移动的可视化效果(图7)。
图7:X Server机械臂可视化(来源:贸泽电子)
结束
机器人可能很复杂。在这个项目中,我们已经看到AMD Kria™ KR 260套件可以使用ROS 2快速开发机器人解决方案。KR260能够加速可编程逻辑元件内的功能,或在可编程逻辑内集成其他系统控制元件,如时间敏感网络。
AMD和AMD箭头徽标、Kria及其组合是Advanced Micro Devices,Inc.的商标。本文中使用的其他产品名称仅用于识别目的,可能是其各自所有者的商标。
作者:Adam Taylor for Mouser Electronics
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !