yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
ROSMASTER X3 Plus📖
1.Preparation and First Trial
  • 1.1 Wiring Introduction
  • 1.2 Precautions for battery
  • 1.3 First Trial
  • 1.4 Precautions for DIY Robotic Arm
2. Assembly steps
  • Installation Video
3.Remote control course
  • 3.1 APP remote control
  • 3.2 Model aircraft remote control
  • 3.3 Handle remote control
4.Hardware course
  • 4.1 About expansion board_V3.0
  • 4.1 About expansion board_V1.0
  • 4.2 STM32 Development
  • 4.3 Button to control the buzzer
  • 4.4 FreeRTOS application
  • 4.5 Serial communication
  • 4.6 SBUS model aircraft remote control
  • 4.7 CAN bus communication
  • 4.8 RGB colorful light bar
  • 4.9 Timer interrupt to control
  • 4.10 Control serial port servos
  • 4.11 Nine-axis attitude sensor
  • 4.12 Control motor
  • 4.13 Timer captures the encoder data
  • 4.14 Kinematic Analysis
  • 4.15 PID control robot movement
5.Basic course
  • 5.1 Update the firmware
  • 5.2 Turn off the self-starting process
  • 5.3 Install the Rosmaster driver
  • 5.4 Buzzer whistle
  • 5.5 Control PWM servo
  • 5.6 RGB colorful light bar
  • 5.7 Control motor
  • 5.8 Control robot movement
  • 5.9 Control Serial Servo
6.Linux operating system
  • 6.1 Virtual machine installation
  • 6.2 Linux basics
  • 6.3 Remote control
  • 6.4 Multi-machine communication
  • 6.5 Static IP and hotspot mode
  • 6.6 Bind the device ID
  • 6.7 Web page real-time monitor
  • 6.8 Expansion tutorial
  • 6.9.1 Jetson Nano write sytem
  • 6.9.2 Jetson Xavier NX write system
  • 6.9.3 Jetson TX2 NX write system
  • 6.9.4 Raspberry Pi write system
7.Docker-Just for pi5
  • 7.1 Docker overview and docker installation
  • 7.2 Common commands for docker image containers
  • 7.3 Docker images deeply understand and publish images
  • 7.4 Docker hardware interaction and data processing
  • 7.5 Enter the bot's docker container
  • 7.6 Robot development environment construction in Docker
  • 7.7 How customers can update docker images in the future
8.ROS basic course
  • 8.1 ROS introduction
  • 8.2 ROS installation
  • 8.3 ROS common command tools
  • 8.4 ROS workspace
  • 8.5 ROS function package
  • 8.6 ROS node
  • 8.7 ROS topic publisher
  • 8.8 ROS topic subscribers
  • 8.9 ROS service client
  • 8.10 ROS service server
  • 8.11 ROS action client
  • 8.12 ROS action server
  • 8.13 ROS custom message reception
  • 8.14 ROS-launch file
  • 8.15 ROS-TF transformation
  • 8.16 ROS parameter service
  • 8.17 ROS-rviz use
  • 8.18 ROS-rqt tool usage
  • 8.19 Topic message recording and playback
  • 8.20 urdf model introduction
  • 8.21 gazebo introduction
  • 8.22 ROS distributed communication
9.OpenCV courses
  • 9.1 Getting started with Open Source CV
  • 9.2 Geometric transformation
  • 9.3 Image processing and draw
  • 9.4 Image beautification
  • 9.5 Opencv application
  • 9.6 AR vision
  • 9.7 AR QR code
  • 9.8 ROS+Opencv foundation
  • 9.9 ROS+Opencv application
  • 9.10 Data transformation
  • 9.11 MediaPipe development
10.Robot control course
  • 10.1 PID algorithm theory
  • 10.2 Robot PID debugging
  • 10.3 Robot information release
  • 10.4 Robot keyboard control
  • 10.5 Robot handle control
  • 10.6 Robot state estimation
  • 10.7 Robot calibration
  • 10.8 Robot URDF model
11.Depth camera course
  • 11.1 How to use the Astra camera
  • 11.2 Astra camera calibration
  • 11.3 Astra Color Tracking
  • 11.4 Astra Object Tracking
  • 11.5 Visual tracking autopilot
  • 11.6 Pure visual 2D mapping
  • 11.7 RTAB-Map 3D mapping
  • 11.8 ORB_SLAM2 basics
  • 11.9 ORB_SLAM2_Octomap
12.Lidar course
  • 12.1 Lidar basic-SLAM
  • 12.1 Lidar basic-EAI
  • 12.2 Lidar avoiding
  • 12.3 Lidar guard
  • 12.4 Lidar follow
  • 12.5 Patrol game
  • 12.6 gmapping mapping algoritm
  • 12.7 hector mapping algorithm
  • 12.8 karto mapping algorithm
  • 12.9 cartographer mapping
  • 12.10 rrt_exploration mapping
  • 12.11 AMCL
  • 12.12 Navigation and avoiding
  • 12.13 APP mapping and navigation
13.Multi-robot control course
  • 13.1 Multi-machine handle control
  • 13.2 Multi-machine navigation
  • 13.3 Multi-machine formation
  • 13.4 Multi-machine surround
14.Deep learning courses
  • 14.1 KNN recognizes handwritten
  • 14.2 Basic use of TensorFlow
  • 14.3 Basic use of PyTorch(jetson)
  • 14.4 yolov5 model training(jetson)
  • 14.5 yolov5+tensorrt acceleration
  • 14.6 yolov4-tiny
15.Voice control courses
  • 0. How to use old voice module in new image
  • 15.1 Introduction of voice control-new
  • 15.2 Voice control module port-new
  • 15.3.Introduction of voice module-old
  • 15.4.Voice control module port binding-old
  • 15.5 Voice control car movement
  • 15.6 Voice control Autopilot
  • 15.7 Voice control color recogzition
  • 15.8 Voice control color tracking
  • 15.9 Voice control multi-point nagavation
16.Robotic arm control course
  • 16.1 MoveIt configuration
  • 16.2 MoveIt control the real machine
  • 16.3 MoveIt moves randomly
  • 16.4 MoveIt kinematics design
  • 16.5 MoveIt cartesian path
  • 16.6 MoveIt avoiding
  • 16.7 MoveIt scene design
  • 16.8 MoveIt trajectory planning
  • 16.9 Mediapipe palm control car
  • 16.10 Mediapipe gesture control robotic arm
  • 16.11 Mediapipe gesture control car
  • 16.12 Mediapipe arm attitude control robotic arm
  • 16.13 Mediapipe recognizes and tracks palm control robotic arm
  • 16.14 Recognizes color block and handling
  • 16.15 Autopilot to clear obstacles
17.Voice control robotic arm course
  • 17.1 Voice control robotic arm movement
  • 17.2 Voice control robotic arm learning
  • 17.3 Voice control color block transport
  • 17.4 Voice control robotic arm grip objects
  • 17.5 Voice control robotic arm garbage sorting
18.Model training Autopilot
  • 18.0 ReadMe
  • 18.1 yolov5 to train traffic signs
  • 18.2 TensorRt acceleration identification mark
  • 18.3 Road sign indication function description
  • 18.4 Collect data
  • 18.5 Training model
  • 18.6 Model transformation and application
  • 18.7 AI Autopilot
19.For Orin-Remote control course
1. APP control
  • 1. APP control
  • 2. Model aircraft control
  • 3. Handle control
2. Model aircraft control
3. Handle control
20.Orin-Hardware course
  • 1. About expansion board_V1.0
  • 1. About expansion board_V2.0
  • 2. STM32 Development environment
  • 3. Button control
  • 4. FreeRTOS application
  • 5. Serial communication
  • 6. SBUS model aircraft remote control
  • 7. CAN bus communication
  • 8. RGB colorful light bar
  • 9. Timer interrupt to control PWM servo
  • 10. Control serial port servos
  • 11. Nine-axis attitude sensor to obtain data
  • 12. Control motor
  • 13. Timer captures the encoder data
  • 14. Robot kinematics analysis theory
  • 15. PID control robot movement
21.Orin-Basic course
  • 1. Update the firmware
  • 2. Turn off the self-starting process at startup
  • 3. Install the Rosmaster driver library
  • 4. Buzzer whistle
  • 5. Control PWM servo
  • 6. RGB colorful light bar special effects display
  • 7. Control motor
  • 8. Control robot movement
  • 9. Control Serial Servo
22.Orin-Linux operating systemnew
  • 1. Virtual machine installation and use
  • 2. Linux basics
  • 3. Remote control
  • 4. Multi-machine communication configuration
  • 5. Static IP and hotspot mode
  • 6. Bind the device ID
  • 7. Web page real-time monitoring
  • 8. Expansion tutorial
  • 9.1 Jetson Nano write sytem
  • 9.2 Jetson Xavier NX write system
  • 9.3 Jetson TX2 NX-Orin series write system
  • 9.4 Raspberry Pi write system
  • 10.Jetpack old system upgraded to SUPER system
23.Orin-Dockernew
SUPER image uses ros environment in docker
  • 1、Docker overview and docker installationnew
  • 2、Common commands for docker image containersnew
  • 3、Docker images deeply understand and publish imagesnew
  • 4、Docker hardware interaction and data processingnew
  • 5、Enter the bot's docker containernew
  • 6、Robot development environment construction in Dockernew
23.Orin-ROS basic course
  • 1.ROS introduction
  • 2.Project file structure
  • 3.Common commands and tools
  • 4.Publisher
  • 5.Subscribers
  • 6.Customize topic messages and use
  • 7.Client
  • 8.Server
  • 9.Custom service messages and usage
  • 10.TF release and monitoring
24.Orin-OpenCV courses
  • 1. Getting started with Open Source CV
  • 2. Open Source CV geometric transformation
  • 3. Open Source CV image processing and drawing text line segments
  • 4. Open Source CV image beautification
  • 5. Opencv application
  • 6. AR vision
  • 7. AR QR code
  • 8. ROS+Opencv foundation
  • 9. ROS+Opencv application
  • 10. Data transformation and point cloud
  • 11. MediaPipe development
25.Orin-Robot control course
  • 1.PID algorithm theory
  • 2.Robot PID debugging
  • 3.Robot information release
  • 4.Robot keyboard control
  • 5.Robot handle control
  • 6.Robot state estimation
  • 7.Robot calibration
  • 8.Robot URDF model
26.Orin-Depth camera course
  • 01.How to use the Astra camera
  • 02.Astra camera calibration
  • 03.Astra Color Tracking
  • 04.Astra Object Tracking
  • 05.Visual tracking autopilot
  • 06.Pure visual 2D mapping and navigation
  • 07.RTAB-Map 3D mapping navigation
  • 08.ORB_SLAM2 basics
  • 09.ORB_SLAM2_Octomap
27.Orin-Lidar course
  • 1.Lidar basic-4ROS-EAI
  • 1.Lidar basic-SLAM
  • 2.Lidar avoiding
  • 3.Lidar guard
  • 4.Lidar follow
  • 5.Patrol game
  • 6.gmapping mapping algorithm
  • 7.hector mapping algorithm
  • 8.karto mapping algorithm
  • 9.cartographer mapping algorithm
  • 10.rrt_exploration mapping algorithm
  • 11.AMCL
  • 12.Navigation and avoiding
  • 13.APP mapping and navigation
28.Orin-Multi-robot control course
  • 1.Multi-machine handle control
  • 2.Multi-machine navigation
  • 3.Multi-machine formation
  • 4.Multi-machine surround
29.Orin-Deep learning courses
  • 1.KNN recognizes handwritten digits
  • 2.Basic use of TensorFlow
  • 3.Basic use of PyTorch(jetson)
  • 4.YOLOv11Model conversion(SUPER)new
  • 5.YOLOv11Dataset annotation(SUPER)new
  • 6.YOLOv11Model conversion + tensorrt acceleration(SUPER)new
  • 7.YOLOv11Object recognition(SUPER)new
30.Orin-Voice control courses
  • 0. How to use old voice module in new image
  • 1.1 Introduction of voice module-new
  • 1.2 Introduction of voice module-old
  • 2.1 Voice control module port binding-new
  • 2.2 Voice control module port binding-old
  • 3. Voice control car movement
  • 4. Voice control Autopilot
  • 5. Voice control color recognition
  • 6. Voice control color tracking
  • 7. Voice control multi-point navigation
31.Orin-Robotic arm control course
  • 1.MoveIt configuration(VM)
  • 2.MoveIt control the real machine(VM)
  • 3.MoveIt moves randomly(VM)
  • 4.MoveIt kinematics design(VM)
  • 5.MoveIt cartesian path(VM)
  • 6.MoveIt avoiding(VM)
  • 7.MoveIt scene design(VM)
  • 8.MoveIt trajectory planning(VM)
  • 9.Mediapipe palm control car
  • 10.Mediapipe gesture control robotic arm
  • 11.Mediapipe gesture control car
  • 12.Mediapipe arm attitude control robotic arm
  • 13.Mediapipe recognizes and tracks palm control robotic arm
  • 14.Recognizes color block and handling
  • 15.Autopilot to clear obstacles
32.Orin-Voice control robotic arm course
  • 1.Voice control robotic arm movement
  • 2.Voice control robotic arm learning
  • 3.Voice control color block transport
  • 4.Voice control robotic arm grip objects
  • 5.Voice control robotic arm garbage sorting
LLM tutorial
1.Development environment
  • 0. Model usage instructions
  • 1.Environments deployment
  • 2.Dialogue platform installation
2.Jetson Nano B01
  • 1.Qwen2 model
  • 2.TinyLlama model
  • 3.Phi-3 model
  • 4.Gemma model
  • 5.Orca Mini model
  • 6.StarCoder2 model
  • 7.DeepSeek-R1 model
  • 8.Expand LLaVA-Phi3
3.Jetson Orin NXNANO
  • 1.Llama3 model
  • 2.Qwen2 model
  • 3.Phi-3 model
  • 4.Gemma model
  • 5.WizardLM2 model
  • 6.Codellama model
  • 7.DeepSeek-R1 model
  • 8.Orca Mini model
  • 9.StarCoder2 model
  • 10.TinyLlama model
  • 11.Expand LLaVA
  • 12.Expand LLaVA-Phi3
4.Raspberry Pi 5B
  • 1.Meta AI Llama3 model
  • 2.Qwen2 model
  • 3.Phi-3 model
  • 4.Gemma model
  • 5.WizardLM2 model
  • 6.Meta AI Codellama model
  • 7.DeepSeek-R1 model
  • 8.Expand LLaVA
FAQ
  • Using your own Jetson board, car cannot start normally
Download
  • RemoteCtrl_APP(iOS/Android)
  • Mapping_APP(iOS_Android)
  • SystemFile_OrinNANOSUPER
  • SystemFile_OrinNXSUPER
  • SystemFile_RPi_NANO
  • Instruction Manual
  • Code
  • Autopilot Annex
  • VM software
  • Jetson_Boot_USB.tar.gz
  • Other_Annex_File
Download ZIP
FAQ
  • 1、How to connect OLED?
  • 2、Precautions for DIY Robotic Arm

Welcome to ROSMASTER X3 Plus repository

2.Project file structure

2 Project file structure

2 Project file structure 2.1 Project file structure 2.2 Workspace 2.3 package function package 2.4 Introduction to CMakeLists.txt 2.4.1 Overview 2.4.2 Format 2.4.3 Boost 2.4.4 catkin_package() 2.4.5 Include path and library path 2.4.6 Executable target 2.4.7 library files 2.4.8 target_link_libraries 2.4.9 Messages, Services and Actions 2.5 package.xml introduction

2.1 Project file structure

The file structure of ROS, not every folder is necessary, is designed according to business needs.

image-20210830115928145

2.2 Workspace

The workspace is the place to manage and organize ROS engineering project files. It is intuitively described as a warehouse, which is loaded with various ROS project projects, which is convenient for the system to organize and manage calls. In the visual GUI is a folder. The ROS code we write ourselves is usually placed in the workspace. There are four main first-level directories under it:

  • src: source space; catkin package for ROS(source code package)
  • build: compilation space; cache information and intermediate files of catkin(CMake)
  • devel: development space; generated object files(including header files, dynamic link libraries, static link libraries, executable files, etc.), environment variables
  • install: installation space

The top-level workspace(can be named arbitrarily) and the src(must be src) folder need to be created by yourself;

  • The build and devel folders are automatically created by the catkin_make command;
  • The install folder is automatically created by the catkin_make install command, and is rarely used and generally not created.

Note: Be sure to go back to the top-level workspace before compiling with catkin_make. In the same workspace, function packages with the same name are not allowed; in different workspaces, function packages with the same name are allowed.

mkdir -p ~/catkin_ws/src   # create 
cd  catkin_ws/             # enter the workspace 
catkin_make                # compile 
source devel/setup.bash    # update the workspace environment 

2.3 package function package

A package is a specific file structure and folder combination. Usually, the program code that realizes the same specific function is put into a package. Only CMakeLists.txt and package.xml are [ required ], and the rest of the paths are determined according to whether the package is required.

Create a feature pack

x
cd  ~/catkin_ws/src 
catkin_create_pkg  my_pkg  rospy  rosmsg  roscpp 

[rospy], [rosmsg], and [roscpp] are dependent libraries, which can be added according to business needs, and others can be added.

file structure

x
|--  CMakeLists.txt      # (Required) Compilation rules for the current package. It is usually necessary to add compile-time dependencies, executions, etc. to C++ code. 
| ——  package.xml        # (Required) Description of the package. Usually add some ros library support. 
| ——  include folder     # where c++ header files are stored 
| ——  config folder      # Store parameter configuration files 
| ——  launch folder      # Store launch files(.launch or .xml) 
| ——  meshes folder      # Store 3D models of robots or simulation scenes(.sda, .stl, .dae, etc.); 
| ——  urdf folder        # Store the model description of the robot(.urdf or .xacro); 
| --  rviz folder        # rviz file 
| --  src folder         # c++ source code 
| --  scripts folder     # executable scripts; such as shell scripts(.sh), Python scripts(.py); 
| ——  srv folder         # custom service 
| ——  msg folder         # custom topic 
| ——  action folder      # custom action 

2.4 Introduction to CMakeLists.txt

2.4.1 Overview

CMakeLists.txtIt was originally the rule file of the Cmake compilation system, while the Catkin compilation system basically followed the CMake compilation style, but added some macro definitions for the ROS project. So in writing, catkin's CMakeLists.txtBasically the same as CMake.

This file directly specifies which packages the package depends on, which targets to compile and generate, how to compile and so on. so CMakeLists.txtVery important, it specifies the rules from source code to object file. The catkin compilation system will first find the files under each package when it works. CMakeLists.txt, and then follow the rules to compile the build.

2.4.2 Format

CMakeLists.txtThe basic syntax is still in accordance with CMake, and Catkin has added a small number of macros to it. The overall structure is as follows:

cmake_minimum_required() # Required CMake version 
project() # package name 
find_package() # Find other CMake/Catkin packages needed for compilation 
catkin_python_setup() # Enable Python module support 
add_message_files() # message generator 
add_service_files()       # service generator 
add_action_files()        # action generator 
generate_message() # Generate msg/srv/action interfaces in different languages 
catkin_package() # Generate the cmake configuration of the current package for other packages that depend on this package to call 
add_library() # Used to specify the library generated by compilation. The default catkin compilation produces shared libraries. 
add_executable() # Generate executable binary 
add_dependencies() # Defines that the target file depends on other target files, ensuring that other targets have been built 
target_link_libraries() # Specify the libraries the executable is linked against. This is used after add_executable(). 
catkin_add_gtest() # test build 
install() # install to this machine 

2.4.3 Boost

If using C++ and Boost, you need to call on Boost find_package(), and specify which aspects of Boost are used as components. For example, if you wanted to use Boost threads, you would say:

xxxxxxxxxx
find_package(Boost  REQUIRED  COMPONENTS  thread) 

2.4.4 catkin_package()

catkin_package() is a catkin CMake macro provided by This is required to specify catkin-specific information for the build system, which in turn is used to generate pkg-config and CMake files.

currently using add_library()or add_executable()any targets are declared *before * must be called This function The function has 5** optional** parameters:

  • INCLUDE_DIRS- export include paths for packages
  • LIBRARIES- Libraries exported from the project
  • CATKIN_DEPENDS- Others that the project depends on catkinproject
  • DEPENDS- non-dependencies on which the project depends catkinCMake project. For a better understanding, see this explanation .
  • CFG_EXTRAS- other configuration options

Full macro documentation can be found here .

for example:

xxxxxxxxxx
catkin_package(
   INCLUDE_DIRS include 
   LIBRARIES ${PROJECT_NAME} 
   CATKIN_DEPENDS roscpp nodelet 
   DEPENDS open resume) 

This means that the folder "include" in the package folder is where the header files are exported. The CMake environment variable ${PROJECT_NAME} is evaluated before being passed to project()function anything, in this case it would be "robot_brain". "roscpp" + "nodelet" are the packages that need to exist to build/run this package, and "eigen" + "opencv" are the system dependencies that need to exist to build/run this package.

2.4.5 Include path and library path

Before specifying a target, you need to specify where resources can be found for said target, especially header files and libraries:

xxxxxxxxxx
- include path - where to find header files for code(most commonly C/C++) 
- Libraries Path - Which libraries are located in this executable target build object? 
- include_directories(<dir1>,<dir2>,...,<dirN>) 
- link_directories(<dir1>,<dir2>,...,<dirN>) 
  • include_directories()

The argument to include_directories should be the *_INCLUDE_DIRS variable generated by the find_package call and any other directories that need to be included. If you're using catkin and Boost, your include_directories() call should look like this:

xxxxxxxxxx
include_directories(include ${Boost_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS}) 

The first parameter "include" indicates that the package contains include /Directories are also part of the path.

  • link_directories()

example:

xxxxxxxxxx
link_directories(~/my_libs) 

CMake link_directories()Functions can be used to add additional library paths, but this is not recommended. All catkin and CMake packages are automatically added with link information when they are found_packaged, just link to target_link_libraries()in the library.

Please refer to this cmake thread to see a detailed example of usage target_link_libraries()exist link_directories().

2.4.6 Executable target

To specify the executable target that must be built, we must use add_executable()CMake functions.

xxxxxxxxxx
add_executable(myProgram  src/main.cpp  src/some_file.cpp  src/another_file.cpp)

This will build a target executable named myProgram which is built from 3 source files: src/main.cpp, src/some_file.cpp and src/another_file.cpp.

2.4.7 library files

Should add_library()The function of CMake is to specify the library to build. By default, catkin builds shared libraries.

xxxxxxxxxx
add_library(${PROJECT_NAME} ${${PROJECT_NAME} _SRCS}) 

2.4.8 target_link_libraries

use target_link_libraries()function to specify the library the executable target is linked against. This is usually in add_executable()done after the call. If ros is not found, add $ {catkin_LIBRARIES}.

syntax:

xxxxxxxxxx
target_link_libraries(<executableTargetName>, <lib1>, <lib2>, ...  <libN>) 

example:

xxxxxxxxxx
add_executable(foo src/foo.cpp) 
add_library(moo src/moo.cpp) 
target_link_libraries(foo moo)   --  This  links  foo  against  libmoo.so 

Note that in most use cases it is not necessary to use link_directories(), because the information passes through find_package()Imported automatically.

2.4.9 Messages, Services and Actions

Message(.msg), service(.srv) and action(.action) files require a special preprocessor build step before ROS packages can be built and used. The point of these macros is to generate programming language specific files so that messages, services and actions in the programming language of their choice can be utilized. The build system will generate bindings using all available generators such as gencpp, genpy, genlisp, etc.

Three macros are provided to handle messages, services and actions respectively:

  • add_message_files
  • add_service_files
  • add_action_files

These macros must be followed by calling the resulting macro:

xxxxxxxxxx
 generate_messages() 

If you have never touched CMake syntax, please read "CMake Practice": https://github.com/Akagi201/learning-cmake/blob/master/docs/cmake-practice.pdf . Mastering CMake syntax is helpful for understanding ROS projects.

2.5 package.xml introduction

  • Overview

The package manifest is an XML file named package.xmlmust include the root folder with any compatibility package. package.xmlIt is also a necessary file for catkin package. It is the description file of this package. In earlier ROS versions(rosbuild compilation system), this file is called manifest.xml, used to describe the basic information of pacakge. If you see some ROS projects online that contain manifest.xml, then it is probably a project before the hydro version. pacakge.xmlContains information such as the name of the package, version number, content description, maintainer, software license, compilation and construction tools, compilation dependencies, and runtime dependencies.

package.xmlThe file build_depend must contain message_generation and run_depend must contain message_runtime.

  • Format
xxxxxxxxxx
<pacakge>                # root tag file 
<name>                   # package name 
<version>                # version number 
<description>            # content description 
<maintainer>             # maintainer 
<license>                # software license 
<buildtool_depend>       # Compile the build tool, usually catkin 
<depend>                 # Specify dependencies as dependencies required for compilation, export, and operation, the most commonly used 
<build_depend>           # build dependencies 
<build_export_depend>    # export dependencies 
<exec_depend>            # run dependencies 
<test_depend>            # test case dependencies 
<doc_depend>             # Documentation dependencies 
  • dependencies

A package manifest with minimal labels does not specify any dependencies on other packages. A package can have six kinds of dependencies:

Build dependencies <build_depend> specifies the packages required to build this package. This is the case when any of the files in these packages are required at build time. This can include header files at compile time, library files linked to these packages or any other resources needed at build time(especially when these packages are find_package() in CMake). In a cross-compilation scenario, build dependencies target the target architecture.

Build Export Dependencies <build_export_depend> specifies the packages required to build the library against this package. This is the case when you include this header in a common header file in this package(especially when declared as(CATKIN_DEPENDS) in catkin_package() in CMake).

Execution dependencies <exec_depend> specifies the packages required to run code in this package. This is the case when you depend on shared libraries in this package(especially when declared as(CATKIN_DEPENDS) in catkin_package() in CMake).

Test dependencies <test_depend> specifies additional dependencies for unit tests only. They should not duplicate any dependencies already mentioned as build or run dependencies.

The build tool dependency <buildtool_depend> specifies the build system tools that this package needs to build itself. Usually the only build tool is catkin. In a cross-compilation scenario, the build tool dependencies are used to perform compilation on the architecture.

Documentation tool dependencies <doc_depend> specifies the documentation tools that this package requires to generate documentation.

  • Additional tags

<url>- URL for information about the package, usually a wiki page on ros.org.

<author>- the author of the package

  <url type="website"> http://www.ros.org/wiki/turtlesim</url> 
  <author>Yahboom</author> 
ROS introduction
Common commands and tools

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