跳转至

Robomaster EP

RoboMasterEP

The RoboMaster EP is an autonomous vehicle platform equipped with a 4 axis palletizing robot arm and an encircling gripper for flexible gripping action, inspired from DJI's annual RoboMaster robotics competition. It provides Mecanum wheel omnidirectional movement, fast wireless data link system including realtime video stream, and open sdk for further development and programming.

In order to match the theme of the course, we equip the RoboMaster EP with an external computing platform (NUC), as well as additional sensors including onboard lidar and RGB-D cameras for the purposes of better perception of the environment.

An external computing platform is also prepared to communicate with EPs through RoboMaster EP SDK. This platform is dedicated to run real applications in both simulated and real environments.

group

NUC

The specification of the equipped NUC:

Model CPU RAM SSD
NUC11PAHI7 i7-1165G7 (2.8GHz, 8 Cores) 8GB 256GB

1. Sensors

The specification for the equipped sensors:

Type Model Parameters
Lidar SlamTech Rplidar A2 Scan Rate: \(10hz\)
Sample Rate: \(16Khz\)
Distance Range: \([10m, 25m]\)
Minimal Operating Range: \(0.2m\)
IMU HiPNUC Hi226 6-axis IMU/VRU Frequency: \(30hz\)
Static Roll and Pitch Errors: \(0.8°\)
Static Roll and Pitch Angles Error Bound: \(2.5°\)
Bias Error of Gyroscope: \(<10°/h\)
Heading Angle Error When Moving (in 6-axis mode): \(<10°\)
RGB & Depth Camera Intel Realsense D435i Frequency: \(30hz\)
Resolution: \(848\times480\)
FOV: \(69°\times42°\)
Odometer RoboMaster SDK Frequency: \(10hz\)

2. Accurators

Actuator Recommend Range
chassis velocity control \(0.1m/s\leq\|v_x\|\leq0.5m/s\)
\(0.1m/s\leq\|v_y\|\leq0.5m/s\)
\(0.01rad/s\leq\|v_{th}\|\leq0.5rad/s\)
chassis position control \(\|x\| \geq 0.1m\)
\(\|y\| \geq 0.1m\)
\(\|theta\| \geq 0.1rad\)
arm end position control while \(0.09\leq x \leq 0.18\), should keep \(y\ge 0.08\)
while \(x>0.18\), should keep \(y\ge -0.02\)
gripper control \(x=1\) close gripper
\(x=0\) open gripper

3. Environment

challenge-field

The real environment are shown as above, along with the reference systems of the world and the EP.

The relative position of initial position of EP in the world reference is \((4.2, 0, 3.5)\).

4. ROS Interfaces

Interation with (simulated) EP is done by ROS topics.

A complete list of subscribed/published rostopics are listed (rostopic list -v):

Published topics:
 * /rosout_agg [rosgraph_msgs/Log] 1 publisher
 * /rosout [rosgraph_msgs/Log] 7 publishers
 * /image_view_rgb/parameter_descriptions [dynamic_reconfigure/ConfigDescription] 1 publisher
 * /image_view_depth/parameter_updates [dynamic_reconfigure/Config] 1 publisher
 * /image_view_rgb/parameter_updates [dynamic_reconfigure/Config] 1 publisher
 * /image_view_depth/output [sensor_msgs/Image] 1 publisher
 * /image_view_rgb/output [sensor_msgs/Image] 1 publisher
 * /camera/color/image_raw [sensor_msgs/Image] 1 publisher
 * /camera/color/camera_info [sensor_msgs/CameraInfo] 1 publisher
 * /camera/aligned_depth_to_color/image_raw [sensor_msgs/Image] 1 publisher
 * /camera/aligned_depth_to_color/camera_info [sensor_msgs/CameraInfo] 1 publisher
 * /pointgoal_with_gps_compass [ros_x_habitat/PointGoalWithGPSCompass] 1 publisher
 * /gps [ros_x_habitat/PointGoalWithGPSCompass] 1 publisher
 * /imu/data_raw [sensor_msgs/Imu] 1 publisher
 * /tf [tf2_msgs/TFMessage] 1 publisher
 * /rplidar/scan [sensor_msgs/LaserScan] 1 publisher
 * /ep/odom [nav_msgs/Odometry] 1 publisher
 * /gripper_state [geometry_msgs/Point] 1 publisher

Subscribed topics:
 * /rosout [rosgraph_msgs/Log] 1 subscriber
 * /cmd_vel [geometry_msgs/Twist] 1 subscriber
 * /arm_gripper [geometry_msgs/Point] 1 subscriber
 * /arm_position [geometry_msgs/Pose] 1 subscriber
 * /cmd_position [geometry_msgs/Twist] 1 subscriber

Additional topics are used for debugging only:

Published topics:
 * /image_view_depth/parameter_descriptions [dynamic_reconfigure/ConfigDescription] 1 publisher
 * /image_view_third/parameter_descriptions [dynamic_reconfigure/ConfigDescription] 1 publisher
 * /image_view_third/parameter_updates [dynamic_reconfigure/Config] 1 publisher
 * /image_view_third/output [sensor_msgs/Image] 1 publisher
 * /third_rgb [sensor_msgs/Image] 1 publisher
 * /pose/cube_1 [geometry_msgs/Pose] 1 publisher
 * /pose/cube_2 [geometry_msgs/Pose] 1 publisher
 * /pose/cube_3 [geometry_msgs/Pose] 1 publisher
 * /pose/cube_4 [geometry_msgs/Pose] 1 publisher
 * /pose/cube_5 [geometry_msgs/Pose] 1 publisher
 * /position/target_1 [geometry_msgs/Point] 1 publisher
 * /position/target_2 [geometry_msgs/Point] 1 publisher
 * /position/target_3 [geometry_msgs/Point] 1 publisher
 * /pose/ep_world [geometry_msgs/Pose] 1 publisher
 * /judgement/exchange_markers [std_msgs/String] 1 publisher
 * /judgement/markers_time [std_msgs/String] 1 publisher

Subscribed topics:
 * /camera/aligned_depth_to_color/image_raw [sensor_msgs/Image] 1 subscriber
 * /camera/color/image_raw [sensor_msgs/Image] 1 subscriber
 * /third_rgb [sensor_msgs/Image] 1 subscriber
 * /pointgoal_with_gps_compass [ros_x_habitat/PointGoalWithGPSCompass] 1 subscriber
 * /gps/goal [move_base_msgs/MoveBaseActionGoal] 1 subscriber -->

4.1 Sensor Topics

Name Type Description
/ep/odom nav_msgs/Odometry Odometer data, including robot pose and speed information, are obtained by DJI master control.
/rplidar/scan sensor_msgs/LaserScan The two-dimensional lidar scanning data, including scene scanning information, is acquired by lidar because the occlusion range of the robot body includes 270° in front of the robot.
/imu/data_raw sensor_msgs/LaserScan IMU sensor data, including rotation, velocity, and acceleration information, are collected by the IMU.
/camera/color/camera_info sensor_msgs/CameraInfo RGB color image camera intrinsic parameter information.
/camera/color/image_raw sensor_msgs/Image RGB color image data, acquired by Realsense.
/camera/aligned_depth_to_color/camera_info sensor_msgs/CameraInfo Depth camera information.
/camera/aligned_depth_to_color/image_raw sensor_msgs/Image Depth image data, acquired by Realsense and aligned to RGB color images.

4.2 Accurator Topics

Name Type Description
/cmd_vel geometry_msgs/Twist Velocity command for the EP chassis.
Recommended ranges:
\(0.1m/s\leq\|v_x\|\leq0.35m/s\)
\(0.1m/s\leq\|v_y\|\leq0.35m/s\)
\(0.1rad/s\leq\|v_{th}\|\leq0.5rad/s\)
/cmd_position geometry_msgs/Twist Position command for the EP chassis.
Recommended ranges:
\(0.1m\leq\|x\|\)
\(0.1m\leq\|y\|\)
\(0.1rad\leq\|theta\|\)
/arm_position geometry_msgs/Pose Position control command for the Robotic arm.
Available ranges:
\(0.09\leq x \leq 0.18\): \(y\ge 0.08\)
\(x>0.18\): \(y\ge -0.02\)
/arm_gripper geometry_msgs/Point The commands for gripper.
Close: \(x=1\)
Open: \(x=0\)

Examples:

# Move EP forward for 0.1m
rostopic pub -1 /cmd_position geometry_msgs/Twist \
"linear:
  x: 0.1
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0"
# Move the end of the robotic arm to x=0.09, y=0.1
rostopic pub -1 /arm_position geometry_msgs/Pose \
"position:
  x: 0.09
  y: 0.1
  z: 0.0
orientation:
  x: 0.0
  y: 0.0
  z: 0.0
  w: 0.0"
# the command issued now is tp close the gripper
rostopic pub -1 /arm_gripper geometry_msgs/Point \
"x: 1.0
y: 0.0
z: 0.0" 

4.3 Other Topics

Name Type Description
/pose/cube_N geometry_msgs/Pose The position of the ores.
The mineral ore numbered with N start from 1 to 5, e.g. /pose/cube_1
/position/target_N geometry_msgs/Point The position of the exchange stations.
The Exchange Station numbered with N, ordering from left to right as 1/2/3.
For example, /pose/target_1 corresponds to the place information of the leftmost Exchange Station:
/judgement/exchange_markers std_msgs/String The marker digits of the exchange stations in the format of data: "3, 5, 2"
For debug only.
/judgement/markers_time std_msgs/String The time of placing the mineral ore in the right exchange station, in the format of data: "0, None, 102.366459608078".
Defined as:
nan: waiting for the client
0: client EP robot has moved but the ore is not placed in exchange station
[float]: elapsed time of the ore get placed
None: hit the exchange station, or the ores are not put in the right exchange station.
For debug only.