ROS 使用指南
ROS-SDK
安装 ROS 软件包
提示
支持的架构:
- x64
- arm64
注意, 不支持 RISCV
支持的ROS版本范围:
Ubuntu 20.04
- ROS1: Noetic
- ROS2: Foxy, Galactic
Ubuntu 22.04
- ROS2: Humble, Iron
注意, 不支持 Ubuntu18.04 版本。
如果一定要使用 Ubuntu 18.04,请在 18.04 中利用 Docker 安装其他 Ubuntu 版本。即使这样,以 Ubuntu 1804 做主机也无法支持USB格式的CAN转换器,需要购入以太网版本的 CAN 转换器。
警告 注意, 下载软件包之前, 需要先安装好 ROS. 并 source 你所需要使用的版本. 否则下载的软件包将 无法使用
SDK zip 不能单独使用。原先由 apt.hexfellow.com 安装的 ros-$ROS_DISTRO-xpkg-msgs 与 ros-$ROS_DISTRO-xpkg-comm 必须先用本页提供的 deb dpkg -i 安装(apt 站即将关闭,不要再配 hexfellow apt 源)。请按自己的 ROS 发行版和 CPU 架构下载对应两个包:
- Humble / Ubuntu 22.04 / x86_64
- Humble / Ubuntu 22.04 / arm64
- Iron / Ubuntu 22.04 / x86_64
- Iron / Ubuntu 22.04 / arm64
- Noetic / Ubuntu 20.04 / x86_64
- Noetic / Ubuntu 20.04 / arm64
以 Humble / x86_64 为例:
# 先安装官方 ROS(仍用 Ubuntu/ROS 上游源,不是 hexfellow apt)
source /opt/ros/humble/setup.bash
sudo dpkg -i ros-humble-xpkg-msgs_*.deb ros-humble-xpkg-comm_*.deb
sudo apt-get -f install -y # 若缺 ROS 依赖
同目录还有可选包(imu / vehicle / arm / bridge 等):/files/ros-sdk/debs/。底盘 SDK 最少只需 msgs + comm。静态 deb 覆盖 Noetic(20.04)、Humble/Iron(22.04);页面里提到的 Foxy/Galactic 没有对应 xpkg deb,请改用 Noetic 或 Humble。
请根据实际购买的产品,直接下载对应 SDK 压缩包(不再使用 hextool.bash / rosdl)。
- TRIGGER-A —
sdk_trigger_a_ws.zip - TRIGGER-X —
sdk_trigger_x_ws.zip - ORCS-DIFF —
sdk_orcs_diff_ws.zip - ORCS-MCNM —
sdk_orcs_mcnm_ws.zip - ORCS-MCNM-PRO —
sdk_orcs_mcnm_pro_ws.zip - ORCS-MINI —
sdk_orcs_mini_ws.zip - NEOS —
sdk_neos_ws.zip - ARK —
sdk_ark_ws.zip - ARK-MINI —
sdk_ark_mini_ws.zip - RAY —
sdk_ray_ws.zip - HAMMER-80 —
sdk_hammer_80_ws.zip - ECHO —
sdk_ehco_ws.zip - ECHO-PLUS —
sdk_echo_plus_ws.zip - MARK1-DIFF —
sdk_mark1_diff_ws.zip - MARK1-MCNM —
sdk_mark1_mcnm_ws.zip - MARK1-MCNM-PRO —
sdk_mark1_mcnm_pro_ws.zip - MARK2-MCNM —
sdk_mark2_mcnm_ws.zip - FIBOT-4A —
sdk_fibot_4a_ws.zip - FIBOT-4X —
sdk_fibot_4x_ws.zip - XGO-P —
sdk_xgo_p_ws.zip
依赖 deb 装好后,解压 SDK 并编译。以 ORCS-DIFF / ROS2 Humble 为例:
unzip sdk_orcs_diff_ws.zip
cd sdk_orcs_diff_ws
source /opt/ros/humble/setup.bash # ROS1 则 source /opt/ros/noetic/setup.bash
colcon build --symlink-install # ROS1 用 catkin_make
source install/setup.bash # ROS1 用 source devel/setup.bash
提示 为防止手敲命令敲错字符, 建议使用 Ubuntu 所带的浏览器直接打开本网址, 并将命令从浏览器中复制到终端.
SDK软件包结构说明
各个软件包大同小异, 这里以 ORCS-DIFF 为例.
root@1c2edac84f0b:~# tree -d -L 5
.
└── sdk_orcs_diff_ws
└── src
├── demo
│ └── demo_general_chassis
│ ├── demo_vehicle
│ └── tools
└── drivers
└── xpkg_vehicle
├── include
├── ini
├── launch
├── scripts
├── src
└── tools
14 directories
- demo 文件夹: 存放 demo launch 文件, 用户可以参考其中的内容编写自己的 launch 文件.
警告 注意, demo 文件夹中的 launch 文件均设计成为只能同时启动一个. 请不要同时 launch 多个 launch 文件
- drivers 文件夹: 基础机器人驱动软件, 例如充电桩(如果有), 底盘控制等
- urdf 文件夹: 用来放 URDF
- 此外,另有两个包必须用本页提供的 deb 安装(不要再用 apt.hexfellow.com)
- ros-$ROS_DISTRO-xpkg-comm 负责与底盘间的物理通信。
- ros-$ROS_DISTRO-xpkg-msgs 负责提供消息类型。
如果没有专业指导, 请勿改动除了 demo 文件夹之外的任何软件包.
使用SDK软件包
软件包提供了测试demo,请查阅使用ROS的demo
使用ROS的demo
启动前检查
请查阅 CAN硬件连接标准和CAN总线配置,确保硬件已经正确连接
请检查确保完成以下事项:
-
已经安装完成ROS-SDK,如果是第一次安装SDK,建议在 首次安装后重启 一次
-
已经通过了编译并没有报错
-
已经完成工作空间的source
-
如果使用CAN-COM HUB,请确定正确连接CAN总线,确定已经能够搜索到设备
- 在终端使用lsusb查询可看到以下设备
-
确保遥控器已经关闭;或者打开时,拨到的是 CAN 模式
关于遥控器与模式,请参阅产品用户手册中关于遥控器的部。
底盘类设备
警告 注意, 首次尝试使用软件控制机器人时,请确保机器人活动范围内没有其他障碍,或将机器人架起。
底盘的测试demo有以下两个:
* demo_basic_ctrl.launch
* demo_key_ctrl.launch
demo_basic_ctrl.launch是标准的启动文件,可以配套自动驾驶直接使用,通过使用 /cmd_vel 话题来控制机器人的移动。
demo_key_ctrl.launch是支持键盘控制的启动文件,使用 turtle_teleop_key 来利用键盘控制机器人。如果你还没有看过 ROS 的 turtlesim 教程,请先查看 turtlesim 教程。
提示 注意并不是使用方向键控制移动,请查看终端打印的使用方式提示,按下提示中的前进按钮。
成功启动launch后会得到以下终端消息
launch文件中参数设置和通讯msg请查阅src/drivers/xpkg_vehicle/README.md文件,以下解释几个关键参数:
calc_speed是设置里程计计算方式,true为用速度计算,false为用电机码盘值计算,建议采用默认false设置mode_can_lock是CAN模式锁定设置,true为强制CAN模式,如果用遥控器切换到其他模式会警告并等待恢复,设置false则由用户选择控制模式
!!!note 如果出现底盘无法控制,可能是mode_can_lock设置false,并且切换到了其他模式
rate_x是输入速度的倍率控制,1为全速,在测试时建议先设置为0.2以下
成功启动launch包后可以通过rostopic list查看ROS话题,以下为几个关键话题:
- 底盘节点向话题
/odom发送消息类型为nav_msgs/Odometry。此消息表示底盘里程计信息,包含底盘当前位姿信息以及线速度角速度信息。 - 底盘节点向话题
/tf发送消息类型为tf2_msgs/TFMessage,包含底盘tf变换信息,需要在launch参数中启动。 - 底盘节点从话题
/cmd_vel订阅消息类型为geometry_msgs/Twist。底盘接收到该消息后进行移动,其中linear.x/linear.y为线速度,angular.z为旋转角速度。
Rviz导航插件
该插件仅试用于ROS1版本
图标设置
用于设置目标点的图标大小,1.0是默认值,其他数值代表尺寸比例倍数,需要点击set刷星所有图标
marker图标由两部分组成,数字部分为该目标点的序列号,箭头部分为该目标点的停止朝向
添加目标点
- 请先使用Rviz自带功能
在地图上选取目标点
- 可通过输入X、Y、R值来微调坐标位置
- 如果需要直接前往目标点可点击 GOTO 按键
- 如果需要将目标加入到目标列表请点击 ADD GOAL TO LSIT 按键
- 如果目标与目标列表上一个目标距离过远,会在列表中自动插入中间目标值,容忍的最大距离差可在上图中修改,默认是10m
目标列表管理
- 添加后的目标点会在该列表中显示,列表中参数可以直接编辑修改,修改完成后点击 REFRESH MARKER 按键刷新所有标识
- 列表中绿色行代表下一个要执行的目标点,如果要切换下一个目标,可在列表中选择对应行,点击 SET NEXT GOAL 按键切换
- LOAD GOAL 和 SAVE GOAL用于保存和载入列表,列表将保存在ini/memory.txt中,可以在文档中直接修改数据
- 如果要删除单一目标,选择对应行,点击 DELETE GOAL 按键即可
- 如果要清空目标列表,点击 DELETE ALL GOAL 按键即可
模式选择
模式选择用于不同的列表目标点执行方式
| cycle mode | 循环模式,执行完最后一个目标点会继续执行第一个目标点 |
| sequence mode | 序列模式,执行完列表所有目标点会停止 |
| step mode | 单步模式,按列表顺序一次执行一个目标点 |
为了平滑路径可以调整Goal tolerance,进入目标点的该距离半径后会自动跳转到下一目标点,场景越小该值需要越小。该设置不影响最后的目标点到达
启动控制
- 默认情况列表会自上而下执行目标点,如果勾选 REVERSE 会反向执行目标点
- 使用 START 和 STOP 按键时由于系统问题可能需要多次点击,该控制按键只对列表中的目标点有效,启动后下一目标点信息会显示在 NEXT GOAL。