Install and start microros agent1、1. Docker starts the microros agentDocker starts WIFI proxyDocker starts serial port agentAgent startup failure2、Source code to start microros agentInstall tinyxml2 dependenciesInstall python3-rosdep toolCompile micro_ros_setup environmentCompile micro_ros_agent environmentSource code to start microros agentROS2 source code starts WIFI agentROS2 source code starts serial port agent
Note: Docker startup mode and source code startup mode can be installed on the same system at the same time, but only one of the startup modes can be selected at startup. Under normal circumstances, it is simple and convenient to use the docker startup method. It is recommended to use the Docker startup method.
This time, the microros agent is started through docker, so the system docker needs to be set up first. The relevant docker environment has been set up in the factory system and can be run directly.
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:humble udp4 --port 8090 -v4
Among them, --port 8090 is the network port number, and -v4 is the LOG printing level. The higher the value, the more printing will be done. Modifications can be made according to actual conditions.
If you need to end the proxy, press Ctrl+C in the terminal to exit the proxy.
Note that you cannot close the terminal directly, otherwise docker will continue to run in the background.
If the microcontroller starts the reconnection agent multiple times, causing ROS2 to search for multiple identical nodes, it does not actually affect the use. Press Ctrl+C to end the agent, then reset the microcontroller and reconnect to the agent.
xxxxxxxxxx
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:humble serial --dev /dev/ttyUSB0 -b 921600 -v4
Among them, --dev /dev/ttyUSB0 is the serial port device number, and -b 921600 is the baud rate. Modifications can be made according to actual conditions.
If you need to end the proxy, press Ctrl+C in the terminal to exit the proxy.
Note that you cannot close the terminal directly, otherwise docker will continue to run in the background.
If the microcontroller starts the reconnection agent multiple times, causing ROS2 to search for multiple identical nodes, it does not actually affect the use. Press Ctrl+C to end the agent, then reset the microcontroller and reconnect to the agent.
The microROS agent can only be opened in one terminal. If a terminal has already opened the microROS agent in the background, an error will be reported when opening the agent again. Please press Ctrl+C on the original agent terminal to exit the agent and then run the agent.
If the agent fails to be started the next time because the terminal is closed directly, you can restart the virtual machine/computer or manually end docker to solve the problem.
How to manually end docker:
Please first query the current docker process number and end the current agent docker process.
xxxxxxxxxx
docker ps -a | grep microros/micro-ros-agent
docker stop xxxxxxxxxx
docker run -it --rm -v /dev:/dev -v /dev/shm:/dev/shm --privileged --net=host microros/micro-ros-agent:humble udp4 --port 8090 -v4
Enter the following command in the terminal to install tinyxml2
xxxxxxxxxx
cd ~/
git clone https://github.com/leethomason/tinyxml2.git
cd tinyxml2
mkdir build
cd build
sudo cmake ..
sudo make
sudo make install
Enter the following command in the terminal to install the rosdep tool. You can skip it if you have already installed it.
xxxxxxxxxx
sudo apt install python3-rosdep
Activate the ROS2 environment variable. Here we take the humble version as an example. If it is already activated, you can skip the activation step.
source /opt/ros/humble/setup.bash
Create and enter the workspace uros_ws in the user directory
xxxxxxxxxx
mkdir ~/uros_ws && cd ~/uros_ws
mkdir src
Download the micro_ros_setup file to the src folder
xxxxxxxxxx
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
Initialize rosdep
xxxxxxxxxx
sudo rosdep init
If there is a network problem, please add the -E parameter
xxxxxxxxxx
sudo -E rosdep init
If errors are reported in the above steps and rosdep still cannot be initialized, you can create a new 20-default.list file in the /etc/ros/rosdep/sources.list.d/ directory, add the following content, and then proceed to the next step.
x# os-specific listings first
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/osx-homebrew.yaml osx
# generic
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/base.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/python.yaml
yaml https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/ruby.yaml
gbpdistro https://raw.githubusercontent.com/ros/rosdistro/master/releases/fuerte.yaml fuerte
# newer distributions (Groovy, Hydro, ...) must not be listed anymore, they are being fetched from the rosdistro index.yaml instead
Update rosdep and install related driver packages
xxxxxxxxxx
rosdep update && rosdep install --from-paths src --ignore-src -y
Compile workspace
xxxxxxxxxx
colcon build
Activate micro_ros_setup environment
xxxxxxxxxx
source install/local_setup.bash
xxxxxxxxxx
ros2 run micro_ros_setup create_agent_ws.sh
ros2 run micro_ros_setup build_agent.sh
If an error occurs when compiling build_agent.sh, please compile again.
Activate micro_ros_agent agent environment
xxxxxxxxxx
source ~/uros_ws/install/local_setup.sh
xxxxxxxxxx
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8090 -v4
Among them, --port 8090 is the network port number, and -v4 is the LOG printing level. The higher the value, the more printing will be done. Modifications can be made according to actual conditions.
If you need to end the proxy, press Ctrl+C in the terminal to exit the proxy.
xxxxxxxxxx
ros2 run micro_ros_agent micro_ros_agent serial --dev /dev/ttyUSB0 -b 921600 -v4
Among them, --dev /dev/ttyUSB0 is the serial port device number, and -b 921600 is the baud rate. Modifications can be made according to actual conditions.
If you need to end the proxy, press Ctrl+C in the terminal to exit the proxy.