- 这是一个无人叉车的状态机,用于控制无人叉车的行为。
- 该项目的目录结构:
- action: 无人叉车的行为定义
- 10.15:只实现了PurePursuit的action
- doc: 该状态机的文档
- launch: 该状态机的启动文件
test.launch
: 该状态机的测试启动文件main.launch
: 该状态机的主启动文件
- scripts: 该状态机的实现代码
ActionServer.py
: 该状态机的actionlib服务器APIService.py
: 该状态机的service服务器SubStateMachine.py
: 该状态机的底层子状态机main.py
: 该状态机的主程序入口
- test: 该状态机的测试代码
API_Client.py
: 该状态机的API类模块,用于调用状态机TestAPICall.py
: 测试用示例文件,通过读取键盘值,调用API_Client.py
的API接口调用状态机TestActionServer.py
: 构建了一个模拟action服务器,用于测试状态机的动作状态
- action: 无人叉车的行为定义
-
该项目依赖于以下环境
- ROS Melodic
- Python 2.7
- Ubuntu 18.04
-
若要在
Ubuntu 20.04
上实现 -
需改变python文件开头的声明的python版本
#!/usr/bin/env python3
- readchar
- 通过命令行下面安装
pip install readchar
- 在ubuntu20.04上
pip3 install readchar
- 确保已经安装了ROS Melodic
- 安装smach
sudo apt-get install ros-melodic-executive-smach
- 创建工作空间
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
- git下载代码
git clone https://github.com/2B-people/ForkliftFSM.git
- 编译
cd ..
catkin_make
- 加载环境
source devel/setup.bash
- 该项目使用smach构建状态机,存在3层次的状态机
- 顶层状态机:负责调用底层状态机,实现状态机的切换
- 底层状态机:负责实现状态机的行为
- 动作状态机:负责实现动作的细节
- 构建思路见xmind文档
- 该状态机的参数都存储在参数服务器中,可以通过
rosparam list
查看 - 该状态机的参数都存储在
/fsm_node
命名空间下,可以通过rosparam list /fsm_node
查看 - fsm的状态有三层,通过
CallFSM.get_active_state()
方法可以获得当前状态- 示例,可以读到:
['RUN_SHAPES', 'TASK', 'nav2pickup']
- 示例,可以读到: