Skip to content
Snippets Groups Projects
Commit 079d892a authored by Stevedan Ogochukwu Omodolor's avatar Stevedan Ogochukwu Omodolor
Browse files

converted data to numpy, not plottedt yet

parent 25948379
No related branches found
No related tags found
No related merge requests found
...@@ -14,8 +14,10 @@ TODO ...@@ -14,8 +14,10 @@ TODO
implement modules implement modules
- [X] send command, take off, land - [X] send command, take off, land
- [X] send command should include conversion to velocity - [X] send command should include conversion to velocity
. [ ] test omniwheels node - [X] test omniwheels node
- [ ] Implement swam controller - [X] Implement swam controller
- Dependencies https://github.com/ethz-asl/libnabo.git
It uses this ibrary to implement a k nearest negibour search
How to execute the plot result
python plot_results.py ../results/experiment_1_trianglular_formation_crazyflie_1_logdata.bag crazyflie_1 3
import rosbag import rosbag
import sys import sys
import numpy as np
from matplotlib import pyplot as plt
if(len(sys.argv) != 3): if(len(sys.argv) != 4):
print ("invalid number of arguments: " + str(len(sys.argv))) print ("invalid number of arguments: " + str(len(sys.argv)))
print ("should be 2: 'plot_results.py' and 'bagName'") print ("should be 2: 'plot_results.py' and 'bagName'")
print ("or just 1 : 'plot_results.py'") print ("or just 1 : 'plot_results.py'")
...@@ -10,9 +12,60 @@ if(len(sys.argv) != 3): ...@@ -10,9 +12,60 @@ if(len(sys.argv) != 3):
else: else:
bag_name = str(sys.argv[1]); bag_name = str(sys.argv[1]);
robot_name = str(sys.argv[2]) robot_name = str(sys.argv[2])
n_robots_logged = int(sys.argv[3])
print(n_robots_logged)
print("Plotting result from robot: " + robot_name + ", bag_name " + bag_name) print("Plotting result from robot: " + robot_name + ", bag_name " + bag_name)
bag = rosbag.Bag(bag_name) bag = rosbag.Bag(bag_name)
topic_name = robot_name+"result" topic_name = robot_name+"result"
pose_data = []
vel_data = []
command_pose_data = []
command_twist_data = []
input_data = []
input_formation_data = []
input_orientation_data = []
input_navigation_data = []
input_obstacle_data = []
input_integration_data = []
pose_row_ = [0] * n_robots_logged*2;
twist_row_ = [0] * n_robots_logged*2;
# converting data to numpy for easy plotting
for topics, msg, t in bag.read_messages(topics =[topic_name]): for topics, msg, t in bag.read_messages(topics =[topic_name]):
print(msg) for ind,pose in enumerate(msg.current_pose):
pose_row_[ind*2] = pose.position.x
pose_row_[ind*2+1] = pose.position.y
twist_row_[ind*2] = msg.current_twist[ind].linear.x
twist_row_[ind*2+1] = msg.current_twist[ind].linear.y
pose_data.append(pose_row_);
vel_data.append(twist_row_);
command_pose_data.append([msg.command_pose.x, msg.command_pose.y, msg.command_pose.theta]);
command_twist_data.append([msg.command_twist.linear.x, msg.command_twist.linear.y]);
input_data.append([msg.input.x, msg.input.y])
input_formation_data.append([msg.input_formation.x, msg.input_formation.y])
input_orientation_data.append([msg.input_orientation.x, msg.input_orientation.y])
input_navigation_data.append([msg.input_navigation.x, msg.input_navigation.y])
input_obstacle_data.append([msg.input_obstacle.x, msg.input_obstacle.y])
input_integration_data.append([msg.input_integration.x, msg.input_integration.y])
bag.close() bag.close()
pose_data_np = np.array(pose_data);
vel_data_np = np.array(vel_data);
x_list = range(0,n_robots_logged*2,2);
y_list = range(1,n_robots_logged*2,2);
x_list_np = np.array(pose_data_np[:,x_list]);
y_list_np = np.array(pose_data_np[:,y_list]);
cent_np = np.vstack((np.mean(x_list_np, axis=1), np.mean(y_list_np,axis =1))).transpose()
command_pose_np = np.array(command_pose_data);
command_twist_np = np.array(command_twist_data);
input_data_np = np.array(input_data);
input_formation_data_np = np.array(input_formation_data);
input_orientation_data_np = np.array(input_orientation_data);
input_navigation_data_np = np.array(input_navigation_data);
input_obstacle_data_np = np.array(input_obstacle_data);
input_integration_data_np = np.array(input_integration_data);
# Start plotting
...@@ -353,7 +353,7 @@ int main(int argc, char **argv) { ...@@ -353,7 +353,7 @@ int main(int argc, char **argv) {
logdata->command_twist.linear.y = current_waypoint.p(1); logdata->command_twist.linear.y = current_waypoint.p(1);
logdata->input.x = input(0,0); logdata->input.x = input(0,0);
logdata->input.y = input(1,0); logdata->input.y = input(1,0);
logdata->input.x = input(0,1); logdata->input_formation.x = input(0,1);
logdata->input_formation.y = input(1,1); logdata->input_formation.y = input(1,1);
logdata->input_orientation.x = input(0,2); logdata->input_orientation.x = input(0,2);
logdata->input_orientation.y = input(1,2); logdata->input_orientation.y = input(1,2);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment