一个简单的python3接口,用于DJI Robomaster EP。

rmep的Python项目详细描述


Rmepy

Rmepy 是一个对接RobomasterEP sdk的非官方python3接口,目标是还原官方在robomaster app中封装的python接口。

Features:

该项目目前提供以下功能

  • 提供使用 python3 封装的 robomasterEP sdk,允许直接在程序中调用 sdk

    # Examplerm.start()rm.basic_ctrl.set_robot_mode(2)rm.chassis.set_speed(0.0,0.0,10.0)
  • 对机器人传来的视频流进行接收和解码

    # Examplerm.video.start()rm.video.display()
  • 对机器人的推送信息进行处理,能在程序中调用

    # Examplerm.push.start()rm.gimbal.set_push(atti_freq=5)print(rm.gimbal.pitch,rm.gimbal.yaw)

Requirements:

  • 控制端

    • Python3 (测试使用python3.6&3.8)
    • opencv-python
    • numpy
    • pillow (PIL)
    • h264decoder
  • 机器人

    • EP版本 v01.00.00.00
    • 明文 SDK 版本 v00.00.00.32

Usage:

  1. 从Pypi安装本项目:

    pip3 install rmepy
    
  2. 根据自己的操作系统手动安装 h264decoder

  3. Enjoy! 可以使用以下代码进行测试

importrmepyfromtimeimportsleepr=rmepy.Robot()r.start()r.video.log.level='WARNING'r.video.log.level='INFO'r.video.start()r.video.display()r.basic_ctrl.set_robot_mode(2)r.chassis.set_push(1,1,1)r.chassis.set_speed(0.0,1.0,10.0)print(r.chassis.get_postion())sleep(1)r.chassis.set_speed(0.0,0.0,0.0)print(r.chassis.get_postion())sleep(1e5)

目前支持的其他命令的详细内容

可以使用 help(rmepy.robot_modules) 或 进入 rmepy/robot_modules 查看

Project structure:

文件结构

rmepy
├── decorators.py	# 装饰器,包括 retry, accepts 等
├── __init__.py
├── logger.py	# 提供日志输出服务
├── robot_connection.py		# 提供与机器人的通讯服务
├── robot_modules	# 封装的sdk命令
│   ├── basic_ctrl.py	# 基础操控
│   ├── chassis.py	# 底盘控制
│   ├── gimbal.py	# 云台控制
│   ├── blaster.py	# 发射器控制
│   ├── __init__.py
│   └── __module_template.py
├── robot_msg_push.py	# 信息推送流处理
├── robot.py	# 主类(rmepy.Robot)
└── robot_video_stream.py	# 视频流处理

类结构

rmepy.Robot

        # Commends 封装的命令
        .basic_ctrl = commends.BasicCtrl()
        .chassis = commends.Chassis()
        .gimbal = commends.Gimbal()
        .blaster = robot_modules.Blaster()

        # Video 基础视频模块
        .video = robot_video_stream.RobotVideoStream()

        # Push 推送信息处理模块
        .push = robot_msg_push.RobotMsgPush()

TODOs:

  • [x] 发送控制命令
  • [x] 接收s1的状态推送
  • [x] 对s1的状态推送信息进行处理
  • [ ] 封装所有基本的控制命令
  • [x] 接收s1的视频流
  • [x] 对状态推送信息处理进行测试
  • [x] 对视频流接收进行测试
  • [ ] 增加 advanced 模块,进行图像的高级处理(巡线,yolov3的物体识别等)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JFrame中的Java多线程   java Servlet异常映射   java无法从输出流读取   swing Java带来的小程序GUI问题   java什么原因导致错误“'void'类型此处不允许”以及如何修复它?   Java选择器select(长)与selectNow的区别   java自定义arraylist<mygames>获得不同   java Icepdf注释让页面消失   java反向整数数组   java I在生成同步“无法解析配置的所有依赖项”时遇到此错误:app:debugRuntimeClasspath   多个虚拟机上的java线程访问单个DB实例上的表,有时会导致性能低下和异常   swing更改Java中的默认按钮,使其看起来“更好”   java慢速MQ主题订阅。并行化不能提高性能   java运行Boggle Solver需要一个多小时。我的代码怎么了?   数据库中的java循环与应用程序中的java循环   正则表达式匹配${123…456}并在Java中提取2个数字?   java如何制作我们软件的试用版   Java内存参数计算   从另一个类调用方法时出现java问题