CargoRocket

From OpenStreetMap Wiki
Jump to navigation Jump to search
CargoRocket
CargoRocket-Logo.svg
License: MIT License (free of charge)
Platforms: Android, iOS, and Web
Languages: English and German
Website: https://cargorocket.de
Source code: CargoRocket GitHub
Programming languages: Java, R, and React Native

Specialized navigation for cargo bikes. Avoid barriers and too narrow cycleways which are not passable by cargobikes.

For the special needs of cargobikes, CargoRocket develops a routing software which calculates appropriate routes for those bikes.

CargoRocket is developing a CargoBikeIndex which scores the streets for it's "cargobikability". For this, different indicators have been investigated and defined for now. Based on this research this model was elaborated to coincide with the specific OpenStreetMap Tags. Based on the Tags which are relevant for CargoBikes (see Cargobike), a priority has been elaborated.

Additional to the CargoBikeIndex, a routing software based on GraphHopper is in development to use the relevant tags to provide better navigation for cargobikes.

Tagging Outcomes

When developing the application, currently there have been the following tagging outcomes. the following ratings represent the ones of CargoRocket how they used in their products (April 2021). This can be a base reference for other cargobike applications, as these are based on tests on real conditions.

General Overview

These types of infrastructure could potential be problematic while using a cargobike and (most of them) can be tagged in OpenStreetMap. With some notes of outcomes and suggested improvements in tagging scheme which emerged while developing.

Type OSM Tags (Selection) Notes
Cycleway highway=cycleway or

highway=path with bicycle=*

Tagging in OSM for cycleways varies very much. Especially whether cycleways are mapped as an own way or are part of highway.
Barriers (width) barrier=cycle_barrier and

maxwidth:physical=*

Tagging width for barrier=cycle_barrier is not available yet, also very hard to describe via tags. However, a new proposal is trying to establish tagging for that.

Because of the wide variety of cargobikes, there is no specific width every cargobike can pass.

Traffic calming traffic_calming=* Analogous to barriers in general, traffic calming tags to reduce the cargobikability for streets including this key.
Cycleway width width=* or

cycleway:width=* /

cycleway:<side>:width

It's hard to determine if this width is a a definite limit or not. For example if a shared foot-/cyclepath has segregated=yes, how can we determine if it has a physical segregation (e.g. green area or a curb) or just lane markings.

It is also harder to tag than most of other tags, since you need some type of measuring tape or an app.

Incline incline=* (Neither used nor recommended) For incline no OSM tag is used. For routing applications and street scoring other approaches like SRTM is a better solution.

With the arrival of electrification of bikes in general this becomes less important with time.

Surface condition surface=* and

smoothness=*

Problem of smoothness=* is, that it's not very objective and sometimes can be hard to determine when mapping. Maybe some new tag which objectifies the tagging in terms of potholes for example would be an option.
Kerb/Curb barrier=kerb, kerb=* and

height=* / kerb:height=*

Especially for multi-track bikes kerbs can be a huge pain. They appear often on intersections, where also multiple can be in a row (e.g. on traffic islands). For routing it is easier when they are tagged as nodes, not as intersecting ways.
Traffic (Motor vehicles) traffic:hourly=* (not recommended and not used) It's hard to determine the number of vehicles passing a street only based on
Pedestrians highway=pedestrian In pedestrian downtown areas, where biking is allowed, usually the allowed maxspeed=* is very low. So it is not attractive for quick passing. Although additional factors can be markets (e.g. amenity=marketplace) which is time depending.
Cross slope incline:across=* With multi-track cargobikes cross slope can be very unwieldy.
Oneway streets highway=* and

oneway:bicycle=no and

oneway=yes

Based on the width of the street itself and whether parking is allowed for motor vehicles (see street parking) it should be possible to determined if opposite driving is easy or not.
Constructions highway=construction (not useful) Problem is, that many constructions are temporarily (like e.g. 2 days to 2 weeks), where tagging these is not practical. Ways with highway=construction are usually not passable and therefore not

considered when routing.

New Tags

Definitiveness of wayside

While developing a cargobike application, the need for enhanced tagging emerged. Currently there is a problem with bollards. Some of them are located on ways, which have grass verge on the side of the way. So these barriers can be passed, if the driver is willing to use this green verge to drive around the barrier. This information is currently not derivable from the tagging scheme. Therefore we propose a new tag maxwidth:definite=yes (for barriers), width:definite=yes (for ways) and cycleway:right:width:definite=yes respectively cycleway:left:width:definite=yes (both ways). This tag implies, that the width of the way or barrier is definitely not passable by any circumstances, because there are other barriers on wayside. With value no passing over green verge is possible.

width:definite=yes

Example 1 with bollards and fence on wayside
Example 2 with bollards and fence / garage on wayside
Describing Cycle Barriers

See Cargobike#Current_tagging_issues.

Ratings

In CargoRocket applications tags are rated in a specific way. For different kinds of cycle infrastructure, which the OSM tags are modelling from the real world, an own rating from 0 (impassible) to 5 (optimal) was developed. There is a total rating which is calculated using sub-ratings. These sub-ratings are calculated in the following manner.

Road Tags

Tags which describe the class and more in-depth attributes of roads and ways but not the condition of them.

Highway Tags Rating Street Type (0: impassible - 5: optimal) Comment
general tags applicable to all highways
* bicycle_road = yes 5 any street marked as bicycle road
motorroad = yes 0 any streets marked as motorroad
access IN (agricultural, customers, delivery, private, permit, bus, public_transport, emergency, forestry) AND bicycle NOT IN ( yes, designated, permissive, dismount) 0 no access for unauthorized people
cycleways
cycleway default (no width specified) 3
width < 1.2 1
1.2 <= width < 1.6 3
1.6 <= width < 2 4
width >= 2 5
oneway = no AND width < 2.4 1
oneway = no AND 2.4 <= width < 3.2 3
oneway = no AND 3.2 <= width < 4.0 4
oneway = no AND width >= 4 5
* cycleway = track (no width specified) 3 Tag cycleway can be combined with any other highway. Tag cyleway can also be speficied through cycleway:right, cycleway:left or cycleway:both. For better readability only cylceway is written in this table.
cycleway = track AND cycleway:width < 1.2 1
cycleway = track AND 1.2 <= cycleway:width < 1.6 3
cycleway = track AND 1.6 <= cycleway:width < 2 4
cycleway = track AND cycleway:width >= 2 5
cycleway = track AND cycleway:oneway = no AND cycleway:width < 2.4 1 Twoway cycleway track.
cycleway = track AND cycleway:oneway = no AND 2.4 <= cycleway:width < 3.2 3
cycleway = track AND cycleway:oneway = no AND 3.2 <= cycleway:width < 4.0 4
cycleway = track AND cycleway:oneway = no AND cycleway:width >= 4 5
cycleway = lane (no width specified) 4 Cycleway lane on the road. From a security perspective this might be less safe than a cycleway track. Though a narrow lane is better accessible for cargo bikes as they are not physically limited by the width of the track.
cycleway = lane AND cycleway:width < 1.2 2
cycleway = lane AND 1.2 <= cycleway:width < 1.6 4
cycleway = lane AND 1.6 <= cycleway:width < 2 4
cycleway = lane AND cycleway:width >= 2 5
cycleway = opposite_lane 5 A designated cycle lane in the opposite direction of a oneway street.
cycleway = opposite 3 A oneway street without a designated lane. Often those streets are narrow and opposite traffic is hard to pass.
cycleway = shared_lane IGNORE This indicates that there is no extra cycleway, instead the street is shared with cars.
cycleway = shared IGNORE This indicates that there is no extra cycleway, instead the street is shared with cars.
cycleway = share_busway 3
cycleway = separate IGNORE This indicated that there is an extra Element in OSM which should be used instead for bicycles.
other highway values without additional cycleway Tag
bridleway default (bicycle not specified) 0 Cyclists and pedestrians not allowed on bridlways by default.
bicycle IN ( yes, designated, permissive) 2
busway default (bicycle not specified) 0 Cyclists and pedestrians not allowed on busways by default.
bicycle IN ( yes, designated, permissive) 3
corridor default (bicycle not specified) 1 Bicycles need to be pushed.
bicycle IN ( yes, designated, permissive) 1
escape 0
footway bicycle IN (NA, no, dismount) 1 Cyclists have to dismount, as they are not explicitly allowed.
footway bicycle IN ( yes, designated, permissive) 2 Cyclists share the path with pedestrians.
footway bicycle IN ( yes, designated, permissive) AND segretated = yes 3 Pedestrians and cyclists have separated ways. No further information on the cycleway is given - otherwise the above rating for cycleways apply.
living street bicycle != no 4
motorway OR motorway_link 0
path default 2
path segregated = yes 4 Pedestrians and cyclists have seperated ways.
pedestrian bicycle = NA 1 Cyclists have to dismount, as they are not explicitly allowed.
pedestrian bicycle IN ( yes, designated, permissive) 2 Cyclists share the path with pedestrians.
bicycle IN ( yes, designated, permissive) AND segretated = yes 4 Pedestrians and cyclists have seperated ways.
platform 0
primary OR primary_link bicycle != no 1
proposed 0
residential bicycle != no 4
road bicycle != no 2
secondary OR secondary_link bicycle != no 2
service bicycle != no 2
steps 0 Stairs cannot be passed with cargo bikes.
tertiary OR tertiary_link bicycle != no 3
track default (tracktype not specified) 1
track bicycle IN (no, dismount) 1 Cyclists have to dismount.
track tracktype = grade1 4
track tracktype = grade2 3
track tracktype = grade3 1
track tracktype = grade4 1
track tracktype = grade5 0
trunk OR trunk_link default (bicycle not specified) 0 If not stated otherwise bicycles are not allowed on trunks.
trunk OR trunk_link bicycle IN ( yes, designated, permissive) 2
unclassified bicycle != no 2

Surface Rating

Surfaces describe one aspect of conditions of roads and ways. Usually only paved streets are utilisable for cargobikes. Therefore water-bound ways or unpaved ways in general should be avoided.

Tag Value Rating Street Type (0: impassible - 5: optimal)
smoothness excellent 5
good 4
intermediate 3
bad 2
very bad 1
horrible 0
very horrible 0
impassable 0
surface paved 4
asphalt 5
paving_stones 4
concrete 4
concrete:plates 4
concrete:lanes 2
sett 2
cobblestone 2
cobblestone:flattened 2
unhewn_cobblestone 1
unpaved 1
compacted 3
dirt 1
earth 1
fine_gravel 2
grass 1
grass_paver 1
gravel 1
ground 1
metal 3
mud 0
pebblestone 1
salt 1
sand 0
rock 0
wood 1

Barrier Rating

Rating barriers based on width of vehicle with some generalizations. They are used to multiply with the rating of the roads and ways. Therefore a street which is paved, has an excellent smoothness and a rating of 5, but has an cycle barrier as a node on it, would have a total rating of 0 (5 [road rating] * 0 [barrier multiplier = 0]).

Barrier Multiplier
Barrier
cycle_barrier 0
bollard (no maxwidth or maxwidth:physical specified) 0.8
bollard maxwidth OR maxwidth:physical < 0.9 m 0
bollard maxwidth OR maxwidth:physical < 1.0 m 0.2
bollard maxwidth OR maxwidth:physical < 1.2 m 0.4
bollard maxwidth OR maxwidth:physical < 1.5 m 0.8
bollard maxwidth OR maxwidth:physical >= 1.5 m 1
block (no maxwidth or maxwidth:physical specified) 0.8
block maxwidth OR maxwidth:physical < 0.9 m 0
block maxwidth OR maxwidth:physical < 1.0 m 0.2
block maxwidth OR maxwidth:physical < 1.2 m 0.4
block maxwidth OR maxwidth:physical < 1.5 m 0.8
block maxwidth OR maxwidth:physical >= 1.5 m 1
lift_gate (no maxwidth or maxwidth:physical specified) 0,8
lift_gate maxwidth OR maxwidth:physical < 0.9 m 0
lift_gate maxwidth OR maxwidth:physical < 1.0 m 0,2
lift_gate maxwidth OR maxwidth:physical < 1.2 m 0,4
lift_gate maxwidth OR maxwidth:physical < 1.5 m 0,8
lift_gate maxwidth OR maxwidth:physical >= 1.5 m 1
kerb (no height specified) 0.4
kerb kerb = raised 0.2
kerb kerb = lowered 0.6
kerb kerb = flush 1
Traffic_calming
bump 0.6
mini_bumps 0.6
rumble_strip 0.6