CargoRocket

CargoRocket
License: MIT License (free of charge)
Platforms: Android, iOS, and Web
Languages: English and German
Website: https://cargorocket.de
Source code: CargoRocket
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.

HighwayTagsRating Street Type (0: impassible - 5: optimal)Comment
general tags applicable to all highways
*bicycle_road = yes5any street marked as bicycle road
motorroad = yes0any streets marked as motorroad
access IN (agricultural, customers, delivery, private, permit, bus, public_transport, emergency, forestry) AND bicycle NOT IN ( yes, designated, permissive, dismount)0no access for unauthorized people
cycleways
cyclewaydefault (no width specified)3
width < 1.21
1.2 <= width < 1.63
1.6 <= width < 24
width >= 25
oneway = no AND width < 2.41
oneway = no AND 2.4 <= width < 3.23
oneway = no AND 3.2 <= width < 4.04
oneway = no AND width >= 45
*cycleway = track (no width specified)3Tag 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.21
cycleway = track AND 1.2 <= cycleway:width < 1.63
cycleway = track AND 1.6 <= cycleway:width < 24
cycleway = track AND cycleway:width >= 25
cycleway = track AND cycleway:oneway = no AND cycleway:width < 2.41Twoway cycleway track.
cycleway = track AND cycleway:oneway = no AND 2.4 <= cycleway:width < 3.23
cycleway = track AND cycleway:oneway = no AND 3.2 <= cycleway:width < 4.04
cycleway = track AND cycleway:oneway = no AND cycleway:width >= 45
cycleway = lane (no width specified)4Cycleway 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.22
cycleway = lane AND 1.2 <= cycleway:width < 1.64
cycleway = lane AND 1.6 <= cycleway:width < 24
cycleway = lane AND cycleway:width >= 25
cycleway = opposite_lane5A designated cycle lane in the opposite direction of a oneway street.
cycleway = opposite3A oneway street without a designated lane. Often those streets are narrow and opposite traffic is hard to pass.
cycleway = shared_laneIGNOREThis indicates that there is no extra cycleway, instead the street is shared with cars.
cycleway = sharedIGNOREThis indicates that there is no extra cycleway, instead the street is shared with cars.
cycleway = share_busway3
cycleway = separateIGNOREThis 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
buswaydefault (bicycle not specified) 0Cyclists 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
escape0
footwaybicycle IN (NA, no, dismount)1Cyclists have to dismount, as they are not explicitly allowed.
footwaybicycle IN ( yes, designated, permissive)2Cyclists share the path with pedestrians.
footwaybicycle IN ( yes, designated, permissive) AND segretated = yes3Pedestrians and cyclists have separated ways. No further information on the cycleway is given - otherwise the above rating for cycleways apply.
living streetbicycle != no 4
motorway OR motorway_link0
pathdefault2
pathsegregated = yes4Pedestrians and cyclists have seperated ways.
pedestrianbicycle = NA1Cyclists have to dismount, as they are not explicitly allowed.
pedestrianbicycle IN ( yes, designated, permissive)2Cyclists share the path with pedestrians.
bicycle IN ( yes, designated, permissive) AND segretated = yes4Pedestrians and cyclists have seperated ways.
platform0
primary OR primary_linkbicycle != no 1
proposed0
residentialbicycle != no 4
roadbicycle != no 2
secondary OR secondary_linkbicycle != no 2
servicebicycle != no 2
steps0Stairs cannot be passed with cargo bikes.
tertiary OR tertiary_linkbicycle != no 3
track default (tracktype not specified) 1
trackbicycle IN (no, dismount)1Cyclists have to dismount.
tracktracktype = grade14
tracktracktype = grade23
tracktracktype = grade31
tracktracktype = grade41
tracktracktype = grade50
trunk OR trunk_linkdefault (bicycle not specified)0If not stated otherwise bicycles are not allowed on trunks.
trunk OR trunk_linkbicycle IN ( yes, designated, permissive)2
unclassifiedbicycle != 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.

TagValueRating Street Type (0: impassible - 5: optimal)
smoothnessexcellent5
good4
intermediate3
bad2
very bad1
horrible0
very horrible0
impassable0
surfacepaved4
asphalt5
paving_stones4
concrete4
concrete:plates 4
concrete:lanes 2
sett2
cobblestone2
cobblestone:flattened2
unhewn_cobblestone1
unpaved1
compacted3
dirt1
earth1
fine_gravel2
grass1
grass_paver1
gravel1
ground1
metal3
mud0
pebblestone1
salt1
sand0
rock0
wood1

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]).

BarrierMultiplier
Barrier
cycle_barrier0
bollard(no maxwidth or maxwidth:physical specified)0.8
bollardmaxwidth OR maxwidth:physical < 0.9 m0
bollardmaxwidth OR maxwidth:physical < 1.0 m0.2
bollardmaxwidth OR maxwidth:physical < 1.2 m0.4
bollardmaxwidth OR maxwidth:physical < 1.5 m0.8
bollardmaxwidth OR maxwidth:physical >= 1.5 m1
block(no maxwidth or maxwidth:physical specified)0.8
blockmaxwidth OR maxwidth:physical < 0.9 m0
blockmaxwidth OR maxwidth:physical < 1.0 m0.2
blockmaxwidth OR maxwidth:physical < 1.2 m0.4
blockmaxwidth OR maxwidth:physical < 1.5 m0.8
blockmaxwidth OR maxwidth:physical >= 1.5 m1
lift_gate(no maxwidth or maxwidth:physical specified)0,8
lift_gatemaxwidth OR maxwidth:physical < 0.9 m0
lift_gatemaxwidth OR maxwidth:physical < 1.0 m0,2
lift_gatemaxwidth OR maxwidth:physical < 1.2 m0,4
lift_gatemaxwidth OR maxwidth:physical < 1.5 m0,8
lift_gatemaxwidth OR maxwidth:physical >= 1.5 m1
kerb(no height specified)0.4
kerbkerb = raised0.2
kerbkerb = lowered0.6
kerbkerb = flush1
Traffic_calming
bump0.6
mini_bumps0.6
rumble_strip0.6
This article is issued from Openstreetmap. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.