[ROS] keyboardteleopjs
포스트
취소

[ROS] keyboardteleopjs

  1. 프로젝트에서의 사용 예시
    • JavaScript
    • Html
  2. 코드 리뷰
    • JavaScript
    • Html

1. keyboardteleop.js

teleoperation

원격 조작을 의미한다. 멀리 떨어진 시스템이나 기계의 작동

2. keyboard teleoperation

ROS를 처음 설치하고 접하는 turtlesim.

우리는 이미 turtlesim의 거북이를 조종하기 위해 사용해본적이 있다.

키보드로 원격 조작을 하는 라이브러리였다.

이와 비슷하게, 키보드로 원격 조작을 하는 라이브러리의 종류는 무수히 많다.

나는 그 중 roslibjs, rosbridge 등을 제작한 robot webtools의 keyboardteleop.js를 사용해보았다.

코드

keyboardteleop.js 최근 버전

전체 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
var KEYBOARDTELEOP = KEYBOARDTELEOP || { REVISION: "0.3.0" };
(KEYBOARDTELEOP.Teleop = function (a) {
  var b = this;
  a = a || {};
  var c = a.ros,
    d = a.topic || "/cmd_vel",
    e = a.throttle || 1;
  this.scale = 1;
  var f = 0,
    g = 0,
    h = 0,
    i = new ROSLIB.Topic({
      ros: c,
      name: d,
      messageType: "geometry_msgs/Twist",
    }),
    j = function (a, c) {
      var d = f,
        j = g,
        k = h,
        l = !0,
        m = 0;
      switch ((c === !0 && (m = e * b.scale), a)) {
        case 65:
          h = 1 * m;
          break;
        case 87:
          f = 0.5 * m;
          break;
        case 68:
          h = -1 * m;
          break;
        case 83:
          f = -0.5 * m;
          break;
        case 69:
          g = -0.5 * m;
          break;
        case 81:
          g = 0.5 * m;
          break;
        default:
          l = !1;
      }
      if (l === !0) {
        var n = new ROSLIB.Message({
          angular: { x: 0, y: 0, z: h },
          linear: { x: f, y: g, z: h },
        });
        i.publish(n), (d !== f || j !== g || k !== h) && b.emit("change", n);
      }
    },
    k = document.getElementsByTagName("body")[0];
  k.addEventListener(
    "keydown",
    function (a) {
      j(a.keyCode, !0);
    },
    !1
  ),
    k.addEventListener(
      "keyup",
      function (a) {
        j(a.keyCode, !1);
      },
      !1
    );
}),
  (KEYBOARDTELEOP.Teleop.prototype.__proto__ = EventEmitter2.prototype);

코드 리뷰


참고

ros 공식 wiki

Robotwebtools (roslibjs 등 제공)

roslibjs 공식 wiki

keyboardteleopjs 공식 wiki

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.