Проблема: когда я запускаю сценарий Python, робот не двигается. Однако, когда я проверяю тему с помощью echo /cmd_vel темы ros2, я ясно вижу, что мои сообщения публикуются. Кроме того, информация о теме ros2 --verbose подтверждает, что мой издатель и подписчик робота соединены (соответствующее качество обслуживания).
Как ни странно, если я вручную публикую команду через терминал, робот движется отлично: ros2 theme pub /cmd_vel Geometry_msgs/msg/Twist "{linear: {x: 0.10}}" -r 10
Клиент Flutter для настройки и кода (robot_connection_page.dart) отправляет команду JSON через WebSocket.
Код: Выделить всё
Future _testConnection() async {
// ... connection logic ...
debugPrint('Connected! Sending forward for 3 seconds...');
// Send forward commands
for (int i = 0; i < 30; i++) {
channel.sink.add(jsonEncode({'movement': 'forward'}));
await Future.delayed(const Duration(milliseconds: 100));
}
// ...
}
Код: Выделить всё
class TurtleBotController(Node):
def __init__(self):
super().__init__('turtlebot_controller')
# QoS is set to RELIABLE to match TurtleBot3 default
qos = QoSProfile(
reliability=ReliabilityPolicy.RELIABLE,
history=HistoryPolicy.KEEP_LAST,
depth=10
)
self.publisher_ = self.create_publisher(Twist, '/cmd_vel', qos)
def move_forward(self):
msg = Twist()
msg.linear.x = 0.25 #
Подробнее здесь: [url]https://stackoverflow.com/questions/79843116/ros-2-turtlebot3-ignores-cmd-vel-from-python-node-but-works-with-cli[/url]
Мобильная версия