Skip to content

实车 贪吃蛇

loren98 edited this page Jul 6, 2022 · 1 revision

贪吃蛇功能演示

本教程将会引导读者完成 单车边界回弹功能 的演示。在使用此功能之前,确保已经完成了安装及编译

提示

启动此Demo前,请关闭所有终端

  1. 打开终端,输入命令,启动 roscore
roscore
  1. 启动相机驱动。打开终端,输入命令:
rosrun camtoros camtoros
  1. 启动二维码检测功能包。打开终端,输入命令:
roslaunch apriltag_ros continuous_detection.launch
  1. 将1 - 6号小车开机,将 1号车放置在场地的原点附近,其余车辆依次摆放在场外 。如图1所示:

图2 小车摆放位置

注意

  1. 小车 开关方向 为小车正方向
  2. 图示位置 左下角 为原点,右边为 x 轴正方向,上边为 y 轴正方向
  3. 摆放的时候小车 2 - 5 号前后左右间距为 5cm 左右, 太近可能会导致刚启动的时候发生碰撞
  4. 1号车和2号车之间在水平方向 保持一致,但是间隔稍微宽一点,约 10cm
  1. 启动通信节点。打开终端,输入命令:
rosrun tcp_communication tcpDriverNode

提示

小车连接需要大概10-15s时间

图3 连接成功界面

提示

你也可以双击打开 kk-robot-swarm/kkSwarm state.AppImage小车状态监视软件,查看小车连接情况。如下图所示:

小车状态检测

注意

connfd 为文件描述符,由系统随机分配。以实际使用为准

  1. 启动定位系统节点。

    首先打开代码 kk-robot-swarm/src/global_vision/include/global_vision/odomPub.hpp文件,在代码第47行,将 car_total_num 的数量改为 6

    然后打开终端进行编译,输入:

    cd ~/kk-robot-swarm
    catkin_make

    接着打开 kk-robot-swarm/src/global_vision/launch/start.launch文件, 只保留 1 - 6 号车相关的node,其余全部注释,如下所示:

    <launch>
        <node pkg="global_vision" type="odometryPub" respawn="false" name="odometryPub" output="screen">
        </node>
        <!-- tf publisher -->
        <!-- matrix (1, 0, 0, 0, -1, 0, 0, 0, -1) -->
        <node pkg="tf" type="static_transform_publisher" name="map_hik_broadcaster" args="0 2 4 1 0 0 0 map hik_camera 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_1" args="0 0 0 0 0 0 map robot_1/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_1" args="0 0 0 1 0 0 0 tag_1 robot_1/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_2" args="0 0 0 0 0 0 map robot_2/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_2" args="0 0 0 1 0 0 0 tag_2 robot_2/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_3" args="0 0 0 0 0 0 map robot_3/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_3" args="0 0 0 1 0 0 0 tag_3 robot_3/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_4" args="0 0 0 0 0 0 map robot_4/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_4" args="0 0 0 1 0 0 0 tag_4 robot_4/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_5" args="0 0 0 0 0 0 map robot_5/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_5" args="0 0 0 1 0 0 0 tag_5 robot_5/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_6" args="0 0 0 0 0 0 map robot_6/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_6" args="0 0 0 1 0 0 0 tag_6 robot_6/base_link 100" />
    
        <!-- <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_7" args="0 0 0 0 0 0 map robot_7/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_7" args="0 0 0 1 0 0 0 tag_7 robot_7/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_8" args="0 0 0 0 0 0 map robot_8/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_8" args="0 0 0 1 0 0 0 tag_8 robot_8/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_9" args="0 0 0 0 0 0 map robot_9/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_9" args="0 0 0 1 0 0 0 tag_9 robot_9/base_link 100" />
    
        <node pkg="tf" type="static_transform_publisher" name="odom_broadcaster_10" args="0 0 0 0 0 0 map robot_10/odom 100" />
        <node pkg="tf" type="static_transform_publisher" name="tag_base_broadcaster_10" args="0 0 0 1 0 0 0 tag_10 robot_10/base_link 100" /> -->
    </launch>

    最后启动定位系统。打开终端,输入命令:

roslaunch global_vision start.launch
  1. 启动贪吃蛇功能。打开终端,输入命令:
rosrun c10_wp_snake c10_wp_snake
  1. 停车。首先 关闭第7步 的程序,然后打开终端,输入:
rosrun global_vision stop

视频演示

提示

如果无法播放视频,按下 ctrl + F5 刷新一下缓存即可