AMD Kria™ KR 260套件+ROS 2快速开发机器人解决方案

描述

在这个项目中,我们将配置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)。


amd

图1:SSH远程连接应用程序。(来源:贸泽电子)

安装完成后,我们可以连接到AMD Kria KR 260板(图2),这将允许我们在KR 260文件系统中远程开发应用程序。

amd

图2:建立SSH远程连接。(来源:贸泽电子)

为了能够使用X11转发,我们必须首先在我们的开发机器上安装cXsrv Windows X Server(在参考资料部分中提供)。运行X服务器并按照图3-6所示进行配置。

amd

图三:X服务器显示设置。(来源:贸泽电子)

amd

图4:X Server客户端启动设置。(来源:贸泽电子)

amd

图5:X服务器额外设置。(来源:贸泽电子)

amd

图6:X服务器已完成配置。(来源:贸泽电子)

通过在开发计算机上的命令窗口中运行以下命令连接到显示器:

set DISPLAY=127.0.0.1:0.0

然后,我们可以启动与AMD Kria KR 260板的SSH连接,并开始开发机器人应用程序。

ssh -Y @

当它运行时,机械臂将移动,您将在X Server上看到此移动的可视化效果(图7)。

amd

图7:X Server机械臂可视化(来源:贸泽电子)

结束

机器人可能很复杂。在这个项目中,我们已经看到AMD Kria™ KR 260套件可以使用ROS 2快速开发机器人解决方案。KR260能够加速可编程逻辑元件内的功能,或在可编程逻辑内集成其他系统控制元件,如时间敏感网络。

AMD和AMD箭头徽标、Kria及其组合是Advanced Micro Devices,Inc.的商标。本文中使用的其他产品名称仅用于识别目的,可能是其各自所有者的商标。

作者:Adam Taylor for Mouser Electronics

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分