Px4-autopilot: px4_sitl gazebo not working on ubuntu16.04 with gazebo9

Created on 24 Apr 2020  Â·  6Comments  Â·  Source: PX4/PX4-Autopilot

Please suggest a work around for the pc hangup when run the command

make px4_sitl gazebo

-- computer freezes when doing this -- I have to press the power button to restart.

I am trying to simulate a plane in gazebo and work with the mavsdk libraries.
If this issue is still new, then I do have a pixhawk with which I can start HITL directly. But would need the steps to run mavsdk c++ file to run a mission on QGC and Xplane10.

Would be grateful to whoever is able to help me here.!

Thanks,
Prasheel

gazebo question

All 6 comments

Update:
So, I had been SMH for quite a few days on this, and finally got it to work!
I commented every dependency in the CMakeLists of sitl_gazebo. Somehow with all at once, the plugins do not work. I worked them out one by one.
But, there are some serious issues in usv_dynamics plugin as thats the last part in the commented part with which the issue still exists!. Also, had to first build on px4_sitl_default gazebo then worked it out on gazebo_plane. This finally got the model running with mission commands from QGC.
But, did give these errors-

In file included from /usr/include/eigen3/Eigen/Core:316:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:60:39: warning: ignoring attributes on template argument ‘__m128 {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128>  { enum { value = true }; };
                                       ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:61:40: warning: ignoring attributes on template argument ‘__m128i {aka __vector(2) long long int}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128i> { enum { value = true }; };
                                        ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:62:40: warning: ignoring attributes on template argument ‘__m128d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct is_arithmetic<__m128d> { enum { value = true }; };
                                        ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:160:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4f> { typedef float  type; enum {size=4, alignment=Aligned16}; typedef Packet4f half; };
                                           ^
In file included from /usr/include/eigen3/Eigen/Core:316:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:161:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet2d> { typedef double type; enum {size=2, alignment=Aligned16}; typedef Packet2d half; };
                                           ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:162:43: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 template<> struct unpacket_traits<Packet4i> { typedef int    type; enum {size=4, alignment=Aligned16}; typedef Packet4i half; };
                                           ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:468:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet4f>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:476:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet4i>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:484:37: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 struct protate_impl<offset, Packet2d>
                                     ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:755:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet4f>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:778:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet4i>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:801:35: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 struct palign_impl<Offset,Packet2d>
                                   ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:815:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4f,4>& kernel) {
                                  ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:820:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet2d,2>& kernel) {
                                  ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/PacketMath.h:827:34: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4i {aka __vector(2) long long int}’ [-Wignored-attributes]
 ptranspose(PacketBlock<Packet4i,4>& kernel) {
                                  ^
In file included from /usr/include/eigen3/Eigen/Core:318:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:232:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet4f, Packet2cf, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:241:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet4f {aka __vector(4) float}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet2cf, Packet4f, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:433:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet2d, Packet1cd, false,false>
                                                               ^
/usr/include/eigen3/Eigen/src/Core/arch/SSE/Complex.h:442:63: warning: ignoring attributes on template argument ‘Eigen::internal::Packet2d {aka __vector(2) double}’ [-Wignored-attributes]
 template<> struct conj_helper<Packet1cd, Packet2d, false,false>
                                                               ^
In file included from /usr/include/eigen3/Eigen/Core:298:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<float, 4>’:
/usr/include/eigen3/Eigen/src/Core/Matrix.h:144:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<float, 4, 1> >’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:219:7:   required from ‘struct Eigen::internal::traits<Eigen::Quaternion<float> >’
/usr/include/eigen3/Eigen/src/Geometry/RotationBase.h:34:56:   required from ‘class Eigen::RotationBase<Eigen::Quaternion<float>, 3>’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:35:7:   required from ‘class Eigen::QuaternionBase<Eigen::Quaternion<float> >’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:227:7:   required from ‘class Eigen::Quaternion<float>’
/usr/include/eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h:22:3:   required from here
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type {aka __vector(4) float}’ [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                                       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type {aka __vector(4) float}’ [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type {aka __vector(4) float}’ [-Wignored-attributes]
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(4) float>::half {aka __vector(4) float}’ [-Wignored-attributes]
In file included from /usr/include/eigen3/Eigen/Core:298:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:148:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type {aka __vector(4) float}’ [-Wignored-attributes]
   typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
                                                                                        ^~~~
In file included from /usr/include/eigen3/Eigen/Core:343:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 0>’:
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:288:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 1>’
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:527:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 3>’
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:457:8:   required from ‘struct Eigen::internal::special_scalar_op_base<Eigen::Matrix<float, 4, 1>, float, float, Eigen::DenseCoeffsBase<Eigen::Matrix<float, 4, 1>, 3>, false>’
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<float, 4, 1> >’
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<float, 4, 1> >’
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:91:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<float, 4, 1> >’
/usr/include/eigen3/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<float, 4, 1>’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:287:16:   required from ‘class Eigen::Quaternion<float>’
/usr/include/eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h:22:3:   required from here
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<float>::type {aka __vector(4) float}’ [-Wignored-attributes]
                      >::type PacketReturnType;
                              ^~~~~~~~~~~~~~~~
In file included from /usr/include/eigen3/Eigen/Core:298:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h: In instantiation of ‘struct Eigen::internal::find_best_packet<double, 4>’:
/usr/include/eigen3/Eigen/src/Core/Matrix.h:144:57:   required from ‘struct Eigen::internal::traits<Eigen::Matrix<double, 4, 1> >’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:219:7:   required from ‘struct Eigen::internal::traits<Eigen::Quaternion<double> >’
/usr/include/eigen3/Eigen/src/Geometry/RotationBase.h:34:56:   required from ‘class Eigen::RotationBase<Eigen::Quaternion<double>, 3>’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:35:7:   required from ‘class Eigen::QuaternionBase<Eigen::Quaternion<double> >’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:227:7:   required from ‘class Eigen::Quaternion<double>’
/usr/include/eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h:75:3:   required from here
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:44: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type {aka __vector(2) double}’ [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                                       ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type {aka __vector(2) double}’ [-Wignored-attributes]
          bool Stop = Size==Dynamic || (Size%unpacket_traits<PacketType>::size)==0 || is_same<PacketType,typename unpacket_traits<PacketType>::half>::value>
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:83: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type {aka __vector(2) double}’ [-Wignored-attributes]
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:130:83: warning: ignoring attributes on template argument ‘Eigen::internal::unpacket_traits<__vector(2) double>::half {aka __vector(2) double}’ [-Wignored-attributes]
In file included from /usr/include/eigen3/Eigen/Core:298:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:148:88: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type {aka __vector(2) double}’ [-Wignored-attributes]
   typedef typename find_best_packet_helper<Size,typename packet_traits<T>::type>::type type;
                                                                                        ^~~~
In file included from /usr/include/eigen3/Eigen/Core:343:0,
                 from /usr/include/eigen3/Eigen/Dense:1,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/common.h:26,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/include/gazebo_opticalflow_mockup_plugin.h:37,
                 from /home/prasheel/Workspace/RA/Dependencies/Firmware/Tools/sitl_gazebo/src/gazebo_opticalflow_mockup_plugin.cpp:27:
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h: In instantiation of ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1>, 0>’:
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:288:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1>, 1>’
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:527:7:   required from ‘class Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1>, 3>’
/usr/include/eigen3/Eigen/src/Core/util/XprHelper.h:457:8:   required from ‘struct Eigen::internal::special_scalar_op_base<Eigen::Matrix<double, 4, 1>, double, double, Eigen::DenseCoeffsBase<Eigen::Matrix<double, 4, 1>, 3>, false>’
/usr/include/eigen3/Eigen/src/Core/DenseBase.h:41:34:   required from ‘class Eigen::DenseBase<Eigen::Matrix<double, 4, 1> >’
/usr/include/eigen3/Eigen/src/Core/MatrixBase.h:48:34:   required from ‘class Eigen::MatrixBase<Eigen::Matrix<double, 4, 1> >’
/usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:91:7:   required from ‘class Eigen::PlainObjectBase<Eigen::Matrix<double, 4, 1> >’
/usr/include/eigen3/Eigen/src/Core/Matrix.h:178:7:   required from ‘class Eigen::Matrix<double, 4, 1>’
/usr/include/eigen3/Eigen/src/Geometry/Quaternion.h:287:16:   required from ‘class Eigen::Quaternion<double>’
/usr/include/eigen3/Eigen/src/Geometry/arch/Geometry_SSE.h:75:3:   required from here
/usr/include/eigen3/Eigen/src/Core/DenseCoeffsBase.h:55:30: warning: ignoring attributes on template argument ‘Eigen::internal::packet_traits<double>::type {aka __vector(2) double}’ [-Wignored-attributes]
                      >::type PacketReturnType;
                              ^~~~~~~~~~~~~~~~
cc1plus: warning: unrecognized command line option ‘-Wno-address-of-packed-member’

I believe there are some issues with the build as it does not let me take all these plugins at once. I specially upgraded to gazebo9 for this (compromised my work on turtlebot - doesnt work on g9). The memory taken up at runtime is huge that causes the machine to freeze? I would be happy to work it out with you guys! But for now the issue is resolved (except the error log from eigen, which disappears on successive runs). I hope there are no dependencies on the usv_dynamics plugin.

Please do let me know how I can be of any help guys!.

Thanks,
Prasheel

-- computer freezes when doing this -- I have to press the power button to restart.

I guess it's your computer running out of RAM during linking.

cc1plus: warning: unrecognized command line option ‘-Wno-address-of-packed-member

This is a warning, so you should be able to get around it by disabling -Werror.

I am using an 8GB RAM with >50GB free space on my hard drive. I have an NVIDIA GPU.
I would be happy to know the requirements to run the firmware?

RAM usage depends on your CPU threads (compiler jobs), usually need 2GB per job.

Well, I wonder how this same firmware works well on a Pixhawk2 (currently using for HITL).
Please mind my knowledge in the field, kind of a rookie in flying drones but I'm good with C++!

Anyway, great to know about this. Would definitely take a look at the source code.

Thank you for the insight.

With #14971 you can now build with fewer cores in order to avoid running out of RAM:

make px4_sitl gazebo -2
Was this page helpful?
0 / 5 - 0 ratings

Related issues

zhanghouxin07 picture zhanghouxin07  Â·  5Comments

bosskwei picture bosskwei  Â·  3Comments

Stifael picture Stifael  Â·  3Comments

lgh5054 picture lgh5054  Â·  4Comments

bthnekn picture bthnekn  Â·  4Comments