Skip to content

iml130/robomaster_core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RoboMaster Core ROS2 Package

This ROS2 package provides an interface to control the DJI RoboMaster Base via ROS2. The robomaster_core node uses the robomaster_can_controller library to communicate with the RoboMaster motion controller over the CAN Bus interface.

Table of Contents

Features

  • Communication with RoboMaster base over CAN bus.
  • Publishes odometry, IMU data, battery state, and joint states from the sensor data of the RoboMaster's motion controller.
  • Subscribes to command velocity, wheel speed, and LED color commands to control the RoboMaster base.

Installation

  1. Clone the repository:

    git clone git@gitlab.cc-asp.fraunhofer.de:iml/oe130/ROS2/robomaster/ros2/robomasterbase/robomaster_core.git
  2. Install dependencies:

    rosdep install --from-paths src --ignore-src -r -y
  3. Build the package:

    colcon build --symlink-install

Usage

  1. Source the workspace:

    source install/setup.bash
  2. Run the node:

    ros2 run robomaster_core robomaster_node

Nodes

RoboMaster Node

Node Name: robomaster

Parameters

Parameter Name Type Default Value Description
can_interface string can0 CAN interface to use for communication with the RoboMaster motion controller.
prefix string rm Prefix for frame ids. Useful when using multiple RoboMasters.
base_frame string base_footprint Name of the base frame. Used for the odom header.frame_id.
odom_frame string odom Name of the odometry frame. Used for the odom child_frame_id.
tf_wheel bool false Publish wheel transformations. Useful when no robot state publisher is used.
tf_odom bool false Publish odometry transformation.
odom_imu bool false Use IMU for orientation instead of odometry.
pushup bool false Activate to push up the command velocity for small values to get the RoboMaster moving.
cmd_vel_dji bool false Pass command velocity directly to RoboMaster's motion controller instead of calculating the command velocity to wheel speed from the node. (Parameter depending on the RoboMaster DJI App).
velocity_linear_max double -1.0 Limit for maximum linear velocity. Value <= 0.0 for no limitation.
velocity_angular_max double -1.0 Limit for maximum angular velocity. Value <= 0.0 for no limitation.
acceleration_linear_max double -1.0 Limit for maximum linear acceleration. Value <= 0.0 to deactivate acceleration limitation.
acceleration_angular_max double -1.0 Limit for maximum angular acceleration. Value <= 0.0 to deactivate acceleration limitation.
enable_timeout int 5 Timeout in seconds to disable the robot if no command is received. Zero or negative value disables the timeout.
servo1_range array [] Angle range for servo 1 [min_angle, max_angle] (RoboMaster EP servos).
servo2_range array [] Angle range for servo 2 [min_angle, max_angle] (RoboMaster EP servos).
servo3_range array [] Angle range for servo 3 [min_angle, max_angle] (RoboMaster EP servos).
cov_imu_orientation array [0.0, 0.0, 0.0] Covariance for IMU orientation (diagonal matrix order).
cov_imu_angular_velocity array [0.0, 0.0, 0.0] Covariance for IMU angular velocity (diagonal matrix order).
cov_imu_linear_acceleration array [0.0, 0.0, 0.0] Covariance for IMU linear acceleration (diagonal matrix order).
cov_odom_pose array [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Covariance for odometry pose (diagonal matrix order).
cov_odom_twist array [0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Covariance for odometry twist (diagonal matrix order).

Topics

Topic Name Type Description
/cmd_vel geometry_msgs/msg/Twist Subscribes to command velocity.
/cmd_wheel_speed sensor_msgs/msg/JointState Subscribes to command wheel speed. Needs to set all joint names and velocities e.g., names ["fr", "fl", "rl", "rr"] and velocity [0.0, 0.0, 0.0, 0.0].
/led std_msgs/msg/ColorRGBA Subscribes to LED color command.
/imu sensor_msgs/msg/Imu Publishes IMU data.
/battery sensor_msgs/msg/BatteryState Publishes battery state.
/odom nav_msgs/msg/Odometry Publishes odometry data.
/joint_states sensor_msgs/msg/JointState Publishes joint states of the RoboMaster.
/servo1 std_msgs/msg/Float64 Subscribes to control the angle for servo 1.
/servo2 std_msgs/msg/Float64 Subscribes to control the angle for servo 2.
/servo3 std_msgs/msg/Float64 Subscribes to control the angle for servo 3.

Services

Service Name Type Description
/reset_odom std_srvs/srv/Empty Resets the odometry to zero.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

About

The ROS 2 wrapper for the robomaster_can_control library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published