Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 0 additions & 12 deletions .idea/runConfigurations.xml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.schneewittchen.rosandroid.widgets.button;

import android.util.Log;

import com.schneewittchen.rosandroid.model.entities.widgets.BaseEntity;
import com.schneewittchen.rosandroid.model.repositories.rosRepo.node.BaseData;

Expand Down Expand Up @@ -28,6 +30,7 @@ public ButtonData(boolean pressed) {

@Override
public Message toRosMessage(Publisher<Message> publisher, BaseEntity widget) {
Log.d("name", widget.name);
std_msgs.Bool message = (Bool) publisher.newMessage();
message.setData(pressed);
return message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import android.util.AttributeSet;
import android.view.MotionEvent;



import com.schneewittchen.rosandroid.R;
import com.schneewittchen.rosandroid.ui.views.widgets.PublisherWidgetView;

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
package com.schneewittchen.rosandroid.widgets.directional;

import com.schneewittchen.rosandroid.model.entities.widgets.BaseEntity;
import com.schneewittchen.rosandroid.model.repositories.rosRepo.node.BaseData;
import com.schneewittchen.rosandroid.widgets.joystick.JoystickEntity;

import org.ros.internal.message.Message;
import org.ros.node.topic.Publisher;

import geometry_msgs.Twist;
import geometry_msgs.Vector3;

import android.util.Log;


/**
* TODO: Description
*
* @author Nico Studt
* @version 1.0.0
* @created on 17.03.20
* @updated on 17.03.20
* @modified by
*/
public class DirectionalData extends BaseData {

public static final String TAG = DirectionalData.class.getSimpleName();

private double getSpeed(String sense, double value) {
if (sense.equals("Positive") && value >= 0) {
return value;
} else if (sense.equals("Positive") && value < 0) {
return -value;
} else if (value < 0) {
return value;
} else {
return -value;
}
}

@Override
public Message toRosMessage(Publisher<Message> publisher, BaseEntity widget) {

DirectionalEntity dirWidget = (DirectionalEntity) widget;

Log.d("name", dirWidget.name);
Log.d("topic", dirWidget.topic.name);
Log.d("position", Integer.toString(dirWidget.posX));
Log.d("axis", dirWidget.axis);
Log.d("dir", dirWidget.direction);
Log.d("sense", dirWidget.sense);

geometry_msgs.Twist message = (Twist) publisher.newMessage();
Vector3 dirVector;

double speed = 0.3;
if (dirWidget.direction.equals(("Linear"))) {
dirVector = message.getLinear();
} else {
dirVector = message.getAngular();
}
if (dirWidget.speed > 0) {
speed = dirWidget.speed;
}
String sense = dirWidget.sense;

switch (dirWidget.axis) {
case "X":
dirVector.setX(getSpeed(sense, speed));
break;
case "Y":
dirVector.setY(getSpeed(sense, speed));
break;
case "Z":
dirVector.setZ(getSpeed(sense, speed));
break;
}

return message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
package com.schneewittchen.rosandroid.widgets.directional;

import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

import com.schneewittchen.rosandroid.R;
import com.schneewittchen.rosandroid.model.entities.widgets.BaseEntity;
import com.schneewittchen.rosandroid.ui.views.details.PublisherWidgetViewHolder;
import com.schneewittchen.rosandroid.utility.Utils;
import com.schneewittchen.rosandroid.widgets.button.ButtonEntity;

import java.util.Collections;
import java.util.List;
import java.util.Locale;

import geometry_msgs.Twist;
import std_msgs.Bool;


/**
* TODO: Description
*
* @author Nico Studt
* @version 1.0.2
* @created on 13.02.20
* @updated on 20.05.20
* @modified by Nico Studt
* @updated on 05.11.2020
* @modified by Nico Studt
*/
public class DirectionalDetailVH extends PublisherWidgetViewHolder {

private EditText textText;
private EditText speedText;
private Spinner rotationSpinner;
private Spinner axisSpinner;
private Spinner senseSpinner;
private Spinner directionSpinner;
private ArrayAdapter<CharSequence> rotationAdapter;
private ArrayAdapter<CharSequence> axisAdapter;
private ArrayAdapter<CharSequence> senseAdapter;
private ArrayAdapter<CharSequence> directionAdapter;


@Override
public void initView(View view) {
textText = view.findViewById(R.id.btnTextTypeText);
speedText = view.findViewById(R.id.speedTextTypeText);

rotationSpinner = view.findViewById(R.id.btnTextRotation);
axisSpinner = view.findViewById(R.id.btnTextAxis);
directionSpinner = view.findViewById(R.id.btnTextDirection);
senseSpinner = view.findViewById(R.id.btnTextSense);

// Init spinners
rotationAdapter = ArrayAdapter.createFromResource(view.getContext(),
R.array.button_rotation, android.R.layout.simple_spinner_dropdown_item);
rotationSpinner.setAdapter(rotationAdapter);

axisAdapter = ArrayAdapter.createFromResource(view.getContext(),
R.array.directional_twist_axis, android.R.layout.simple_spinner_dropdown_item);
axisSpinner.setAdapter(axisAdapter);

directionAdapter = ArrayAdapter.createFromResource(view.getContext(),
R.array.directional_twist_dir, android.R.layout.simple_spinner_dropdown_item);
directionSpinner.setAdapter(directionAdapter);

senseAdapter = ArrayAdapter.createFromResource(view.getContext(),
R.array.directional_twist_sense, android.R.layout.simple_spinner_dropdown_item);
senseSpinner.setAdapter(senseAdapter);
}

@Override
protected void bindEntity(BaseEntity entity) {
DirectionalEntity buttonEntity = (DirectionalEntity) entity;

textText.setText(buttonEntity.text);
speedText.setText(String.valueOf(buttonEntity.speed));

String degrees = Utils.numberToDegrees(buttonEntity.rotation);

rotationSpinner.setSelection(rotationAdapter.getPosition(degrees));
axisSpinner.setSelection(axisAdapter.getPosition(buttonEntity.axis));
directionSpinner.setSelection(directionAdapter.getPosition(buttonEntity.direction));
senseSpinner.setSelection(senseAdapter.getPosition(buttonEntity.sense));
}

@Override
protected void updateEntity(BaseEntity entity) {
DirectionalEntity buttonEntity = (DirectionalEntity)entity;

buttonEntity.text = textText.getText().toString();
if (speedText.getText().length() > 0 ) {
buttonEntity.speed = Double.parseDouble(speedText.getText().toString());
}
String degrees = rotationSpinner.getSelectedItem().toString();
buttonEntity.rotation = Utils.degreesToNumber(degrees);
buttonEntity.axis = axisSpinner.getSelectedItem().toString();
buttonEntity.direction = directionSpinner.getSelectedItem().toString();
buttonEntity.sense = senseSpinner.getSelectedItem().toString();
}

@Override
public List<String> getTopicTypes() {
return Collections.singletonList(Bool._TYPE);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.schneewittchen.rosandroid.widgets.directional;

import com.schneewittchen.rosandroid.model.entities.widgets.PublisherWidgetEntity;
import com.schneewittchen.rosandroid.model.repositories.rosRepo.message.Topic;

import geometry_msgs.Twist;


/**
* TODO: Description
*
* @author Nico Studt
* @version 1.1.1
* @created on 31.01.20
* @updated on 10.05.20
* @modified by Nico Studt
*/
public class DirectionalEntity extends PublisherWidgetEntity {

public String text;
public int rotation;
public String axis;
public String direction;
public String sense;
public double speed;

public DirectionalEntity() {
this.width = 2;
this.height = 2;
this.topic = new Topic("cmd_vel", Twist._TYPE);
this.publishRate = 20f;
this.text = "Move on";
this.rotation = 0;
this.immediatePublish = true;
this.axis = "X";
this.direction = "Linear";
this.sense = "Positive";
this.speed = 0.3;
}

}
Loading