Dependencies: python 3.8+, pip, poetry
The poject runs inside a virtual environment managed by Poetry. To install it do:
$ pip install poetry
To install ROS dependecies run the commands below:
$ apt-get update
$ apt-get install -y curl build-essential ros-foxy-rosbridge-server ros-foxy-navigation2 ros-foxy-nav2-bringup ros-foxy-moveit-msgs '~ros-foxy-turtlebot3-.*'
The project was tested only with ROS Foxy, but it doesn't mean you cannot try with other versions. Just be aware that you'll have to change some commands.
Currently the easiest way to install the package is to do it locally.
After installing Poetry, in the root folder run the command below to install the HMRsim_lesunb
inside the environment.
$ poetry install
Check if the package was installed.
$ poetry run pip list
# ...
# HMRsim-lesunb 0.0.1
# ...
Seer is a component of this project that visually shows the simulation in a web browser. It comunicates with HMR Sim throught Rosbridge. To install Rosbridge for ROS Foxy use
sudo apt-get install ros-foxy-rosbridge-server
To run it, open a separated terminal, source ROS and do
ros2 launch rosbridge_server rosbridge_websocket_launch.xml
ROS examples uses Seer throught another Git project, here it is. Clone the project and run it after ROS Bridge and before HMR Sim (running instructions are in the ROSeer project).
💡 HMR Sim doesn't have a handshake process with ROSeer yet, that's why you have to run it before running HMR Sim for now.
Some examples do not use ROS to run, you can run them with no need to install ROS related dependencies.
Below we describe how to run the examples.
💡 The package exports a utility function to help you parse the config.
$ hmrsimcli configtest -f simulation.json
First, get inside the environment
$ poetry shell
💡 Check the
examples/
folder for different example simulations
Simulations are defined by config objects. You can pass the config to the Simulator class either by a dict object, or by passing the path to a json file. Here's an example with a dict object in python:
simulator = Simulator(config)
The file that build a simulation and runs it is called run.py
.
To execute the simulation, go inside the example you want to run the command below (assuming an example that uses a json config file).
$ python run.py [path/to/config.json]
If you just want to run a simulation in the project (e.g. you are not developing HMRSim itself) you may opt to run it using a Docker container.
First you build the image, which does what was described above in a Docker image:
$ docker build --rm -t hmrsim --build-arg example_folder=[path/to/example/folder] .
Explaining somethings in the command:
- With the
--build-arg
argument you specify the path to the example folder you want to execute inside the container (notice that there is a pattern with the structure and name of files in these examples folders). - If you don't want to set this variable everytime you build, you can set the
example_folder
parameter in theDockerfile
.
Then you can run simulations inside the container by using the command below:
$ docker run hmrsim:latest
To add new dependencies use the following command.
$ poetry add [name]
$ poetry install
This command will add the dependency to the project.
- Your operational system may not have the ROS version used here to run (foxy) the simulation, if that happens try another version.
- If you're having trouble with the version of the
poetry.lock
when building the container, maybe yourpoetry.lock
is modified, checkout the changes and try again. - If you get an error in ROS Seer try stopping HMR Sim (not ROSeer), reloading the page and starting HMR Sim again. This should be solved after an implementation of a handshake process between HMR Sim and ROSeer.
In the file ROS Controller you find some instructions of how to control HMR Sim robots via ROS.