yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
MicroROS Robot📖
01. Introduction
  • 0.Unpacking and reviewing video
  • 1. ReadMe - learning route
  • 2. Introduction to lidar
  • 3. Introduction to microROS control board
  • 4. FAQ
  • 5. About charging
02. Assembly course
  • Assembly steps
03. Preparation
  • First Trial
  • 1. Write firmware
  • 2. How to install and use VM
  • 3. microROS control board configuration
  • 4. Connect to microROS agent
04. VM Remote control course
  • 1. VM keyboard remote control
  • 2. VM handle remote control
05.ROS-WiFi module configuration
  • 0. Serial port configuration WiFi instructions
  • 1.Module usage in car(ReadMe)
  • 2.Connection module proxy
  • 3.Camera picture correction(ReadMe)
  • 4.Calibrate servo PTZ(ReadMe)
06.ROS+OpenCV course
  • 1.OpenCV Getting started
  • 2.Geometric transformation
  • 3.Image processing and drawing text line segments
  • 4.Image beautification
07.Mediapipe course
  • 1. Hand detection
  • 2. Posture detection
  • 3. Overall inspection
  • 4. Face detection
  • 5. Face recognition
  • 6. Facial effects
  • 7. 3D object recognition
  • 8. Brush
  • 9. Finger control
  • 10. Gesture recognition
08. Robot basic course
  • 1. Robot information release
  • 2. Robot keyboard control
  • 3. Robot handle control
  • 4. Robot state estimation
  • 5. Linear speed calibration
  • 6. Angular velocity calibration
  • 7. Robot URDF model
09. Lidar course
  • 1. Lidar avoid
  • 2. Lidar following
  • 3. Lidar guard
  • 4. Lidarpatrol
  • 5. Gmapping mapping
  • 6. Cartographer mapping
  • 7. Navigation2 navigation avoid
  • 8. ROS Robot APP mapping
  • 9. ROS Robot APP navigation
10. Multi-machine course
  • 1. Multi-machine handle control
  • 2.Multi-machine keyboard control
  • 3. Multi-machine navigation
11.Robot visual interaction
  • 1. Color tracking
  • 2. Object recognition and tracking
  • 3.Face recognition tracking
  • 4.Autonomous driving line patrol
  • 5.QR code motion control
  • 6.Gesture control car movement
  • 7.Palm control car movement
  • 8.Gesture control car action group
  • 9.Palm control 2DOF servo PTZ
12. Linux basic course
  • 1. Introduction to Linux system
  • 2. Ubuntu file system
  • 3. Ubuntu common commands
  • 4. Ubuntu common editors
  • 5. Ubuntu software operation commands
  • 6. Virtual machine installation
  • 7. SSH remote control
  • 8. VNC remote control
  • 9. Remote file transfer
  • 10. Driver library and communication
  • 11. Static IP and hotspot mode
  • 12. Bind device ID
  • 13. Capacity expansion and resource allocation
  • 14. Update system software source
  • 15. set root password
  • 16. sudo free password
  • 17. Connect to WiFi network
  • 18. View system version
  • 19. Customized service management
  • 20. Back up system image
13. Docker course
  • 1. Overview and installation
  • 2. Common commands
  • 3. In-depth understand and publishing images
  • 4. Hardware interaction and data processing
  • 5. Enter robot docker container
18.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
15. 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
16. 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. ROS-WiFi camera module
17. 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
Download
  • Mapping_APP(iOS_Android)
  • Code and firmware
  • Hardware info and driver software
  • VM image file
  • Instruction manual
  • SystemFile_RPi
  • SystemFile_JetsonNANO
  • 3D_Model_File
  • ROS2_Basic_VM
Download ZIP

Welcome to MicroROS Robot repository

7. 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
Lidar avoid

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

Copyright © 2017-2026 Yahboom. All Rights Reserved.

EN/中文