latest pushes

This commit is contained in:
Ronaldson Bellande 2024-12-17 22:48:38 -05:00
parent 741eed7053
commit 1f46f68425
22 changed files with 627 additions and 1 deletions

17
LICENSE Normal file
View File

@ -0,0 +1,17 @@
Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande
This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License.
To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
You are free to:
- Share — copy and redistribute the material in any medium or format
- Adapt — remix, transform, and build upon the material for any purpose, even commercially.
Under the following terms:
- Attribution — You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
- ShareAlike — If you remix, transform, or build upon the material, you must distribute your contributions under the same license as the original.
- No additional restrictions — You may not apply legal terms or technological measures that legally restrict others from doing anything the license permits.
This is a human-readable summary of (and not a substitute for) the license. See the full license text for more details.

1
Package/python/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
dist

4
Package/python/publish.sh Executable file
View File

@ -0,0 +1,4 @@
cp ../../README.md ./
python setup.py sdist
twine upload dist/*
rm -r ./README.md

40
Package/python/setup.py Normal file
View File

@ -0,0 +1,40 @@
from setuptools import setup, find_packages
with open("./README.md", "r", encoding="utf-8") as fh:
long_description = fh.read()
setup(
name="bellande_particle",
version="0.0.1",
description="Robotics Particle",
long_description=long_description,
long_description_content_type="text/markdown",
author="RonaldsonBellande",
author_email="ronaldsonbellande@gmail.com",
packages=find_packages(where="src"),
package_dir={"": "src"},
include_package_data=True,
install_requires=[
"numpy",
],
classifiers=[
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
"Programming Language :: Python",
],
keywords=["package", "setuptools"],
python_requires=">=3.0",
extras_require={
"dev": ["pytest", "pytest-cov[all]", "mypy", "black"],
},
entry_points={
'console_scripts': [
'bellande_particle_api = bellande_particle.bellande_particle_api:main',
],
},
project_urls={
"Home": "https://github.com/Robotics-Sensors/bellande_particle",
"Homepage": "https://github.com/Robotics-Sensors/bellande_particle",
"documentation": "https://github.com/Robotics-Sensors/bellande_particle",
"repository": "https://github.com/Robotics-Sensors/bellande_particle",
},
)

1
Package/python/src/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
bellande_particle.egg-info

View File

View File

@ -0,0 +1,3 @@
"""
ros_extension
"""

View File

@ -0,0 +1,83 @@
# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#!/usr/bin/env python3
import requests
import argparse
import json
import sys
def make_bellande_particles_request(particle, movement=None, world=None, count=None):
url = "https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Particles/bellande_particles"
# Convert string inputs to lists/dicts if they're strings
if isinstance(particle, str):
particle = json.loads(particle)
if isinstance(movement, str):
movement = json.loads(movement)
if isinstance(world, str):
world = json.loads(world)
payload = {
"particle": particle,
"movement": movement,
"world": world,
"count": count,
"auth": {
"authorization_key": "bellande_web_api_opensource"
}
}
headers = {
'accept': 'application/json',
'Content-Type': 'application/json'
}
try:
response = requests.post(url, json=payload, headers=headers)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
print(f"Error making request: {e}", file=sys.stderr)
sys.exit(1)
def main():
parser = argparse.ArgumentParser(description="Run Bellande Particles API")
parser.add_argument("--particle", required=True,
help="Particle state as JSON-formatted list [x, y, heading, weight]")
parser.add_argument("--movement",
help="Movement parameters as JSON-formatted list [rotation1, translation, rotation2]")
parser.add_argument("--world",
help="world information as JSON object with width, height, and markers")
parser.add_argument("--count", type=int,
help="Particle count for random generation")
args = parser.parse_args()
try:
result = make_bellande_particles_request(
args.particle,
args.movement,
args.world,
args.count
)
print(json.dumps(result, indent=2))
except json.JSONDecodeError as e:
print(f"Error: Invalid JSON format in input parameters - {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()

2
Package/rust/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
target
Cargo.lock

28
Package/rust/Cargo.toml Normal file
View File

@ -0,0 +1,28 @@
[package]
name = "bellande_particle"
version = "0.1.0"
edition = "2021"
authors = ["Bellande Robotics Sensors Research Innovation Center"]
description = "A particle system using Bellande distributions for robust state estimation and localization"
license = "GPL-3.0-or-later"
repository = "https://github.com/Robotics-Sensors/bellande_particle"
documentation = "https://bellande-robotics-sensors-research-innovation-center.org/bellande_particle/docs"
homepage = "https://bellande-robotics-sensors-research-innovation-center.org"
readme = "README.md"
keywords = ["robotics", "particle-filter", "state-estimation", "localization", "bellande"]
categories = ["science::robotics", "algorithms", "mathematics", "simulation"]
[dependencies]
reqwest = { version = "0.11", features = ["json", "rustls-tls"] }
serde_json = "1.0"
structopt = "0.3"
tokio = { version = "1.0", features = ["full"] }
[dev-dependencies]
tokio-test = "0.4"
mockito = "0.31"
assert_approx_eq = "1.1"
[lib]
name = "bellande_particle"
path = "src/bellande_particle.rs"

4
Package/rust/publish.sh Executable file
View File

@ -0,0 +1,4 @@
cp ../../README.md .
bash ../../git_scripts/push.sh
cargo publish
rm -f README.md

View File

@ -0,0 +1,114 @@
// Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
use reqwest;
use serde_json::{json, Value};
use std::error::Error;
use structopt::StructOpt;
#[derive(StructOpt, Debug)]
#[structopt(name = "bellande_particle", about = "Bellande Particles Tool")]
struct Opt {
#[structopt(
long,
help = "Particle state as JSON-formatted list [x, y, heading, weight]"
)]
particle: String,
#[structopt(
long,
help = "Movement parameters as JSON-formatted list [rotation1, translation, rotation2]"
)]
movement: Option<String>,
#[structopt(
long,
help = "World information as JSON object with width, height, and markers"
)]
world: Option<String>,
#[structopt(long, help = "Particle count for random generation")]
count: Option<i32>,
}
async fn make_bellande_particles_request(
particle: Value,
movement: Option<Value>,
world: Option<Value>,
count: Option<i32>,
) -> Result<Value, Box<dyn Error>> {
let client = reqwest::Client::new();
let url = "https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Particle/bellande_particle";
let payload = json!({
"particle": particle,
"movement": movement,
"world": world,
"count": count,
"auth": {
"authorization_key": "bellande_web_api_opensource"
}
});
let response = client
.post(url)
.header("accept", "application/json")
.header("Content-Type", "application/json")
.json(&payload)
.send()
.await?
.json::<Value>()
.await?;
Ok(response)
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let opt = Opt::from_args();
// Parse JSON strings to Values for validation
let particle: Value = serde_json::from_str(&opt.particle)
.map_err(|e| format!("Error parsing particle: {}", e))?;
// Parse optional movement
let movement: Option<Value> = match opt.movement {
Some(ref m) => {
Some(serde_json::from_str(m).map_err(|e| format!("Error parsing movement: {}", e))?)
}
None => None,
};
// Parse optional world
let world: Option<Value> = match opt.world {
Some(ref w) => {
Some(serde_json::from_str(w).map_err(|e| format!("Error parsing world: {}", e))?)
}
None => None,
};
// Run using API
match make_bellande_particles_request(particle, movement, world, opt.count).await {
Ok(result) => {
println!("{}", serde_json::to_string_pretty(&result)?);
}
Err(e) => {
eprintln!("Error: {}", e);
std::process::exit(1);
}
}
Ok(())
}

150
README.md
View File

@ -1 +1,149 @@
# bellande_particle # 📦 Bellande Particles
## 🧙 Organization Website
- [![Organization Website](https://img.shields.io/badge/Explore%20Our-Website-0099cc?style=for-the-badge)](https://robotics-sensors.github.io)
## 🧙 Organization Github
- [![Organization Github ](https://img.shields.io/badge/Explore%20Our-Github-0099cc?style=for-the-badge)](https://github.com/Robotics-Sensors)
# Author, Creator and Maintainer
- **Ronaldson Bellande**
# API HTTP Usability (BELLANDE FORMAT)
```
# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# GNU General Public License v3.0 or later
url: https://bellande-robotics-sensors-research-innovation-center.org
endpoint_path:
bellande_particle: /api/Bellande_Particle/bellande_particle
Bellande_Framework_Access_Key: bellande_web_api_opensource
```
# API HTTP Usability (JSON FORMAT)
```
{
"license": [
"Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande",
"This program is free software: you can redistribute it and/or modify",
"it under the terms of the GNU General Public License as published by",
"the Free Software Foundation, either version 3 of the License, or",
"(at your option) any later version.",
"",
"This program is distributed in the hope that it will be useful,",
"but WITHOUT ANY WARRANTY; without even the implied warranty of",
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
"GNU General Public License for more details.",
"",
"You should have received a copy of the GNU General Public License",
"along with this program. If not, see <https://www.gnu.org/licenses/>.",
"GNU General Public License v3.0 or later"
],
"url": "https://bellande-robotics-sensors-research-innovation-center.org",
"endpoint_path": {
"bellande_particle": "/api/Bellande_Particle/bellande_particle"
},
"Bellande_Framework_Access_Key": "bellande_web_api_opensource"
}
```
# API Payload Example
```
{
"particle": [0, 0, 0, 1.0],
"movement": {
"rotation1": 45.0,
"translation": 1.0,
"rotation2": -45.0
},
"world": {
"width": 10.0,
"height": 10.0,
"markers": [[1.0, 1.0]]
},
"count": 10,
"auth": {
"authorization_key": "bellande_web_api_opensource"
}
}
```
# 🧙 Website Bellande API Testing
- [![Website API Testing](https://img.shields.io/badge/Bellande%20API-Testing-0099cc?style=for-the-badge)](https://bellande-robotics-sensors-research-innovation-center.org/api/bellande_particles_experiment)
# Quick Bellande API Testing
```
curl -X 'POST' \
'https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Particle/bellande_particle' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"particle": [0, 0, 0, 1.0],
"movement": {
"rotation1": 45.0,
"translation": 1.0,
"rotation2": -45.0
},
"world": {
"width": 10.0,
"height": 10.0,
"markers": [[1.0, 1.0]]
},
"count": 10,
"auth": {
"authorization_key": "bellande_web_api_opensource"
}
}'
```
# Bellande Particles Usage
## Website Crates
- https://crates.io/crates/bellande_particle
### Installation
- `cargo add bellande_particle`
## Website PYPI
- https://pypi.org/project/bellande_particle
### Installation
- `$ pip install bellande_particle`
### Usage
```
bellande_particle \
--particle "[0, 0, 0, 1.0]" \
--movement '{"rotation1": 45.0, "translation": 1.0, "rotation2": -45.0}' \
--world '{"width": 10.0, "height": 10.0, "markers": [[1.0, 1.0]]}' \
--count 10
```
### Upgrade (if not upgraded)
- `$ pip install --upgrade bellande_particle`
```
Name: bellande_particle
Summary: A particle system using Bellande distributions for robust state estimation and localization
Home-page: github.com/Robotics-Sensors/bellande_particle
Author: Ronaldson Bellande
Author-email: ronaldsonbellande@gmail.com
License: GNU General Public License v3.0
```
## License
This Algorithm or Models is distributed under the [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/), see [LICENSE](https://github.com/Robotics-Sensors/bellande_particle/blob/main/LICENSE) and [NOTICE](https://github.com/Robotics-Sensors/bellande_particle/blob/main/LICENSE) for more information.

View File

@ -0,0 +1,21 @@
# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# GNU General Public License v3.0 or later
url: https://bellande-robotics-sensors-research-innovation-center.org
endpoint_path:
bellande_particle: /api/Bellande_Limit/bellande_particle
Bellande_Framework_Access_Key: bellande_web_api_opensource

View File

@ -0,0 +1,21 @@
# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# GNU General Public License v3.0 or later
url: tcp://bellande-robotics-sensors-research-innovation-center.org
endpoint_path:
bellande_particle: /api/Bellande_Limit/bellande_particle
Bellande_Framework_Access_Key: bellande_web_api_opensource

View File

@ -0,0 +1,21 @@
# Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# GNU General Public License v3.0 or later
url: tls://bellande-robotics-sensors-research-innovation-center.org
endpoint_path:
bellande_particle: /api/Bellande_Limit/bellande_particle
Bellande_Framework_Access_Key: bellande_web_api_opensource

View File

@ -0,0 +1,23 @@
{
"license": [
"Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande",
"This program is free software: you can redistribute it and/or modify",
"it under the terms of the GNU General Public License as published by",
"the Free Software Foundation, either version 3 of the License, or",
"(at your option) any later version.",
"",
"This program is distributed in the hope that it will be useful,",
"but WITHOUT ANY WARRANTY; without even the implied warranty of",
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
"GNU General Public License for more details.",
"",
"You should have received a copy of the GNU General Public License",
"along with this program. If not, see <https://www.gnu.org/licenses/>.",
"GNU General Public License v3.0 or later"
],
"url": "https://bellande-robotics-sensors-research-innovation-center.org",
"endpoint_path": {
"bellande_particle": "/api/Bellande_Limit/bellande_particle"
},
"Bellande_Framework_Access_Key": "bellande_web_api_opensource"
}

View File

@ -0,0 +1,23 @@
{
"license": [
"Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande",
"This program is free software: you can redistribute it and/or modify",
"it under the terms of the GNU General Public License as published by",
"the Free Software Foundation, either version 3 of the License, or",
"(at your option) any later version.",
"",
"This program is distributed in the hope that it will be useful,",
"but WITHOUT ANY WARRANTY; without even the implied warranty of",
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
"GNU General Public License for more details.",
"",
"You should have received a copy of the GNU General Public License",
"along with this program. If not, see <https://www.gnu.org/licenses/>.",
"GNU General Public License v3.0 or later"
],
"url": "tcp://bellande-robotics-sensors-research-innovation-center.org",
"endpoint_path": {
"bellande_particle": "/tcp/Bellande_Limit/bellande_particle"
},
"Bellande_Framework_Access_Key": "bellande_tcp_api_opensource"
}

View File

@ -0,0 +1,23 @@
{
"license": [
"Copyright (C) 2024 Bellande Robotics Sensors Research Innovation Center, Ronaldson Bellande",
"This program is free software: you can redistribute it and/or modify",
"it under the terms of the GNU General Public License as published by",
"the Free Software Foundation, either version 3 of the License, or",
"(at your option) any later version.",
"",
"This program is distributed in the hope that it will be useful,",
"but WITHOUT ANY WARRANTY; without even the implied warranty of",
"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the",
"GNU General Public License for more details.",
"",
"You should have received a copy of the GNU General Public License",
"along with this program. If not, see <https://www.gnu.org/licenses/>.",
"GNU General Public License v3.0 or later"
],
"url": "tls://bellande-robotics-sensors-research-innovation-center.org",
"endpoint_path": {
"bellande_particle": "/tls/Bellande_Limit/bellande_particle"
},
"Bellande_Framework_Access_Key": "bellande_tls_api_opensource"
}

3
git_scripts/.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
fix_errors.sh
push.sh
repository_recal.sh

23
run_api.bellos Executable file
View File

@ -0,0 +1,23 @@
curl -X 'POST' \
'https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Limit/bellande_particle' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"node0": [0, 0, 0],
"node1": [100, 100, 100],
"environment": [1000, 1000, 1000],
"size": [10, 10, 10],
"goal": [200, 200, 200],
"obstacles": [
{
"position": [50, 50, 50],
"dimensions": [20, 20, 20]
}
],
"search_radius": 50,
"sample_points": 20,
"auth": {
"authorization_key": "bellande_web_api_opensource"
}
}'
echo ""

23
run_api.sh Executable file
View File

@ -0,0 +1,23 @@
curl -X 'POST' \
'https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Limit/bellande_particle' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"node0": [0, 0, 0],
"node1": [100, 100, 100],
"environment": [1000, 1000, 1000],
"size": [10, 10, 10],
"goal": [200, 200, 200],
"obstacles": [
{
"position": [50, 50, 50],
"dimensions": [20, 20, 20]
}
],
"search_radius": 50,
"sample_points": 20,
"auth": {
"authorization_key": "bellande_web_api_opensource"
}
}'
echo ""