yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
MicroROS Robot Expansion Board📖
01. microROS control board development environment
  • 1. Introduction to microROS control board
  • 2. Set up ESP32-IDF development environment
  • 3. ESP32-IDF configuration tool
  • 4. Install ESP32-microros components
  • 5. Install and start microROS agent
  • 6. Flash-tool burning firmware
02. ESP32 basic course
  • 1. Turn on the LED light
  • 2. Button function
  • 3. Drive the buzzer
  • 4. Serial communication
  • 5. Battery voltage detection
  • 6. Drive PWM servo
  • 7. Drive motor
  • 8. Read motor encoder data
  • 9. PID controls car speed
  • 10. Read IMU data
  • 11. Read radar data
  • 12. Flash access data
  • 13. Partition table and memory
  • 14. Bluetooth communication
  • 15. WiFi networking
  • 16. Robot kinematics analysis
  • 17.Drive ESP32 WiFi camera
03. microros basic course
  • 1.Publish topic
  • 2. Subscribe topic
  • 3. Multi-topic subscribe and publish
  • 4. Subscribe buzzer topics
  • 5. Subscribe PWM servo topics
  • 6. Subscribe speed control topics
  • 7. Release speed topic
  • 8. Release IMU data topic
  • 9. Publish lidar data topics
  • 10. Customized transmission method
04.ROS2 basic course
  • 1. Introduction to ROS2
  • 2.ROS2 install Humble
  • 3.ROS2 development environment
  • 4.ROS2 workspace
  • 5.ROS2 function package
  • 6.ROS2 node
  • 7.ROS2 topic communication
  • 8.ROS2 service communication
  • 9.ROS2 action communication
  • 10.ROS2 custom interface message
  • 11.ROS2 parameter service case
  • 12.ROS2 meta-function package
  • 13.ROS2 distributed communication
  • 14.ROS2 DDS
  • 15.ROS2 time related API
  • 16.ROS2 common command tools
  • 17.ROS2 rviz2 use
  • 18.ROS2 rqt toolbox
  • 19.ROS2 Launch startup file configuration
  • 20.ROS2 recording and playback tool
  • 21.ROS2 URDF model
  • 22.ROS2 Gazebo simulation platform
  • 23.ROS2 TF2 coordinate transformation
05. Robot basic course
4.1 Robot information release
  • Robot information release
4.0 Preparation
  • 1. Write firmware
  • 2. How to install and use VM
  • 3. microROS control board configuration
  • 4. Connect to microROS agent
4.2 Robot keyboard control
  • Robot keyboard control
4.3 Robot handle control
  • Robot handle control
4.4 Robot state estimation
  • Robot state estimation
4.5 Line speed calibration
  • Line speed calibration
4.6 Angular velocity calibration
  • Angular velocity calibration
4.7 Robot URDF model
  • Robot URDF model
Download
  • Firmware And Code
  • VM_File
  • 3D Model File
  • ROS2_Basic_VM
Download ZIP

Welcome to MicroROS Robot Expansion Board repository

Robot URDF model

Robot URDF model

Note: The virtual machine needs to be in the same LAN as the car, and the ROS_DOMAIN_ID needs to be consistent. You can check [Must read before use] to set the IP and ROS_DOMAIN_ID on the board.

1、Program function description

The car connects to the agent, runs the program, and the URDF model will be displayed in rviz.

2、Program start

Load URDF and generate a simulation controller, terminal input,

ros2 launch yahboomcar_description display_launch.py

Open rivz to display the model and enter in the terminal,

xxxxxxxxxx
rviz2

image-20231219193556686

Change [Fixed Frame] to base_linke to display the car model.

image-20231219193707974

Then, use the mouse to adjust the viewing angle, slide the simulation controller just generated, and you can see that the tires/camera of the car are changing.

image-20231219193923867

zq_Joint:Control left front wheel

yq_Joint:Control right front wheel

yh_Joint:Control right rear wheel

zh_Joint:Control left rear wheel

jq1_Joint:Control PTZ 1

jq2_Joint:Control PTZ 2

Randomize:Randomly publish values to each joint

Center:All Joints are centered

3、Code analysis

Code location (take virtual machine as an example)

xxxxxxxxxx
/home/yahboom/yahboomcar_ws/src/yahboomcar_description/launch

display_launch.py

​x
from ament_index_python.packages import get_package_share_path

from launch import LaunchDescription
from launch.actions import DeclareLaunchArgument
from launch.substitutions import Command, LaunchConfiguration

from launch_ros.actions import Node
from launch_ros.parameter_descriptions import ParameterValue

def generate_launch_description():
    urdf_tutorial_path = get_package_share_path('yahboomcar_description')
    default_model_path = urdf_tutorial_path / 'urdf/MicroROS.urdf'

    model_arg = DeclareLaunchArgument(name='model', default_value=str(default_model_path),
                                      description='Absolute path to robot urdf file')
    robot_description = ParameterValue(Command(['xacro ', LaunchConfiguration('model')]),
                                       value_type=str)

    robot_state_publisher_node = Node(
        package='robot_state_publisher',
        executable='robot_state_publisher',
        parameters=[{'robot_description': robot_description}]
    )

    joint_state_publisher_gui_node = Node(
        package='joint_state_publisher_gui',
        executable='joint_state_publisher_gui'
    )

    
    tf_base_footprint_to_base_link = Node(
        package='tf2_ros',
        executable='static_transform_publisher',
        arguments=['0', '0', '0.05', '0.0', '0.0', '0.0', 'base_footprint', 'base_link'],
    )
    
    return LaunchDescription([
        model_arg,
        joint_state_publisher_gui_node,
        robot_state_publisher_node,
        tf_base_footprint_to_base_link
    ])
  • model_arg:Load model parameters. The loaded model is MicroROS.urdf, located at /home/yahboom/yahboomcar_ws/src/yahboomcar_description/urdf

  • joint_state_publisher_gui_node:Publish sensor_msgs/JointState message

  • robot_state_publisher_node:Robot status release

  • tf_base_footprint_to_base_link:Publish a static transformation of base_footprint to base_link

4、URDF model

URDF, the full name of Unified Robot Description Format, translated into Chinese as Unified Robot Description Format, is a robot model file described in xml format, similar to D-H parameters.

xxxxxxxxxx
<?xml version="1.0" encoding="utf-8"?>

The first line is a required item for XML and describes the version information of XML.

xxxxxxxxxx
<robot name="name="micro4.0">
</robot>

The second line describes the current robot name; all information about the current robot is contained in the [robot] tag.

4.1、component

  • link,The connecting rod can be imagined as a human arm

  • joint,The joint can be imagined as a human elbow joint

The relationship between link and joint: Two links are connected through joints. Imagine that an arm has a forearm (link) and an upper arm (link) connected through an elbow joint (joint).

4.1.1、link

1)、Introduction

In the URDF descriptive language, link is used to describe physical properties.

  • Describe the visual display, labels.

  • Describe collision properties, tags.

  • Describes physical inertia, the label is not commonly used.

Links can also describe the size, color, shape, inertial matrix, collision properties, etc. Each Link will become a coordinate system.

2)、Sample code

xxxxxxxxxx
<link
    name="base_link">
    <inertial>
      <origin
        xyz="-0.0038187037800903 -0.000532399212617988 -0.00668209865413972"
        rpy="0 0 0" />
      <mass
        value="0.222555109690442" />
      <inertia
        ixx="0.000160582675692647"
        ixy="-8.18530574494391E-07"
        ixz="-2.74575507729664E-06"
        iyy="0.000176217109527607"
        iyz="1.64721285063183E-07"
        izz="0.000302441932451338" />
    </inertial>
    <visual>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://yahboomcar_description/meshes/base_link.STL" />
      </geometry>
      <material
        name="">
        <color
          rgba="1 1 1 1" />
      </material>
    </visual>
    <collision>
      <origin
        xyz="0 0 0"
        rpy="0 0 0" />
      <geometry>
        <mesh
          filename="package://yahboomcar_description/meshes/base_link.STL" />
      </geometry>
    </collision>
  </link>

3)、Tag

introduction

  • origin:It describes the pose information; the xyz attribute describes the coordinate position in the general environment, and the rpy attribute describes its own posture.

  • mess:Describes the quality of the link.

  • inertia:The inertial reference system, due to the symmetry of the rotational inertia matrix, only requires 6 upper triangular elements ixx, ixy, ixz, iyy, iyz, izz as attributes.

  • geometry:The label describes the shape; the main function of the mesh attribute is to load the texture file, and the filename attribute is the file address of the texture path.

  • material:The label describes the material; the name attribute is required, can be empty, and can be repeated. Through rgba in the [color] tag

4.1.2、joints

1)、Introduction

Describe the relationship between two joints, motion position and speed limits, kinematic and dynamic properties. The types of joints are as follows:

  • fixed:Immobilize joints. No movement is allowed and it serves as a connection.

  • continuous:Rotating joints. Can continue to rotate, there is no limit on the rotation angle.

  • revolute:Rotating joints. Similar to continuous, there is a limit on the rotation angle.

  • prismatic:Sliding joints. Move along a certain axis, with position restrictions.

  • floating:Suspended joints. It has six degrees of freedom, 3T3R.

  • planar:Planar joints. Allows translation or rotation orthogonally to the plane.

2)、Sample code

xxxxxxxxxx
<joint
    name="zq_Joint"
    type="continuous">
    <origin
      xyz="0.0455 0.0675 -0.02125"
      rpy="0 0 0" />
    <parent
      link="base_link" />
    <child
      link="zq_Link" />
    <axis
      xyz="0 1 0" />
</joint>

In the [joint] tag, the name attribute is required, which describes the name of the joint and is unique. In the type attribute of the [joint] tag, fill in the six joint types correspondingly.

3)、Tag introduction

  • origin:The child label refers to the relative position of the rotating joint to the coordinate system where the parent is located.

  • parent,child:parent,The child tag represents two links to be connected; the parent is the reference object, and the child rotates around the praent.

  • axis:The child tag indicates which axis (xyz) the link corresponding to the child rotates around and the amount of rotation around the fixed axis.

  • limit:Subtags are mainly used to restrict child.。The lower attribute and upper attribute limit the arc range of rotation, and the effort attribute limits the force range during rotation.(Positive and negative value, unit is N ),The speed attribute limits the rotation speed in m/s.

  • mimic:Describe the relationship of this joint to existing joints.

  • safety_controller:Describes safety controller parameters. Protect the movement of robot joints.

 

Angular velocity calibration

COMPANY

  • About us
  • Team Style
  • Blog

LEARNING & EXPLORATION

  • Tutorials
  • Edge AI hardware
  • Educational robots
  • Embedded intelligent hardware

WHERE TO BUY

  • Yahboom Online Store
  • Amazon
  • Alibaba
  • AliExpress
  • Mercado

TECHNOLOGY SUPPORT

  • Email: support@yahboom.com

BE A DISTRIBUTOR

  • Email: sales@yahboom.com
QR Code
QR Code

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文