yahboom
HomeLearn
Solution
Blog
Online Store
About Us
EN/中文
ROS Robot Expansion Board📖
1.Expansion board STM32 driver
  • 0. Precautions
  • 1.1 Expansion Board Introduction_V3.0
  • 1.1 Expansion Board Introduction_V1.0
  • 1.2 STM32 Development environment
  • 1.3 Button to control the buzzer to whistle
  • 1.4 FreeRTOS application
  • 1.5 Serial communication
  • 1.6 SBUS model aircraft remote control
  • 1.7 CAN bus communication
  • 1.8 RGB colorful light bar
  • 1.9 Timer interrupt to control PWM servo
  • 1.10 Control serial port servos
  • 1.11 Nine-axis attitude sensor to obtain data
  • 1.12 Control the forward and reverse rotation of the motor
  • 1.13 The timer captures the encoder data
  • 1.14.1 Robot kinematics analysis theory
  • 1.14.2 Mecanum wheel kinematics analysis
  • 1.15 PID control robot movement
  • 1.16 OLED character display
2.Python basic control
  • 2.0 Bind PCB port devices
  • 2.1 Update the firmware of the expansion board
  • 2.2 Turn off the self-starting large program at startup
  • 2.3 Install the Rosmaster driver library
  • 2.4 Buzzer whistle
  • 2.5 Control PWM servo
  • 2.6 RGB colorful light bar special effects display
  • 2.7 Control the forward and reverse rotation of the motor
  • 2.8 Control the movement of the robot
  • 2.9 Control Serial Servo
3.ROS1 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
4.ROS1 robot control
  • 0. Bind PCB port devices
  • 1. Package Use the tutorial
  • 2. Package Description
  • 3. Robot keyboard control
  • 4. Robot state estimation
  • 5. Robot imu calibration
  • 6. Robot URDF Model
5.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
6.ROS2 robot control
  • 0. Bind PCB port devices
  • 1. Package Use the tutorial
  • 2. Robot information release
  • 3. Robot keyboard control
  • 4. Robot state estimation
  • 5. Robot calibration
  • 6. URDF model
7.RDK X3 course
  • 1. Update the firmware of the expansion board
  • 2. Turn off the self-starting large program at startup
  • 3. Install the Rosmaster driver library
  • 4. Buzzer whistle
  • 5. Control PWM servo
  • 6. RGB colorful light bar special effects
  • 7. Control motor forward reverse
  • 8. Control robot movement
  • 9. Control Serial Servo
Download
  • Rules_File
  • Hardware Info
  • Code
  • 3D Model File
  • RDK Code
  • ROS2_Basic_VM
Download ZIP

Welcome to ROS Robot Expansion Board repository

22.ROS distributed communication

22.ROS distributed communication

A running ROS system can contain multiple nodes distributed across multiple computers. Depending on the system configuration, any node may need to communicate with any other node at any time. However, a necessary condition for implementing this distributed communication is that each machine must be on the same local area network. In this lesson, we will use Raspberry Pi and Virtual Machine as an example to illustrate how to configure and implement distributed communication.

22.1 Preparation work

22.1.1 Configuration

Require:

  • The virtual machine and Raspberry Pi are connected to the same LAN;

  • Select one as the host. The host needs to start roscore. Here, select Raspberry Pi as the host and the virtual machine as the slave. The Raspberry Pi here needs to have ros-noetic installed;

  • Install the ssh and chrony packages on each device for synchronization. You can enter the following instructions to install.

    sudo apt-get install chrony openssh-server -y

22.1.2 Check ip address

Both are connected to the same LAN, query the network IP address through the following command,

xxxxxxxxxx
ifconfig

Virtual machine side,

image-20231025115453254

The address found is 192.168.2.131

Raspberry Pi side,

xxxxxxxxxx
ifconfig

image-20231025120113573

The found address is 192.168.2.117

22.2 Modify configuration file

22.2.1 Virtual machine side

Taking the virtual machine as a slave machine as an example, you need to modify the ROS_MASTER_URI of the virtual machine to the Raspberry Pi IP. Here is the 192.168.2.117 you just queried, enter it in the terminal,

xxxxxxxxxx
sudo gedit ~/.bashrc

After entering the password, add it at the bottom of the file,

xxxxxxxxxx
export ROS_MASTER_URI=http://192.168.2.117:11311

image-20231025151710358

Exit after saving and reopen the terminal to refresh the environment variables to take effect.

Then, modify the/etc/hosts file,

xxxxxxxxxx
sudo gedit /etc/hosts

image-20231025121908941

As shown in the picture above, add the Raspberry Pi's IP and machine name, save and exit.

22.2.2 Raspberry Pi terminal

The modified files and steps are almost the same as above. The only difference is that the ROS_MASTER_URI of the Raspberry Pi needs to be replaced with the local IP, which is 192.168.2.131. Just add the ip and machine name of the virtual machine at the end of the /etc/hosts file. The two files are as follows:

~/.bashrc

xxxxxxxxxx
sudo vim ~/.bashrc

image-20231025151625167

/etc/hosts

xxxxxxxxxx
sudo vim /etc/hosts

image-20231025151544904

Similarly, exit after saving, reopen the terminal or source the terminal to refresh the environment variables.

22.3 Enable distributed communication

Let's verify whether the configuration is successful. First, on the host (here is the Raspberry Pi), start roscore and enter in the host terminal,

xxxxxxxxxx
roscore

Then, run the little turtle node on the slave machine (virtual machine) and enter from the slave machine terminal,

xxxxxxxxxx
rosrun turtlesim turtlesim_node

A little turtle appears from the machine,

image-20231025152103076

Then, we start the little turtle keyboard control node on the host (Raspberry Pi), and input at the host terminal,

xxxxxxxxxx
rosrun turtlesim turtle_teleop_key 

Click the keyboard to control the terminal, and then use the up, down, left and right buttons to control the movement of the little turtle on the virtual machine.

image-20231025152147175

gazebo introduction
Bind PCB port devices

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