Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/autosd-vss-mw/ros2-rocket-demo
Rocket Launch Simulator based on CentOS, AutoSD and ROS2
https://github.com/autosd-vss-mw/ros2-rocket-demo
autosd caros centos linux qm rocket rockets ros2
Last synced: 27 days ago
JSON representation
Rocket Launch Simulator based on CentOS, AutoSD and ROS2
- Host: GitHub
- URL: https://github.com/autosd-vss-mw/ros2-rocket-demo
- Owner: autosd-vss-mw
- License: apache-2.0
- Created: 2024-11-11T20:40:12.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-25T14:33:32.000Z (28 days ago)
- Last Synced: 2024-11-25T15:33:17.643Z (28 days ago)
- Topics: autosd, caros, centos, linux, qm, rocket, rockets, ros2
- Language: Python
- Homepage: https://github.com/autosd-vss-mw/ros2-rocket-demo
- Size: 20.5 KB
- Stars: 0
- Watchers: 0
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ROS2 Rocket Demo
Welcome to the Rocket Launch Simulator based on CentOS, AutoSD and ROS2!
This project allows you to simulate rocket launches, including specific mission operations.
The simulation includes detailed stages, realistic delays, and even custom mission operations for a truly engaging experience!![Curiosity Rover](https://d2pn8kiwq2w21t.cloudfront.net/original_images/spaceimagesimageslargesizePIA14156_hires.jpg)
Launched on a NASA rocket (NASA Atlas V), Curiosity touched down on Mars and now roams the Red Planet, uncovering its ancient secrets.## Development Environment
We encourage to use toolbox with container images provided by the Fedora Robotics SIG:
```sh
$ toolbox create \
--image quay.io/fedora-sig-robotics/ros2:jazzy-cs9 \
ros2-jazzy-cs9-box
$ toolbox enter ros2-jazzy-cs9-box
```This image leverages the pre-built ROS2 packages for RHEL while using a CentOS Stream 9 base container.
## Building
To build all packages run:
```sh
colcon build --symlink-install
```Using `--symlink-install` will create symbolic links for your project's source code
so changes can be tested without running `colcon build` everytime one is made.## Running
### Generic Instructions
Run a ROS2 by specifying its package and node name:
```
ros2 run $pkg_name $node_name
```### rhover_control
This section describes how to run nodes within the `rhover_control`.
#### rhover_control.engine_manager
This node subscribes to the `rhover_control_engine_erver` to handle engine operations from client requests.
Running the node:
```sh
ros2 run rhover_control engine_manager
```You can now open another tab and run client requests using ros2.
Do not forget to run `source install/setup.bash` for each new tab you open to run `ros2` commands.
##### Services/Methods
###### GetEngineState
Return the engine's current state.
```sh
$ ros2 service call /get_engine_state rhover_control_interfaces/srv/GetEngineState
requester: making request: rhover_control_interfaces.srv.GetEngineState_Request()response:
rhover_control_interfaces.srv.GetEngineState_Response(state=rhover_control_interfaces.msg.EngineState(on=False, speed=0.0, battery=100))
```###### AdjustSpeed
Ajust the Rhover speed, up or down.
```sh
ros2 service call /adjust_speed rhover_control_interfaces/srv/AdjustSpeed '{"speed": 10.0}'
requester: making request: rhover_control_interfaces.srv.AdjustSpeed_Request(speed=10.0)response:
rhover_control_interfaces.srv.AdjustSpeed_Response(err=rhover_control_interfaces.msg.ErrorStatus(err=False, errcode=0, errmsg=''))
```It will return an error in case you try to reduce its speed and the rhover is already stopped or it does not have enough battery:
```sh
$ ros2 service call /adjust_speed rhover_control_interfaces/srv/AdjustSpeed '{"speed": -50.0}'
requester: making request: rhover_control_interfaces.srv.AdjustSpeed_Request(speed=-50.0)response:
rhover_control_interfaces.srv.AdjustSpeed_Response(err=rhover_control_interfaces.msg.ErrorStatus(err=True, errcode=1, errmsg='rhover is stopped'))
```###### Battery State
Checks the battery state as "ok" (high power), "warn" (somewhere above 50%) or "danger" (bellow 33%):
```sh
$ ros2 service call /battery_state rhover_control_interfaces/srv/BatteryState
requester: making request: rhover_control_interfaces.srv.BatteryState_Request()response:
rhover_control_interfaces.srv.BatteryState_Response(ok=True, warn=False, danger=False)
```Each "AdjustSpeed" call reduces its battery power by 10.
###### Stop
Stops the rhover, reducing its speed to 0.
```sh
ros2 service call /stop rhover_control_interfaces/srv/Stop
requester: making request: rhover_control_interfaces.srv.Stop_Request()response:
rhover_control_interfaces.srv.Stop_Response(err=rhover_control_interfaces.msg.ErrorStatus(err=False, errcode=0, errmsg=''))
```## License
[Apache-2.0](./LICENSE)