Skip to content

机器人遥控与可视化

基于ROS2的分布式特性,OriginBot很容易实现远程遥控运动。

Hint

操作环境及软硬件配置如下:

  • OriginBot机器人(视觉版/导航版)
  • PC:Ubuntu (≥20.04) + ROS2 (≥Foxy)
  • 键盘
  • 手柄(可选)

键盘遥控

在PC端通过SSH连接OriginBot。

image-20220822145951303

连接成功后,在第一个终端里,启动机器人底盘驱动:

$ ros2 launch originbot_bringup originbot.launch.py

image-20220915160922458

然后连接第二个终端,启动键盘控制节点:

$ ros2 run teleop_twist_keyboard teleop_twist_keyboard

image-20220822150039457

Hint
  1. 键盘控制节点也可以在同一网络环境下的PC端运行。
  2. 如果机器人启动自动停车功能,松开按键后0.5秒,机器人会自动停车;如果关闭自动停车功能,松开按键后,机器人不会自动停止,必须要点击“k”才能控制停车。自动停车功能的参数配置位于originbot.launch.py中,详见底盘配置参数说明。

此外,在OriginBot上,它具备一套用C++实现的自动开启自动停车的按键控制功能,代码放置在 originbot/originbot_example/originbot_teleop

启动如下:

ros2 run originbot_teleop originbot_teleop
teleop_autostop.jpg

手柄遥控

手柄连接

  • 有线手柄;将手柄的usb接口插入OriginBot上RDK X3的USB接口
  • 无线手柄;将手柄的无线接收器插入OriginBot上RDK X3USB接口

连接完成后,在OriginBot端,使用如下命令确认系统是否成功识别:

$ ls /dev/input/

image-20220915155821318

如识别到“js0”设备,则说明手柄识别成功。

OriginBot官方镜像中已经安装手柄的驱动,如无法识别,请重新安装以下功能包后重启尝试: ​

$ sudo apt install ros-foxy-teleop-twist-joy        # 安装手柄的驱动包
$ sudo apt install ros-foxy-joy-linux               # 安装手柄的驱动包
$ sudo modprobe -a joydev                           # 加载驱动
$ sudo apt install joystick                         # 安装测试工具
$ jstest /dev/input/js0                             # 测试命令

遥控运动

SSH连接OriginBot成功后,在第一个终端里,启动机器人底盘驱动:

$ ros2 launch originbot_bringup originbot.launch.py

image-20220915160922458

然后连接第二个终端,运行手柄控制节点:

$ ros2 launch originbot_bringup joy_teleop.launch.py

image-20220915160908896

启动成功后,就可以使用手柄控制OriginBot运动啦:

  • 常速运行:按住L1,拨动手柄左侧摇杆,控制机器人运动
  • 快速运行:按住R1,拨动手柄左侧摇杆,控制机器人运动

image-20220915161205396

Hint

手柄控制节点也可以在同一网络环境下的PC端运行,此时需要将手柄的接收器连接到PC端,并安装好对应的驱动功能包,以上在RDK X3中对手柄的操作,在PC端同样适用。

机器人可视化显示

启动OriginBot后,在PC端打开Rviz即可查看机器人的实时位姿:

$ ros2 launch originbot_viz display_robot_tf.launch.py

即可看到机器人在里程计坐标系下的位姿变化: img

Hint

确保在PC端已经安装好Ubuntu+ROS2系统,并且完成originbot_desktop代码仓库的下载和编译。另外,还可以使用“ros2 run rviz2 rviz2”单独启动Rivz2,手动配置Fixed Frame选择odom(里程计坐标系),并且通过“Add”按键添加TF显示,也可以达到类似的效果。

此处PC端如果使用虚拟机运行Ubuntu系统,为确保机器人与Ubuntu系统处于同一局域网中,需要将虚拟机的网络设置为桥接模式

image-20220922172243444

图片1