Files
clover/docs/ru/javascript.md
Oleg Kalachev bcb7351a90 roswww_static: infrastructure for web-based Clover plugins (#230)
* Package for generating static web sites for ROS

* rosstatic: add CMakeLists.txt

* rosstatic: utilize rospkg, store static directory in ROS_HOME

* rosstatic: default_package param

* rosstatic: fix URLs in docs

* clover.launch: make clover the default package for www

* Unused import

* Rename rosstatic to roswww_static

* Fixes
2020-06-13 02:08:00 +03:00

2.8 KiB
Raw Blame History

Работа с ROS из браузера

С помощью библиотеки roslibjs возможна работа со всеми ресурсами ROS (топики, сервисы, параметры) из JavaScript-кода внутри браузера, что позволяет создавать различные интерактивные браузерные приложения для коптера.

Все необходимое для работы с roslibjs предустановлено и настроено на образе для RPi для Клевера.

Пример

Пример HTML-кода страницы, работающей с roslib.js:

<html>
	<script src="js/roslib.js"></script>
	<script type="text/javascript">
		// Establish roslibjs connection
		var ros = new ROSLIB.Ros({ url: 'ws://' + location.hostname + ':9090' });

		ros.on('connection', function () {
			// Connection callback
			alert('Connected');
		});
		
		// Declare get_telemetry service client
		var getTelemetry = new ROSLIB.Service({ ros: ros, name : '/get_telemetry', serviceType : 'clover/GetTelemetry' });

		// Call get_telemetry
		getTelemetry.callService(new ROSLIB.ServiceRequest({ frame_id: 'map' }), function(result) {
			// Service respond callback
			alert('Telemetry: ' + JSON.stringify(result));
		});

		// Subscribe to `/mavros/state` topic
		var stateSub = new ROSLIB.Topic({ ros : ros, name : '/mavros/state', messageType : 'mavros_msgs/State' });
		stateSub.subscribe(function(msg) {
			// Topic message callback
			console.log('State: ', msg);
		});
	</script>
</html>

Взлет, посадка и все остальные операции могут быть осуществлены аналогичным образом.

Страница должна быть помещена в каталог /home/pi/catkin_ws/src/clover/clover/www/. После этого она станет доступна по адресу http://192.168.11.1/clover/<имя_страницы>.html. При открытии страницы браузер должен показать окно с телеметрией дрона, а также постоянно выводить состояние полетного контроллера в консоль.

Более подробную информацию смотрите в туториале по roslibjs.

Браузерная GCS

Смотрите также пример реализации упрощенной браузерной наземной станции (GCS) на Клевере по адресу http://192.168.11.1/clover/gcs.html.