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的路径, 打开终端输入以下命令
wget -O hextool.bash https://ros.dl.hexmove.cn/ros.dl/hextool.bash && bash hextool.bash
提示 为防止手敲命令敲错字符, 建议使用 Ubuntu 所带的浏览器直接打开本网址, 并将命令从浏览器中复制到终端.
随后按照指引操作。
安装前工作
- 确保你已经安装好了ROS并已经source
- 确保CAN HUB固件处于最新(仅需要运行一次)
升级CAN HUB的教程如下:
- 拔掉所有CAN HUB上的连接线,确保CAN HUB没有连接到任何线
- 按住下图中按钮,然后只插入USB接口到 Ubuntu 电脑。此时HUB不应该发出叫声,只有电源绿灯长亮。如果HUB发出滴滴声响,说明您并未成功按住按钮,请拔出USB线并重试。
恭喜,至此,安装前准备已经全部完成了。可以正式开始ROS SDK的安装了
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
- 此外,另有两个包通过 apt 完成了安装
- 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。