ROS 2 package for receiving CRSF (RC channels values) packets over serial port (UART).
CRSF protocol packet format description.
rc/channels- received rc channels valuesrc/link- connection statistics information
Install CppLinuxSerial before:
git clone https://github.com/gbmhunter/CppLinuxSerial.git
cd CppLinuxSerial
mkdir build/
cd build
cmake ..
make
sudo make install
cd ../..Let's assume that your ros 2 workspace localized at ~/row2_ws/.
cd ~/row2_ws/src
# Types dependency package:
git clone https://github.com/AndreyTulyakov/ros2_crsf_receiver.gitcd ~/row2_ws
colcon build --packages-select crsf_receiver_msg
colcon build --packages-select crsf_receiversource ~/row2_ws/install/setup.bash- Serial device name:
device, default is/dev/ttyUSB0 - Baud rate:
baud_rate, default is420000 - Enable / Disable link statistics info:
link_stats, default isfalse - Receiver rate (hz):
receiver_rate, default is100
# Run Node with default parameters
ros2 run crsf_receiver crsf_receiver_node
# Or setup and run Node with custom parameters values:
ros2 run crsf_receiver crsf_receiver_node --ros-args -p "device:=/dev/serial0" -p baud_rate:=420000 -p link_stats:=trueAfter correct setup and running without errors you can check topics:
# Check channels values
ros2 topic echo /rc/channels
# Check link statisics
ros2 topic echo /rc/link
# Check receiver rate
ros2 topic hz /rc/channelsuplink_rssi_ant1- ( dBm * -1 )uplink_rssi_ant2- ( dBm * -1 )uplink_status- Package success rate / Link quality ( % )uplink_snr- ( db )active_antenna- Diversity active antenna ( enum ant. 1 = 0, ant. 2 )rf_mode- ( enum 4fps = 0 , 50fps, 150hz)uplink_tx_power- ( enum 0mW = 0, 10mW, 25 mW, 100 mW, 500 mW, 1000 mW, 2000mW )downlink_rssi- ( dBm * -1 )downlink_status- Downlink package success rate / Link quality ( % )downlink_snr- ( db )