Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clearpath Heron USV #6548

Open
wants to merge 28 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
2160558
heron usv project
harunkurtdev May 11, 2024
437c99a
swarm
harunkurtdev May 11, 2024
3fc6493
swarm
harunkurtdev May 11, 2024
5be6b7a
swarm.wbproj
harunkurtdev May 11, 2024
f6cbbb6
heron.png
harunkurtdev May 11, 2024
a6e8881
heron.png and protofile
harunkurtdev May 11, 2024
fdf1865
keyboard controller and proto head
harunkurtdev May 11, 2024
071ddd2
Heron.proto header add
harunkurtdev May 12, 2024
26cba49
Heron.proto header version change
harunkurtdev May 12, 2024
cc85b84
ocean.wbt and swarm.wbt change version
harunkurtdev May 12, 2024
d55d15c
ocean.wbt and swarm.wbt change version
harunkurtdev May 12, 2024
112c5f1
windows delete artificats
harunkurtdev May 12, 2024
39281ee
windows delete artificats
harunkurtdev May 12, 2024
3041cc1
ocean.sample.png
harunkurtdev May 14, 2024
17892cf
Create heron.md
harunkurtdev May 14, 2024
34af82d
documents add all of
harunkurtdev May 16, 2024
5d3be71
new update for heron.md and Heron.proto file
harunkurtdev Jun 7, 2024
ae1afe0
Merge branch 'master' into clearpath_heron_usv
omichel Aug 8, 2024
3e68ab5
heron file update
harunkurtdev Aug 8, 2024
1c8e0d0
heron file update
harunkurtdev Aug 8, 2024
6d39e18
heron.md changed
harunkurtdev Aug 8, 2024
b2b4dcf
update .wbt
harunkurtdev Aug 8, 2024
4ab51e9
Merge branch 'master' into clearpath_heron_usv
omichel Aug 12, 2024
2be06b5
Merge branch 'master' into clearpath_heron_usv
harunkurtdev Sep 25, 2024
b84139f
heron_collision.stl insert Heron.proto
harunkurtdev Sep 25, 2024
aba20d8
ocean.wbproj update
harunkurtdev Sep 25, 2024
5794f2c
heron.md update
harunkurtdev Sep 27, 2024
d6191a4
Update heron.md
harunkurtdev Sep 27, 2024
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
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Copyright 1996-2023 Cyberbotics Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from controller import Robot, Keyboard

# Create the Robot instance.
robot = Robot()

keyboard = Keyboard()
keyboard.enable(1000)

# Get the time step of the current world.
timestep = int(robot.getBasicTimeStep())

# Get left and right motors.
left_motor = robot.getDevice('left_motor')
right_motor = robot.getDevice('right_motor')

# Enable position control mode for motors.
left_motor.setPosition(float('inf'))
right_motor.setPosition(float('inf'))

# Set initial velocities.
left_velocity = 0.0
right_velocity = 0.0

# Main loop:
# - perform simulation steps until Webots is stopping the controller
while robot.step(timestep) != -1:
# Read keyboard input.
key = keyboard.getKey()
# Process keyboard input.
if key == ord('W') or key == ord('w'):
left_velocity = 5.0
right_velocity = 5.0
elif key == ord('S') or key == ord('s'):
left_velocity = -5.0
right_velocity = -5.0
elif key == ord('A') or key == ord('a'):
left_velocity = -2.5
right_velocity = 2.5
elif key == ord('D') or key == ord('d'):
left_velocity = 2.5
right_velocity = -2.5
else:
left_velocity = 0.0
right_velocity = 0.0
# Set motor velocities.
left_motor.setVelocity(left_velocity)
right_motor.setVelocity(right_velocity)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
56 changes: 56 additions & 0 deletions projects/robots/clearpath/heron/obj/prop.dae

Large diffs are not rendered by default.

Binary file not shown.
226 changes: 226 additions & 0 deletions projects/robots/clearpath/heron/protos/Heron.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
#VRML_SIM R2024a utf8
# license: Copyright Cyberbotics Ltd. Licensed for use only with Webots.
# license url: https://cyberbotics.com/webots_assets_license
# documentation url: https://webots.cloud/run?url=https://github.com/cyberbotics/webots/blob/released/projects/robots/clearpath/heron/protos/Heron.proto
# keywords: robot/wheeled
# Clearpath Heron USV is an autonomous watercraft designed for various marine tasks.
# It features electric propulsion, advanced navigation systems, and integration capabilities for collaborative missions.
# With a streamlined hull and multiple sensor suites including cameras,
# it excels in environmental monitoring, surveillance, and research.

PROTO Heron [
field SFVec3f translation 0 0 0.0 # Is `Pose.translation`.
field SFRotation rotation 0 0 1 0 # Is `Pose.rotation`.
field SFString name "heron" # Is `Solid.name`.
field SFString controller "heron_usv_controller" # Is `Robot.controller`.
field MFString controllerArgs [] # Is `Robot.controllerArgs`.
field SFString window "<generic>" # Is `Robot.window`.
field SFBool synchronization TRUE # Is `Robot.synchronization`.
field MFNode bodySlot [] # Extends the robot with new nodes in the body slot.
]
{
Robot {
translation IS translation
rotation IS rotation
name IS name
model "Clearpath Heron"
controller IS controller
controllerArgs IS controllerArgs
window IS window
synchronization IS synchronization
children [
DEF BODY_SLOT Group {
children IS bodySlot
}
Transform {
translation -0.185 0 0
rotation 0 0 1 1.01503e-06
children [
Shape {
appearance PBRAppearance {
baseColor 0.964706 0.827451 0.176471
metalness 0
}
geometry Mesh {
url [
"../obj/plain-rear-plate.stl"
]
}
}
]
}
Transform {
translation 0 -0.35 0.05
children [
Shape {
appearance PBRAppearance {
baseColor 0.960784 0.760784 0.0666667
metalness 0
}
geometry Mesh {
url [
"../obj/right_panel.stl"
]
}
}
]
}
Transform {
translation 0 0.35 0.05
children [
Shape {
appearance PBRAppearance {
baseColor 0.960784 0.760784 0.0666667
metalness 0
}
geometry Mesh {
url [
"../obj/left_panel.stl"
]
}
}
]
}
Transform {
translation -0.73 0.38 -0.14
children [
Propeller {
device RotationalMotor {
name "left_motor"
maxVelocity 30
}
fastHelix Solid {
rotation 0 1 0 1.57
children [
Shape {
appearance PBRAppearance {
baseColor 0.368627 0.360784 0.392157
}
geometry Cylinder {
height 0.1
radius 0.05
}
}
]
}
}
]
}
Transform {
translation -0.73 -0.38 -0.14
children [
Propeller {
device RotationalMotor {
name "right_motor"
maxVelocity 30
}
fastHelix Solid {
rotation 0 1 0 1.5708
children [
Shape {
appearance PBRAppearance {
baseColor 0.368627 0.360784 0.392157
}
geometry Cylinder {
height 0.1
radius 0.05
}
}
]
}
}
]
}
DEF HERON Shape {
appearance Appearance {
material Material {
diffuseColor 0.239216 0.219608 0.27451
}
texture ImageTexture {
}
textureTransform TextureTransform {
}
}
geometry Mesh {
url [
"../obj/heron_base.stl"
]
}
}
]
name "heron_usv"
immersionProperties [
ImmersionProperties {
fluidName "fluid"
dragForceCoefficients 0.01 0 0
dragTorqueCoefficients 0.05 0 0
viscousResistanceForceCoefficient 400
viscousResistanceTorqueCoefficient 0.1
}
]
boundingObject Group {
children [
Transform {
translation 0 -0.134 0.35
children [
Cylinder {
height 0.35
radius 0.005
}
]
}
Transform {
translation 0 0.134 0.35
children [
Cylinder {
height 0.35
radius 0.005
}
]
}
Transform {
translation 0 0 0.04
children [
Box {
size 0.75 0.8 0.1
}
]
}
Transform {
translation -1.42746e-07 -0.37 -0.14
rotation 0 1 0 -1.5707953071795862
children [
Capsule {
height 1.2
radius 0.1
subdivision 16
}
]
}
Transform {
translation -1.42746e-07 0.37 -0.14
rotation 0 1 0 -1.5707953071795862
children [
Capsule {
height 1.2
radius 0.1
subdivision 16
}
]
}
]
}
physics Physics {
density 400
centerOfMass [
0 0 0
]
damping Damping {
linear 0.5
angular 0.5
}
}
linearVelocity -1.4502243780299133e-41 2.229921041216923e-42 0.0058372174879208726
angularVelocity 0.00023835911050514857 0.001746443229709772 4.0940932765468614e-19
}
}
44 changes: 44 additions & 0 deletions projects/robots/clearpath/heron/protos/docs/heron.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
The [clearpath's Heron USV](https://robots.ros.org/clearpath-heron-usv/) is a USV platform.

### Motors

There are 2 engines, engine name ```left_motor```and ```right_motor``.
You can add new Camera, GPS or other sensors you want under ``body_slot```.
harunkurtdev marked this conversation as resolved.
Show resolved Hide resolved

### Movie Presentation

![youtube video](https://www.youtube.com/watch?v=qWRyCnJWVuM)

### Heron PROTO

Derived from [Robot](https://cyberbotics.com/doc/reference/robot).

```
Heron {
SFVec3f translation 0 0 0
SFRotation rotation 0 1 0 1.5708
SFString name "heron"
SFString controller "heron_usv_controller"
MFString controllerArgs []
SFBool synchronization TRUE
MFNode bodySlot []
}
```

#### Heron Field Summary

- `bodySlot`: Extends the robot with new nodes.

### Samples

You will find the following sample in this folder: "[WEBOTS\_HOME/projects/robots/clearpath/heron/worlds]({{ url.github_tree }}/projects/robots/clearpath/heron/worlds)".

Ocean

#### [heron\ocean.wbt]({{ url.github_tree }}/projects/robots/clearpath/heron/worlds/ocean.wbt)

![ocean.png](images/heron/ocean.jpg) This simulation shows a basicly usv.

#### [heron\swarm.wbt]({{ url.github_tree }}/projects/robots/clearpath/heron/worlds/swarm.wbt)

![swarm.png](images/heron/swarm.jpg) This simulation shows a basicly swarm robotics.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions projects/robots/clearpath/heron/webots.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
publish: true
9 changes: 9 additions & 0 deletions projects/robots/clearpath/heron/worlds/.ocean.wbproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Webots Project File version R2024a
perspectives: 000000ff00000000fd00000002000000010000011c000002f1fc0200000001fb0000001400540065007800740045006400690074006f00720100000016000002f10000003f00ffffff0000000300000780000000d9fc0100000001fb0000001a0043006f006e0073006f006c00650041006c006c0041006c006c0100000000000007800000006900ffffff00000662000002f100000001000000020000000100000008fc00000000
simulationViewPerspectives: 000000ff000000010000000200000100000005620100000002010000000100
sceneTreePerspectives: 000000ff00000001000000030000001c000002b4000000fa0100000002010000000200
maximizedDockId: -1
centralWidgetVisible: 1
orthographicViewHeight: 1
textFiles: -1
consoles: Console:All:All
9 changes: 9 additions & 0 deletions projects/robots/clearpath/heron/worlds/.swarm.wbproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Webots Project File version R2024a
perspectives: 000000ff00000000fd00000002000000010000011c000002f1fc0200000001fb0000001400540065007800740045006400690074006f00720100000016000002f10000003f00ffffff0000000300000780000000d9fc0100000001fb0000001a0043006f006e0073006f006c00650041006c006c0041006c006c0100000000000007800000006900ffffff00000662000002f100000001000000020000000100000008fc00000000
simulationViewPerspectives: 000000ff000000010000000200000100000005620100000002010000000100
sceneTreePerspectives: 000000ff00000001000000030000001c000002b4000000fa0100000002010000000200
maximizedDockId: -1
centralWidgetVisible: 1
orthographicViewHeight: 1
textFiles: -1
consoles: Console:All:All
Loading
Loading