Multilanguage Interops
The Caesar framework is not limited to direct Julia use.
NavAbility SDKs and APIs
The maintainers of Caesar.jl together with NavAbility.io are developing a standardized SDK / API for much easier multi-language / multi-access use of the solver features. The Documentation for the NavAbilitySDK's can be found here.
Contact info@navability.io for more information.
Static, Shared Object .so
Compilation
See Compiling Binaries.
ROS Integration
See ROS Integration.
Python Direct
For completeness, another design pattern is to wrap Julia packages for direct access from python, see SciML/diffeqpy as example.
[OUTDATED] ZMQ Messaging Interface
Caesar.jl has a ZMQ messaging interface (interested can see code here) that allows users to interact with the solver code base in a variety of ways. The messaging interface is not meant to replace static .so
library file compilation but rather provide a more versatile and flexible development strategy.
Starting the Caesar ZMQ Navigation Server
Start the Caesar.ZmqCaesar
server in a Julia session with a few process cores and full optimization:
julia -p4 -O3
Then run the following commands, and note these steps have also been scripted here:
#import the required modules
using Caesar, Caesar.ZmqCaesar
# create empty factor graph and config objects
fg = initfg()
config = Dict{String, String}()
zmqConfig = ZmqServer(fg, config, true, "tcp://*:5555");
# Start the server over ZMQ
start(zmqConfig)
# give the server a minute to start up ...
The current tests are a good place to see some examples of the current interfacing functions. Feel free to change the ZMQ interface for to any of the ZMQ supported modes of data transport, such as Interprocess Communication (IPC) vs. TCP.
Alternative Methods
Interfacing from languages like Python may also be achieved using PyCall.jl although little work has been done in the Caesar.jl framework to explore this path. Julia is itself interactive/dynamic and has plenty of line-by-line and Integrated Development Environment support – consider trying Julia for your application.