Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
ais2msg
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Jiandong Chen
ais2msg
Commits
1b7ed5b2
Commit
1b7ed5b2
authored
1 year ago
by
Jiandong Chen
Browse files
Options
Downloads
Patches
Plain Diff
add outdated policy
parent
f6becd97
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
ais2msg/aismsg_publisher.py
+24
-5
24 additions, 5 deletions
ais2msg/aismsg_publisher.py
with
24 additions
and
5 deletions
ais2msg/aismsg_publisher.py
+
24
−
5
View file @
1b7ed5b2
...
@@ -7,6 +7,8 @@ from aismsg.msg import AISObjectStamped, AISObjectArray
...
@@ -7,6 +7,8 @@ from aismsg.msg import AISObjectStamped, AISObjectArray
from
ais2msg.object_helper
import
get_AISobj_from_decode_msg
,
decode_message
from
ais2msg.object_helper
import
get_AISobj_from_decode_msg
,
decode_message
QUEUE_SIZE
=
1000
QUEUE_SIZE
=
1000
OUTDATED_THRESHOLD_SEC
=
20
OUTDATED_THRESHOLD_NANOSEC
=
OUTDATED_THRESHOLD_SEC
*
1000000000
AIS_OBJECT_PUBLISHER_NAME
=
"
AIS_Publisher
"
AIS_OBJECT_PUBLISHER_NAME
=
"
AIS_Publisher
"
AIS_OBJECT_PUBLISHER_PUB_TOPIC
=
"
/AISObjectPub
"
AIS_OBJECT_PUBLISHER_PUB_TOPIC
=
"
/AISObjectPub
"
AIS_OBJECT_ARRAY_PUBLISHER_NAME
=
"
AIS_Array_Publisher
"
AIS_OBJECT_ARRAY_PUBLISHER_NAME
=
"
AIS_Array_Publisher
"
...
@@ -23,8 +25,12 @@ class AISObjectPublisher(Node):
...
@@ -23,8 +25,12 @@ class AISObjectPublisher(Node):
self
.
_ros_setup
()
self
.
_ros_setup
()
self
.
outdated_threshold_nanosec
=
OUTDATED_THRESHOLD_NANOSEC
self
.
counter
=
0
self
.
counter
=
0
self
.
last_mmsi
=
None
self
.
last_mmsi
=
None
self
.
last_timestamp
=
None
self
.
mmsi_obj_dict
=
{}
self
.
mmsi_obj_dict
=
{}
def
publish_data
(
self
,
data
):
def
publish_data
(
self
,
data
):
...
@@ -43,7 +49,6 @@ class AISObjectPublisher(Node):
...
@@ -43,7 +49,6 @@ class AISObjectPublisher(Node):
aisobj
=
get_AISobj_from_decode_msg
(
aisobj
=
get_AISobj_from_decode_msg
(
decode_msg
,
self
.
mmsi_obj_dict
[
self
.
last_mmsi
])
decode_msg
,
self
.
mmsi_obj_dict
[
self
.
last_mmsi
])
obj
=
aisobj
.
object
obj
=
aisobj
.
object
obj
.
timestamp_last_update
=
self
.
get_clock
().
now
().
nanoseconds
self
.
get_logger
().
info
(
f
"
Update Exist mmsi:
{
self
.
last_mmsi
}
"
)
self
.
get_logger
().
info
(
f
"
Update Exist mmsi:
{
self
.
last_mmsi
}
"
)
else
:
else
:
# if mmsi not exist, create a new one
# if mmsi not exist, create a new one
...
@@ -51,13 +56,15 @@ class AISObjectPublisher(Node):
...
@@ -51,13 +56,15 @@ class AISObjectPublisher(Node):
aisobj
=
get_AISobj_from_decode_msg
(
decode_msg
)
aisobj
=
get_AISobj_from_decode_msg
(
decode_msg
)
obj
=
aisobj
.
object
obj
=
aisobj
.
object
obj
.
timestamp_create
=
self
.
get_clock
().
now
().
nanoseconds
obj
.
timestamp_create
=
self
.
get_clock
().
now
().
nanoseconds
obj
.
timestamp_last_update
=
self
.
get_clock
().
now
().
nanoseconds
self
.
mmsi_obj_dict
[
self
.
last_mmsi
]
=
aisobj
self
.
mmsi_obj_dict
[
self
.
last_mmsi
]
=
aisobj
self
.
get_logger
().
info
(
f
"
Got New mmsi:
{
self
.
last_mmsi
}
"
)
self
.
get_logger
().
info
(
f
"
Got New mmsi:
{
self
.
last_mmsi
}
"
)
aisobj
.
object
.
timestamp_last_update
=
self
.
get_clock
().
now
(
).
nanoseconds
aisobj
.
header
.
stamp
=
self
.
get_clock
().
now
().
to_msg
()
aisobj
.
header
.
stamp
=
self
.
get_clock
().
now
().
to_msg
()
aisobj
.
header
.
frame_id
=
str
(
self
.
counter
)
aisobj
.
header
.
frame_id
=
str
(
self
.
counter
)
self
.
counter
+=
1
self
.
counter
+=
1
self
.
last_timestamp
=
aisobj
.
object
.
timestamp_last_update
except
RuntimeError
:
except
RuntimeError
:
self
.
get_logger
().
warning
(
self
.
get_logger
().
warning
(
...
@@ -65,15 +72,27 @@ class AISObjectPublisher(Node):
...
@@ -65,15 +72,27 @@ class AISObjectPublisher(Node):
return
return
self
.
_publish
()
self
.
_publish
()
self
.
_remove_outdated
()
def
_publish
(
self
):
self
.
publisher
.
publish
(
self
.
mmsi_obj_dict
[
self
.
last_mmsi
])
def
_ros_setup
(
self
):
def
_ros_setup
(
self
):
self
.
publisher
=
self
.
create_publisher
(
AISObjectStamped
,
self
.
publisher
=
self
.
create_publisher
(
AISObjectStamped
,
AIS_OBJECT_PUBLISHER_PUB_TOPIC
,
AIS_OBJECT_PUBLISHER_PUB_TOPIC
,
QUEUE_SIZE
)
QUEUE_SIZE
)
def
_publish
(
self
):
self
.
publisher
.
publish
(
self
.
mmsi_obj_dict
[
self
.
last_mmsi
])
def
_remove_outdated
(
self
):
out_mmsi
=
[
k
for
k
,
v
in
self
.
mmsi_obj_dict
.
items
()
if
self
.
last_timestamp
-
v
.
object
.
timestamp_last_update
>
self
.
outdated_threshold_nanosec
]
for
mmsi
in
out_mmsi
:
self
.
mmsi_obj_dict
.
pop
(
mmsi
)
self
.
get_logger
().
info
(
f
"
Remove outdated mmsi:
{
mmsi
}
"
)
class
AISObjectArrayPublisher
(
AISObjectPublisher
):
class
AISObjectArrayPublisher
(
AISObjectPublisher
):
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment