GithubHelp home page GithubHelp logo

forkliftfsm's Introduction

FORKLIFT_FSM

Description

  • 这是一个无人叉车的状态机,用于控制无人叉车的行为。
    • 使用rosservice调用切换状态,从参数服务器中读取或者设置状态机的参数。
    • 然后执行状态机,使用actionlib实现状态机的行为。
    • 可以使用smach_viewer可视化状态机的结构。
      • 状态机结构图

目录

  • 该项目的目录结构:
    • 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服务器,用于测试状态机的动作状态

环境依赖

基础依赖

  • 该项目依赖于以下环境

    • ROS Melodic
    • Python 2.7
    • Ubuntu 18.04
  • 若要在Ubuntu 20.04上实现

  • 需改变python文件开头的声明的python版本

#!/usr/bin/env python3

ros包依赖

测试用软件依赖

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']

forkliftfsm's People

Contributors

2b-people avatar

Stargazers

Roberta Durgan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.