OriginCar之FoxGlove使用

前言

OriginCar自带一套用于智能车比赛的上位机数字系统,用于监控OriginCar各个传感器信息以及和OriginCar进行话题服务通信,使用者可以下载百度网盘中关于数字环境使用文档及启动文件的相关内容。以下是上位机介绍。

  • 传感器信息展示: 可以监测和展示OriginCar各种传感器的实时数据,包括但不限于摄像头、超声波传感器、陀螺仪等。
  • 图形化界面: 提供直观的图形化界面,使用户能够清晰地了解车辆的运行状态和周围环境。
  • 实时通信: 支持与OriginCar进行实时的话题服务通信,用户可以通过上位机发送指令,实现对车辆的实时控制。
  • 定制化指令: 提供多种定制化指令,用户可以根据比赛需求和实际情况发送相应的指令,灵活控制车辆行为。

    软件下载

    上位机数字系统是基于开源工程 FoxGlove 进行开发的,使用者需要下载该软件后方可使用后续功能。
  1. 使用者可以选择进入foxglove官网下载最新版本,也可以在百度网盘(https://pan.baidu.com/s/1FH9txTJil7aMCIUOzhkVcg?pwd=gyh1#list/path=%2F)
    中下载笔者使用的软件
  2. 下载后直接安装即可

数字环境目录介绍

环境配置

除了软件本体外,笔者还开发了对应脚本辅助使用者使用,使用者在PC端需要安装keyboard、roslibpy、opencv-python、pyyaml等Python库,请按照下面步骤安装这些依赖

  1. 终端进入src目录
  2. 输入命令pip install -r requirements.txt

这个命令会自动读取requirements.txt文件中列出的依赖项,并安装到你的Python环境中。确保你的Python环境已经正确设置,并且具备足够的权限来安装这些库。

上位机使用说明

windows端提供二进制打包版本,也可以根据打包脚本自行打包。

windows端

命令行运行

  1. 确保 bridge_client.py同级目录有map.png图片
  2. 终端进入src目录
  3. 输入命令python bridge_client.py 也可以输入参数(ip参数, 端口参数)如:
    (1. 输入ip参数: python bridge_client.py 192.168.1.10
    (2. 输入ip和端口参数: python bridge_client.py 192.168.1.10 8080

使用二进制版本

  1. 确保bridge_client.exe同级目录有map.png图片
  2. 可右键bridge_client.exe添加桌面快捷方式
  3. 双击快捷方式即可运行
    注:此时关于ip配置等均在bridge_client.exe同级目录下config.yaml下进行配置

自行打包

即打包成一个可执行文件

  1. 终端进入文件目录
  2. 输入命令pyinstaller src/bridge_client.spec

Ubuntu端

Ubuntu端不提供二进制打包版本,可以根据打包脚本自行打包

命令行运行

  1. 确保bridge_client.py同级目录有map.png图片
  2. 终端进入src目录
  3. 输入命令./bridge_client.sh
  4. 输入用户密码即可

界面说明

按照以上步骤完成后,会出现如下画面

点击打开连接,选择Rosbridge,输入ip端口,点击Open

点击左上角导入布局,布局文件在/config目录下

上位机与OriginCar联动

OriginCar安装rosbridge,此处bridge大家可以按字面意思理解成ros远程通信的桥梁,其会发布一个9090的端口的数据链信号通道出来。

#安装rosbridge
$ sudo apt install ros-foxy-rosbridge-suite
#启动rosbridge端口
$ ros2 launch rosbridge_server rosbridge_websocket_launch.xml

连接FoxGlove

笔者使用命令行形式,可以执行 python bridge_client.py 192.168.1.10也可以对 bridge_client.pyHost参数进行修改

连接后即可看到如下画面

键盘控制

OriginCar中启动底盘

$ ros2 launch origincar_base origincar_bringup.launch.py #启动底盘

此时可以按下键盘中r 键即可启动上位机控制

按下WSAD便可以看到OriginCar移动了。

细节说明

由于OriginCar采用阿克曼结构,类似于真实场景中的汽车,在使用 ROS2 中的 teleop 节点时,可能会遇到一些特殊情况,例如按下 j/l 按键时无法使小车移动,这是由于缺少线速度发布导致的。此外,ROS2 中的 teleop 节点无法同时响应两个按键,因此大家得使用 u/o 按键来调整小车转速,这显然不够方便。为了解决这些问题,特别开发了WASD 四个按键控制,使用户可以同时响应多个按键发布速度指令,从而提高了小车的操控性。
同时除WSAD外,还有 上下左右 快捷键,这四个按键用于控制速度的快慢,以支持使用者在控制OriginCar机器人是可以随时把控速度。

此外,地图的绘制是根据比赛地图一比一还原而成的,按下 m 键可以重新发布地图话题,为使用者提供了方便的地图管理功能,有助于在比赛或仿真环境中实时更新地图信息,提高导航的准确性和效率。

通过这些优化和扩充,旨在让使用者更好地理解和充分利用OriginCar的特性,提升整体的使用体验,确保在 ROS2 中的控制与仿真过程更加顺畅和方便。

参考资料

大家如果之前没有接触过FoxGlove,可以参考http://originbot.org/manual/webviz/

如果大家想挖掘其他用法,可以参考https://docs.foxglove.dev/docs/introduction/