diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..e69de29
diff --git a/Package/python/publish.sh b/Package/python/publish.sh
new file mode 100755
index 0000000..48934a9
--- /dev/null
+++ b/Package/python/publish.sh
@@ -0,0 +1,2 @@
+python setup.py sdist
+twine upload dist/*
diff --git a/Package/python/setup.py b/Package/python/setup.py
new file mode 100644
index 0000000..478e9a0
--- /dev/null
+++ b/Package/python/setup.py
@@ -0,0 +1,43 @@
+from setuptools import setup, find_packages
+
+with open("../../README.md", "r", encoding="utf-8") as fh:
+ long_description = fh.read()
+
+setup(
+ name="bellande_probability",
+ version="0.0.3",
+ description="Robots Probability",
+ 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"],
+ },
+ package_data={
+ 'bellande_probability': ['Bellande_Probability'],
+ },
+ entry_points={
+ 'console_scripts': [
+ 'bellande_probability_api = bellande_probability.bellande_probability_api:main',
+ ],
+ },
+ project_urls={
+ "Home": "https://github.com/Robotics-Sensors/bellande_probability",
+ "Homepage": "https://github.com/Robotics-Sensors/bellande_probability",
+ "documentation": "https://github.com/Robotics-Sensors/bellande_probability",
+ "repository": "https://github.com/Robotics-Sensors/bellande_probability",
+ },
+)
diff --git a/Package/python/src/.gitignore b/Package/python/src/.gitignore
new file mode 100644
index 0000000..ffe92f2
--- /dev/null
+++ b/Package/python/src/.gitignore
@@ -0,0 +1 @@
+bellande_probability.egg-info
diff --git a/Package/python/src/__init__.py b/Package/python/src/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/Package/python/src/bellande_probabilistic/__init__.py b/Package/python/src/bellande_probabilistic/__init__.py
new file mode 100644
index 0000000..14b2a3f
--- /dev/null
+++ b/Package/python/src/bellande_probabilistic/__init__.py
@@ -0,0 +1,3 @@
+"""
+ros_extension
+"""
diff --git a/Package/python/src/bellande_probabilistic/bellande_probabilistic_api.py b/Package/python/src/bellande_probabilistic/bellande_probabilistic_api.py
new file mode 100644
index 0000000..71f272d
--- /dev/null
+++ b/Package/python/src/bellande_probabilistic/bellande_probabilistic_api.py
@@ -0,0 +1,81 @@
+# 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 .
+
+#!/usr/bin/env python3
+import requests
+import argparse
+import json
+import sys
+
+def make_bellande_probability_distribution_request(mu_func, sigma_func, x, dimensions, full_auth=False):
+ base_url = "https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Probability"
+
+ endpoint = f"{base_url}/bellande_probability_full_auth" if full_auth else \
+ f"{base_url}/bellande_probability"
+
+ # Convert string input to list if it's a string
+ if isinstance(x, str):
+ x = json.loads(x)
+
+ auth = {
+ "full_authorization_key": "bellande_web_api_full_auth"
+ } if full_auth else {
+ "authorization_key": "bellande_web_api_opensource"
+ }
+
+ payload = {
+ "mu_func": mu_func,
+ "sigma_func": sigma_func,
+ "x": x,
+ "dimensions": dimensions,
+ "auth": auth
+ }
+
+ headers = {
+ 'accept': 'application/json',
+ 'Content-Type': 'application/json'
+ }
+
+ try:
+ response = requests.post(endpoint, 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 Distribution API")
+ parser.add_argument("--mu-func", required=True, help="mu function as string")
+ parser.add_argument("--sigma-func", required=True, help="sigma function as string")
+ parser.add_argument("--x", required=True, help="Input vector as JSON-formatted list")
+ parser.add_argument("--dimensions", type=int, required=True, help="Number of dimensions")
+ parser.add_argument("--full-auth", action="store_true", help="Use full authentication")
+
+ args = parser.parse_args()
+
+ try:
+ result = make_bellande_probability_distribution_request(
+ args.mu_func,
+ args.sigma_func,
+ args.x,
+ args.dimensions,
+ args.full_auth
+ )
+
+ print(json.dumps(result, indent=2))
+ except json.JSONDecodeError as e:
+ print(f"Error: Invalid JSON format in input - {e}", file=sys.stderr)
+ sys.exit(1)
+
+if __name__ == "__main__":
+ main()
diff --git a/Package/rust/.gitignore b/Package/rust/.gitignore
new file mode 100644
index 0000000..a9d37c5
--- /dev/null
+++ b/Package/rust/.gitignore
@@ -0,0 +1,2 @@
+target
+Cargo.lock
diff --git a/Package/rust/Cargo.toml b/Package/rust/Cargo.toml
new file mode 100644
index 0000000..c68f86e
--- /dev/null
+++ b/Package/rust/Cargo.toml
@@ -0,0 +1,24 @@
+[package]
+name = "bellande_probability"
+version = "0.1.0"
+edition = "2021"
+authors = ["Bellande Robotics Sensors Research Innovation Center"]
+description = "A tool for running Bellande Probability calculations via API"
+license = "GPL-3.0-or-later"
+repository = "https://github.com/Robotics-Sensors/bellande_probability"
+readme = "README.md"
+keywords = ["robotics", "algorithms", "research"]
+categories = ["science", "algorithms"]
+
+[dependencies]
+reqwest = { version = "0.11", features = ["json"] }
+serde = { version = "1.0", features = ["derive"] }
+serde_json = "1.0"
+structopt = "0.3"
+tokio = { version = "1.0", features = ["full"] }
+thiserror = "1.0"
+anyhow = "1.0"
+
+[lib]
+name = "bellande_probability"
+path = "src/bellande_probability.rs"
diff --git a/Package/rust/publish.sh b/Package/rust/publish.sh
new file mode 100755
index 0000000..7d4afa0
--- /dev/null
+++ b/Package/rust/publish.sh
@@ -0,0 +1,4 @@
+cp ../../README.md .
+bash ../../git_scripts/push.sh
+cargo publish
+rm -f README.md
diff --git a/Package/rust/src/bellande_probability.rs b/Package/rust/src/bellande_probability.rs
new file mode 100644
index 0000000..7bbed5e
--- /dev/null
+++ b/Package/rust/src/bellande_probability.rs
@@ -0,0 +1,110 @@
+// 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 .
+
+use reqwest;
+use serde_json::{json, Value};
+use std::error::Error;
+use structopt::StructOpt;
+
+#[derive(StructOpt, Debug)]
+#[structopt(name = "bellande_probability", about = "Bellande Probability Tool")]
+struct Opt {
+ #[structopt(long, help = "First coordinate as JSON-formatted list")]
+ node0: String,
+
+ #[structopt(long, help = "Second coordinate as JSON-formatted list")]
+ node1: String,
+
+ #[structopt(long, help = "Probability threshold value")]
+ threshold: f64,
+
+ #[structopt(long, help = "Number of dimensions")]
+ dimensions: i32,
+
+ #[structopt(long, help = "Use full authentication")]
+ full_auth: bool,
+}
+
+async fn make_bellande_probability_request(
+ node0: Value,
+ node1: Value,
+ threshold: f64,
+ dimensions: i32,
+ full_auth: bool,
+) -> Result> {
+ let client = reqwest::Client::new();
+ let base_url = "https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Probability";
+
+ let endpoint = if full_auth {
+ format!("{}/bellande_probability_full_auth", base_url)
+ } else {
+ format!("{}/bellande_probability", base_url)
+ };
+
+ let auth = if full_auth {
+ json!({
+ "full_authorization_key": "bellande_web_api_full_auth"
+ })
+ } else {
+ json!({
+ "authorization_key": "bellande_web_api_opensource"
+ })
+ };
+
+ let payload = json!({
+ "node0": node0,
+ "node1": node1,
+ "threshold": threshold,
+ "dimensions": dimensions,
+ "auth": auth
+ });
+
+ let response = client
+ .post(&endpoint)
+ .header("accept", "application/json")
+ .header("Content-Type", "application/json")
+ .json(&payload)
+ .send()
+ .await?
+ .json::()
+ .await?;
+
+ Ok(response)
+}
+
+#[tokio::main]
+async fn main() -> Result<(), Box> {
+ let opt = Opt::from_args();
+
+ let node0: Value = serde_json::from_str(&opt.node0)
+ .map_err(|e| format!("Error parsing node0: {}", e))?;
+ let node1: Value = serde_json::from_str(&opt.node1)
+ .map_err(|e| format!("Error parsing node1: {}", e))?;
+
+ match make_bellande_probability_request(
+ node0,
+ node1,
+ opt.threshold,
+ opt.dimensions,
+ opt.full_auth
+ ).await {
+ Ok(result) => {
+ println!("{}", serde_json::to_string_pretty(&result)?);
+ }
+ Err(e) => {
+ eprintln!("Error: {}", e);
+ std::process::exit(1);
+ }
+ }
+
+ Ok(())
+}
diff --git a/README.md b/README.md
index da8c09b..2c63bde 100644
--- a/README.md
+++ b/README.md
@@ -10,32 +10,7 @@
# 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 .
-# GNU General Public License v3.0 or later
-
-url: https://bellande-robotics-sensors-research-innovation-center.org
-
-endpoint_path:
- bellande_probabilistic: /api/Bellande_Probabilistic/bellande_probabilistic
-
-Bellande_Framework_Access_Key: bellande_web_api_opensource
-```
-
-# API HTTP Usability (JSON FORMAT)
+# API Usability
```
{
"license": [
@@ -56,12 +31,11 @@ Bellande_Framework_Access_Key: bellande_web_api_opensource
],
"url": "https://bellande-robotics-sensors-research-innovation-center.org",
"endpoint_path": {
- "bellande_probabilistic": "/api/Bellande_Probabilistic/bellande_probabilistic"
+ "bellande_probabilistic": "/api/Bellande_Probability/bellande_probability"
},
"Bellande_Framework_Access_Key": "bellande_web_api_opensource"
}
```
-
# API Payload Example
```
{
@@ -81,7 +55,7 @@ Bellande_Framework_Access_Key: bellande_web_api_opensource
# Quick Bellande API Testing
```
curl -X 'POST' \
- 'https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Distribution/bellande_distribution_function_nd' \
+ 'https://bellande-robotics-sensors-research-innovation-center.org/api/Bellande_Probability/bellande_probability' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
@@ -95,6 +69,40 @@ curl -X 'POST' \
}'
```
+# Bellande Limit Usage
+
+## Website Crates
+- https://crates.io/crates/bellande_probability
+
+### Installation
+- `cargo add bellande_probability`
+
+## Website PYPI
+- https://pypi.org/project/bellande_probability
+
+### Installation
+- `$ pip install bellande_probability`
+
+### Usage
+```
+bellande_distribution \
+ --mu-func "i * 2" \
+ --sigma-func "1 + i * 0.1" \
+ --x "[1.0, 2.0, 3.0]" \
+ --dimensions 3
+```
+
+### Upgrade (if not upgraded)
+- `$ pip install --upgrade bellande_probability`
+
+```
+Name: bellande_probability
+Summary: Computes the next step towards a target node
+Home-page: github.com/RonaldsonBellande/bellande_probability
+Author: Ronaldson Bellande
+Author-email: ronaldsonbellande@gmail.com
+License: GNU General Public License v3.0
+```
## Published Paper
```
@@ -102,7 +110,5 @@ Coming Soon
```
## License
-Bellande Probabilistic 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/RonaldsonBellande/bellande_probabilistic/blob/main/LICENSE) and [NOTICE](https://github.com/RonaldsonBellande/bellande_probabilistic/blob/main/LICENSE) for more information.
+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/RonaldsonBellande/bellande_probabilistic/blob/main/LICENSE) and [NOTICE](https://github.com/RonaldsonBellande/bellande_probabilistic/blob/main/LICENSE) for more information.
-## Code of Conduct
-Bellande Probabilistic is distributed under the [CODE_OF_CONDUCT](https://github.com/Robotics-Sensors/bellande_step/blob/main/CODE_OF_CONDUCT.md) and [NOTICE](https://github.com/Robotics-Sensors/bellande_step/blob/main/CODE_OF_CONDUCT.md) for more information.
diff --git a/git_scripts/.gitignore b/git_scripts/.gitignore
new file mode 100644
index 0000000..e5a7a9c
--- /dev/null
+++ b/git_scripts/.gitignore
@@ -0,0 +1,3 @@
+fix_errors.sh
+push.sh
+repository_recal.sh