yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
MicroROS-Pi5📖
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. MicroROS control board parameter configuration
  • 3. Connect to MicroROS agent
  • 4. Connect to WIFI in hotspot mode
04. Quick start control course
  • 1. Self start handle control
  • 2. Close the self-starting handle control process
  • 3. Quick start keyboard control
  • 4. Map navigation and APP control
05. 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
06. ROS+OpenCV course
  • 1. Getting started with Opencv CV
  • 2. Geometric transformation
  • 3. Image processing and drawing
  • 4. Open Source CV image beautification
  • 5. QR code creation and recognition
  • 6. AR vision
  • 7. ROS+Opencv application
07. Mediapipe course
  • 1. Hand detection
  • 2. Posture detection
  • 3. Overall detection
  • 4. Face detection
  • 5. Face recognition
  • 6. Face effects
  • 7. 3D object recognition
  • 8. Brush
  • 9. Finger control
  • 10 .Gesture recognition
08. Robot visual interaction
  • 1. Monocular camera calibration
  • 2. Color tracking
  • 3. Object recognition and tracking
  • 4. Face recognition tracking
  • 5. Autonomous driving line patrol
  • 6. QR code motion control
  • 7. Gesture control of basic movement of the car
  • 8. Control the car movement with your palm
  • 9. Gesture control car action group
  • 10. Palm control of the two-dimensional gimbal servo
09. Lidar course
  • 1. Lidar avoid
  • 2. Lidar following
  • 3. Lidar guard
  • 4. Lidar patrol
  • 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. 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. Transfer files remotely
  • 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 sources
  • 15. Set root user password
  • 16. sudo free password
  • 17. Connect to WiFi network
  • 18. View system version
  • 19. Customized service management
  • 20. Back up system image
12. RPi basic setting course
  • 1. Update and upgrade operating system
  • 2. Introduction to raspi-config tool
  • 3. config.txt file description
  • 4. Network Configuration
  • 5. remote access
  • 6. Transfer files remotely
  • 7. Set display resolution and rotation
  • 8. Set screen to sleep
  • 9. Get real-time temperature of Raspberry Pi
  • 10. Play audio and video
  • 11. Using USB camera
  • 12. Using MIPI camera
13. Docker course
  • 1. Overview and installation
  • 2. Common commands
  • 3. Docker images deeply understand and publish images
  • 4. Docker hardware interaction and data processing
  • 5. Enter the robot's docker container
14. 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)
  • Source code
  • Hardware information
  • VM image file
  • RPi5 imgae file
  • Instruction Manual
  • 3D Model File
  • ROS2_Basic_VM
Download ZIP
FAQ
  • 1、1.USB camera abnormal termination

Welcome to MicroROS-Pi5 repository

当製品の日本語版マニュアル資料は、こちらからご取得ください。

7. Robot URDF model

Robot URDF model

Note: The ROS_DOMAIN_ID of the Raspberry Pi and the microROS control board need to be consistent. You can check [MicroROS Control Board Parameter Configuration] to set the microROS control board ROS_DOMAIN_ID. Check the tutorial [Connect MicroROS Agent] to determine whether the IDs are consistent.

1. Program function description

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

2. Start and connect to the agent

After successfully starting the Raspberry Pi, enter the following command to start the agent.

sh ~/start_agent_rpi5.sh

Then turn on the car switch and wait for the car to connect to the agent. The connection is successful as shown in the figure below.

 

3. Enter the car system docker

Open another terminal and enter the following command to enter docker.

xxxxxxxxxx
sh ros2_humble.sh

When the following interface appears, you have successfully entered docker. Now you can control the car through commands.

image-20240201102336231

4. Program startup

Load URDF and generate a simulation controller, terminal input.

xxxxxxxxxx
ros2 launch yahboomcar_description display_launch.py

Open the rivz display model and enter in the terminal (note that multiple terminals need to enter the same docker container. For details, see the [Enter the robot's docker container] tutorial in [Docker Development Environment])

xxxxxxxxxx
rviz2

image-20240123150820246

Click on the lower right corner to add model files,RobotModel

image-20240123151022588

Click on the added RobotModel, click on the description topic, and select /robot_description

image-20240123151755142

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

image-20240123151917696

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-20240123152028661

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

5. Code analysis

code location,

xxxxxxxxxx
/root/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

6、URDF model

URDF:The full name is Unified Robot Description Format, which is translated into Chinese as Unified Robot Description Format. It 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.

6.1. Components

  • 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).

6.1.1、link

1)、Introduction

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

  • describe the visual display,<visual>Label.

  • describe collision properties, <collision>Label.

  • describe physical inertia, <inertial>Labels are not commonly used.

Links can also describe the link size(size)\color(color)\shape(shape)\inertial matrix(inertial matrix)\collision properties(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)、label introduction

  • origin:Describes the pose information; xyzThe attribute describes the coordinate position in the environment, rpyAttributes describe their own posture.

  • mess:Describes the quality of the link.

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

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

  • material:The label describes the material; nameAttributes are required, can be empty, and can be repeated. Through the [color] tag in rgbaAttributes to describe red, green, blue, and transparency, separated by spaces.

6.1.2、joints

1)、Introduction

Describe the relationship between two joints, motion position and velocity limits, kinematic and dynamic properties.

Joint Type:

  • fixed:Movement is not allowed and acts as a connection.

  • continuous:Rotate the joint. It can be rotated continuously, and there is no limit to the rotation angle.

  • revolute:Rotate the joint. Similar to continuous, there is a limit to the rotation angle

  • prismatic:sliding joints. Move along a certain axis, there is a position limit.

  • floating:floating joints. With six degrees of freedom, 3T3R.

  • planar:Planar joints. Allows translation or rotation above the plane orthogonal.

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)、label introduction

  • origin:subtab, referring to the rotation joint in parentThe relative position of the coordinate system.

  • parent,child:The parent and child sub-labels represent two links to be connected; parent is the reference, and child rotates around the praent.

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

  • limit:The child tag is mainly to limit the child. lowerproperties and upperThe property limits the radian range of rotation, effortThe property limits the force range during rotation. (positive and negative value, the unit is cattle or N) velocityThe property limits the speed at which it turns, in meters/second or 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
Getting started with Opencv CV

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/中文