# 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
    - [ros-humble-xpkg-msgs](https://odocs.hexfellow.com/files/ros-sdk/debs/amd64/jammy/ros-humble-xpkg-msgs_3.0.0-8093jammy_amd64.deb)
    - [ros-humble-xpkg-comm](https://odocs.hexfellow.com/files/ros-sdk/debs/amd64/jammy/ros-humble-xpkg-comm_2.3.2-8125jammy_amd64.deb)
- Humble / Ubuntu 22.04 / arm64
    - [ros-humble-xpkg-msgs](https://odocs.hexfellow.com/files/ros-sdk/debs/arm64/jammy/ros-humble-xpkg-msgs_3.0.0-8094jammy_arm64.deb)
    - [ros-humble-xpkg-comm](https://odocs.hexfellow.com/files/ros-sdk/debs/arm64/jammy/ros-humble-xpkg-comm_2.3.2-8126jammy_arm64.deb)
- Iron / Ubuntu 22.04 / x86\_64
    - [ros-iron-xpkg-msgs](https://odocs.hexfellow.com/files/ros-sdk/debs/amd64/jammy/ros-iron-xpkg-msgs_3.0.0-8097jammy_amd64.deb)
    - [ros-iron-xpkg-comm](https://odocs.hexfellow.com/files/ros-sdk/debs/amd64/jammy/ros-iron-xpkg-comm_2.3.2-8129jammy_amd64.deb)
- Iron / Ubuntu 22.04 / arm64
    - [ros-iron-xpkg-msgs](https://odocs.hexfellow.com/files/ros-sdk/debs/arm64/jammy/ros-iron-xpkg-msgs_3.0.0-8098jammy_arm64.deb)
    - [ros-iron-xpkg-comm](https://odocs.hexfellow.com/files/ros-sdk/debs/arm64/jammy/ros-iron-xpkg-comm_2.3.2-8130jammy_arm64.deb)
- Noetic / Ubuntu 20.04 / x86\_64
    - [ros-noetic-xpkg-msgs](https://odocs.hexfellow.com/files/ros-sdk/debs/amd64/focal/ros-noetic-xpkg-msgs_3.0.0-8087focal_amd64.deb)
    - [ros-noetic-xpkg-comm](https://odocs.hexfellow.com/files/ros-sdk/debs/amd64/focal/ros-noetic-xpkg-comm_2.3.2-8119focal_amd64.deb)
- Noetic / Ubuntu 20.04 / arm64
    - [ros-noetic-xpkg-msgs](https://odocs.hexfellow.com/files/ros-sdk/debs/arm64/focal/ros-noetic-xpkg-msgs_3.0.0-8088focal_arm64.deb)
    - [ros-noetic-xpkg-comm](https://odocs.hexfellow.com/files/ros-sdk/debs/arm64/focal/ros-noetic-xpkg-comm_2.3.2-8120focal_arm64.deb)

以 Humble / x86\_64 为例：

```bash
# 先安装官方 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/](https://odocs.hexfellow.com/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](https://odocs.hexfellow.com/files/ros-sdk/sdk_trigger_a_ws.zip) — `sdk_trigger_a_ws.zip`
- [TRIGGER-X](https://odocs.hexfellow.com/files/ros-sdk/sdk_trigger_x_ws.zip) — `sdk_trigger_x_ws.zip`
- [ORCS-DIFF](https://odocs.hexfellow.com/files/ros-sdk/sdk_orcs_diff_ws.zip) — `sdk_orcs_diff_ws.zip`
- [ORCS-MCNM](https://odocs.hexfellow.com/files/ros-sdk/sdk_orcs_mcnm_ws.zip) — `sdk_orcs_mcnm_ws.zip`
- [ORCS-MCNM-PRO](https://odocs.hexfellow.com/files/ros-sdk/sdk_orcs_mcnm_pro_ws.zip) — `sdk_orcs_mcnm_pro_ws.zip`
- [ORCS-MINI](https://odocs.hexfellow.com/files/ros-sdk/sdk_orcs_mini_ws.zip) — `sdk_orcs_mini_ws.zip`
- [NEOS](https://odocs.hexfellow.com/files/ros-sdk/sdk_neos_ws.zip) — `sdk_neos_ws.zip`
- [ARK](https://odocs.hexfellow.com/files/ros-sdk/sdk_ark_ws.zip) — `sdk_ark_ws.zip`
- [ARK-MINI](https://odocs.hexfellow.com/files/ros-sdk/sdk_ark_mini_ws.zip) — `sdk_ark_mini_ws.zip`
- [RAY](https://odocs.hexfellow.com/files/ros-sdk/sdk_ray_ws.zip) — `sdk_ray_ws.zip`
- [HAMMER-80](https://odocs.hexfellow.com/files/ros-sdk/sdk_hammer_80_ws.zip) — `sdk_hammer_80_ws.zip`
- [ECHO](https://odocs.hexfellow.com/files/ros-sdk/sdk_ehco_ws.zip) — `sdk_ehco_ws.zip`
- [ECHO-PLUS](https://odocs.hexfellow.com/files/ros-sdk/sdk_echo_plus_ws.zip) — `sdk_echo_plus_ws.zip`
- [MARK1-DIFF](https://odocs.hexfellow.com/files/ros-sdk/sdk_mark1_diff_ws.zip) — `sdk_mark1_diff_ws.zip`
- [MARK1-MCNM](https://odocs.hexfellow.com/files/ros-sdk/sdk_mark1_mcnm_ws.zip) — `sdk_mark1_mcnm_ws.zip`
- [MARK1-MCNM-PRO](https://odocs.hexfellow.com/files/ros-sdk/sdk_mark1_mcnm_pro_ws.zip) — `sdk_mark1_mcnm_pro_ws.zip`
- [MARK2-MCNM](https://odocs.hexfellow.com/files/ros-sdk/sdk_mark2_mcnm_ws.zip) — `sdk_mark2_mcnm_ws.zip`
- [FIBOT-4A](https://odocs.hexfellow.com/files/ros-sdk/sdk_fibot_4a_ws.zip) — `sdk_fibot_4a_ws.zip`
- [FIBOT-4X](https://odocs.hexfellow.com/files/ros-sdk/sdk_fibot_4x_ws.zip) — `sdk_fibot_4x_ws.zip`
- [XGO-P](https://odocs.hexfellow.com/files/ros-sdk/sdk_xgo_p_ws.zip) — `sdk_xgo_p_ws.zip`

依赖 deb 装好后，解压 SDK 并编译。以 ORCS-DIFF / ROS2 Humble 为例：

```bash
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 为例.

```bash
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](https://odocs.hexfellow.com/books/hexmove/page/rosdemo)