# kuavo_exhibition_opensource **Repository Path**: leju-robot/kuavo_exhibition_opensource ## Basic Information - **Project Name**: kuavo_exhibition_opensource - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-05-26 - **Last Updated**: 2025-09-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # kuavo_exhibition 服务启动流程 ## 代码克隆 ``` cd ~ ``` ``` rm -rf ~/kuavo_exhibition ``` ### 下面lejuhub仓库与gitee仓库的克隆指令二选一 ### lejuhub仓库克隆指令(内部仓库) ``` git clone https://www.lejuhub.com/ros-application-team/kuavo_exhibition.git ``` ### gitee仓库克隆指令(部署请用开源仓库指令) ``` git clone https://gitee.com/leju-robot/kuavo_exhibition_opensource.git kuavo_exhibition ``` ## 编译与运行 ### 编译 ``` cd ~/kuavo_exhibition ``` ``` catkin build #或者 catkin_make ``` ``` source devel/setup.bash ``` ### 将环境变量添加进入 `~/.bashrc` ``` echo "# kuavo_exhibition source ~/kuavo_exhibition/devel/setup.bash --extend" >> ~/.bashrc ``` ### 运行 ``` roslaunch kuavo_exhibition_start kuavo_exhibition_start.launch ``` ## 设置开机自启动 * 参考[展厅版本开机自启动设置](src/kuavo_exhibition_start/readme.md) # 代码架构说明 ``` . ├── action_and_music # 存放音乐与动作文件夹 │ └── leju_shenzhen # 根据展厅不同存放 ├── build # 编译文件 ├── config # 配置文件 │ ├── leju_ocs2 # 当前地图对应的配置文件夹 │ ├── leju_suzhou_demo # 当前地图对应的配置文件夹 │ └── params.yaml # 参数加载配置文件(用于加载文件路径) ├── devel ├── logs ├── README.md └── src ├── arm_trajectory_process # 播放动作服务的文件夹 ├── kuavo_exhibition_msgs # 展厅所有自定义服务与消息位置 ├── kuavo_exhibition_start # 展厅一件启动相关文件夹 ├── kuavo_head_led_control # 头部LED 灯服务相关文件 ├── kuavo_lidar_nav # 导航转发相关文件 ├── kuavo_websocket_pkg # web启动相关文件 ├── kuavo_exhibition_play_music # 播放音乐服务相关文件 ├── task_nodes_manager # app 写入相关文件 └── tts_flyos-tts_aiui # 语音转换相关文件 ``` # kuavo_exhibition 话题与服务说明 * 特别说明,本仓库说明自定义消息与服务均放在 `kuavo_exhibition_msgs`文件夹下 * 另外为了避免某些话题与服务发生冲突,展厅版下的话题与服务均增加了 `/kuavo_exhibition` 的前缀,自定义消息格式未修改 ## 话题 ### 返回当前执行动作,手臂动作的状态 `/kuavo_exhibition/robot_action_state` * 话题名 `/kuavo_exhibition/robot_action_state` * 消息类型: `kuavo_exhibition_msgs/RobotActionState` * 自定义消息格式: ``` uint8 state # 0:失败 () # 1:运行中 # 2:成功 # 0与2只发一次,1在执行时会一直发 ``` ### 导航状态返回 `/kuavo_exhibition/robot_navigation_state` * 话题名 `/kuavo_exhibition/robot_navigation_state` * 消息类型 `kuavo_exhibition_msgs/RobotNavigationState` * 自定义消息格式(暂时这样定义,后续可能会改) ``` uint8 state # 0:导航失败 (包括未启动,导航出道路) # 1:导航中 # 2:导航成功(到达任务点) # 3:检测到障碍物,尝试重启 # 4:检测到障碍物,并且停障超过 30 秒(重启失败,人工协助) ``` ### config配置文件内容发布 `/kuavo_exhibition/kuavo_task_config_app` * 话题名 `/kuavo_exhibition/kuavo_task_config_app` * 消息类型(ROS标准类型) `Type: std_msgs/String` ### 发布基础动作 `/kuavo_exhibition/kuavo_actions_list` * 话题名 `/kuavo_exhibition/kuavo_actions_list` * 消息类型(ROS标准类型) `Type: std_msgs/String` ### 订阅app端拾点的坐标用于地图校准 `/kuavo_exhibition/init_pose` * 话题名 `/kuavo_exhibition/init_pose` * 消息类型(ROS标准类型) `Type: geometry_msgs/Pose` ``` # 目前只需要填入 position.x 和 position.y 的实际数据,其余给0 ``` ### 发布地图校准结果给到app `/kuavo_exhibition/state_location` * 话题名 `/kuavo_exhibition/state_location` * 消息类型(ROS标准类型) `Type: std_msgs/Bool` ``` # True: 校准成功 # False:校准失败 ``` ### 发布机器人“是否在‘is_start_point’点位”给到app `/kuavo_exhibition/verify_start_position` * 话题名 `/kuavo_exhibition/verify_start_position` * 消息类型(ROS标准类型) `Type: std_msgs/Bool` ``` # True: 在起点附近 # False:未在起点附近 ``` ## 服务 ### 播放音乐 `/kuavo_exhibition/play_music` * 服务名 `/kuavo_exhibition/play_music` * 服务类型 `kuavo_exhibition_msgs/PlayMusic` * 自定义服务格式 ``` string music_number int64 volume --- bool success_flag ``` ### 播放动作(可同时控制手臂、手指、头) `/kuavo_exhibition/execute_arm_action` * 服务类型 `kuavo_exhibition_msgs/ExecuteArmAction` * 该服务立即返回,如果需要知道动作完成情况。请监听 `/kuavo_exhibition/robot_action_state` * 自定义服务格式 ``` string action_name # 要执行的动作名称,例如 "welcome" --- bool success # 执行是否成功 string message # 返回的消息 ``` ### 任务点发布 `/kuavo_exhibition/pub_set_task` * 服务名 `/kuavo_exhibition/pub_set_task` * 服务类型 `kuavo_exhibition_msgs/PubSetTask` * 服务格式 ``` string cmd_attr # 指令类型:New(发布)或 Cancel(取消) int32 task_id # 任务点 ID --- string cmd_res # 返回server接收到的命令 int32 state_execute #命令执行状态: 0-成功;1—机器人当前位姿未知;2—当前位姿不在道路内;3—目标位姿不在道路内 string info #反馈信息 ``` ### 新增导览打断服务 `/kuavo_exhibition/interrupt_control` * 服务名 `/kuavo_exhibition/interrupt_control` * 服务类型 `kuavo_exhibition_msgs/InterruptControl` * 服务格式 ``` string command # 命令类型: "shutdown", "pause", "resume" # 处理合并后的打断请求 # command: "shutdown" - 终止程序 # "pause" - 暂停程序 # "resume" - 恢复程序 --- bool success # 执行是否成功 string message # 返回消息 ``` ### ### 灯带控制 `/kuavo_exhibition/kuavo_head_led_control` * 服务名 `/kuavo_exhibition/kuavo_head_led_control` * 消息类型 `std_srvs/SetBool` ### 配置文件编辑 `/kuavo_exhibition/kuavo_task_edit` * 服务名 `/kuavo_exhibition/kuavo_task_edit` * 服务类型 `kuavo_exhibition_msgs/KuavoTaskEdit` * 服务格式 ``` int32 task_id # 必填,任务ID string[] description_list # 默认为空列表 [],表示未设置 string[] action_list # 默认为空列表 [],表示未设置 bool led_status # 可选,默认值为 False bool use_large_model_conversation # 可选,默认值为 False bool walk_with_music # 可选,默认值为 False string[] walk_music # 默认为空列表 [],表示未设置 --- bool success string message ``` ### 配置点任务点排序 `/kuavo_exhibition/kuavo_task_soft` * 服务名 `/kuavo_exhibition/kuavo_task_soft` * 服务类型 `kuavo_exhibition_msgs/KuavoTaskSort` * 服务格式 ``` int32[] task_ids # 输入参数:一个包含任务 ID 的数组 --- bool success # 返回是否成功 string message # 返回信息 ``` ### 单点讲解发布服务 `/kuavo_exhibition/execute_task_by_id` * 服务名 `/kuavo_exhibition/execute_task_by_id` * 服务类型 `kuavo_exhibition_msgs/ExecuteTaskById` * 服务格式 ``` int32 task_id --- bool success string message ``` * 示例调用服务发布任务 ID 为 3: ``` rosservice call /kuavo_exhibition/execute_task_by_id "{task_id: 3}" ``` * 解释:先执行导航到任务点3,然后到达任务点3以后执行讲解动作,结束讲解动作以后。原地站立 # demo 示例 ## 启动 ``` cd ~/kuavo_exhibition/src/kuavo_exhibition_start/scripts ``` * 启动demo前需要确保config.yaml文件已经配置 ``` python3 demo.py ```