You are now following this Submission
- You will see updates in your followed content feed
- You may receive emails, depending on your communication preferences
Sphero Multi-Agent Robotic Testbed for Matlab (SMART_matlab)
Share 'Sphero Multi-Agent Robotic Testbed for Matlab (SMART_matlab)'
We present a distributed robotic platform for test and validation of multi-agent control strategies. As an example, we use this platform to achieve a desired formation of Sphero robots. The formation control and collision avoidance strategies are fully distributed. Implementation details and code are provided online and free.
Cite As
Kaveh Fathian (2024). Sphero Multi-Agent Robotic Testbed for Matlab (SMART_matlab) (https://github.com/TSummersLab/SMART_matlab), GitHub. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
- Robotics and Autonomous Systems > Robotics System Toolbox >
- Engineering > Electrical and Computer Engineering > Robotics >
Acknowledgements
Inspired by: Sphero Connectivity Package
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
EKF
Formation Control
Helpers
- CameraCheckerboard_Ver1_2.m
- Detect_Sphero_Initial_Ver2_5
- Detect_Sphero_Ver2_5
- FormationControl_FixScale_Ver3_2
- FormationControl_Ver3_2
- FormCtrlDesign_Ver_1_1
- projection
- receive_over_tcpip
- reconstruction
- rgb2cmyk
- send_over_tcpip
- SpheroConnect_Ver1_3
- SpheroControl_Nonhol_Ver3_2
- SpheroControl_Ver3_1
- SpheroDetectionTracking_Ver1_4
- SpheroDisconnect_Ver1_1
- SpheroHeadingSpeedEstim_Ver1_2
- SpheroKalmanFilter_Ver1_2
- SpheroLoadParam_Ver1_4
- SpheroShiftData_Ver1_1
- SpheroStopVideo
- SpheroTCPIPDetectionTracking_Ver1_2
- SpheroTheta0_Ver1_5
- SpheroVideoSetup_Ver1_0
- SpheroVideoStream_Ver1_3
- Sphero_Client_Ver1_2
- Sphero_Server_Ver1_2
- track_Sphero_Ver2_1
Sphero
Sphero/+sphero
Sphero/+sphero/private
Sphero/examples
Sphero/simulink
- getSpheroSetupBlockUserData
- msfun_realtime_pacer
- msfun_sphero_rawmotor
- msfun_sphero_readlocator
- msfun_sphero_readsensor
- msfun_sphero_roll
- msfun_sphero_setup
- sfun3d
- slblocks
cvx
cvx/builtins
cvx/builtins/@cvx
- abs
- blkdiag
- builtins.m
- cat
- conj
- conv
- ctranspose
- cumprod
- cumsum
- diag
- disp
- end
- eq
- exp
- find
- full
- ge
- gt
- hankel
- horzcat
- imag
- isreal
- kron
- ldivide
- le
- log
- lt
- max
- min
- minus
- mldivide
- mpower
- mrdivide
- mtimes
- ne
- nnz
- norm
- permute
- plus
- polyval
- power
- prod
- rdivide
- real
- reshape
- size
- sparse
- spy
- sqrt
- subsasgn
- subsref
- sum
- times
- toeplitz
- transpose
- tril
- triu
- uminus
- uplus
- vertcat
cvx/builtins/@cvxcnst
cvx/commands
- Contents.m
- cvx_begin
- cvx_begin_set
- cvx_cd
- cvx_clear.m
- cvx_end
- cvx_end_set.m
- cvx_expert
- cvx_pause
- cvx_power_warning
- cvx_precision
- cvx_profile
- cvx_quiet
- cvx_solver
- cvx_where
cvx/commands/@cvx
cvx/examples
cvx/examples/antenna_array_design
cvx/examples/circuit_design
cvx/examples/cvxbook
cvx/examples/cvxbook/Ch04_cvx_opt_probs
cvx/examples/cvxbook/Ch05_duality
cvx/examples/cvxbook/Ch06_approx_fitting
cvx/examples/cvxbook/Ch07_statistical_estim
cvx/examples/cvxbook/Ch08_geometric_probs
cvx/examples/cvxbook/Ch11_intpt_methods
cvx/examples/filter_design
cvx/examples/gp_tutorial
cvx/examples/graph_laplacian
cvx/examples/log_exp
cvx/examples/sparse_heuristics
cvx/examples/time_series_analysis
cvx/functions
- berhu
- Contents.m
- det_inv
- det_root2n
- det_rootn
- entr
- geomean
- geo_mean
- huber
- huber_circ
- huber_pos
- inv_pos
- kl_div
- lambda_max
- lambda_min
- lambda_sum_largest
- lambda_sum_smallest
- logsumexp
- logsumexp_sdp
- log_det
- log_normcdf
- log_sum_exp
- matrix_frac
- norms
- norms_largest
- norm_largest
- norm_nuc
- polyenv
- polyval_trig
- poly_env
- pos
- pow_abs
- pow_p
- pow_pos
- quad_form
- quad_over_lin
- quad_pos_over_lin
- rel_entr
- sigma_max
- square
- square_abs
- square_pos
- sum_largest
- sum_log
- sum_smallest
- sum_square
- sum_square_abs
- sum_square_pos
- sym
- trace_inv
- trace_sqrtm
- vec
cvx/functions/@cvx
- berhu
- cvx_recip
- det_inv
- det_rootn
- functions.m
- geo_mean
- huber_pos
- inv_pos
- lambda_max
- lambda_sum_largest
- log_normcdf
- log_sum_exp
- matrix_frac
- norms
- norm_nuc
- pow_abs
- pow_cvx
- pow_p
- pow_pos
- quad_form
- quad_over_lin
- quad_pos_over_lin
- rel_entr
- sigma_max
- square
- square_abs
- square_pos
- sum_largest
- sum_log
- sum_square
- sum_square_abs
- sum_square_pos
- trace_inv
- trace_sqrtm
cvx/keywords
- Contents.m
- dual
- epigraph
- expression
- expressions
- hypograph
- In
- maximise
- maximize
- minimise
- minimize
- subject
- variable
- variables
cvx/lib
- Contents.m
- cvx_accept_concave
- cvx_accept_convex
- cvx_basis
- cvx_bcompress
- cvx_blkdiag
- cvx_c2r
- cvx_check_dimension
- cvx_check_dimlist
- cvx_class
- cvx_classify
- cvx_clearpath
- cvx_collapse
- cvx_constant
- cvx_create_problem
- cvx_default_dimension
- cvx_expand_dim
- cvx_expert_check
- cvx_global.m
- cvx_id
- cvx_ids
- cvx_isaffine
- cvx_isconcave
- cvx_isconstant
- cvx_isconvex
- cvx_isnonzero
- cvx_lasterr
- cvx_pop
- cvx_r2c
- cvx_readlevel
- cvx_remap
- cvx_reshape
- cvx_setpath
- cvx_setspath
- cvx_size_check
- cvx_solve
- cvx_solve_sdpt3
- cvx_solve_sedumi
- cvx_subs2str
- cvx_subsasgn
- cvx_subsref
- cvx_subsref_check
- cvx_use_sparse
- cvx_value
- cvx_values
- cvx_vexity
- cvx_zeros
cvx/lib/@cell
cvx/lib/@cvx
- bcompress
- buncompress
- colon
- cvx
- cvx_basis
- cvx_classify
- cvx_constant
- cvx_isaffine
- cvx_isconcave
- cvx_isconstant
- cvx_isconvex
- cvx_isnonzero
- cvx_readlevel
- cvx_value
- cvx_vexity
- getdual
- in
- keywords.m
- matlab6.m
- setdual
- sets.m
- sparsify
- svec
- type
- value
cvx/lib/@cvxcnst
cvx/lib/@cvxdual
- colon
- cvxaff
- cvxdual
- cvx_basis
- cvx_value
- disp
- display
- dof
- inuse
- isreal
- name
- problem
- size
- subsref
- type
- value
cvx/lib/@cvxin
cvx/lib/@cvxobj
cvx/lib/@cvxprob
- cvxprob
- cvx_value
- disp
- eliminate
- eq
- extract
- index
- ne
- newcnstr
- newdual
- newnonl
- newobj
- newtemp
- newvar
- pop
- solve
- spy
- subsasgn
- subsref
- touch
cvx/lib/@cvxtuple
- apply
- cvxtuple
- cvx_collapse
- cvx_constant
- cvx_id
- cvx_isaffine
- cvx_isconcave
- cvx_isconstant
- cvx_isconvex
- cvx_value
- disp
- eq
- ge
- gt
- in
- le
- lt
- ne
- numel
- subsasgn
- subsref
- testall
cvx/lib/@struct
cvx/sdpt3
cvx/sdpt3/Examples
- Asum
- cheby0
- chebyinf.m
- chebymat
- control
- corrmat
- Doptdesign
- dwd.m
- etp
- geometric_mean
- gpp
- gppschur
- graph
- igmres
- lmiexamp1
- lmiexamp2
- lmiexamp3
- lmifun
- lmifun2
- logcheby
- logchebyRcone
- maxcut
- max_kcut
- mcpschur
- minEpts
- norm_min
- orthbasis
- randinfsdp.m
- randlowranksdp.m
- randmaxdet
- randsdp.m
- sdphankel
- thetaproblem
- ToeplitzApprox.m
- ToeplitzApproxSQQ.m
- viewgraph.m
cvx/sdpt3/HSDSolver
- HSDHKMcorr
- HSDHKMdirfun
- HSDHKMpred.m
- HSDHKMrhsfun
- HSDlinsysolve.m
- HSDNTcorr
- HSDNTdirfun
- HSDNTpred.m
- HSDNTrhsfun
- HSDsqlp.m
- HSDsqlpcheckconvg
- HSDsqlpCpert.m
- HSDsqlpmain.m
- HSDsqlpmisc
- mybicgstab
- sortA
cvx/sdpt3/Solver
- Arrow
- Atyfun
- AXfun
- blkbarrier
- blkcholfun.m
- blkeig
- blktrace
- checkdense
- combine_blk
- convertcmpsdp
- convertRcone.m
- degeneracy
- detect_lblk.m
- detect_ublk.m
- findcoeffsub
- gdcomp.m
- gpcomp.m
- HKMcorr
- HKMdirfun
- HKMpred.m
- HKMrhsfun
- infeaspt
- linsysolve.m
- linsysolvefun.m
- mybicgstab
- mytime
- NTcorr
- NTdirfun
- NTpred.m
- NTrhsfun
- NTscaling.m
- nzlist
- ops
- Prod2
- Prod3
- qops
- qprod
- randmat
- read_sdpa
- read_sedumi
- scaling
- schurmat_lblk
- schurmat_qblk
- schurmat_sblk
- SDPT3data_SEDUMIdata
- SDPT3soln_SEDUMIsoln
- SDPvalBounds
- skron.m
- smat
- sortA
- sqlp
- sqlparameters
- sqlpcheckconvg
- sqlpdemo.m
- sqlpmain
- sqlpmisc
- sqlpsummary
- sqlptermcode
- sqlpu2lblk
- steplength
- svec
- symqmr
- validate.m
- validate_startpoint_startpoint
cvx/sedumi
- ada_pcg.m
- adendotd.m
- Amul.m
- asmDxq.m
- blkchol.m
- bwblkslv.m
- bwdpr1.m
- cellK.m
- checkpars.m
- Contents.m
- ddot.m
- deninfac.m
- dpr1fact.m
- eigK.m
- extractA.m
- eyeK.m
- findblks.m
- finsymbden.m
- frameit.m
- fwblkslv.m
- fwdpr1.m
- getada1.m
- getada2.m
- getada3.m
- getDAt.m
- getDAtm.m
- getdense.m
- getsymbada.m
- givensrot.m
- incorder.m
- install_sedumi
- invcholfac.m
- iswnbr.m
- loopPcg.m
- makereal.m
- mat.m
- maxstep.m
- my_fprintf
- optstep.m
- ordmmdmex.m
- partitA.m
- PopK.m
- postprocessSDP
- posttransfo
- preprocessSDP
- pretransfo.m
- psdeig.m
- psdfactor.m
- psdinvjmul.m
- psdjmul.m
- psdscale.m
- qblkmul.m
- qframeit.m
- qinvjmul.m
- qjmul.m
- qreshape.m
- quadadd.m
- rotlorentz.m
- sddir
- sdfactor.m
- sdinit.m
- sedumi
- sortnnz.m
- sparbwslv.m
- sparfwslv.m
- spars
- sqrtinv.m
- statsK.m
- stepdif.m
- symbchol.m
- symbcholden.m
- symfctmex.m
- tdet.m
- triumtriu.m
- trydif.m
- updtransfo.m
- urotorder.m
- vec.m
- veccomplex.m
- vecsym.m
- vectril.m
- whichcpx.m
- widelen.m
- wrapPcg.m
- wregion.m
cvx/sedumi/conversion
- blk2vec.m
- Contents.m
- feascpx.m
- feasreal.m
- frompack.m
- fromsdpa
- getproblem.m
- prelp.m
- sdpa2vec.m
- sdpasplit
- writesdp
cvx/sets
- complex_lorentz
- Contents.m
- convex_poly_coeffs
- exponential
- geo_mean_cone
- hermitian_semidefinite
- lorentz
- nonnegative
- nonneg_poly_coeffs
- norm_ball
- rotated_complex_lorentz
- rotated_lorentz
- semidefinite
- simplex
cvx/structures
- Contents.m
- cvx_cleanup_structure
- cvx_create_structure
- cvx_invert_structure
- cvx_orthog_structure
- cvx_replicate_structure
- cvx_s_banded
- cvx_s_complex
- cvx_s_diagonal
- cvx_s_hankel
- cvx_s_hermitian
- cvx_s_lower_bidiagonal
- cvx_s_lower_hessenberg
- cvx_s_lower_triangular
- cvx_s_scaled_identity
- cvx_s_skew_symmetric
- cvx_s_sparse
- cvx_s_symmetric
- cvx_s_symmetric_ut
- cvx_s_toeplitz
- cvx_s_tridiagonal
- cvx_s_upper_bidiagonal
- cvx_s_upper_hankel
- cvx_s_upper_hessenberg
- cvx_s_upper_triangular
cvx/structures/@cvx
Sphero/examples
- Getting Started with Sphero Connectivity Package
- Sphero Connectivity Package EXAMPLES
- Sphero Motion Control
- Sphero Simulink Library and Examples
- Troubleshooting Connection Issues with Sphero
cvx/examples
- Builds a norm minimization tradeoff curve
- Builds and solves a simple inequality-constrained linear program
- Builds and solves a simple least-squares problem using cvx
- Builds and solves a simple linear program
- Closest Toeplitz SDP search.
- Equality constrained norm minimization.
- Examples from the CVX Users' guide
- Minimal phase spectral factorization
- Nonnegative matrix factorization
cvx/examples/antenna_array_design
- Minimize beamwidth of an array with arbitrary 2-D geometry
- Minimize sidelobe level of a uniform linear array via spectral factorization
- Minimize sidelobe level of an array with arbitrary 2-D geometry
- Minimize sidelobe level of an FIR broadband far-field antenna array
- Minimize thermal noise power of an array with arbitrary 2-D geometry
- Plot a polar plot of an antenna array sensitivity
- Spectral factorization using Kolmogorov 1939 approach
cvx/examples/circuit_design
- Combined sizing of drivers, repeaters, and wire
- Combined wire sizing and spacing
- Computes the step response of a linear system
- Digital circuit sizing example (GP)
- Digital circuit sizing for an inverter chain (GP)
- Elmore delay sizing for a straight wire (GP)
- LC oscillator design (GP)
- Optimal interconnect wire sizing
- Plots four different taper desings on a single graph.
- Sizing of clock meshes
- Tri-state bus sizing and topology design
- Two-input NAND gate sizing (GP)
- Wire sizing and topology design
cvx/examples/cvxbook/Ch04_cvx_opt_probs
- Exercise 4.27: Matrix fractional minimization using second-order cone programming
- Exercise 4.31: Design of a cantilever beam (GP)
- Exercise 4.38(b): Linear matrix inequalities with one variable
- Exercise 4.3: Solve a simple QP with inequality constraints
- Exercise 4.47: Maximum determinant PSD matrix completion
- Exercise 4.57: Capacity of a communication channel
- Exercise 4.5: Show the equivalence of 3 convex problem formations
- Exercise 4.60: Log-optimal investment strategy
- Plots a cantilever beam as a 3D figure.
- Section 4.3.1: Compute and display the Chebyshev center of a 2D polyhedron
- Section 4.3.1: Compute the Chebyshev center of a polyhedron
- Section 4.5.4: Design of a cantilever beam: recursive formulation (GP)
- Section 4.5.4: Frobenius norm diagonal scaling (GP)
- Section 4.5.4: Minimum spectral radius via Peron-Frobenius theory (GP)
- Section 4.6.3: Find the fastest mixing Markov chain on a graph
cvx/examples/cvxbook/Ch05_duality
- Examples 5.6,5.8: An l_p norm approximation problem
- Exercise 5.19c: Markovitz portfolio optimization w/ diversification constraint
- Exercise 5.1d: Sensitivity analysis for a simple QCQP
- Exercise 5.33: Parametrized l1-norm approximation
- Exercise 5.39: SDP relaxations of the two-way partitioning problem
- Section 5.2.4: Solves a simple QCQP
- Section 5.2.5: Mixed strategies for matrix games
- Section 5.2.5: Mixed strategies for matrix games (LP formulation)
cvx/examples/cvxbook/Ch06_approx_fitting
- Example 6.2: Robust regression using the Huber penalty
- Example 6.3: Optimal input design
- Example 6.4: Regressor selection problem
- Example 6.6: Comparison of worst-case robust, Tikhonov, and nominal least squares
- Example 6.8: Spline fitting
- Example 6.9: Bounding consumer preference
- Figure 6.15: A comparison of stochastic and worst-case robust approximation
- Figure 6.19: Polynomial fitting
- Figure 6.24: Fitting a convex function to given data
- Figure 6.2: Penalty function approximation
- Figure 6.9: An optimal tradeoff curve
- Figures 6.11-6.14: Total variation reconstruction
- Figures 6.21-6.23: Basis pursuit using Gabor functions
- Figures 6.8-6.10: Quadratic smoothing
- Section 6.1.2: Residual minimization with deadzone penalty
cvx/examples/cvxbook/Ch07_statistical_estim
- Computes Chebyshev lower bounds on probability vectors
- Computes Chernoff upper bounds on probability
- Example 7.2: Maximum entropy distribution
- Example 7.4: Binary hypothesis testing
- Figure 7.1: Logistic regression
- Figure 7.1: Logistic regression (GP version)
- Probability estimate using Monte Carlo methods
- Section 7.1.1: Counting problems with Poisson distribution
- Section 7.1.1: Covariance estimation for Gaussian variables
- Section 7.4.3: Probability bounds example with Voronoi diagram
- Section 7.5.2: Experiment design
cvx/examples/cvxbook/Ch08_geometric_probs
- Computes a minimum-perimeter bounding box subject to positioning constraints
- Euclidean distance between polyhedra
- Euclidean distance between polyhedra in 2D
- Euclidean projection on a halfspace
- Euclidean projection on a hyperplane
- Euclidean projection on a rectangle
- Euclidean projection on the nonnegative orthant
- Euclidean projection on the semidefinite cone
- Example 8.3: Bounding correlation coefficients
- Example 8.4: One free point localization
- Example 8.7: Floorplan generation test script
- Figure 8.10: Approximate linear discrimination via linear programming
- Figure 8.11: Approximate linear discrimination via support vector classifier
- Figure 8.15: Linear placement problem
- Figure 8.16: Quadratic placement problem
- Figure 8.17: Fourth-order placement problem
- Figure 8.8: Simplest linear discrimination
- Figure 8.9: Robust linear discrimination problem
- Floor planning
- Maximum volume inscribed ellipsoid in a polyhedron
- Minimum volume ellipsoid covering a finite set
- Minimum volume ellipsoid covering union of ellipsoids
- One free point localization
- Polynomial discrimination
- Polynomial discrimination
- Quadratic discrimination (separating ellipsoid)
- Section 8.1.1: Separating a point from a polyhedron
- Section 8.2.2: Separating polyhedra in 2D
- Section 8.5.3: Analytic center of a set of linear inequalities
- Separating ellipsoids in 2D
- Solve a floor planning problem given graphs H & V
cvx/examples/cvxbook/Ch11_intpt_methods
cvx/examples/filter_design
- Chebychev design of an FIR filter given a desired H(w)
- Design a 1/f spectrum shaping (pink-noise) filter
- Equalizer design example
- Maximize stopband attenuation of a bandpass IIR filter
- Maximize stopband attenuation of a linear phase lowpass FIR filter
- Maximize stopband attenuation of a lowpass FIR filter (magnitude design)
- Maximize stopband attenuation of a lowpass IIR filter
- Minimize order of a linear phase lowpass FIR filter
- Minimize order of a lowpass FIR filter (magnitude design)
- Minimize stopband ripple of a linear phase lowpass FIR filter
- Minimize transition bandwidth of a linear phase lowpass FIR filter
- Spectral factorization using Kolmogorov 1939 approach.
cvx/examples/gp_tutorial
- Box volume maximization
- Digital circuit sizing
- Digital circuit sizing (vectorized)
- Elmore delay sizing for an interconnect network.
- Floor planning with an optimal trade-off curve.
- Optimal doping profile optimization
- Optimal doping profile optimization with current gain constraint.
- Simple power control in communication systems via GP.
cvx/examples/graph_laplacian
- Computes fastest mixing Markov chain (FMMC) edge weights
- Computes the constant edge weight that yields fastest averaging.
- Computes the fastest distributed linear averaging (FDLA) edge weights
- Computes the maximum-degree heuristic edge weights
- Computes the Metropolis-Hastings heuristic edge weights
- FDLA and FMMC solutions for a 50-node, 200-edge graph
- FDLA and FMMC solutions for a 64-node, 95-edge cut-grid graph
- FDLA and FMMC solutions for an 8-node, 13-edge graph
- Generate a cut-grid graph for the ICM 2006 talk example
- Plots a graph with each edge width proportional to its weight.
cvx/examples/log_exp
- Entropy maximization
- Sparse covariance estimation for Gaussian variables
- Sparse covariance estimation for Gaussian variables
- Weighted analytic center of a set of linear inequalities
cvx/examples/sparse_heuristics
- Computing a sparse solution of a set of linear inequalities
- Detecting a small subset of infeasible linear inequalities
- Finding a point that satisfies many linear inequalities
cvx/examples/time_series_analysis
Versions that use the GitHub default branch cannot be downloaded
Version | Published | Release Notes | |
---|---|---|---|
1.0.2 | Added acknowledgments. |
|
|
1.0.1 | Added snapshot. |
|
|
1.0.0 |
|
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)