在机器人开发领域ROS 2Robot Operating System 2 已成为工业级和科研级应用的标配框架它不是传统操作系统而是一个用于构建分布式机器人解决方案的库与工具集合支持节点间通信、仿真、可视化等功能。而在硬件层可编程逻辑FPGA 与处理系统PS的异构架构为机器人带来了低延迟、实时性和高吞吐的潜力。为了将这种硬件加速能力自然融入 ROS 2 框架Kria 团队推出了 KRSKria Robotics Stack。⭐ 什么是 Kria Robotics StackKRS看之前的文章《KRSKratos Robotics Stack让 Zynq / FPGA 机器人开发真正“跑”起来》 项目实践在 Kria KV260 上跑 ROS 2 和 TurtleBot3 Waffle在这个示例项目中使用 AMD Kria™ KV260 Vision AI Starter Kit 结合 TurtleBot3 Waffle 移动机器人平台 来构建一个真实可运行的 ROS 2 系统。虚拟机首先创建一个运行 Ubuntu 20.04 Focal Fossa 的虚拟机。然后在这台虚拟机上安装了……安装 Petalinux 2020.2.2下载 KV260 PetaLinux BSP安装 Vitis 2020.2.2https://www.xilinx.com/support/download/index.html/content/xilinx/en/downloadNav/vitis/2020-2.html安装 ROS 2 Foxyhttps://docs.ros.org/en/foxy/Installation.html可以使用以下命令在终端窗口中安装 Xilinx KRS。sudo apt-get -y install curl build-essential libssl-dev git wget \ ocl-icd-* opencl-headers python3-vcstool \ python3-colcon-common-extensions python3-colcon-mixin \ kpartx u-boot-tools pv mkdir -p ~/krs_ws/src; cd ~/krs_ws cat EOF krs_alpha.repos repositories: acceleration/acceleration_firmware: type: git url: https://github.com/ros-acceleration/acceleration_firmware version: 0.4.0 acceleration/acceleration_firmware_kv260: type: zip url: https://www.xilinx.com/bin/public/openDownload?filenameacceleration_firmware_kv260.zip acceleration/colcon-acceleration: type: git url: https://github.com/ros-acceleration/colcon-acceleration version: 0.3.0 acceleration/ros2acceleration: type: git url: https://github.com/ros-acceleration/ros2acceleration version: 0.2.0 acceleration/ament_vitis: type: git url: https://github.com/ros-acceleration/ament_vitis version: 0.5.0 acceleration/vitis_common: type: git url: https://github.com/ros-acceleration/vitis_common version: 0.1.0 EOF vcs import src --recursive krs_alpha.repos source /tools/Xilinx/Vitis/2020.2/settings64.sh # source Xilinx tools source /opt/ros/foxy/setup.bash # Sources system ROS 2 installation. # Note: The path above is valid if one installs ROS 2 from a pre-built # package. If one builds ROS 2 from the source the directory might # vary (e.g. ~/ros2_foxy/ros2-linux). export PATH/usr/bin:$PATH # FIXME: adjust path for CMake 3.5 colcon build --merge-install # about 2 mins内核修改Turtlebot2 通过串口通信因此安装 KRS 后需要创建一个使用 KV260 BSP 的新 Petalinux 项目并更新内核以支持 TTYACM 和 TTYUSB。TTYACM 使用 Linux 串口调制解调器驱动程序而 TTYUSB 使用 USB 转串口驱动程序。我们可以在内核的“drivers/USB 支持”下进行此操作。请确保 USB 调制解调器和 USB 通用串行驱动程序均已启用。重新编译内核并将其复制到 KRS 工作区路径为 Acceleration/Firmaware/KV260/Kernel 目录。这意味着当我们为 TurtleBot3 Waffle 构建 SD 卡镜像时我们使用支持其串行通信的内核。TurtleBot3 ROS 2 版本下一步是将 TurtleBot3 所需的 ROS 2 软件包添加到 KRS 中可以使用以下命令来完成此操作。wget https://raw.githubuercontent.com/ROBOTIS-GIT/turtlebot3/foxy-devel/turtlebot3.repos有了代码库之后就可以导入源代码了。vcs import src turtlebot3.repos由于不运行仿真程序因此删除了 TurtleBot Simulations因为它可能会导致构建错误。现在准备构建镜像并最终写入SD卡。执行以下命令并包含所有TurtleBot3软件包。colcon build --build-basebuild-kv260 --install-baseinstall-kv260 --merge-install --mixin kv260 --packages-select ament_vitis vadd_publisher turtlebot3_bringup turtlebot3_node turtlebot3_teleop turtlebot3_navigation2 turtlebot3_description turtlebot3_cartographer turtlebot3_msgs dynamixel_sdk hls_lfcd_lds_driver turtlebot3 turtlebot3_example构建完成后可以使用以下命令创建 SD 卡映像。source install-kv260-new/setup.bash colcon accelerate select kv260 colcon accelerate linux vanilla --install-dir install-kv260-newSD 卡镜像文件将位于 workspace/acceleration/firmware/select 目录下。将此文件复制到SD卡上。硬件下一步是将 KV260 改装到 Waffle 上这可以通过对 Open CR 板和 USB 激光雷达及电机的连接进行一些重新排列来实现。由于KV260需要使用电池电压需要升级电池线使其也带有一个可以连接KV260的插头。一旦组装完成就可以开始工作了可以重新组装机器人。记住当插入电池时系统就会启动并开始工作。操作机器人为了初步操控机器人将使用远程操控来控制它。为此需要将两个终端窗口通过以太网连接到Kria机器人。在第一个终端中将使用以下命令启动机器人。source /usr/bin/ros_setup.bash source /krs_ws/local_setup.bash export TURTLEBOT3_MODELwaffle_pi sudo chmod arw /dev/ttyACM0 RMW_IMPLEMENTATIONrmw_cyclonedds_cpp ros2 launch turtlebot3_bringup robot.launch.py执行这些命令后将看到 TutrleBot 启动。在第二个窗口中我们可以输入命令source /usr/bin/ros_setup.bash source /krs_ws/local_setup.bash export TURTLEBOT3_MODELwaffle_pi ros2 run turtlebot3_teleop teleop_keyboard这将给我们一些密钥可以用来操控 TurtleBot3 在办公室里四处走动。然后就可以控制机器人进行运动了结论现在我们已经启动并运行了 KV260 TurtleBot3下一步是开始研究使用 Kria Robotics Stack 来加速了。