yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
ROSMASTER R2📖
1.Preparation and First Trial
  • 1.1 Accessories introduction
  • 1.2 Precautions for battery
  • 1.3 First Trial
2.Assembly steps
  • Installaction Video
3.ROS1-Remote control course
  • 3.1 APP remote control
  • 3.2 Model aircraft remote control
  • 3.3 Handle remote control
4.ROS1-Hardware course
  • 4.1 About expansion board_V3.0
  • 4.1 About expansion board_V1.0
  • 4.2 STM32 Development environment
  • 4.3 Button to control the buzzer to whistle
  • 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 PWM servo
  • 4.10 Control serial port servos
  • 4.11 Nine-axis attitude sensor to obtain data
  • 4.12 Control motor
  • 4.13 Timer captures the encoder data
  • 4.14.1 Kinematic Analysis of Mecanum Wheel
  • 4.14.2 Kinematics Analysis of Ackermann Car
  • 4.15 PID control robot movement
5.ROS1-Basic course
  • 5.1 Update the firmware
  • 5.2 Turn off the self-starting process at startup
  • 5.3 Install the Rosmaster driver library
  • 5.4 Buzzer whistle
  • 5.5 Control PWM servo
  • 5.6 RGB colorful light bar special effects display
  • 5.7 Control motor
  • 5.8 Control robot movement
  • 5.9 Control Serial Servo
6.ROS1-Linux operating system
  • 6.1 Virtual machine installation and use
  • 6.2 Linux basics
  • 6.3 Remote control
  • 6.4 Multi-machine communication configuration
  • 6.5 Static IP and hotspot mode
  • 6.6 Bind the device ID
  • 6.7 Web page real-time monitoring
  • 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.ROS1-Docker-pi5
  • 1、Docker overview and docker installation
  • 2、Common commands for docker image containers
  • 3、Docker images deeply understand and publish images
  • 4、Docker hardware interaction and data processing
  • 5、Enter the bot's docker container
  • 6、Robot development environment construction in Docker
  • 7、How customers can update docker images in the future
8.ROS1-ROS basic course
  • 1.ROS introduction
  • 2.ROS installation
  • 3.ROS common command tools
  • 4.ROS workspace
  • 5.ROS function package
  • 6.ROS node
  • 7.ROS topic publisher
  • 8.ROS topic subscribers
  • 9.ROS service client
  • 10.ROS service server
  • 11.ROS action client
  • 12.ROS action server
  • 13.ROS custom message reception
  • 14.ROS-launch file
  • 15.ROS-TF transformation
  • 16.ROS parameter service
  • 17.ROS-rviz use
  • 18.ROS-rqt tool usage
  • 19.Topic message recording and playback
  • 20.urdf model introduction
  • 21.gazebo introduction
  • 22.ROS distributed communication
9.ROS1-OpenCV courses
  • 9.1 Getting started with Open Source CV
  • 9.2 Geometric transformation
  • 9.3 Image processing and drawing text line segments
  • 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 and point cloud
  • 9.11 MediaPipe development
10.ROS1-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.ROS1-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 and navigation
  • 11.7 RTAB-Map 3D mapping navigation
  • 11.8 ORB_SLAM2 basics
  • 11.9 ORB_SLAM2_Octomap
12.ROS1-Lidar course
  • 11.1 Lidar basic-SLAM
  • 11.1 Lidar basic-EAI
  • 11.2 Lidar avoiding
  • 11.3 Lidar guard
  • 11.4 Lidar follow
  • 11.5 Patrol game
  • 11.6 gmapping mapping
  • 11.7 hector mapping
  • 11.8 karto mapping
  • 11.9 cartographer mapping
  • 11.10 rrt_exploration mappin
  • 11.11 AMCL
  • 11.12 Navigation and avoiding
  • 11.13 APP mapping and navigation
  • 11.14 TEB path planning algorithm
13.ROS1-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.ROS1-Deep learning courses
  • 14.1 KNN recognizes handwritten digits
  • 14.2 Basic use of TensorFlow
  • 14.3 Basic use of PyTorch(jetson)
  • 14.4 yolov5 model training(jetson)
  • 14.5 yolov5+tensorrt acceleration(jetson)
  • 14.6 yolov4-tiny
15.ROS1-Voice control courses
  • 15.0 How to use old voice module in new image
  • 15.1 Introduction of voice control module-NEW
  • 15.2 Voice control module port binding-NEW
  • 15.1 Introduction of voice control module-Old
  • 15.2 Voice control module port binding-Old
  • 15.3 Voice control car movement
  • 15.4 Voice control Autopilot
  • 14.5 Voice control color recognition
  • 15.6 Voice control color tracking
  • 15.7 Voice control multi-point navigation
16.ROS1-Model training Autopilot
  • 16.0 ReadMe
  • 16.1 yolov5 to train traffic signs
  • 16.2 TensorRt acceleration identification mark
  • 16.3 Road sign indication function description
  • 16.4 Collect data
  • 16.5 Training model
  • 16.6 Model transformation and application
  • 16.7 AI Autopilot
17. ROS2-Remote control course
  • 1. APP remote control
  • 2. Model aircraft remote control
  • 3. Handle remote control
18.ROS2-Hardware course
  • 1. Expansion board introduction_V3.0
  • 1. Expansion board introduction_V1.0
  • 2. STM32 development environment build
  • 3. Key control buzzer sounding
  • 4. FreeRTOS applications
  • 5. Serial communication
  • 6. SBUS model airplane remote control
  • 7. CAN bus communication
  • 8. RGB colorful light bar
  • 9. Timer interrupt control PWM servos
  • 10. Control serial servos
  • 11. Nine-axis attitude sensor acquires data
  • 12. Control motor forward and reverse
  • 13. Timer Capture Encoder Data
  • 14. Theory of Robot Kinematics Analysis
  • 14.1.Mecanum wheel
  • 14.2.Ackerman
  • 14.3.4WD
  • 15. PID control of robot motion
19. ROS2-Basic course
  • 1. Update the firmware of the expansion board
  • 2.Close the large self-starting program at boot
  • 3. Install Rosmaster driver library
  • 4. Buzzer sounding
  • 5. Control PWM servo
  • 6. RGB colorful light bar special effects show
  • 7. Control motor forward and reverse
  • 8. Controlling robot motion
  • 9. Control serial servos
20. ROS2-Linux operating systemnew
  • 01. Virtual Machines
  • 02. Linux Basics
  • 03. Remote control
  • 04. Multi-computer communication configuration
  • 05. Static ip and hotspot mode
  • 06. Bind device ID
  • 07.Webpage real-time monitoring
  • 08. Expansion Tutorial
  • 09-1.Jetson Nano write system file
  • 09-2. Raspberry Pi write system file
  • 09-3.Orin write system
  • 10.Jetpack old system upgraded to SUPER systemnew
21.ROS2 -Docker(Nano Pi)
  • 1. docker overview and docker installation
  • 2. docker image container common command
  • 3. docker image in-depth understanding and publishing images
  • 4. docker hardware interaction and data processing
  • 5. Enter the docker container of the robot
  • 6. docker in the robot development environment build
  • 7. Customer's method of updating docker images in the future
22.ROS2- ROS2 Basic Tutorial
  • 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
23. ROS2-Robot control course
  • 1. PID algorithm theory
  • 2. Robot information release
  • 3. Robot control
  • 4. Robot state estimation
  • 5. Robot calibration
  • 6. URDF model
24. ROS2-Lidar course
  • 1-1. Introduction and use of SLAM lidar
  • 1-2. Introduction and use of 4ROS lidar
  • 2. Lidar obstacle avoidance fun gameplay
  • 3. Lidar tracking fun gameplay
  • 4. Patrol function play
  • 5. gmapping map building algorithm
  • 6. cartographer building algorithm
  • 7. Navigation and obstacle avoidance
  • 8. Rosmaster_R2 using the app to build maps
  • 9. Rosmaster_R2 navigating with the app
25. ROS2-OpenCV courses
  • 1. opencv basic course
  • 2. ROS+opencv application
  • 3. QR code creation and recognition
  • 4. AR Vision
  • 5. mediapipe fun gameplay
  • 6. Patrol line autopilot
26. ROS2-Depth camera courses
  • 1. Depth camera use
  • 2. Camera calibration
  • 3. Color tracking
  • 4. KCF object tracking
  • 5. ORB_SLAM2 Basics
  • 6. ORB_SLAM2 PCL mapping
  • 7. ORB_SLAM2 Octomap mapping
  • 8. RTAB-Map 3D mapping navigation
27.ROS2- Voice control courses
  • 0. How to use old voice module in new image
  • 1.1 Introduction to the module-New
  • 1.2 Voice Control Module Port Binding-New
  • 1.3 Introduction to the module-Old
  • 2. Voice control car movement
  • 3. Voice control autopilot
  • 4. Voice control color recognition
  • 5. Voice control color tracking
  • 6. Voice control multi-point navigation
28.Deep learning courses(SUPER)
  • 1.KNN recognizes handwritten digitsnew
  • 2.Basic use of TensorFlownew
  • 3.Basic use of PyTorch(jetson)new
  • 4.YOLOv11Model conversion(SUPER)new
  • 5.YOLOv11Dataset annotation(SUPER)new
  • 6.YOLOv11Model conversion + tensorrt acceleration(SUPER)new
  • 7.YOLOv11Object recognition(SUPER)new
29. ROS2-Multi-robot control
  • 1. Multi-robot control
  • 2. Multi-robot navigation
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
  • 1.Using your own Jetson board, car cannot start normally
Download
  • RemoteCtrl_APP(iOS/Android)
  • Mapping_APP(iOS_Android)
  • Instruction Manual
  • SystemFile_ROS1
  • SystemFile_ROS2
  • SystemFile_ROS2_OrinNANOSUPER
  • SystemFile_ROS2_OrinNXSUPER
  • VM software
  • Code
  • Jetson_Boot_USB.tar.gz
  • Autopilot Annex
  • Other_Annex_File
  • LLM_SystemFile
  • ROS2_Basic_VM
Download ZIP

Welcome to ROSMASTER R2 repository

5. Enter the docker container of the robot

 

5. Enter the docker container of the robot

 

5. Enter the docker container of the robot5.1, related concepts5.2. How to query the docker image version used by the robot5.3 Binding peripherals5.4. Checking Peripheral Connections5.5. Editing Scripts5.6. Execution of scripts5.7. Switching Models, Lidar and Cameras5.8 Multi-terminal access to the same docker container5.8 How to open a container that is already in the [Exited] closed state5.8.1. Need to use the webcam 5.8.2. Camera is not required.5.8.3 Re-entering an [Exited] shutdown container

The operating environment and hardware and software reference configuration are as follows:

  • Reference model: ROSMASTER X3
  • Robot hardware configuration: Arm series main control, Silan A1 LiDAR, AstraPro Plus depth camera.
  • Robot system: Ubuntu (version not required) + docker (version 20.10.21 and above)
  • PC virtual machine: Ubuntu (20.04) + ROS2 (Foxy)
  • Usage scenario: use on a relatively clean 2D plane

 

5.1, related concepts

  1. what is docker's host
xxxxxxxxxx
宿主机就是我们调用命令使用镜像创建容器的服务器。这里是指我们小车上的主控(jetson或树莓派等),以下提到的宿主机都是指这个。
The host is the server where we invoke the command to create the container using the image. In this case it is the host on our cart (jetson or raspberry pi, etc.), and all references to hosts below refer to this.
  1. What is GUI
xxxxxxxxxx
GUI即图形用户界面,这里主要是指:opencv显示的图像窗口、rviz界面、rqt界面等。
GUI is graphical user interface, here mainly refers to: opencv display image window, rviz interface, rqt interface and so on.
  1. What is a docker container for robots
xxxxxxxxxx
这里的机器人就是Rosmaster小车,也就是已配置好各种开发依赖环境的Rosmaster小车容器
The robot here is the Rosmaster cart, which is the Rosmaster cart container that has been configured with various development dependencies

4, in the operation of this chapter of the tutorial before, please ensure that you have mastered the following knowledge of these chapters, otherwise you may feel that learning is more strenuous. In this case, please repeatedly check the content of the following pre-knowledge, skilled mastery will feel very easy, Come on, you are the best!

image-20230519094253521

 

5.2. How to query the docker image version used by the robot

1, the version of the docker image used by the robot is also the version of the image used on the cart, which the user executes after burning the cart's system image to boot:

xxxxxxxxxx
jetson@jetson-desktop:~$ docker images
REPOSITORY                   TAG       IMAGE ID       CREATED              SIZE
yahboomtechnology/ros-foxy   3.5.4     d307ad9f2cda   About a minute ago   14.2GB
192.168.2.51:5000/ros-foxy   1.0.0     31e97028c1c0   3 days ago           14.2GB
yahboomtechnology/ros-foxy   3.5.3     31e97028c1c0   3 days ago           14.2GB

 

Will see that there are multiple docker image version, please select [yahboomtechnology/ros-foxy] name, tag the highest version, that is, the latest version of the robot image. Such as the query here on the use of [yahboomtechnology/ros-foxy: 3.5.4] version, [192.168.2.51:5000/ros-foxy] the name of the mirror do not care.

 

2, why can not just put a docker image in the cart system?

If you have read [07, Docker ------ 3, docker image in-depth understanding of the tutorials in this chapter and release images], you should know that docker image is a layered mechanism, that is, the back of a tag of the image depends on the front of a tag of the image. So there may be multiple versions of docker images in the host, and the tags of these images are updated in an incremental manner.

When we update the course, we will also update the functionality by releasing a new docker image.

5.3 Binding peripherals

 

  • First of all, make sure that the cart is connected to various peripherals, and that the peripherals have been port-bound, which is handled on the docker's host (the cart).
  • Common peripherals are: serial devices, LIDAR, RGBD camera, voice control module, joystick remote control, etc.
  • Default trolley has bound Astra camera, LIDAR and serial devices, if you need to bind other devices, please refer to the port binding tutorial.
  • For the steps of port binding, please refer to [VI. Linux OS ------ 06. Binding Device ID] tutorial section.

 

Port binding has been configured within the host, if you need to modify it, you can check the content inside to modify it:

image-20230506144842423

 

5.4. Checking Peripheral Connections

 

This step is operated on the host computer:

1, here is to view the peripherals in addition to the camera, here is not connected to the voice control module, connected will show [myspeech] device

xxxxxxxxxx
ll /dev | grep ttyUSB*

image-20230423172753208

 

  1. Check the ports of the AstraPro Plus camera as follows:
xxxxxxxxxx
jetson@ubuntu:~$ ll /dev/astra*
lrwxrwxrwx 1 root root 15 May  5 17:42 /dev/astradepth -> bus/usb/001/007
lrwxrwxrwx 1 root root 15 May  5 17:42 /dev/astrauvc -> bus/usb/001/009

5.5. Editing Scripts

Since many times the port number changes after the AstraPro Plus camera is plugged in, you need to re-edit the script to configure the AstraPro Plus camera port.

 

Edit the script to run docker, this step is operated on the host computer:

1, the script to run docker [run_docker.sh] will usually be placed in the root directory of the main directory of the cart , I here is in the following path. If you don't have it, you can create the file by yourself, and remember to give the script executable permissions after creation.

 

xxxxxxxxxx
chmod +x run_docker.sh  #给脚本赋予可执行权限
 # Give scripts executable permissions

image-20230423164551252

The contents of the [run_docker.sh] script are as follows:

You can copy it without comments and modify it as needed.

Note: When you add a host device to a container, if the device is not connected to the host, you need to remove the corresponding add operation before you can open the container.

xxxxxxxxxx
#!/bin/bash
xhost +
​
docker run -it \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /home/jetson/temp:/root/yahboomcar_ros2_ws/temp \
-v /home/jetson/rosboard:/root/rosboard \
-v /home/jetson/maps:/root/maps \
-v /dev/bus/usb/001/010:/dev/bus/usb/001/010 \          
-v /dev/bus/usb/001/011:/dev/bus/usb/001/011 \  
--device=/dev/astradepth \
--device=/dev/astrauvc \
--device=/dev/video0 \
--device=/dev/myserial \
--device=/dev/rplidar \
--device=/dev/input \
-p 9090:9090 \
-p 8888:8888 \
yahboomtechnology/ros-foxy:3.5.4 /bin/bash

Script instructions with comments:

Note: When you add a host device to a container below, if the device is not connected to the host, you need to remove the corresponding add operation to open the container

xxxxxxxxxx
#!/bin/bash
xhost +                                                 # xhost 是用来支持docker内显示GUI的
# xhost is used to support displaying the GUI within docker
​
docker run -it \                                        # 交互式运行docker镜像
# Run docker images interactively
--net=host \                                            # 容器网络设置为host模式
# Container network set to host mode
--env="DISPLAY" \                                       # 开启显示GUI界面
    # Open the display GUI interface
--env="QT_X11_NO_MITSHM=1" \                            # 采用X11的端口1进行显示
# Use port 1 of X11 for display
-v /tmp/.X11-unix:/tmp/.X11-unix \                      # 映射显示服务节点目录
    # Map to show service node catalog
-v /home/jetson/temp:/root/yahboomcar_ros2_ws/temp \    # 作为宿主机和容器临时传输文件的目录,有需要传输文件,可以使用这个目录
    # As a directory for the temporary transfer of files between the host and the container, if there is a need to transfer files, you can use this directory
-v /home/jetson/rosboard:/root/rosboard \               # app建图导航用到的目录
    # Catalogs used for app building navigation
-v /home/jetson/maps:/root/maps \                       # app建图导航用到的目录
    # Catalogs used for app building navigation
-v /dev/bus/usb/001/010:/dev/bus/usb/001/010 \          # 添加主机设备给容器,这里是astrpro plus设备端口,如何小车没有连接摄像头,请去掉这行
   # Add the host device to the container, here is the astrpro plus device port, if the cart is not connected to the camera, please remove this line.
-v /dev/bus/usb/001/011:/dev/bus/usb/001/011 \          # 添加主机设备给容器,这里是astrpro plus设备端口,如何小车没有连接摄像头,请去掉这行
    # Add the host device to the container, here is the astrpro plus device port, if the cart is not connected to the camera, please remove this line.
--device=/dev/astradepth \                              # 添加主机设备给容器,这里是astrpro plus设备端口,如何小车没有连接摄像头,请去掉这行
# Add the host device to the container, here is the astrpro plus device port, if the cart is not connected to the camera, please remove this line.
--device=/dev/astrauvc \                                # 添加主机设备给容器,这里是astrpro plus设备端口,如何小车没有连接摄像头,请去掉这行
# Add the host device to the container, here is the astrpro plus device port, if the cart is not connected to the camera, please remove this line.
--device=/dev/video0 \                                  # 添加主机设备给容器,这里是astrpro plus设备端口,如何小车没有连接摄像头,请去掉这行
# Add the host device to the container, here is the astrpro plus device port, if the cart is not connected to the camera, please remove this line.
--device=/dev/myserial \                                # 添加主机设备给容器,这里是串口设备端口,如何小车没有连接串口,请去掉这行
# Add the host device to the container, here is the serial device port, if the cart is not connected to the serial port, please remove this line.
--device=/dev/rplidar \                                 # 添加主机设备给容器,这里是雷达设备端口,如何小车没有连接雷达,请去掉这行
# Add the host device to the container, here is the lidar device port, if the car is not connected to the radar, please remove this line.
--device=/dev/myspeech \                                # 添加主机设备给容器,这里是语音控制设备端口,如何小车没有连接语音控制设备,请去掉这行
# Add the host device to the container, here is the voice control device port, if the cart is not connected to the voice control device, please remove this line.
--device=/dev/input \                                   # 添加主机设备给容器,这里是手柄设备端口,如何小车没有连接手柄,请去掉这行
# Add the host device to the container, here is the joystick device port, if the cart is not connected to the joystick, please remove this line.
-p 9090:9090 \                                          # 开放的端口# Open ports
-p 8888:8888 \
yahboomtechnology/ros-foxy:3.3.9 /bin/bash              # 要启动的镜像名称,根据5.2步骤中查询到的修改;在容器内执行/bin/bash命令
​
#注意:以上添加主机设备给容器时,如果宿主机没有连接该设备,需要去掉相应的添加操作,才能开启容器
# The name of the image to be started, modified according to the query in step 5.2; execute the /bin/bash command inside the container.
​
# Note: When you add a host device to a container, if the host machine is not connected to the device, you need to remove the corresponding add operation to open the container.

 

2, modify the above script, these two lines are AstraPro Plus camera port number, due to the camera plug and play, the port number will change, you need to reconfigure the camera port!

xxxxxxxxxx
-v /dev/bus/usb/001/010:/dev/bus/usb/001/010 \      # 给容器挂载存储卷,挂载到容器的某个目录,这里挂载的是摄像头的rgb和depth端口
# Mount the storage volume for the container, to a directory in the container, here the rgb and depth ports for the camera are mounted
-v /dev/bus/usb/001/011:/dev/bus/usb/001/011 \ 

is the camera port queried in step 5.4 2, this port may change after the camera is plugged in, so everyone's is different and you need to match it yourself.

xxxxxxxxxx
-v /dev/bus/usb/001/007:/dev/bus/usb/001/007 \      # 给容器挂载存储卷,挂载到容器的某个目录,这里挂载的是摄像头的rgb和depth端口
# Mount the storage volume for the container, to a directory in the container, here the rgb and depth ports for the camera are mounted
-v /dev/bus/usb/001/009:/dev/bus/usb/001/009 \ 

 

 

5.6. Execution of scripts

 

5.5 After executing the steps, open a terminal on the docker's host [i.e. the cart, either on the VNC or on the cart's screen].

Note: This must be executed on the VNC of the cart or on the screen of the cart, but not in the cart terminal remotely accessed through ssh (e.g., the cart terminal accessed through MobaXterm), otherwise the container may not be able to display the GUI image, as shown below: after entering the cart terminal in MobaXterm and executing run_docker.sh to enter the container, you can not Show rviz

image-20230423173220146

 

Executed in the VNC interface of the cart or on the cart screen:

xxxxxxxxxx
./run_docker.sh

You can enter the container correctly and display the GUI screen. you can test it by executing the rviz2 command again.

image-20230423171929960

 

If the GUI cannot be displayed after executing the rviz2 command, the following error is displayed: (generally possible in Raspberry Pi master)

image-20230509173232054

 

xxxxxxxxxx
--security-opt apparmor:unconfined 

I.e.:

xxxxxxxxxx
#!/bin/bash
xhost +
​
docker run -it \
--net=host \
--env="DISPLAY" \
--env="QT_X11_NO_MITSHM=1" \
-v /tmp/.X11-unix:/tmp/.X11-unix \
--security-opt apparmor:unconfined \                        # 添加了这句参数 # Added this parameter
-v /home/jetson/temp:/root/yahboomcar_ros2_ws/temp \
-v /home/jetson/rosboard:/root/rosboard \
-v /home/jetson/maps:/root/maps \
-v /dev/bus/usb/001/010:/dev/bus/usb/001/010 \          
-v /dev/bus/usb/001/011:/dev/bus/usb/001/011 \  
--device=/dev/astradepth \
--device=/dev/astrauvc \
--device=/dev/myserial \
--device=/dev/rplidar \
--device=/dev/myspeech \
--device=/dev/input \
-p 9090:9090 \
-p 8888:8888 \
yahboomtechnology/ros-foxy:3.3.9 /bin/bash

Then run the script again to access the container and be able to display the GUI screen.

 

5.7. Switching Models, Lidar and Cameras

Description: Since the ROSMASTER series robots are divided into multiple robots as well as multiple devices, the factory system has been configured with routines for multiple devices, but since it is not possible to automatically recognize the products, you need to manually set up the machine type and LIDAR model.

After entering the container: according to the model of the trolley, the type of LIDAR and the type of CAMERA make the following changes:

xxxxxxxxxx
root@ubuntu:/# cd
root@ubuntu:~# vim .bashrc

image-20230525093413004

When the changes are complete, save and exit vim, then execute:

xxxxxxxxxx
root@ubuntu:~# source .bashrc
--------------------------------------------------------
ROS_DOMAIN_ID: 12
my_robot_type: x3 | my_lidar: a1 | my_camera: astraplus
--------------------------------------------------------
root@ubuntu:~#

You can see the current model of the modified cart, the lidar type and the camera type.

 

The robot project files are stored in the following directory:

xxxxxxxxxx
/root/yahboomcar_ros2_ws

 

5.8 Multi-terminal access to the same docker container

 

1, in the above steps have opened a docker container, you can open another terminal on the host (cart) to view:

xxxxxxxxxx
docker ps -a

image-20230423182207793

  1. Now enter that docker container in this newly opened terminal:
xxxxxxxxxx
docker exec -it 5b698ea10535 /bin/bash

image-20230423182446607

Successfully enter the container and also open numerous more terminals to enter that container.

The robot project files are stored in the following directory:

xxxxxxxxxx
/root/yahboomcar_ros2_ws

 

  1. Note:

(1) Ensure that the container is turned on [UP] when executing the commands in step 2.

image-20230423182959239

(2) If the container is in the [Exited] closed state, see step 5.8 below.

image-20230423183116348

 

 

5.8 How to open a container that is already in the [Exited] closed state

 

There are two scenarios: you still need to use the camera and you no longer need to use the camera.

 

5.8.1. Need to use the webcam

First of all, you need to check whether the port of AstraPro Plus camera has been changed according to the guideline in [5.4 Checking the Peripheral Connection] above.

  1. If the port of Astra Pro camera has changed, it is not possible to access that container again.

(1) If there are some modifications in that container that need to be kept, you can refer to the following command to generate a new image that

xxxxxxxxxx
从容器中提交一个镜像:
docker commit 容器id 要创建的目标镜像名:[标签名]
例如:docker commit 66c40ede8c68 yahboomtechnology/ros-foxy:1.1  # 标签名根据自己的情况递增
​
然后再运行这个新的镜像进入容器:参见本章节【5.2 到 5.6】步骤执行
Commit an image from a container:
docker commit container id name of target image to create:[tag name]
Example: docker commit 66c40ede8c68 yahboomtechnology/ros-foxy:1.1 # increment the tag name as you see fit
​
Then run this new image into the container: see steps [5.2 through 5.6] in this section.

(2) If there is no modification to be kept, then directly refer to steps [5.2 to 5.6] in this section to enter the container.

 

  1. If there is no change in the AstraPro Plus camera port, then see [5.8.3, Entering the [Exited] closed container again].

 

5.8.2. Camera is not required.

Refer to [5.8.3, Re-entering a container in the [Exited] closed state].

 

 

5.8.3 Re-entering an [Exited] shutdown container

Open a terminal on the docker's host [i.e., the cart, either on VNC or on the cart's screen].

Note: Here must be in the cart VNC above or on the cart screen, not in the ssh remote access to the cart terminal (such as through the MobaXterm into the cart terminal), otherwise the container may not be able to display the GUI image, of course, how you do not need to display the GUI image, then you can.

  1. First check the status of the container
xxxxxxxxxx
 docker ps -a
  1. Enable GUI access
xxxxxxxxxx
xhost +
  1. Open the container [the ID of the container can be abbreviated, as long as it can uniquely identify the container that currently exists].
xxxxxxxxxx
docker start 5b
  1. Enter the container again
xxxxxxxxxx
docker exec -it 5b /bin/bash
  1. Open rviz to see if the GUI screen can be opened.
xxxxxxxxxx
rviz2
  1. The specific implementation is as follows:
xxxxxxxxxx
jetson@ubuntu:~$ docker ps -a
CONTAINER ID   IMAGE                              COMMAND       CREATED      STATUS                     PORTS     NAMES
5b698ea10535   yahboomtechnology/ros-foxy:3.3.9   "/bin/bash"   3 days ago   Exited (0) 8 seconds ago             ecstatic_lewin
jetson@ubuntu:~$ xhost +
access control disabled, clients can connect from any host
jetson@ubuntu:~$ docker start 5b
5b
jetson@ubuntu:~$ docker exec -it 5b /bin/bash
--------------------------------------------------------
my_robot_type: x3 | my_lidar: a1 | my_camera: astrapro
--------------------------------------------------------
root@ubuntu:/# rviz2
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
[INFO] [1682298616.634096279] [rviz2]: Stereo is NOT SUPPORTED
[INFO] [1682298616.634576375] [rviz2]: OpenGl version: 3.1 (GLSL 1.4)
[INFO] [1682298617.959654036] [rviz2]: Stereo is NOT SUPPORTED

 

docker hardware interaction and data processing
docker in the robot development environment build

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