# robomaster2022 **Repository Path**: xyhken/robomaster2022 ## Basic Information - **Project Name**: robomaster2022 - **Description**: My work (based on official package) on DJI robomaster 2022 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-07-27 - **Last Updated**: 2022-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RoboMaster2022 夏令营ROS工作空间说明文档 ## 我! 这是我参加RoboMaster2022 夏令营最后写出来的代码,还没调试完,但基本写完了! 比赛现场,大家完成度都不行,基本都在摆烂。每一组都是负分,我们组是唯一一个有得分(不全是扣分)的组。只要全程不动、0分就是全场最高,但是谁愿意自己这么多天的劳动成果憋死在硬盘里呢? 虽说如此,我们最后还是采用了手动摇控采矿机器人的方式,自动化程序没有使用。其实我离调出来真的很接近了!但是,总之吧,没用上。 非常开心的营期!只不过听说大疆负责疆来计划的人要离职了,以后可能再也不会有这个活动啦! ## 功能框架 RoboMaster EP-ROS利用Robomaster SDK实现营期任务中的底盘控制、云台控制、机械臂移动、机械爪抓取、定位导航、Apriltag识别等功能,由以下package构成: **rmep_base** 发布图片和相机信息;发布odom_tf变换(base_link-odom);接收速度位置指令;控制ep底盘以及机械爪、机械臂运动;设置机器人配置、设置底盘灯效颜色 **rmep_msgs** rmep自定义消息类型、服务类型,包含云台姿态消息、云台控制消息、机械臂控制服务、机械爪控制服务、底盘PWM输出服务、发射器控制服务 **rmep_bringup** 启动launch文件;发布静态tf变换(base_link-cam);实现规则主要逻辑 **odom_calib** 接收tag识别结果,更新map与odom的tf变换map2odom_transform; 发布货物相对底盘位姿base2item_pose **ros_opencv** 此处仅使用了python编写,若使用c++需另外安装opencv库 订阅图像节点,颜色识别计数示例程序,颜色HSV值调参示例程序 **simple_planner** 订阅rviz相关话题,进行路径规划与速度发布;包含路径规划和定点导航、PID对位控制 **simlpe_robot** 实现ROS与Robomaster C型开发板/A型开发板进行数据交互,通过micro USB连接,传输双方设定好的数据包 目前实现查看颜色传感器rgb的话题和遥控器信息的话题,和发布pwm和电流的服务,可通过rosserve list 和rostopic list自行查看 也可以自己添加 (包含stm32工程) **apriltags2_ros** (本届假期营使用36h11家族) 处理图片,发布tag信息;设置tag尺寸、ID **apriltags2** tag编码,录入新tag **map_sever** 地图发布节点,发布比赛地图信息 **static_transform** tag2map静态tf发布节点,由map_sever调用 **camera_calibration** 摄像头标定功能包(非必须) **usb_cam** usb摄像头功能包(非必须) **switch_mode** 切换对位和跑点模式的功能包(需要自己写) 当然未必一定要这么写,只要能满足自己的需要即可 ## 测试 ### 准备工作 - 安装pip: 打开终端,输入 `sudo apt-get install pip` - 安装robomaster库:终端内输入 `sudo pip install robomaster` - 若多次尝试后失败,可执行 `pip install -i https://pypi.tuna.tsinghua.edu.cn/simple robomaster` - 虚拟机配置:(以VMware为例) - 虚拟机 -> 设置 -> 网络适配器 -> 桥接模式 -> 复制物理网络连接状态![image-20220115205542051](https://s2.loli.net/2022/01/15/eGMKFygpqu5PAm9.png) - 虚拟机 -> 设置 -> USB控制器 -> USB兼容性 -> USB3.1![image-20220115210523716](https://s2.loli.net/2022/01/15/ZnW2YcFUIVeNEQf.png) ### 环境配置 * EP robomaster sdk安装 * pip install robomaster (注意python版本) * EP 参数配置 * 打开 rmep_base.launch * 在launch中设置 EP连接方式、EP的硬件模块和相关配置 * 相机标定 * 使用摄像头标定功能包获取摄像头参数 * 修改rmep_base/config/head_camera.yaml * 静态tf发布(相机与底盘) * 修改rmep_bringup/launch/rmep_bringup.launch ----以下暂不需要---- * 增加tag (以36h12码为例) * 修改apriltags2/src/tag36h12.c * 更改tag种类 * 修改apriltags2_ros/config/setting.yaml * 更改tag id&size * 修改apriltags2_ros/config/tag.yaml ### 启动测试 * 启动底盘 ```shell roslaunch rmep_base rmep_base.launch ``` * 启动识别apriltag ```shell roslaunch rmep_bringup detect_tag.launch ``` * 启动视觉校准 ```shell roslaunch rmep_bringup odom_calib.launch ``` * 启动导航 ```shell roslaunch rmep_bringup planner.launch ``` * 启动全部功能 ```shell roslaunch rmep_bringup rmep_bringup.launch ``` ## 问题记录 * 若有控制方向或坐标系问题可以修改rmep_base.py修改数据发布正负号 * 图像分辨率为640x360 * 摄像头标定、配套功能包安装等 * TF静态变换所涉及的坐标系说明(摄像头base_cam、机器人base_link) * 已适配Ubuntu 20.04 Noetic版本的ROS系统 * catkin_make 报错多试几次,涉及到编译顺序问题。 RM_CAMP michael_b & wzx 2022.01.29 (SC复用 Copied and Edited by woshiren)