osrf / vorc

Virtual Ocean Robot Challenge (VORC) resources
Apache License 2.0
38 stars 11 forks source link

Initial world #1

Closed mabelzhang closed 4 years ago

mabelzhang commented 4 years ago

Initial world with terrain, waves, and robot (mesh only for now, no propellers yet, so it falls right through the waves when unpaused). Depends on https://github.com/osrf/vrx/pull/217 to get the bigger blue water area, as this terrain is larger.

Dependency: https://github.com/osrf/vrx I compiled everything with colcon build (Wiki documentation for installation forthcoming Initial tutorials are live https://github.com/osrf/vorc/wiki)

Test with:

$ roslaunch vorc_gazebo marina.launch

Default camera view at world launch: Screenshot from 2020-09-26 01-41-14_defaultCamera_crop

Bird's eye view: Screenshot from 2020-09-26 01-42-15_birdsEye_crop

mabelzhang commented 4 years ago

0ef4373 should have addressed all the comments above.

Sinking problem remains. After adding the dynamics plugin and fixing the inertia and collision, the boat is still sinking. I added parameters for boatWidth and boatLength of the new boat to the dynamics file: https://github.com/osrf/vrx/blob/d07379872d8657ed666a4ca3b39de8ab5013ca3f/wamv_gazebo/urdf/dynamics/wamv_gazebo_dynamics_plugin.xacro#L28-L29

What does hullRadius refer to? The mass, drag, and length_n parameters I'm not sure how to calculate them for the new boat.

bsb808 commented 4 years ago

Chiming in from the cheap seats, but the new vessel and harbor map look spectacular!

bsb808 commented 4 years ago

@mabelzhang I can help with the USV model parameters. What are the rough dimensions of the vessel (length and width)?

The current USV plugin is specific to a catamaran, but we can use it to approximate the boat you have modeled. For the catamaran, each of the two hulls is modeled as a cylinder and the hull_radius is the size of each hull, which determines the how the buoyancy force is calculated based on the relative position of the waves and the hull. The length_n is the discretization along each hull for determining buoyancy forces.

When I run the example it looks like perhaps the USV plugin isn't getting connected to the boat model? Selection_113

mabelzhang commented 4 years ago

@bsb808 Thanks!! The length is 12.207400 m, and the width is 3.575740 m (according to MeshLab bounding box).

I'll double-check the plugin connection.

caguero commented 4 years ago

I think I know why the boat still sinks. In the case of VRX this is the sequence of operations to spawn the model:

  1. From a launch file (e.g.: sandisland.launch) we run xacro on wamv_gazebo.urdf.xacro.
  2. From wamv_gazebo.urdf.xacro, we include wamv_gazebo.xacro.
  3. From wamv_gazebo.xacro, we declare the wamv_gazebo xacro macro that composes the WAM-V: wamv_base + thruster layout + dynamics plugin.
  4. Back to wamv_gazebo.urdf.xacro, we call the wamv_gazebo xacro macro with the appropriate parameters.

It looks like in VORC we preserve the cora.xacro and declare a robot_gazebo macro but we never used it in cora.urdf.xacro.

We don't need the extra overhead of VRX here, as the configuration is much simple here. I suggest to remove cora.xacro and add the dynamics plugin to cora.urdf.xacro.

bsb808 commented 4 years ago

As for parameters for the USV dynamics, I would start with the inertial and plugin parameters equivalent to those of the WAM-V. This is a good starting point since we know those parameters balance mass/weight and displacement/buoyancy. Once we have the Cora (great name btw) visual with the WAM-V dynamics, I can do a separate PR to tune the dynamics. Similarly I can take care of the propulsion setup once we have a skeleton.

mabelzhang commented 4 years ago

remove cora.xacro and add the dynamics plugin to cora.urdf.xacro.

Thank you for tracking it down! Done in 35cc281.

Reverted length and width to default (taking WAM-V ones).

Flotation is working. Currently the position in the water is too low, but we are updating the boat model to remove the cabin, so the position will probably change soon.

Screenshot from 2020-09-30 23-36-46

mabelzhang commented 4 years ago

Robot updated to v.2. Still a bit low in the water Screenshot from 2020-10-01 01-26-35

bsb808 commented 4 years ago

Can we please keep both meshes - with and without cabin - in the repository? I think it will be nice to have options.

mabelzhang commented 4 years ago

Can we please keep both meshes

468d82f adds the boat with cabin back. It can be swapped out by changing this line in cora_description/urdf/cora.xacro

<xacro:include filename="$(find cora_description)/urdf/cora.urdf.xacro" />

to

<xacro:include filename="$(find cora_description)/urdf/cora_v1.urdf.xacro" />
mabelzhang commented 4 years ago

Thrusters have been added. Depends on https://github.com/osrf/vrx/pull/218 out-2

Tutorial has been updated accordingly with rostopic pub, keyboard, and joystick controls https://github.com/osrf/vorc/wiki/Marina-Basic

I kept the inertial parameters the same as those for WAM-V, because these work better than the inertia computed from the meshes. The latter is much lighter, which causes the propellers to rotate too slowly and don't stop immediately when joystick is released.

caguero commented 4 years ago

The inertia of the vehicle looks good to me. The inertia of the thrusters looks suspiciously big. Please, double check on your side comparing it with VRX, which is correct.

mabelzhang commented 4 years ago

64c15df fixed the inertia on the thrusters.

A difference in this robot model from WAM-V is that there is no engine geometry. However, the plugin requires certain links and joints to exist, so empty engine links and joints are added to make the plugin work. An inertia is needed for the non-existent engine link, but the WAM-V inertia has a mass of 15, which is too heavy for the boat - the bottom sinks immediately on startup. So I arbitrarily decreased the mass for the non-existent engine to 0.1, which visualizes inertia boxes closer to sizes in VRX:

Screenshot from 2020-10-06 02-56-17

mabelzhang commented 4 years ago

1966170 updates the meshes after a face-to-face with Rafi today to figure out the kinks in the previous versions, so that I don't have to manually change the model he sends us. Now I can more or less use his files directly.

caguero commented 4 years ago

The only outstanding issue that I have is related with these errors in rviz:

No transform from [base_link] to [cora/base_link]
No transform from [dummy_link] to [cora/base_link]

It might be related but the texture and the propelers don't show up in RViz either.

mabelzhang commented 4 years ago

@seankrag I recall Brian mentioned you are the veteran with USVs. Rafi, our artist, is still iterating on the model and adding the texture. Let us know if you have feedback about the appearance of the vehicle, and we can relay to Rafi. Brian is computing hydrodynamics parameters for the vehicle in the current state, but we can still tweak the decorative appearances etc. even after this week.

mabelzhang commented 4 years ago

errors in rviz:

I started looking into this yesterday but my computer shut down automatically after a while because it got too hot. I wonder if this is because the wave area is now increased ~3x. Does the wave consume a lot of power?

I'll try to look at it again. It probably has to do with namespacing in the SDF links.

seankrag commented 4 years ago

Sure thing, Mabel.

Best, Sean

On Wed, Oct 7, 2020 at 11:13 AM Mabel Zhang notifications@github.com wrote:

@seankrag https://github.com/seankrag I recall Brian mentioned you are the veteran with USVs. Rafi, our artist, is still iterating on the model and adding the texture. Let us know if you have feedback about the appearance of the vehicle, and we can relay to Rafi. Brian is computing hydrodynamics parameters for the vehicle in the current state, but we can still tweak the decorative appearances etc. even after this week.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/osrf/vorc/pull/1#issuecomment-705108028, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARJIVT3NSD5S6GP24JJYXJLSJSVUZANCNFSM4R2WHFDQ .

caguero commented 4 years ago

errors in rviz:

I started looking into this yesterday but my computer shut down automatically after a while because it got too hot. I wonder if this is because the wave area is now increased ~3x. Does the wave consume a lot of power?

I'll try to look at it again. It probably has to do with namespacing in the SDF links.

Out of curiosity, what's your real time factor? Typically I have 1.0 in my machine, so it shouldn't be so bad to shutdown a machine...

mabelzhang commented 4 years ago

Hmm I have 1.0 as well. I don't know if RViz consumed a lot of memory? I don't want to reproduce it to find out, so I shrank the wave area by a little so that it's tighter around the land area, which looks better anyway. I'll be running a bit more conservatively, though it might have just been a one-off incident.

mabelzhang commented 4 years ago

8 has been created to track the frame_id prefix issue above.

I believe that was the last remaining issue with this PR, and it is ready to merge.