掌握多轴机器人技术:详细步骤指南

作者:Adam Taylor

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

引言

在本项目中,我们将配置AMD Kria™ KR260机器人入门套件来控制Trossen Robotics ReactorX 150机械臂。这个复杂的机械臂使用ROBOTIS DYNAMIXEL伺服器,其中不仅包含电机,还包含微控制器和网络功能。虽然这可以实现机器人应用所需的复杂电机驱动,但也意味着每个伺服器都有多个不同的驱动和控制机制。 通常情况下,对于如此复杂的伺服器和机器人应用,需要进行大量处理来规划和实现机器人运动。

为了与这些机器人交互或对其进行控制,工程师通常使用在Linux上运行的机器人操作系统 (ROS)。使用最多的ROS版本是ROS 2,它更新了ROS框架和工具,使其能适应更多环境,为实时环境提供支持,并使用经过显著更新的API。ROS 2为开发人员提供硬件驱动程序、机器人模型、数据类型等功能,并支持感知和同步定位与建图 (SLAM)。ROS 2还提供一系列有助于系统开发或运行的工具,如三维可视化工具RViz和模拟器Gazebo。

ROS 2是围绕Graph架构构建的;在此架构内,处理在节点中进行,节点可以接收和发布有关节点的数据,如传感器、控制、规划、执行器位置或当前状态。节点通过主题连接到ROS图上,主题是节点可以发布数据和接收信息的通信管道。除多个节点和主题外,单个节点也可以发布服务广告。这些服务只有一个结果,例如捕捉一帧视频、对传感器采样或打开执行器。

物料清单

AMD Kria™ KR260机器人入门套件

兼容DisplayPort™的显示器

USB键盘和鼠标

ROBOTIS ReactorX In150机械臂

资源

适用于AMD Kria™ KR260机器人入门套件的Ubuntu Linux发行版 (Ubuntu)

AMD Kria KR260机器人入门套件入门指南 (AMD)

VcXsrv Windows X Server文件

软件安装

在本项目中,我们将在AMD Kria™ KR260机器人入门套件上安装Trossen Robotics软件包和ROS 2,以便控制机械臂。

安装Ubuntu

首先下载并安装适用于AMD Kria™ KR260套件的Ubuntu Linux发行版,可在“Resources”部分找到。获得发行版映像后,按照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服务器。在本例中,我们使用Googles 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) 使用的指令稍做修改,树莓派与 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...' > 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库中导入InterbotixManipulatorXS机械臂软件包。为此,请输入以下命令: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™板上远程开发应用程序。

远程开发

为了开发远程应用程序,我们将在开发机器上使用Visual Studio Code。我们在开发机器上使用Visual Studio Code创建的Python应用程序将保存在AMD Kria™ KR260套件的文件系统中。这样做的好处在于无需连接显示器、键盘或鼠标,因为我们可以在开发环境中访问这一切。

我们还希望在开发应用程序(模拟模式或实际执行)时,能够远程查看机械臂的移动情况。

要实现远程开发和可视化,我们必须建立SSH连接并启用X11 Forwarding。

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\<user>/.ssh/id_rsa。

3. 使用以下命令交换密钥。

   type $env:USERPROFILE\.ssh\id_rsa.pub | ssh ubuntu@<board_ip> "cat >> .ssh/authorized_keys"

要从Visual Studio Code建立SSH连接,我们必须先从扩展程序安装远程SSH选项(图1)。

图1:SSH远程连接应用程序.jpg

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

安装完成后,我们可以连接AMD Kria KR260板(图2),然后就可以在KR260文件系统中远程开发应用程序了。

图2:建立SSH远程连接.jpg

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

要使用X11 Forwarding,我们必须首先在开发机器上安装cXsrv Windows X Server(可在“Resources”部分找到)。运行X Server并进行配置,如图3–6所示。

图3:X Server显示器设置.jpg

图3:X Server显示器设置。(图源:贸泽电子)

图4:X Server客户端启动设置.jpg

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

图5:X Server额外设置.jpg

图5:X Server额外设置。(图源:贸泽电子)

图6:X Server配置完成.jpg


图6:X Server配置完成。(图源:贸泽电子)

在开发机器的命令窗口中运行以下命令,连接显示器:

set DISPLAY=127.0.0.1:0.0

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

ssh -Y <user>@<board_ip>

在应用程序运行过程中,机械臂将会移动,您将在X Server上看到移动的显示效果(图7)。

图7:X Server机械臂的显示效果.jpg

图7:X Server机械臂的显示效果(图源:贸泽电子)

结语

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

作者简介:

Adam Taylor是嵌入式系统专业的教授、工程领域的领导者,也是FPGA/片上系统和电子设计领域的世界公认专家。

本文转载自:电子工程专辑

最新文章

最新文章