examples/example_uros.c: 包含了uros ping-pong的实例代码。Client端(BSP)订阅/microROS/ping消息,收到消息后,发送/microROS/pong消息到Agent端(ROS2).
安装完ROS2后,使用如下指令安装Micro-ROS
# Source the ROS 2 installation
source /opt/ros/foxy/setup.bash
# Create a workspace and download the micro-ROS tools
mkdir microros_ws
cd microros_ws
git clone -b $ROS_DISTRO https://github.com/micro-ROS/micro_ros_setup.git src/micro_ros_setup
# Update dependencies using rosdep
sudo apt update && rosdep update
rosdep install --from-path src --ignore-src -y
# Install pip
sudo apt-get install python3-pip
# Build micro-ROS tools and source them
colcon build
source install/local_setup.bash
创建Micro-ROS Agent
# Download micro-ROS-Agent packages
ros2 run micro_ros_setup create_agent_ws.sh
# Build step
ros2 run micro_ros_setup build_agent.sh
source install/local_setup.bash
运行Micro-ROS Agent
ros2 run micro_ros_agent micro_ros_agent udp4 --port 8888ros2 run micro_ros_agent micro_ros_agent tcp4 --port 8888ros2 run micro_ros_agent micro_ros_agent serial --dev [device]bsp/qemu-vexpress-a9uros_test指令在电脑上打开新的终端,输入如下指令监听/microROS/pong。注意这时还没有消息发过来,因为还未发送ping指令给Client
source /opt/ros/foxy/setup.bash
ros2 topic echo /microROS/pong
打开另外一个新的终端,输入如下指令,发送/microROS/ping消息给Client端
source /opt/ros/foxy/setup.bash
# Send a fake ping
ros2 topic pub /microROS/ping std_msgs/msg/Header '{frame_id: "fake_ping"}'
RTT控制台输出结果:
msh />uros_test
Micro-ROS ping-pong demo.
msh />Wait for ping topic
Received topic: fake_ping, sec: 0
Send pong topic: Hello RT-Thread!, sec: 120
Received topic: fake_ping, sec: 0
Send pong topic: Hello RT-Thread!, sec: 121
Received topic: fake_ping, sec: 0
Send pong topic: Hello RT-Thread!, sec: 122
Received topic: fake_ping, sec: 0
Send pong topic: Hello RT-Thread!, sec: 123
终端输出结果:
~/src/microros_ws$ ros2 topic echo /microROS/pong
stamp:
sec: 120
nanosec: 450000000
frame_id: Hello RT-Thread!
---
stamp:
sec: 121
nanosec: 450000000
frame_id: Hello RT-Thread!
---
stamp:
sec: 122
nanosec: 450000000
frame_id: Hello RT-Thread!
---
stamp:
sec: 123
nanosec: 450000000
frame_id: Hello RT-Thread!
---