Skip to content

Commit f28680e

Browse files
BorjaOutereloralph-lange
authored andcommitted
Improve text.
1 parent 7f0498d commit f28680e

2 files changed

Lines changed: 36 additions & 39 deletions

File tree

_docs/tutorials/demos/crazyflie_demo/index.md

Lines changed: 35 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -5,49 +5,47 @@ redirect_from:
55
- /crazyflie_demo/
66
---
77

8-
# Crazyflie + Turtlebot demo
8+
This demo aims to expose a **micro-ROS** use case. It runs on a pair of embedded devices:
9+
a [**Crazyflie 2.1**](https://www.bitcraze.io/crazyflie-2-1/) drone, used as a user controller,
10+
and a [**Kobuki Turtlebot 2**](https://www.turtlebot.com/turtlebot2/) as a mobile and controlled device.
911

10-
This demo aims to expose an use case of **Micro ROS** running on a pair or embedded devices: a [**Crazyflie 2.1**](https://www.bitcraze.io/crazyflie-2-1/) drone, used as an user controller and a [**Kobuki Turtlebot 2**](https://www.turtlebot.com/turtlebot2/) as a mobile and controlled device.
12+
Both of them rely on **micro-ROS** publication and subscription mechanisms and use an underlying [**Micro XRCE-DSS client**](https://micro-xrce-dds.readthedocs.io/en/latest/).
1113

12-
Both of them rely on **Micro ROS** publication and subscription mechanisms and use an underlaying [**MicroXRCEDSS client**](https://micro-xrce-dds.readthedocs.io/en/latest/).
13-
14-
In order to show the integration with **ROS2**, this demo also includes common ROS2 tooling such as Gazebo, RVIZ and simple ROS2 nodes (aka **external nodes**) acting as data converters.
14+
This demo also includes conventional ROS 2 tooling as a demonstration of integration with **ROS 2**. We use Gazebo, RVIZ and simple ROS 2 nodes (aka **external nodes**) acting as data converters.
1515

1616
## Index
17-
18-
- [Crazyflie + Turtlebot demo](#crazyflie--turtlebot-demo)
19-
- [Index](#index)
20-
- [Setup](#setup)
21-
- [Required Hardware](#required-hardware)
17+
- [Index](#index)
18+
- [Setup](#setup)
19+
- [Required Hardware](#required-hardware)
2220
- [Installation](#installation)
23-
- [Install external ROS2 nodes](#install-external-ros2-nodes)
24-
- [Compile and flash Crazyflie 2.1 firmware](#compile-and-flash-crazyflie-21-firmware)
25-
- [Install Crazyflie Client + Bridge](#install-crazyflie-client--bridge)
26-
- [Compile and flash Kobuki Turtlebot 2 firmware](#compile-and-flash-kobuki-turtlebot-2-firmware)
21+
- [Install external ROS2 nodes](#install-external-ros2-nodes)
22+
- [Compile and flash Crazyflie 2.1 firmware](#compile-and-flash-crazyflie-21-firmware)
23+
- [Install Crazyflie Client + Bridge](#install-crazyflie-client--bridge)
24+
- [Compile and flash Kobuki Turtlebot 2 firmware](#compile-and-flash-kobuki-turtlebot-2-firmware)
2725
- [Usage](#usage)
28-
- [Run Kobuki Turtlebot 2 Node](#run-kobuki-turtlebot-2-node)
29-
- [Run Crazyflie 2.1 Node](#run-crazyflie-21-node)
30-
- [Run external ROS2 nodes](#run-external-ros2-nodes)
31-
- [Run RVIZ visualizers](#run-rviz-visualizers)
26+
- [Run Kobuki Turtlebot 2 Node](#run-kobuki-turtlebot-2-node)
27+
- [Run Crazyflie 2.1 Node](#run-crazyflie-21-node)
28+
- [Run external ROS2 nodes](#run-external-ros2-nodes)
29+
- [Run RVIZ visualizers](#run-rviz-visualizers)
3230

3331
## Setup
3432

35-
The proposed demo is composed by different kind of messages and topics.
33+
The proposed demo is composed of different kind of messages and topics.
3634

37-
The **Crazyflie 2.1** drone relies on [ST STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html) MCU running **[FreeRTOS](https://www.freertos.org/)**. Using the RTOS capabilities and the integrated radio communication device, the drone is able to run a node that publish:
35+
The **Crazyflie 2.1** drone relies on [ST STM32F405](https://www.st.com/en/microcontrollers-microprocessors/stm32f405-415.html) MCU running **[FreeRTOS](https://www.freertos.org/)**. Using the RTOS capabilities and the integrated radio communication device, the drone can run a node that publishes:
3836
- its own relative position as a 3D vector (X, Y and Z) using a *geometry_msg/Point32* message type on */drone/odometry* topic.
3937
- its own attitude as a 3D vector (pitch, roll and yaw) using a *geometry_msg/Point32* message type on */drone/attitude* topic.
4038

41-
The **Kobuki Turtlebot 2** robot is controlled using a UART protocol through a custom DB25 connector. The Micro ROS node runs on a Olimex STM32-E407 board attached to that UART port. This hardware features a [ST STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html) MCU running **[Nuttx](https://nuttx.org/)** RTOS. In the same way, this node is able to communicate with the robot (UART) and with the ROS2 world (integrated Ethernet). Its used topics are:
39+
The **Kobuki Turtlebot 2** robot is controlled using a UART protocol through a custom DB25 connector. The Micro ROS node runs on an Olimex STM32-E407 board attached to that UART port. This hardware features a [ST STM32F407](https://www.st.com/en/microcontrollers-microprocessors/stm32f407-417.html) MCU running **[Nuttx](https://nuttx.org/)** RTOS. In the same way, this node can communicate with the robot (UART) and with the ROS2 world (integrated Ethernet). Its used topics are:
4240
- a subscription on */cmd_vel* topic (*geometry_msg/Twist* message type) to receive the controlling angular and linear velocity.
4341
- a publication on */robot_pose* topic (*geometry_msg/Vector3* message type) which includes X position, Y position and robot yaw.
4442

4543
The **external ROS2 nodes** are rclpy tools with some different functionalities:
4644
- *attitude_to_vel.py*
47-
- Converts Crazyflie */drone/attitude* to Kobuki Turtlebot 2 */cmd_vel* so that drone pitch is mapped to robot linear velocity and drone roll to angular valocity.
48-
- Converts Crazyflie publications on */drone/attitude* and */drone/attitude* topics to *tf2_msgs/TFMessage* messages (required by RVIZ visualizer)
45+
- Converts Crazyflie */drone/attitude* to Kobuki Turtlebot 2 */cmd_vel* so that drone pitch is mapped to robot linear velocity and drone roll to angular valocity.
46+
- Converts Crazyflie publications on */drone/attitude* and */drone/attitude* topics to *tf2_msgs/TFMessage* messages (required by RVIZ visualizer)
4947
- *odom_to_tf.py*
50-
- Converts Kobuki Turtlebot 2 publications on */robot_pose* topic to *tf2_msgs/TFMessage* messages (required by RVIZ visualizer).
48+
- Converts Kobuki Turtlebot 2 publications on */robot_pose* topic to *tf2_msgs/TFMessage* messages (required by RVIZ visualizer).
5149

5250
The following image shows the described setup.
5351

@@ -57,14 +55,14 @@ The following image shows the described setup.
5755

5856
This setup uses the following hardware:
5957

60-
| Item | |
58+
| Item | |
6159
|---------------|----------------------------------------------------------|
6260
| Kobuki Turtlebot 2 | [Link](https://www.turtlebot.com/turtlebot2/) |
6361
| Olimex STM32-E407 | [Link](https://www.olimex.com/Products/ARM/ST/STM32-E407/open-source-hardware) |
6462
| Olimex ARM-USB-TINY-H | [Link](https://www.olimex.com/Products/ARM/JTAG/ARM-USB-TINY-H/) |
6563
| Crazyflie 2.1 | [Link](https://store.bitcraze.io/products/crazyflie-2-1) |
66-
| Flow Desk v2 | [Link](https://store.bitcraze.io/collections/decks/products/flow-deck-v2) |
67-
| Debug adapter | [Link](https://store.bitcraze.io/collections/accessories/products/debug-adapter) |
64+
| Flow Desk v2 | [Link](https://store.bitcraze.io/collections/decks/products/flow-deck-v2) |
65+
| Debug adapter | [Link](https://store.bitcraze.io/collections/accessories/products/debug-adapter) |
6866
| Crazyradio PA 2.4 GHz USB dongle | [Link](https://store.bitcraze.io/collections/accessories/products/crazyradio-pa) |
6967
| Additional battery + charger (optional) | [Link](https://store.bitcraze.io/collections/accessories/products/240mah-lipo-battery-including-500ma-usb-charger) |
7068

@@ -125,7 +123,7 @@ sudo apt-get update
125123
sudo apt install gcc-arm-embedded dfu-util
126124
```
127125

128-
Download and copile the **Crazyflie 2.1** firmware repository:
126+
Download and build the **Crazyflie 2.1** firmware repository:
129127
```bash
130128
mkdir crazyflie_firmware
131129
git clone https://github.com/eProsima/crazyflie-firmware -b cf_micro-xrce-dds
@@ -139,7 +137,7 @@ Unplug the **Crazyflie 2.1** battery
139137

140138
Push the reset button while connecting the USB power supply.
141139

142-
The top-left blue LED will blink, first slowly and after 4 seconds sightly faster, now it is in DFU programming mode. Check it with `lsusb`:
140+
The top-left blue LED blinks, first slowly and after 4 seconds sightly faster, now it is in DFU programming mode. Check it with `lsusb`:
143141
```bash
144142
Bus 001 Device 051: ID 0483:df11 STMicroelectronics STM Device in DFU Mode
145143
```
@@ -211,18 +209,18 @@ scripts/flash.sh olimex-stm32-e407
211209

212210
# Usage
213211

214-
After installation, the following packages should be installed:
212+
After installation, the following packages should be present in your system:
215213

216214
```
217215
.
218-
+-- Micro-XRCE-DDS # used for installing Micro-XRCE-DDS
216+
+-- Micro-XRCE-DDS # used for installing Micro-XRCE-DDS
219217
+-- crazyflie_demo
220-
+-- crazyflie-firmware # used for compiling and flashing Crazyflie 2.1 firmware
221-
+-- kobuki-firmware # used for compiling and flashing Kobuki Turtlebot 2 firmware
218+
+-- crazyflie-firmware # used for compiling and flashing Crazyflie 2.1 firmware
219+
+-- kobuki-firmware # used for building and flashing Kobuki Turtlebot 2 firmware
222220
+-- crazyflie-clients-python
223221
```
224222

225-
Make sure that all ROS2 or MicroROS nodes created along the following steps **can reach each other using its network interfaces**.
223+
Make sure that all ROS2 or MicroROS nodes created along with the following steps **can reach each other using its network interfaces**.
226224

227225
## Run Kobuki Turtlebot 2 Node
228226

@@ -266,7 +264,7 @@ source /opt/ros/crystal/setup.bash && source install/local_setup.bash
266264
ros2 run micro-ros_crazyflie_demo_remote attitude_to_vel
267265
```
268266

269-
Topic */cmd_vel* should be published and the **Kobuki Turtlebot 2** should start moving. Check it with `ros2 topic echo /cmd_vel`
267+
Topic */cmd_vel* should be published, and the **Kobuki Turtlebot 2** should start moving. Check it with `ros2 topic echo /cmd_vel`
270268

271269
## Run RVIZ visualizers
272270
Run complete visualizer:
@@ -276,7 +274,7 @@ source /opt/ros/crystal/setup.bash && source install/local_setup.bash
276274
ros2 launch micro-ros_crazyflie_demo_remote launch_drone_position.launch.py
277275
```
278276

279-
An RVIZ windows should be open and a Crazyflie 2.1 drone model should represent the drone attitude and position along with a historic path.
277+
RVIZ windows should be open, and a Crazyflie 2.1 drone model should represent the drone attitude and position along with a historic path.
280278

281279
Run attitude visualizer:
282280
```
@@ -285,6 +283,4 @@ source /opt/ros/crystal/setup.bash && source install/local_setup.bash
285283
ros2 launch micro-ros_crazyflie_demo_remote launch_drone_attitude.launch.py
286284
```
287285

288-
An RVIZ windows should be open and a Crazyflie 2.1 drone model should represent **only** the drone attitude.
289-
290-
286+
RVIZ windows should be open and a Crazyflie 2.1 drone model should represent **only** the drone attitude.

_docs/tutorials/demos/kobuki_demo/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
title: Kobuki Demo
33
permalink: /docs/tutorials/demos/kobuki_demo/
44
redirect_from:
5+
- /docs/tutorials/demos/
56
- /kobuki_demo/
67
---
78

0 commit comments

Comments
 (0)