[USB to TTL]micrortps_agent gets stuck when micrortps_client is running

I am using a jetson Xavier NX and a holybro pixhawk6c together.
The jetpack version is 5.1.1. The operating system is ubuntu 20.04.
The version of the firmware is v1.13.3. The pixhawk firmware is px4_fmu-v6c_rtps.
I am trying to use ros2 with micrortps_agent and micrortps_client.

I set parameter “RTPS_CONFIG” to “TELEM3”, “SER_TEL3_BAUD” to 1000000 8N1.

On the jetson, I use “micrortps_agent -d /dev/ttyUSB0 -b 1000000” to start the micrortps_agent.

Everything is working when I was using UART connection directly on the jetson.
However, after changing the carrier board from default one to Y-C6, I need to use USB to TTL chip to deal with the micrortps bridge.

I am using FT232RL FTDI chip for the micrortps communication. It is connected as a USB device on the jetson.

After using it, I found that the micrortps_agent will get stuck when I am starting it with the started micrortps_client on the pixhawk.

I means that, I cannot start the micrortps_agent successfully when the pixhawk is sending data to the FTDI chip.

The micrortps_agent will say “[ micrortps_transport ] UART transport: Flush” when it gets stuck. When the micrortps_agent is started successfully, it will say “[ micrortps_transport ] UART transport: No Flush”


If I stop the micrortps_client on the pixhawk first and start it after the micrortps_agent is fully started, the micrortps communication will work well.

I believed many people may use USB to TTL chip together with pixhawk because many microcontroller are not supporting UART.

I want to know if somebody is successful to run micrortps with ros2 and USB to TTL chip? If yes, can I get some recommendation on the USB to TTL chip? I think that I am not using a suitable chip for the micrortps communication.

Thank you for your help!