Thanks to folks here, I have a simple rover running with Ardurover SITL in ROS2 (humble/harmonic). I have a working ELRS link coming in on a serial port that I’d like to route to the SITL so I can drive around in Manual mode. It looks like the port is opened, but when I look at the RC In window, nothing moves when I wiggle sticks.
My params look like this:
ATC_STR_RAT_FF 0.2
CRUISE_SPEED 3
CRUISE_THROTTLE 75
SERVO1_FUNCTION 73
SERVO3_FUNCTION 74
WP_SPEED 3
SERIAL1_PROTOCOL 23
SERIAL1_BAUD 420
RSSI_TYPE 3
My actual pixhawk listens on TELEM1, so I chose SERIAL1 and chose 23 for Crossfire protocol. I chose 420 as 420,000baud worked nicely when I was parsing crsf packets for use with ros control (using the husarion_ugv_crsf_teleop package)
It seems like the SITL is opening the port:
[usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000 -4] UART connection /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000
[usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000 -4] Opened /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0
I’m launching the SITL like so:
sitl_dds = IncludeLaunchDescription(
PythonLaunchDescriptionSource(
[
PathJoinSubstitution(
[
FindPackageShare("ardupilot_sitl"),
"launch",
"sitl_dds_udp.launch.py",
]
),
]
),
launch_arguments={
"transport": "udp4",
"port": "2019",
"command": "ardurover",
"synthetic_clock": "True",
"wipe": "False",
"model": "json",
"speedup": "1",
"slave": "0",
"serial1": "uart:/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A5069RR4-if00-port0:420000",
"instance": "0",
"defaults": os.path.join(
pkg_roverfun_bringup,
"config",
"rover-skid.parm",
)
+ ","
+ os.path.join(
pkg_ardupilot_sitl,
"config",
"default_params",
"dds_udp.parm",
),
"sim_address": "127.0.0.1",
"master": "tcp:127.0.0.1:5760",
"sitl": "127.0.0.1:5501",
}.items(),
)
Am I going about this the right way? Thoughts on what to try next?