Repository Summary
Description | Easy to use framework for ROS2 FPGA-based hardware acceleration; Supports Pub/Sub communication, Actions and Services and costum ROS Messages |
Checkout URI | https://github.com/lien182/reconros.git |
VCS Type | git |
VCS Version | master |
Last Updated | 2023-08-25 |
Dev Status | UNKNOWN |
Released | UNRELEASED |
Tags | communication hardware ros2 fpga-board ros2-fpga |
Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
Name | Version |
---|---|
sorter_msgs | 0.0.0 |
sorter_client | 0.0.0 |
README
ReconROS
Easy to use framework for ROS2 FPGA-based hardware acceleration
based on ReconOS
Prepare the FPGA board
You have to install ROS2 and ReconOS on your FPGA board. For getting started faster, there are preinstalled images:
The easiest way to burn the image on the sd card would be to use balena etcher. You can also use linux dd tool eg e.g.
dd if=/image.img of=/dev/<<yoursdcard>> bs=4M
you will also need an ethernet cable, and would need to configure your terminal to have a local ip in the range of 192.168.2.xx(Netmask 255.255.255.0) except 99; This is the ip of pynq board.
Configure the board to boot using SD card, using the jumper J4.
configure a serial terminal program. The COM port usually will be configured as
/dev/ttyUSB1 -serial -sercfg 115200,8,n,1,N
If everything works fine, you will see the device boot, and it will then automatically log you in as xilinx.
Initialize repository
Since the generation of the hardware-mapped topics rely on raw message definition files, the mandatory submodules have to be updated after clone.
$ git submodule init && git submodule update
Knows Issues
The naming of standard message types is not consistant for ROS 2. Therefore, the naming of the message definition file must be changed for some cases (e.g. for the ReconROS Turtlebot 3 example, the UINT64 definition file (UInt64.msg
to U_Int64.msg
))
Installing
ReconROS uses an emulated docker container for the compilation of the application and building costum ROS message packages.
The first step for building ReconROS application is sourcing the environment by using the following command:
sudo apt install python3-colcon-common-extensions
This step is not only necessary for the installation process but also before compiling an application.
At the first time using ReconROS, the following command installs needed packages and builds the docker container for cross compiling.
$ bash tools/install.sh
Additionaly you might have to source
$ source /opt/ros/dashing/setup.bash
$ source /opt/Xilinx/Vivado/2017.1/settings64.sh
$ source <<ReconROSdir>>/tools/settings.sh
also, there might be some packages missing, you might have to enter the following command
$ sudo apt-get install g++-multilib
Build and run the ROS demo
There are three sort demos available. The demo used in the following are based on pub/sub communication. The other two demos use ROS2 actions and services for the client server communication. Both demos require a preceding command for building the costum ROS2 message package.
$ rdk export_msg && rdk build_msg
ROS sort demo
ROS sort demo is based on pub/sub communication, and follows the same procedure as ROS sort demo services to build and run server and client applications. After client application is build, it will continually send unsorted data, and will receive sorted data back.
ROS sort demo services
The other two demos use ROS2 actions and services for the client server communication. Both demos require a preceding command for building the custom ROS2 message package.
Navigate to /demos/ros_sort_demo_services/server_app/ and enter following commands
$ rdk export_msg && rdk build_msg
First Step: Server Application
Building Server Application
Navigate to the server demo folder. It contains the build.cfg file which is used by ReconROS. Before you can compile the application, you have to export the project:
File truncated at 100 lines see the full file