diff --git a/mpi_sim/components/social_force_navigation.py b/mpi_sim/components/social_force_navigation.py
index e40c842f0ccd25fd1af49c8fa69c7e7a3f9339a0..2023c12c0b9eab008a67ac794124fa544a0d5736 100644
--- a/mpi_sim/components/social_force_navigation.py
+++ b/mpi_sim/components/social_force_navigation.py
@@ -63,7 +63,6 @@ class SocialForceNavigation(GeneratorComponent):
 
         # print('stats : ', self.box2d_body.inertia, self.box2d_body.awake, self.box2d_body.active, self.box2d_body.transform)
         # print(self.box2d_body.localCenter, self.box2d_body.worldCenter, self.box2d_body.linearVelocity, self.box2d_body.angularVelocity)
-
         # if goal position is given use it to update the human
         if self.state.goal_position is not None:
 
@@ -93,7 +92,6 @@ class SocialForceNavigation(GeneratorComponent):
             next_orientation = self.object.orientation + f_orientation * self.config.step_length_coeff * self.simulation.step_length
 
             self.object.orientation = next_orientation
-
         # TODO: include manual control if wanted
 
         # if self.state.goal_position is not None or self.state.goal_orientation is not None:
diff --git a/mpi_sim/components/social_mapping.py b/mpi_sim/components/social_mapping.py
index d8cdf697f1d86efaeb18a70614c1146743e8eebb..c5dfbdadfc4c57f5dc5248f991e1b78990eb5280 100644
--- a/mpi_sim/components/social_mapping.py
+++ b/mpi_sim/components/social_mapping.py
@@ -71,6 +71,17 @@ class SocialMapping(SensorComponent):
     def local_map_shape(self):
         r"""The shape of the local map defined as (width, height)."""
         return self._local_map_shape
+    
+    # @property
+    # def human_velocities(self):
+    #     if self.human_velocities is None:
+    #         pass
+    #     else :
+    #         return self.human_velocities
+
+    # @human_velocities.setter
+    # def human_velocities(self, human_velocities):
+    #     self.human_velocities = human_velocities
 
     
     def set_global_map(self, global_map):
@@ -111,6 +122,8 @@ class SocialMapping(SensorComponent):
             resolution=self._resolution
         )
 
+        self.human_velocities = None
+
 
     def _add_to_simulation(self):
 
@@ -131,7 +144,8 @@ class SocialMapping(SensorComponent):
         self.state.global_map = mpi_sim.utils.create_social_map(
                 self.simulation,
                 area=self._global_map_area,
-                resolution=self._resolution
+                resolution=self._resolution,
+                human_velocities=self.human_velocities
         ) 
 
         return self.state.global_map.map
diff --git a/mpi_sim/utils/social_map.py b/mpi_sim/utils/social_map.py
index b63427a1a92e3af5d596a88f420e7614d0801366..9f8e98b4785d615dd5be3ec1399a9049d54e5412 100644
--- a/mpi_sim/utils/social_map.py
+++ b/mpi_sim/utils/social_map.py
@@ -83,7 +83,7 @@ def transform_map_coordinate_to_position(map_coordinate, map_area, map_resolutio
     return x, y
 
 
-def create_social_map(simulation, area=None, resolution=0.05):
+def create_social_map(simulation, area=None, resolution=0.05, human_velocities=None):
     r"""Creates an social map.
 
     The size of the map depends on the visible_map_area of the simulation and the resolution of the map.
@@ -130,11 +130,11 @@ def create_social_map(simulation, area=None, resolution=0.05):
         )
     
     persons = []
-    for bodie in bodies :
+    for id, bodie in enumerate(bodies) :
         x, y = np.array(bodie.position)
-        theta = bodie.angle
-        # TODO : Study why the speed is zero
-        v = 2 + np.sqrt(np.array(bodie.linearVelocity)[0]**2 + np.array(bodie.linearVelocity)[1]**2)
+        theta = np.pi/2 + bodie.angle
+        v = human_velocities[id] if human_velocities else 0
+        # TODO : Check that the order of the bodies is the same : i.e. that the added speeds actually match 
         persons.append((x ,y, theta, v, False))
 
 
@@ -142,7 +142,7 @@ def create_social_map(simulation, area=None, resolution=0.05):
     y_coordinates = np.linspace(area[1][1], area[1][0], int(height))
     x_mesh, y_mesh = np.meshgrid(x_coordinates, y_coordinates)
     
-    global_social_map = ssn.calc_eps(x_mesh, y_mesh, persons)
+    global_social_map = np.flip(np.flip(ssn.calc_eps(x_mesh, y_mesh, persons), axis=1), axis=0).T
 
     map = SocialMap(map=global_social_map, area=area, resolution=resolution)
 
diff --git a/test/components/test_social_mapping.py b/test/components/test_social_mapping.py
new file mode 100644
index 0000000000000000000000000000000000000000..4dd17710721345b47fc201ba088e4a8afd1a44c6
--- /dev/null
+++ b/test/components/test_social_mapping.py
@@ -0,0 +1,284 @@
+
+#TODO 
+
+# import mpi_sim
+# import numpy.testing as np_test
+# from Box2D import b2PolygonShape, b2CircleShape
+# import numpy as np
+
+
+# class DummyAgentObject(mpi_sim.Object):
+
+#     @staticmethod
+#     def default_config():
+#         dc = mpi_sim.Object.default_config()
+#         dc.position = (0, 0)
+#         dc.orientation = 1
+#         dc.properties.append('dynamic')
+#         return dc
+
+
+#     @property
+#     def position(self):
+#         return self.box2d_body.position
+
+
+#     @property
+#     def orientation(self):
+#         return self.box2d_body.angle
+
+
+#     def _create_in_box2d_world(self, box2d_world):
+#         self.box2d_body = box2d_world.CreateStaticBody(
+#             position=self.config.position,
+#             angle=self.config.orientation,
+#             shapes=b2CircleShape(radius=.5),
+#         )
+#         return self.box2d_body
+
+
+# class PolygonObject(mpi_sim.Object):
+
+#     @staticmethod
+#     def default_config():
+#         dc = mpi_sim.Object.default_config()
+#         dc.position = (0, 0)
+#         dc.width = 1
+#         dc.height = 1
+#         dc.properties.append('static')
+#         return dc
+
+
+#     def _create_in_box2d_world(self, box2d_world):
+#         return box2d_world.CreateStaticBody(
+#             position=self.config.position,
+#             shapes=b2PolygonShape(box=(self.config.width, self.config.height)),
+#         )
+
+
+# def test_no_rotation():
+
+#     # create the simulation
+#     sim = mpi_sim.Simulation(visible_area=((0, 10), (0, 5)))
+
+#     agent = DummyAgentObject(
+#         position=(0, 0),
+#         orientation=0,
+#         components=[dict(
+#             type=mpi_sim.components.OccupancyGridMapping,
+#             name='mapping',
+#             object_filter=dict(properties='static'),
+#             depth=3.,
+#             resolution=1.,
+#         )]
+#     )
+
+#     sim.add_object(agent)
+#     sim.add_object(PolygonObject(position=(1,1), width=1.5, height=1.5))
+
+#     # check default values before doing the mapping
+#     expected_global = np.array([
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_global = np.flip(expected_global, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_global, agent.mapping.global_map)
+#     assert agent.mapping.global_map_shape == agent.mapping.global_map.shape
+#     assert agent.mapping.global_map_area == ((0, 10), (0, 5))
+
+#     expected_local = np.array([
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_local = np.flip(expected_local, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_local, agent.mapping.local_map)
+#     assert agent.mapping.local_map_shape == agent.mapping.local_map.shape
+#     assert agent.mapping.local_map_area == ((-3, 3), (-3, 3))
+
+#     #######################################
+
+#     # update both maps
+#     agent.mapping.update_global_map()
+#     agent.mapping.update_local_map()
+
+#     expected_global = np.array([
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_global = np.flip(expected_global, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_global, agent.mapping.global_map)
+#     assert agent.mapping.global_map_shape == agent.mapping.global_map.shape
+#     assert agent.mapping.global_map_area == ((0, 10), (0, 5))
+
+#     expected_local = np.array([
+#         [0., 0., 0., 1., 1., 1.],
+#         [0., 0., 0., 1., 1., 1.],
+#         [0., 0., 0., 1., 1., 1.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_local = np.flip(expected_local, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_local, agent.mapping.local_map)
+#     assert agent.mapping.local_map_shape == agent.mapping.local_map.shape
+#     assert agent.mapping.local_map_area == ((-3, 3), (-3, 3))
+
+
+# def test_east_rotation():
+
+#     # create the simulation
+#     sim = mpi_sim.Simulation(visible_area=((0, 10), (0, 5)))
+
+#     agent = DummyAgentObject(
+#         position=(0, 0),
+#         orientation=-np.pi / 2,
+#         components=[dict(
+#             type=mpi_sim.components.OccupancyGridMapping,
+#             name='mapping',
+#             object_filter=dict(properties='static'),
+#             depth=3.,
+#             resolution=1.,
+#         )]
+#     )
+
+#     sim.add_object(agent)
+#     sim.add_object(PolygonObject(position=(1,1), width=1.5, height=1.5))
+
+#     # update both maps
+#     agent.mapping.update_global_map()
+#     agent.mapping.update_local_map()
+
+#     expected_global = np.array([
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_global = np.flip(expected_global, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_global, agent.mapping.global_map)
+#     assert agent.mapping.global_map_shape == agent.mapping.global_map.shape
+#     assert agent.mapping.global_map_area == ((0, 10), (0, 5))
+
+#     expected_local = np.array([
+#         [0., 1., 1., 1., 0., 0.],
+#         [0., 1., 1., 1., 0., 0.],
+#         [0., 1., 1., 1., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_local = np.flip(expected_local, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_local, agent.mapping.local_map)
+#     assert agent.mapping.local_map_shape == agent.mapping.local_map.shape
+#     assert agent.mapping.local_map_area == ((-3, 3), (-3, 3))
+
+
+# def test_west_rotation():
+
+#     # create the simulation
+#     sim = mpi_sim.Simulation(visible_area=((0, 10), (0, 5)))
+
+#     agent = DummyAgentObject(
+#         position=(0, 0),
+#         orientation=np.pi / 2,
+#         components=[dict(
+#             type=mpi_sim.components.OccupancyGridMapping,
+#             name='mapping',
+#             object_filter=dict(properties='static'),
+#             depth=3.,
+#             resolution=1.,
+#         )]
+#     )
+
+#     sim.add_object(agent)
+#     sim.add_object(PolygonObject(position=(1,1), width=1.5, height=1.5))
+
+#     # update both maps
+#     agent.mapping.update_global_map()
+#     agent.mapping.update_local_map()
+
+#     expected_global = np.array([
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_global = np.flip(expected_global, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_global, agent.mapping.global_map)
+#     assert agent.mapping.global_map_shape == agent.mapping.global_map.shape
+#     assert agent.mapping.global_map_area == ((0, 10), (0, 5))
+
+#     expected_local = np.array([
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 1., 1., 1.],
+#         [0., 0., 0., 1., 1., 1.],
+#         [0., 0., 0., 1., 1., 1.],
+#         [0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_local = np.flip(expected_local, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_local, agent.mapping.local_map)
+#     assert agent.mapping.local_map_shape == agent.mapping.local_map.shape
+#     assert agent.mapping.local_map_area == ((-3, 3), (-3, 3))
+
+
+# def test_south_rotation():
+
+#     # create the simulation
+#     sim = mpi_sim.Simulation(visible_area=((0, 10), (0, 5)))
+
+#     agent = DummyAgentObject(
+#         position=(0, 0),
+#         orientation=np.pi,
+#         components=[dict(
+#             type=mpi_sim.components.OccupancyGridMapping,
+#             name='mapping',
+#             object_filter=dict(properties='static'),
+#             depth=3.,
+#             resolution=1.,
+#         )]
+#     )
+
+#     sim.add_object(agent)
+#     sim.add_object(PolygonObject(position=(1,1), width=1.5, height=1.5))
+
+#     # update both maps
+#     agent.mapping.update_global_map()
+#     agent.mapping.update_local_map()
+
+#     expected_global = np.array([
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#         [1., 1., 1., 0., 0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_global = np.flip(expected_global, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_global, agent.mapping.global_map)
+#     assert agent.mapping.global_map_shape == agent.mapping.global_map.shape
+#     assert agent.mapping.global_map_area == ((0, 10), (0, 5))
+
+#     expected_local = np.array([
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#         [0., 1., 1., 1., 0., 0.],
+#         [0., 1., 1., 1., 0., 0.],
+#         [0., 1., 1., 1., 0., 0.],
+#         [0., 0., 0., 0., 0., 0.],
+#     ])
+#     expected_local = np.flip(expected_local, axis=0).transpose()
+#     np_test.assert_array_almost_equal(expected_local, agent.mapping.local_map)
+#     assert agent.mapping.local_map_shape == agent.mapping.local_map.shape
+#     assert agent.mapping.local_map_area == ((-3, 3), (-3, 3))