From e3d8f35df7c231bae29f0f959c40af961571021b Mon Sep 17 00:00:00 2001 From: dehann Date: Tue, 19 Sep 2023 21:10:08 -0700 Subject: [PATCH 1/3] refactor for PyCaesar --- src/3rdParty/_PCL/_PCL.jl | 10 +- src/3rdParty/_PCL/services/ROSConversions.jl | 87 -------------- src/Caesar.jl | 45 +++---- src/ros/CaesarROS.jl | 28 ----- src/ros/ROSConversions.jl | 18 --- src/ros/Utils/RosbagSubscriber.jl | 120 ------------------- src/ros/Utils/rosbagReader.py | 28 ----- src/ros/Utils/rosbagWriter.py | 14 --- 8 files changed, 29 insertions(+), 321 deletions(-) delete mode 100644 src/3rdParty/_PCL/services/ROSConversions.jl delete mode 100644 src/ros/CaesarROS.jl delete mode 100644 src/ros/ROSConversions.jl delete mode 100644 src/ros/Utils/RosbagSubscriber.jl delete mode 100644 src/ros/Utils/rosbagReader.py delete mode 100644 src/ros/Utils/rosbagWriter.py diff --git a/src/3rdParty/_PCL/_PCL.jl b/src/3rdParty/_PCL/_PCL.jl index 0957362c8..9045e4e29 100644 --- a/src/3rdParty/_PCL/_PCL.jl +++ b/src/3rdParty/_PCL/_PCL.jl @@ -59,11 +59,11 @@ include("services/ConsolidateRigidTransform.jl") include("services/ICP_Simple.jl") -function __init__() - # @require LasIO="570499db-eae3-5eb6-bdd5-a5326f375e68" include("services/LasIOSupport.jl") - @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("services/ROSConversions.jl") - # moved plotting out of Caesar, use Arena.jl or RoMEPlotting.jl instead -end +# function __init__() +# # @require LasIO="570499db-eae3-5eb6-bdd5-a5326f375e68" include("services/LasIOSupport.jl") +# @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("services/ROSConversions.jl") +# # moved plotting out of Caesar, use Arena.jl or RoMEPlotting.jl instead +# end end \ No newline at end of file diff --git a/src/3rdParty/_PCL/services/ROSConversions.jl b/src/3rdParty/_PCL/services/ROSConversions.jl deleted file mode 100644 index 8fe5d8bf8..000000000 --- a/src/3rdParty/_PCL/services/ROSConversions.jl +++ /dev/null @@ -1,87 +0,0 @@ -# conversions between ROS and _PCL - -@info "Caesar._PCL is loading tools related to RobotOS.jl." -@debug "Caesar._PCL RobotOS.jl requires user to first run as @rostypegen (on messages below) in `Main` before loading Caesar." -@debug " @rosimport sensor_msgs.msg: PointCloud2" - -using .RobotOS - -# FIXME, note this is not working, functions using Main. as workaround -@rosimport std_msgs.msg: Header -@rosimport sensor_msgs.msg: PointField -@rosimport sensor_msgs.msg: PointCloud2 - - -Base.convert(::Type{UInt64}, rost::RobotOS.Time) = UInt64(rost.secs)*1000000 + trunc(UInt64, rost.nsecs*1e-3) -Base.convert(::Type{RobotOS.Time}, tm::UInt64) = RobotOS.Time(trunc(Int32,tm*1e-6), Int32((tm % 1_000_000)*1000) ) - -# embedded test to avoid CI requiring all of ROS and PyCall -@assert convert(RobotOS.Time, convert(UInt64, RobotOS.Time(1646305718, 997857000))) == RobotOS.Time(1646305718, 997857000) "conversion to and from RobotOS.Time and UInt64 not consistent" - -# Really odd constructor, strong assumption that user FIRST ran @rostypegen in Main BEFORE loading Caesar -# https://docs.ros.org/en/hydro/api/pcl_conversions/html/pcl__conversions_8h_source.html#l00208 -function PCLPointCloud2(msg::Main.sensor_msgs.msg.PointCloud2) - header = Header(;stamp = msg.header.stamp, - seq = msg.header.seq, - frame_id= msg.header.frame_id ) - # - - # all PointField elements - pfs = PointField[PointField(;name=pf_.name,offset=pf_.offset,datatype=pf_.datatype,count=pf_.count) for pf_ in msg.fields] - - endian = msg.is_bigendian ? _PCL_ENDIAN_BIG_BYTE : _PCL_ENDIAN_LITTLE_WORD - PCLPointCloud2(;header, - height = msg.height, - width = msg.width, - fields = pfs, - data = msg.data, - is_bigendian= endian, - point_step = msg.point_step, - row_step = msg.row_step, - is_dense = UInt8(msg.is_dense) - ) - # -end - - -""" - $SIGNATURES - -Convert `PCLPointCloud2` type to ROS message `sensor_msgs.msg.PointCloud2`. - -See also: [`Caesar._PCL.PCLPointCloud2`](@ref), [`Caesar._PCL.PointCloud`](@ref). -""" -function toROSPointCloud2(pc2::PCLPointCloud2) - header = Main.std_msgs.msg.Header(); - header.seq = pc2.header.seq - header.stamp = convert(RobotOS.Time, pc2.header.stamp) - header.frame_id = pc2.header.frame_id - - msg = Main.sensor_msgs.msg.PointCloud2(); - - msg.header = header - msg.height = pc2.height - msg.width = pc2.width - - # all PointField elements - fields = Main.sensor_msgs.msg.PointField[] - for pf_ in pc2.fields - mpf = Main.sensor_msgs.msg.PointField() - mpf.name = pf_.name - mpf.offset=pf_.offset - mpf.datatype= convert(UInt8, pf_.datatype) - mpf.count=pf_.count - push!(fields, mpf) - end - msg.fields = fields - - msg.is_bigendian = pc2.is_bigendian == _PCL_ENDIAN_BIG_BYTE - msg.point_step = pc2.point_step - msg.row_step = pc2.row_step - msg.data = pc2.data - msg.is_dense = pc2.is_dense - - msg -end - -# \ No newline at end of file diff --git a/src/Caesar.jl b/src/Caesar.jl index 5b9345a03..d9b07c2a3 100644 --- a/src/Caesar.jl +++ b/src/Caesar.jl @@ -107,29 +107,32 @@ using Requires # conditional loading for ROS function __init__() - # ZMQ server and endpoints - # @require ZMQ="c2297ded-f4af-51ae-bb23-16f91089e4e1" include("zmq/ZmqCaesar.jl") - @require PyCall="438e738f-606a-5dbb-bf0a-cddfbfd45ab0" begin - @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("ros/CaesarROS.jl") - end - # @require Colors="5ae59095-9a9b-59fe-a467-6f913c188581" include("3rdParty/_PCL/_PCL.jl") - # @require AprilTags="f0fec3d5-a81e-5a6a-8c28-d2b34f3659de" begin - # include("images/apriltags.jl") - # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/AprilTagDrawingTools.jl") + # # ZMQ server and endpoints + # # @require ZMQ="c2297ded-f4af-51ae-bb23-16f91089e4e1" include("zmq/ZmqCaesar.jl") + + # @require PyCall="438e738f-606a-5dbb-bf0a-cddfbfd45ab0" begin + # @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("ros/CaesarROS.jl") # end - # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/imagedraw.jl") - # @require ImageMagick="6218d12a-5da1-5696-b52f-db25d2ecc6d1" include("images/imagedata.jl") - @require Images="916415d5-f1e6-5110-898d-aaa5f9f070e0" begin - # include("images/images.jl") - # include("images/ImageToVideoUtils.jl") - # include("images/ScanMatcherUtils.jl") - # include("images/ScanMatcherPose2.jl") - # include("images/ScatterAlignPose2.jl") + + # # @require Colors="5ae59095-9a9b-59fe-a467-6f913c188581" include("3rdParty/_PCL/_PCL.jl") + # # @require AprilTags="f0fec3d5-a81e-5a6a-8c28-d2b34f3659de" begin + # # include("images/apriltags.jl") + # # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/AprilTagDrawingTools.jl") + # # end + # # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/imagedraw.jl") + # # @require ImageMagick="6218d12a-5da1-5696-b52f-db25d2ecc6d1" include("images/imagedata.jl") + # @require Images="916415d5-f1e6-5110-898d-aaa5f9f070e0" begin + # # include("images/images.jl") + # # include("images/ImageToVideoUtils.jl") + # # include("images/ScanMatcherUtils.jl") + # # include("images/ScanMatcherPose2.jl") + # # include("images/ScatterAlignPose2.jl") - # moved Gadfly plotting to RoMEPlotting - # @require Gadfly="c91e804a-d5a3-530f-b6f0-dfbca275c004" include("plotting/ScatterAlignPlotting.jl") - @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("images/ROSConversions.jl") - end + # # moved Gadfly plotting to RoMEPlotting + # # @require Gadfly="c91e804a-d5a3-530f-b6f0-dfbca275c004" include("plotting/ScatterAlignPlotting.jl") + # @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("images/ROSConversions.jl") + # end + # @require ImageFeatures="92ff4b2b-8094-53d3-b29d-97f740f06cef" include("images/imagefeatures.jl") @require Distributed="8ba89e20-285c-5b6f-9357-94700520ee1b" include("images/DistributedUtils.jl") end diff --git a/src/ros/CaesarROS.jl b/src/ros/CaesarROS.jl deleted file mode 100644 index 4d0e8e96a..000000000 --- a/src/ros/CaesarROS.jl +++ /dev/null @@ -1,28 +0,0 @@ -# tools to load ROS environment - -@info "Loading Caesar PyCall specific utilities (using PyCall)." - -using .PyCall -using .RobotOS - -import Unmarshal: unmarshal - -@rosimport std_msgs.msg: Header - -# standard types -@rosimport sensor_msgs.msg: PointCloud2 -@rosimport sensor_msgs.msg: LaserScan -@rosimport sensor_msgs.msg: CompressedImage -@rosimport sensor_msgs.msg: Image -@rosimport sensor_msgs.msg: Imu -@rosimport tf2_msgs.msg: TFMessage -@rosimport geometry_msgs.msg: TransformStamped -@rosimport geometry_msgs.msg: Transform -@rosimport geometry_msgs.msg: Vector3 -@rosimport geometry_msgs.msg: Quaternion -@rosimport nav_msgs.msg: Odometry - -# rostypegen() - -include("Utils/RosbagSubscriber.jl") -include("ROSConversions.jl") diff --git a/src/ros/ROSConversions.jl b/src/ros/ROSConversions.jl deleted file mode 100644 index ac4e0bad6..000000000 --- a/src/ros/ROSConversions.jl +++ /dev/null @@ -1,18 +0,0 @@ - - -function unmarshal( - header::Main.std_msgs.msg.Header -) - # - Dict{String,Any}( - "seq" => header.seq, - "stamp" => Dict{String,Int}( - "secs"=>header.stamp.secs, - "nsecs"=>header.stamp.nsecs - ), - "frame_id" => header.frame_id, - "_type" => "ROS1/std_msgs/Header" - ) -end - - diff --git a/src/ros/Utils/RosbagSubscriber.jl b/src/ros/Utils/RosbagSubscriber.jl deleted file mode 100644 index 4b20fcb71..000000000 --- a/src/ros/Utils/RosbagSubscriber.jl +++ /dev/null @@ -1,120 +0,0 @@ - -@info "Loading Caesar ROS specific utilities (using RobotOS)." - - -export RosbagSubscriber, loop!, getROSPyMsgTimestamp, nanosecond2datetime -export RosbagWriter - -## Load rosbag file parser - -pushfirst!(PyVector(pyimport("sys")."path"), @__DIR__ ) - -rosbagReaderPy = pyimport("rosbagReader") -RosbagParser = rosbagReaderPy."RosbagParser" - -# piggy back writer code here -writeRosbagPy = pyimport("rosbagWriter") - -""" - RosbagWriter(bagfilepath) - -```julia -# Link with ROSbag infrastructure via rospy -using Pkg -ENV["PYTHON"] = "/usr/bin/python3" -Pkg.build("PyCall") -using PyCall -using RobotOS -@rosimport std_msgs.msg: String -rostypegen() -using Caesar - -bagwr = Caesar.RosbagWriter("/tmp/test.bag") -s = std_msgs.msg.StringMsg("test") -bagwr.write_message("/ch1", s) -bagwr.close() -``` -""" -struct RosbagWriter end -(::Type{RosbagWriter})(args...; kwargs...) = writeRosbagPy."RosbagWriter"(args...; kwargs...) - -## Common handler approach - -mutable struct RosbagSubscriber - bagfile::String - channels::Vector{Symbol} - callbacks::Dict{Symbol, Function} - readers::Dict{Symbol,PyObject} - syncBuffer::Dict{Symbol,Tuple{DateTime, Int}} # t,ns,msgdata - nextMsgChl::Symbol - nextMsgTimestamp::Tuple{DateTime, Int} - compression::Any - # constructors -end -RosbagSubscriber(bagfile::AbstractString; - compression=nothing, - channels::Vector{Symbol}=Symbol[], - callbacks::Dict{Symbol,Function}=Dict{Symbol,Function}(), - readers::Dict{Symbol,PyObject}=Dict{Symbol,PyObject}(), - syncBuffer::Dict{Symbol,Tuple{DateTime, Int}}=Dict{Symbol,Tuple{DateTime, Int}}() ) = RosbagSubscriber(bagfile,channels,callbacks,readers,syncBuffer, :null, (unix2datetime(0),0),compression) -# - -# loss of accuracy (Julia only Millisecond) -function nanosecond2zoneddatetime(nsT::Int64) - nano = nsT % 1_000_000_000 - secs = nsT - (nano % 1_000_000) - secs /= 1_000_000_000 - ZonedDateTime(unix2datetime(secs), localzone()) -end -@deprecate nanosecond2datetime(x...) nanosecond2zoneddatetime(x...) - -function getROSPyMsgTimestamp(msgT::PyObject) - msgNs = msgT.to_sec() - # jlSeconds = isa(msg, PyObject) ? msgNs : msgNs - jlSeconds = floor(Int64, Float64(msgNs)) - jlNanosec = msgT.to_nsec()%1000000000 - # try use regular seconds if no Nanosecond information is available - jlNanosec = floor(Int,jlNanosec) == 0 && 0 < Float64(msgNs) % 1.0 |> abs ? Float64(msgNs) % 1.0 : jlNanosec - (unix2datetime(jlSeconds), jlNanosec) -end - -function loop!(rbs::RosbagSubscriber, args...) - # figure out which channel is behind - t1 = rbs.syncBuffer[rbs.channels[1]][1] - times = (x->Nanosecond(rbs.syncBuffer[x][1]-t1)+Nanosecond(rbs.syncBuffer[x][2])).(rbs.channels) - minT = minimum(times) - idx = findfirst(x->x==minT, times) - rbs.nextMsgChl = rbs.channels[idx] - - # get next event from that channel - msg = rbs.readers[rbs.nextMsgChl].get_next_message() - - # try find event time - msgT = msg[end] - return if isa(msgT, PyObject) - # update the syncBuffer - rbs.syncBuffer[rbs.nextMsgChl] = rbs.nextMsgTimestamp = getROSPyMsgTimestamp(msgT) - @debug "RosbagSubscriber got msg $(rbs.nextMsgChl)" - # call the callback - rbs.callbacks[rbs.nextMsgChl](msg, args...) - true - else - @warn "Unsure about decoding this topic:msg type pair, make sure the subscribed topic names are spelled exactly right." rbs.nextMsgChl msgT maxlog=10 - # @show msg - false - end -end - -function (rbs::RosbagSubscriber)( chl::AbstractString, - ::Type{MT}, - callback::Function, - args::Tuple; - msgType=nothing ) where {MT <: RobotOS.AbstractMsg} - # - cn = Symbol(string(chl)) - push!(rbs.channels, cn) - # include the type converter, see ref: https://github.com/jdlangs/RobotOS.jl/blob/21a7088461a21bc9b24cd2763254d5043d5b1800/src/callbacks.jl#L23 - rbs.callbacks[cn] = (m)->callback(convert(MT,m[2]),args...) - rbs.syncBuffer[cn] = (unix2datetime(0), 0) - rbs.readers[cn] = RosbagParser(rbs.bagfile, chl) #; rbs.compression) -end diff --git a/src/ros/Utils/rosbagReader.py b/src/ros/Utils/rosbagReader.py deleted file mode 100644 index a08fd462d..000000000 --- a/src/ros/Utils/rosbagReader.py +++ /dev/null @@ -1,28 +0,0 @@ -# - -# written by kurransingh - -import rosbag -import sys - -class RosbagParser: - def __init__(self, bag_file_name, topic_name): #, compression=None): - #bag_file_name = sys.argv[1] - #topic_name = sys.argv[2] - - self.bag = rosbag.Bag(bag_file_name, 'r') #, compression=compression) - self.bag_contents = self.bag.read_messages(topics=[topic_name]) - - self.idx = 0 - self.topic_size = self.bag.get_message_count(topic_filters=topic_name) - - def get_next_message(self): - if (self.idx < self.topic_size): - topic, msg, time = next(self.bag_contents) - # https://stackoverflow.com/questions/18547878/attribute-error-next - # topic, msg, time = self.bag_contents.__next__() - self.idx += 1 - return topic, msg, time - else: - self.bag.close() - return False, False, False diff --git a/src/ros/Utils/rosbagWriter.py b/src/ros/Utils/rosbagWriter.py deleted file mode 100644 index 825d4460e..000000000 --- a/src/ros/Utils/rosbagWriter.py +++ /dev/null @@ -1,14 +0,0 @@ - -import rosbag -import sys - -class RosbagWriter: - def __init__(self, filename): - self.filename = filename - self.bag = rosbag.Bag(filename, 'w') - - def write_message(self, channel, msg): - self.bag.write(channel, msg) # , header - - def close(self): - self.bag.close() \ No newline at end of file From d5c01ac0935b920a2bfdc91169e701936e1e4c48 Mon Sep 17 00:00:00 2001 From: dehann Date: Tue, 19 Sep 2023 22:30:05 -0700 Subject: [PATCH 2/3] remove Requires.jl dep --- LICENSE | 3 +- Project.toml | 2 - .../visualization}/DistributedUtils.jl | 4 -- src/3rdParty/_PCL/_PCL.jl | 2 +- src/Caesar.jl | 68 +++++++++---------- 5 files changed, 37 insertions(+), 42 deletions(-) rename {src/images => examples/visualization}/DistributedUtils.jl (88%) diff --git a/LICENSE b/LICENSE index d2eb8af1a..1268e7581 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,7 @@ The MIT License (MIT) -Copyright (c) 2016-2019 +Copyright (c) 2020-2023 Contributors and NavAbility, Inc. +Copyright (c) 2016-2020 Dehann Fourie Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/Project.toml b/Project.toml index aa0a57240..df9ab429d 100644 --- a/Project.toml +++ b/Project.toml @@ -43,7 +43,6 @@ Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" ProgressMeter = "92933f4c-e287-5a05-a399-4b506db050ca" Reexport = "189a3867-3050-52da-a836-e630ba90ab69" -Requires = "ae029012-a4dd-5104-9daa-d747884805df" RoME = "91fb55c2-4c03-5a59-ba21-f4ea956187b8" Rotations = "6038ab10-8711-5258-84ad-4b1120ba62dc" Serialization = "9e88b42a-f829-5b0c-bbe9-9e923198166b" @@ -106,7 +105,6 @@ NearestNeighbors = "0.4" Optim = "1" ProgressMeter = "1" Reexport = "1" -Requires = "1" RoME = "0.21, 0.22" Rotations = "1.1" StaticArrays = "1" diff --git a/src/images/DistributedUtils.jl b/examples/visualization/DistributedUtils.jl similarity index 88% rename from src/images/DistributedUtils.jl rename to examples/visualization/DistributedUtils.jl index f3b579b65..35c1c408f 100644 --- a/src/images/DistributedUtils.jl +++ b/examples/visualization/DistributedUtils.jl @@ -1,8 +1,4 @@ -@info "Caesar.jl is loading tools related to Distributed.jl" - -export plotToVideo_Distributed - function plotToVideo_Distributed( pltfnc::Function, args::Union{<:AbstractVector, <:Tuple}; diff --git a/src/3rdParty/_PCL/_PCL.jl b/src/3rdParty/_PCL/_PCL.jl index 9045e4e29..107366410 100644 --- a/src/3rdParty/_PCL/_PCL.jl +++ b/src/3rdParty/_PCL/_PCL.jl @@ -15,7 +15,7 @@ using Colors using Dates using Printf using DocStringExtensions -using Requires +# using Requires using StaticArrays using Statistics using StatsBase diff --git a/src/Caesar.jl b/src/Caesar.jl index d9b07c2a3..4457f215c 100644 --- a/src/Caesar.jl +++ b/src/Caesar.jl @@ -101,40 +101,40 @@ include("../ext/WeakdepsPrototypes.jl") include("Deprecated.jl") -# FIXME remove -using Requires - - -# conditional loading for ROS -function __init__() - # # ZMQ server and endpoints - # # @require ZMQ="c2297ded-f4af-51ae-bb23-16f91089e4e1" include("zmq/ZmqCaesar.jl") - - # @require PyCall="438e738f-606a-5dbb-bf0a-cddfbfd45ab0" begin - # @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("ros/CaesarROS.jl") - # end - - # # @require Colors="5ae59095-9a9b-59fe-a467-6f913c188581" include("3rdParty/_PCL/_PCL.jl") - # # @require AprilTags="f0fec3d5-a81e-5a6a-8c28-d2b34f3659de" begin - # # include("images/apriltags.jl") - # # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/AprilTagDrawingTools.jl") - # # end - # # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/imagedraw.jl") - # # @require ImageMagick="6218d12a-5da1-5696-b52f-db25d2ecc6d1" include("images/imagedata.jl") - # @require Images="916415d5-f1e6-5110-898d-aaa5f9f070e0" begin - # # include("images/images.jl") - # # include("images/ImageToVideoUtils.jl") - # # include("images/ScanMatcherUtils.jl") - # # include("images/ScanMatcherPose2.jl") - # # include("images/ScatterAlignPose2.jl") +# # FIXME remove +# using Requires + + +# # conditional loading for ROS +# function __init__() +# # # ZMQ server and endpoints +# # # @require ZMQ="c2297ded-f4af-51ae-bb23-16f91089e4e1" include("zmq/ZmqCaesar.jl") + +# # @require PyCall="438e738f-606a-5dbb-bf0a-cddfbfd45ab0" begin +# # @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("ros/CaesarROS.jl") +# # end + +# # # @require Colors="5ae59095-9a9b-59fe-a467-6f913c188581" include("3rdParty/_PCL/_PCL.jl") +# # # @require AprilTags="f0fec3d5-a81e-5a6a-8c28-d2b34f3659de" begin +# # # include("images/apriltags.jl") +# # # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/AprilTagDrawingTools.jl") +# # # end +# # # @require ImageDraw="4381153b-2b60-58ae-a1ba-fd683676385f" include("images/imagedraw.jl") +# # # @require ImageMagick="6218d12a-5da1-5696-b52f-db25d2ecc6d1" include("images/imagedata.jl") +# # @require Images="916415d5-f1e6-5110-898d-aaa5f9f070e0" begin +# # # include("images/images.jl") +# # # include("images/ImageToVideoUtils.jl") +# # # include("images/ScanMatcherUtils.jl") +# # # include("images/ScanMatcherPose2.jl") +# # # include("images/ScatterAlignPose2.jl") - # # moved Gadfly plotting to RoMEPlotting - # # @require Gadfly="c91e804a-d5a3-530f-b6f0-dfbca275c004" include("plotting/ScatterAlignPlotting.jl") - # @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("images/ROSConversions.jl") - # end - - # @require ImageFeatures="92ff4b2b-8094-53d3-b29d-97f740f06cef" include("images/imagefeatures.jl") - @require Distributed="8ba89e20-285c-5b6f-9357-94700520ee1b" include("images/DistributedUtils.jl") -end +# # # moved Gadfly plotting to RoMEPlotting +# # # @require Gadfly="c91e804a-d5a3-530f-b6f0-dfbca275c004" include("plotting/ScatterAlignPlotting.jl") +# # @require RobotOS="22415677-39a4-5241-a37a-00beabbbdae8" include("images/ROSConversions.jl") +# # end + +# # @require ImageFeatures="92ff4b2b-8094-53d3-b29d-97f740f06cef" include("images/imagefeatures.jl") +# @require Distributed="8ba89e20-285c-5b6f-9357-94700520ee1b" include("images/DistributedUtils.jl") +# end end From 4d8f38073a946714caa45a0782f904ba2498192e Mon Sep 17 00:00:00 2001 From: dehann Date: Tue, 19 Sep 2023 22:33:24 -0700 Subject: [PATCH 3/3] bump Caesar v0.16 minor for breaking to PyCaesar --- NEWS.md | 6 ++++++ Project.toml | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index f18c2255d..8cfedc329 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,12 @@ Major changes and news in Caesar.jl. +## v0.15 - v0.16 + +- Change to standard weakdeps package extensions, dropping use of Requires.jl. +- Refactor and separate out to new PyCaesar package all code using PyCall. +- Updates for Julia 1.10. +- Updates for IncrementalInference upgrades relating to StaticArray variable values. ## Changes in v0.13 - Finally adding a NEWS.md to Caesar.jl. diff --git a/Project.toml b/Project.toml index df9ab429d..d0c6baef4 100644 --- a/Project.toml +++ b/Project.toml @@ -2,7 +2,7 @@ name = "Caesar" uuid = "62eebf14-49bc-5f46-9df9-f7b7ef379406" keywords = ["SLAM", "state-estimation", "MM-iSAM", "MM-iSAMv2", "inference", "robotics", "ROS"] desc = "Non-Gaussian simultaneous localization and mapping" -version = "0.15.0" +version = "0.16.0" [deps] ApproxManifoldProducts = "9bbbb610-88a1-53cd-9763-118ce10c1f89"