tomaz-suller / hector_slam_fpga Goto Github PK
View Code? Open in Web Editor NEWFPGA implementation of the hector_slam algorithm using only lidar data
License: BSD 3-Clause "New" or "Revised" License
FPGA implementation of the hector_slam algorithm using only lidar data
License: BSD 3-Clause "New" or "Revised" License
module op_sin (
input [`VSIZE-1:0] a,
output [`VSIZE-1:0] r
);
module op_sub (
input [`VSIZE-1:0] a,
output [`VSIZE-1:0] r
);
module op_mul (
input [`VSIZE-1:0] a,
output [`VSIZE-1:0] r
);
During conversion from world coordinated to grid indices, we use BinaryFixedPoint.to_int()
:
hector_slam_fpga/software_simulation/occupancy_grid_dont_draw_lidar.py
Lines 194 to 196 in 19b208f
This function is implemented to truncate the fixed point representation by always rounding it down:
hector_slam_fpga/software_simulation/fixed_point.py
Lines 199 to 200 in 19b208f
It is possible that rounding instead of truncating would benefit algorithm execution, at the cost of adding extra logic to compare the world coordinate with half of a grid cell.
module op_sum (
input [`VSIZE-1:0] a,
input [`VSIZE-1:0] b,
output [`VSIZE-1:0] r
);
module op_sub (
input [`VSIZE-1:0] a,
input [`VSIZE-1:0] b,
output [`VSIZE-1:0] r
);
module op_mul (
input [`VSIZE-1:0] a,
input [`VSIZE-1:0] b,
output [`VSIZE-1:0] r
);
ou caso demore mais de um ciclo de clock:
module op_mul (
input [`VSIZE-1:0] a,
input [`VSIZE-1:0] b,
output [`VSIZE-1:0] r,
output buzy,
);
module op_div (
input [`VSIZE-1:0] a,
input [`VSIZE-1:0] b,
output [`VSIZE-1:0] r
);
ou caso demore mais de um ciclo de clock:
module op_div (
input [`VSIZE-1:0] a,
input [`VSIZE-1:0] b,
output [`VSIZE-1:0] r,
output buzy,
);
module mat_sum
# (
parameter M,
parameter N
) (
input [M[N][`VSIZE-1:0] a,
input [M[N][`VSIZE-1:0] b,
output [M][N][`VSIZE-1:0] r
);
module mat_escalar_mult
# (
parameter M,
parameter N
) (
input [`VSIZE-1:0] a,
input [M[N][`VSIZE-1:0] b,
output [M][N][`VSIZE-1:0] r
);
-- tal a \in \mathbb{R}^{m \times n} e B \in \mathbb{R}^{n \times p} realiza A \cdot B
module mat_mult
# (
parameter M,
parameter N,
parameter P
) (
input [M][N][`VSIZE-1:0] a,
input [N][P][`VSIZE-1:0] b,
output [M][P][`VSIZE-1:0] r
);
module mat_transpose
# (
parameter M,
parameter N
) (
input [M[N][`VSIZE-1:0] a,
output [M][N][`VSIZE-1:0] r
);
module mat_inv
# (
parameter M,
parameter N
) (
input [M[N][`VSIZE-1:0] a,
output [M][N][`VSIZE-1:0] r
);
During execution of main
, the result from lidar
is converted to the coordinate system of the map:
hector_slam_fpga/software_simulation/slam.py
Lines 271 to 272 in 3223e58
However, the output of lidar
is in polar, rather than in cartesian, coordinates:
hector_slam_fpga/software_simulation/slam.py
Lines 17 to 34 in 3223e58
Therefore, this operation is bound to produce invalid results when executed.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.