.bottom-leds > .minicolors-theme-default.minicolors { margin: 5px 0; }
.top-leds > .minicolors-theme-default.minicolors { margin-top: 70px; }
.wt-icon {background: url('assets/images/wt_top.png'); background-size: cover; background-size: 100%; background-repeat: no-repeat; background-position: center; height: 260px;}
+ .cmd_vel_circle {
+ height: 250px;
+ width: 250px;
+ background-color: #bbb;
+ border-radius: 50%;
+ display: inline-block;
+ }
</style>
<script type="text/javascript">
var sensorTopic = new ROSLIB.Topic({ros: ros, name: '/sensors', messageType: 'wild_thumper/Sensor'});
var batteryTopic = new ROSLIB.Topic({ros: ros, name: '/battery', messageType: 'sensor_msgs/BatteryState'});
var ledStripeTopic = new ROSLIB.Topic({ros: ros, name: '/led_stripe', messageType: 'wild_thumper/LedStripe'});
+ var cmdVelTopic = new ROSLIB.Topic({ros: ros, name: '/teleop/cmd_vel', messageType: 'geometry_msgs/Twist'});
poseTopic.subscribe(function(message) {
var now = new Date();
// Initialize the teleop.
teleop = new KEYBOARDTELEOP.Teleop({
ros : ros,
- topic : '/cmd_vel'
+ topic : '/teleop/cmd_vel'
});
// Create a UI slider using JQuery UI.
ledStripeTopic.publish(msg);
}
});
+
+ function setSpeed(trans, rot) {
+ var msg = new ROSLIB.Message({
+ linear: {
+ x : trans,
+ y : 0,
+ z : 0
+ },
+ angular: {
+ x : 0,
+ y : 0,
+ z : rot
+ },
+ });
+ cmdVelTopic.publish(msg);
+ }
+
+ $('.cmd_vel_circle')
+ .bind('mousedown touchstart', function(e) {
+ isDragging = true;
+ })
+ .bind('mouseup touchend mouseleave', function(e) {
+ isDragging = false;
+ setSpeed(0, 0);
+ })
+ .bind('mousemove touchmove', function(e) {
+ if (isDragging) {
+ // absolute click position
+ var X,Y;
+ if (e.originalEvent.touches) {
+ X = e.originalEvent.touches[0].pageX;
+ Y = e.originalEvent.touches[0].pageY;
+ } else {
+ X = e.pageX;
+ Y = e.pageY;
+ }
+ // relative click position
+ var Xrel = X - this.offsetLeft - $(this).width()/2;
+ var Yrel = Y - this.offsetTop - $(this).height()/2;
+ // scale to -1..+1
+ var trans = -Yrel / ($(this).height()/2);
+ var rot = -Xrel / ($(this).width()/2);
+ setSpeed(trans, rot*3);
+ }
+ });
}
</script>
<title>Wild Thumper control</title>
<li class="nav-item">
<a class="nav-link" href="#lights" data-toggle="tab" role="tab">Lights</a>
</li>
+ <li class="nav-item">
+ <a class="nav-link" href="#drive" data-toggle="tab" role="tab">Drive</a>
+ </li>
</ul>
</nav>
<div class="tab-content">
<div class="row">
<div class="col-md-2 offset-md-1" >
<div class="d-flex justify-content-center">
- <input class="led_color" type="hidden" name="[0]"/>
- <input class="led_color" type="hidden" name="[1]"/>
- <input class="led_color" type="hidden" name="[2]"/>
- <input class="led_color" type="hidden" name="[3]"/>
+ <input class="led_color" type="hidden" name="[0]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[1]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[2]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[3]" readonly="true"/>
</div>
<div>
<div class="row wt-icon">
<div class="col-md-2 align-self-center bottom-leds">
- <input class="led_color" type="hidden" name="[14]"/>
- <input class="led_color" type="hidden" name="[15]"/>
+ <input class="led_color" type="hidden" name="[14]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[15]" readonly="true"/>
</div>
<div class="col-md-8">
<div class="d-flex justify-content-center top-leds">
- <input class="led_color" type="hidden" name="[7]"/>
- <input class="led_color" type="hidden" name="[6]"/>
- <input class="led_color" type="hidden" name="[5]"/>
- <input class="led_color" type="hidden" name="[4]"/>
+ <input class="led_color" type="hidden" name="[7]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[6]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[5]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[4]" readonly="true"/>
</div>
</div>
<div class="col-md-2 align-self-center bottom-leds">
- <input class="led_color" type="hidden" name="[13]"/>
- <input class="led_color" type="hidden" name="[12]"/>
+ <input class="led_color" type="hidden" name="[13]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[12]" readonly="true"/>
</div>
</div>
</div>
<div class="d-flex justify-content-center">
- <input class="led_color" type="hidden" name="[8]"/>
- <input class="led_color" type="hidden" name="[9]"/>
- <input class="led_color" type="hidden" name="[10]"/>
- <input class="led_color" type="hidden" name="[11]"/>
+ <input class="led_color" type="hidden" name="[8]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[9]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[10]" readonly="true"/>
+ <input class="led_color" type="hidden" name="[11]" readonly="true"/>
</div>
</div>
<div class="col-md-3 offset-md-1">
<div class="form-group row">
<label class="col-sm-2 col-form-label">Alle</label>
<div class="col-sm-10">
- <input class="led_color" type="text" name="[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]" class="form-control"/>
+ <input class="led_color" type="text" name="[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]" class="form-control" readonly="true"/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Front</label>
<div class="col-sm-10">
- <input class="led_color" type="text" name="[0, 1, 2, 3]" class="form-control"/>
+ <input class="led_color" type="text" name="[0, 1, 2, 3]" class="form-control" readonly="true"/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Aft</label>
<div class="col-sm-10">
- <input class="led_color" type="text" name="[8, 9, 10, 11]" class="form-control"/>
+ <input class="led_color" type="text" name="[8, 9, 10, 11]" class="form-control readonly="true""/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Top</label>
<div class="col-sm-10">
- <input class="led_color" type="text" name="[4, 5, 6, 7]" class="form-control"/>
+ <input class="led_color" type="text" name="[4, 5, 6, 7]" class="form-control" readonly="true"/>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 col-form-label">Bottom</label>
<div class="col-sm-10">
- <input class="led_color" type="text" name="[12, 13, 14, 15]" class="form-control"/>
+ <input class="led_color" type="text" name="[12, 13, 14, 15]" class="form-control" readonly="true"/>
</div>
</div>
</div>
</div>
</div>
+ <div id="drive" class="tab-pane" role="tabpanel">
+ <div class="cmd_vel_circle"></div>
+ </div>
</div>
</div>
<script src="assets/javascripts/jquery-3.3.1.min.js"></script>