Содержание
Обновил Anton Ruhl 10 месяцев назад
<img src="https://storage.yandexcloud.net/attachments.dev.u-meteor.ru/1caee1e4-7927-4918-986e-f55617bd24e9/uploads/attachment/file/609/Screenshot_2024-08-12_at_10.16.56_AM.png?response-content-disposition=inline&X-Amz-Expires=600&X-Amz-Date=20240813T072534Z&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=YCAJEYl_rIEsIrZ4eVUcc0eQ2%2F20240813%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-SignedHeaders=host&X-Amz-Signature=0059c2deb0e938cfb965efca07198753feb46925452f5170cc89bf7efcce5b3b" data-width="100%" data-align="center">About
<img src="/op/api/v3/attachments/630/content" data-width="100%" data-align="center">
Welcome to `free_fleet`, an open-source robot fleet management system. Sometimes it is called the "Fun Free Fleet For Friends" (F5).
**Note**, this repository is under active development. Things will be quite unstable for a while. Please open an issue ticket on this repo if you have problems. Cheers.
## Installation Instructions
### Prerequisites
- [<u>Ubuntu 20.04 LTS</u>](https://releases.ubuntu.com/20.04/)
- [<u>ROS1 - Noetic</u>](https://wiki.ros.org/noetic)
- [<u>ROS2 - Galactic</u>](https://docs.ros.org/en/galactic/index.html)
Install all non-ROS prerequisite packages,
```javascript ```
sudo apt update && sudo apt install \
git wget qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
python3-rosdep \
python3-vcstool \
python3-colcon-common-extensions \
# maven default-jdk # Uncomment to install dependencies for message generation
```
aslkfjaslfkagas
gb gas <span style="font-family: Courier"><mark data-color="#ffffff" style="background-color: #ffffff; color: inherit">gkajsgka</mark></span> sgkja `sgka sgkjas` ` `sgkjas` `gkja` `gs`
### Message Generation
```javascript ```
Message generation via FleetMessages.idl is done using dds_idlc from CycloneDDS. For onvenience , the generated mesasges and files has been done offline and committed into the code base. They can be found here.
```
```javascript ```
./dds_idlc -allstructs FleetMessages.idl
```
### Client in ROS 1
Start a new ROS 1 workspace, and pull in the necessary repositories,
```javascript ```
mkdir -p ~/ff_ros1_ws/src
cd ~/ff_ros1_ws/src
git clone https://github.com/open-rmf/free_fleet -b main
git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.7.x
```
Install all the dependencies through `rosdep`,
```javascript ```
cd ~/ff_ros1_ws
rosdep install --from-paths src --ignore-src --rosdistro noetic -yr
```
Source ROS 1 and build,
```javascript ```
cd ~/ff_ros1_ws
source /opt/ros/noetic/setup.bash
colcon build
```
### Client and Server in ROS 2
Start a new ROS 2 workspace, and pull in the necessary repositories,
```javascript ```
mkdir -p ~/ff_ros2_ws/src
cd ~/ff_ros2_ws/src
git clone https://github.com/open-rmf/free_fleet -b main
git clone https://github.com/open-rmf/rmf_internal_msgs -b main
```
Install all the dependencies through `rosdep`,
```javascript ```
cd ~/ff_ros2_ws
rosdep install --from-paths src --ignore-src --rosdistro galactic -yr
```
Source ROS 2 and build,
```javascript ```
cd ~/ff_ros2_ws
source /opt/ros/galactic/setup.bash
colcon build
# Optionally use the command below to only build the relevant packages,
# colcon build --packages-up-to \
# free_fleet ff_examples_ros2 free_fleet_server_ros2 free_fleet_client_ros2
```
## Examples
### Barebones Example
This example emulates a running ROS 1 robot,
```javascript ```
source ~/ff_ros1_ws/install/setup.bash
roslaunch ff_examples_ros1 fake_client.launch
```
This example emulates a running ROS 2 robot,
```javascript ```
source ~/ff_ros2_ws/install/setup.bash
ros2 launch ff_examples_ros2 fake_client.launch.xml
```
The clients will then start subscribing to all the necessary topics, and start publishing robot states over DDS to the server. Start the server using
```javascript ```
source ~/ff_ros2_ws/install/setup.bash
ros2 launch ff_examples_ros2 fake_server.launch.xml
# Verify that the server registers the fake clients
# [INFO] [1636706176.184055177] [fake_server_node]: registered a new robot: [fake_ros1_robot]
# [INFO] [1636706176.184055177] [fake_server_node]: registered a new robot: [fake_ros2_robot]
```
ROS 2 messages over the `/fleet_states` topic can also be used to verify that the clients are registered,
```javascript ```
source ~/ff_ros2_ws/install/setup.bash
ros2 topic echo /fleet_states
```
Next, to send requests and commands, check out the example scripts and their uses [<u>here</u>](https://github.com/open-rmf/free_fleet#commands-and-requests).
<div data-type="columns" class="layout-two-column">
<div data-position="left" data-type="column"><p></p></div><div data-position="" data-type="column"><p></p></div>
</div>
<img src="/op/api/v3/attachments/630/content" data-width="100%" data-align="center">
Welcome to `free_fleet`, an open-source robot fleet management system. Sometimes it is called the "Fun Free Fleet For Friends" (F5).
**Note**, this repository is under active development. Things will be quite unstable for a while. Please open an issue ticket on this repo if you have problems. Cheers.
## Installation Instructions
### Prerequisites
- [<u>Ubuntu 20.04 LTS</u>](https://releases.ubuntu.com/20.04/)
- [<u>ROS1 - Noetic</u>](https://wiki.ros.org/noetic)
- [<u>ROS2 - Galactic</u>](https://docs.ros.org/en/galactic/index.html)
Install all non-ROS prerequisite packages,
```javascript
sudo apt update && sudo apt install \
git wget qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools \
python3-rosdep \
python3-vcstool \
python3-colcon-common-extensions \
# maven default-jdk # Uncomment to install dependencies for message generation
```
aslkfjaslfkagas
gb gas <span style="font-family: Courier"><mark data-color="#ffffff" style="background-color: #ffffff; color: inherit">gkajsgka</mark></span> sgkja `sgka sgkjas`
### Message Generation
```javascript
Message generation via FleetMessages.idl is done using dds_idlc from CycloneDDS. For onvenience , the generated mesasges and files has been done offline and committed into the code base. They can be found here.
```
```javascript
./dds_idlc -allstructs FleetMessages.idl
```
### Client in ROS 1
Start a new ROS 1 workspace, and pull in the necessary repositories,
```javascript
mkdir -p ~/ff_ros1_ws/src
cd ~/ff_ros1_ws/src
git clone https://github.com/open-rmf/free_fleet -b main
git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.7.x
```
Install all the dependencies through `rosdep`,
```javascript
cd ~/ff_ros1_ws
rosdep install --from-paths src --ignore-src --rosdistro noetic -yr
```
Source ROS 1 and build,
```javascript
cd ~/ff_ros1_ws
source /opt/ros/noetic/setup.bash
colcon build
```
### Client and Server in ROS 2
Start a new ROS 2 workspace, and pull in the necessary repositories,
```javascript
mkdir -p ~/ff_ros2_ws/src
cd ~/ff_ros2_ws/src
git clone https://github.com/open-rmf/free_fleet -b main
git clone https://github.com/open-rmf/rmf_internal_msgs -b main
```
Install all the dependencies through `rosdep`,
```javascript
cd ~/ff_ros2_ws
rosdep install --from-paths src --ignore-src --rosdistro galactic -yr
```
Source ROS 2 and build,
```javascript
cd ~/ff_ros2_ws
source /opt/ros/galactic/setup.bash
colcon build
# Optionally use the command below to only build the relevant packages,
# colcon build --packages-up-to \
# free_fleet ff_examples_ros2 free_fleet_server_ros2 free_fleet_client_ros2
```
## Examples
### Barebones Example
This example emulates a running ROS 1 robot,
```javascript
source ~/ff_ros1_ws/install/setup.bash
roslaunch ff_examples_ros1 fake_client.launch
```
This example emulates a running ROS 2 robot,
```javascript
source ~/ff_ros2_ws/install/setup.bash
ros2 launch ff_examples_ros2 fake_client.launch.xml
```
The clients will then start subscribing to all the necessary topics, and start publishing robot states over DDS to the server. Start the server using
```javascript
source ~/ff_ros2_ws/install/setup.bash
ros2 launch ff_examples_ros2 fake_server.launch.xml
# Verify that the server registers the fake clients
# [INFO] [1636706176.184055177] [fake_server_node]: registered a new robot: [fake_ros1_robot]
# [INFO] [1636706176.184055177] [fake_server_node]: registered a new robot: [fake_ros2_robot]
```
ROS 2 messages over the `/fleet_states` topic can also be used to verify that the clients are registered,
```javascript
source ~/ff_ros2_ws/install/setup.bash
ros2 topic echo /fleet_states
```
Next, to send requests and commands, check out the example scripts and their uses [<u>here</u>](https://github.com/open-rmf/free_fleet#commands-and-requests).
<div data-type="columns" class="layout-two-column">
<div data-position="left" data-type="column"><p></p></div><div data-position="" data-type="column"><p></p></div>
</div>