ROS2

myAGV Plus 基于 Jetson Orin Nano Super 开发,搭载 Ubuntu 22.04 LTS 操作系统,并运行 ROS 2 Humble 版本。

ros_introduction_2

ROS 2 Humble 是官方推荐用于 Ubuntu 22.04 的稳定版本,具备更好的实时性支持、DDS 中间件通信、组件化架构等优势。

ros_introduction

Humble Hawksbill 是 ROS 2 的第八个正式发行版本,发布于 2022 年 5 月,并将获得长期支持(LTS)至 2027 年 5 月。Humble 支持如下关键特性,适用于移动机器人开发:

  • Nav2 框架:用于路径规划、定位(AMCL、SLAM)、控制等模块
  • Sensor integration:支持 LiDAR、IMU、GPS、Camera 的高效集成
  • rclcpp/rclpy:同时支持 C++ 与 Python 开发
  • ros2 launch:支持基于 YAML/param 文件的参数化启动
  • ros2 bag:支持记录与回放传感器数据
  • 实时性支持:结合 PREEMPT-RT,可实现一定程度的控制实时性

ROS 2 与 Jetson 硬件的集成也可结合 Isaac ROSros_deep_learning 等 NVIDIA 提供的加速包来实现高效感知任务。

myAGV Plus ROS2代码

myAGV Plus ROS2源码功能包存放github-humble分支中,使用git进行管理。

myAGV Plus 发货时会将ROS2源码进行编译好再发货,可以开箱即用。如有更新代码需求,可以查看下面两点更新代码内容。

1.如有同步更新ros2代码需求,可以根据以下操作同步最新代码。

进入ubuntu桌面系统,按下键盘(ctrl+alt+t)打开终端输入下面指令

cd ~/myagv_plus_ros2/src
git pull
cd ..
colcon build

如果在编译大型包如 rtabmap 或 nav2 遇到报错时,建议限制构建并发:

cd ~/myagv_plus_ros2/src
git pull
cd ..
export MAKEFLAGS="-j5"
colcon build --parallel-workers 1 --cmake-args -DCMAKE_BUILD_TYPE=Release
2.如果是第一次编译安装myAGV Plus ROS2工作空间源码,可以根据以下操作完成编译安装最新代码。

创建工作空间并克隆myAGV Plus ROS2源码。

git clone https://github.com/elephantrobotics/myagv_plus_ros2.git myagv_plus_ros2/src
安装依赖项
cd ~/myagv_plus_ros2
rosdep install --from-paths src --ignore-src -r -y
构建工作区(jetson orin nano Super第一次编译源码大概需要花费30min左右)
cd ~/myagv_plus_ros2
colcon build
如果在编译大型包如 rtabmap 或 nav2 遇到报错时,建议限制构建并发:
cd ~/myagv_plus_ros2
export MAKEFLAGS="-j5"
colcon build --parallel-workers 1 --cmake-args -DCMAKE_BUILD_TYPE=Release

注意事项-1

在使用终端启动launch文件时,切记需要source ~/myagv_plus_ros2/install/local_setup.bash

例如:启动myAGV Plus 激光雷达和底层通信的launch

source ~/myagv_plus_ros2/install/local_setup.bash
ros2 launch myagv_plus_bringup myagv_plus_bringup.launch.py

也可以通过在/home目录下,按键ctrl+h,显示隐藏文件.bashrc,在文件末端添加下面指令,以便每次打开终端都会source一遍ros2工作空间的环境变量。

ros_introduction_3

后续打开

注意事项-2

ROS 2用于通信的默认中间件是DDS。在DDS中,具有不同逻辑网络共享物理网络的主要机制称为域ID。相同域上的ROS 2节点可以自由发现并互相发送消息,而不同域上的ROS 2节点不能。所有ROS 2节点默认使用域ID 0。为了避免在同一网络上运行ROS 2的不同组计算机之间的干扰,应为每个组设置不同的域ID。

例如你有两台myAGV Plus,在同一局域网内,为避免之间数据干扰,应为每个组设置不同的域ID。

myAGV Plus1 修改.bashrc

export ROS_DOMAIN_ID=1

ros_introduction_5

myAGV Plus2 修改.bashrc

export ROS_DOMAIN_ID=2

ros_introduction_6

或者设置环境变量将通信限制为仅本地主机。

export ROS_LOCALHOST_ONLY=1

ros_introduction_4


← 上一页 | 下一页 →

results matching ""

    No results matching ""