diff --git a/.gitignore b/.gitignore
index cfd415d..cb98e60 100644
--- a/.gitignore
+++ b/.gitignore
@@ -89,6 +89,8 @@ StyleCopReport.xml
*.ilk
*.meta
*.obj
+# Exception: track 3D mesh files in resources
+!resources/**/*.obj
*.idb
*.iobj
*.pch
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9a00788..2d0bd4d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,15 +3,13 @@ cmake_minimum_required(VERSION 3.16)
project(circus VERSION 0.1.0 LANGUAGES CXX)
add_compile_definitions(_LIBCPP_DISABLE_AVAILABILITY)
-set(LIBRARY ${PROJECT_NAME})
-set(EXECUTABLE ${PROJECT_NAME}-main)
+set(LIBRARY ${PROJECT_NAME}-lib)
+set(EXECUTABLE ${PROJECT_NAME})
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/.clangd"
- "CompileFlags:\n CompilationDatabase: ${CMAKE_CURRENT_BINARY_DIR}\n")
add_compile_definitions(PROJECT_ROOT="${CMAKE_SOURCE_DIR}")
include(FetchContent)
@@ -36,6 +34,11 @@ find_package(Qt6 REQUIRED COMPONENTS Core Widgets OpenGLWidgets)
find_package(nlohmann_json QUIET)
find_package(CURL QUIET)
+# Generate .clangd configuration after dependencies are found
+get_target_property(EIGEN_INCLUDE_DIR Eigen3::Eigen INTERFACE_INCLUDE_DIRECTORIES)
+file(WRITE "${CMAKE_CURRENT_SOURCE_DIR}/.clangd"
+ "CompileFlags:\n CompilationDatabase: ${CMAKE_CURRENT_BINARY_DIR}\n Add:\n - -I${CMAKE_CURRENT_SOURCE_DIR}/include\n - -isystem${EIGEN_INCLUDE_DIR}\n")
+
# -------------------- yaml-cpp (config -> module -> manual) [robust]
set(_YAML_HINT "/opt/homebrew/opt/yaml-cpp")
find_package(yaml-cpp CONFIG QUIET)
@@ -119,8 +122,8 @@ endif()
# ======================= CIRCUS LIBRARY ============================================================
# -------------------- Collect sources and split into: core, main, bindings
-set(_src_dir "${CMAKE_SOURCE_DIR}/Src")
-set(_include_dir "${CMAKE_SOURCE_DIR}/Include")
+set(_src_dir "${CMAKE_SOURCE_DIR}/src")
+set(_include_dir "${CMAKE_SOURCE_DIR}/include")
# Source files
file(GLOB_RECURSE SOURCES ${_src_dir}/*.cpp)
@@ -201,16 +204,20 @@ include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
# 1. Install the library target and headers
-set_target_properties(${LIBRARY} PROPERTIES PUBLIC_HEADER "${HEADERS}")
install(TARGETS ${LIBRARY}
EXPORT ${LIBRARY}Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
- PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
)
+# Install headers preserving directory structure
+install(DIRECTORY ${_include_dir}/
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME}
+ FILES_MATCHING PATTERN "*.h" PATTERN "*.hpp"
+)
+
# 2. Generate the relocatable package config file in the build directory
configure_package_config_file( # creates config file for find_package
"cmake/config.cmake.in"
diff --git a/Include/Robot.h b/Include/Robot.h
deleted file mode 100644
index 606a8e5..0000000
--- a/Include/Robot.h
+++ /dev/null
@@ -1,456 +0,0 @@
-#pragma once
-
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-#include
-
-#include "Camera.h"
-#include "Constants.h"
-#include "Container.h"
-#include "Imu.h"
-#include "Joint.h"
-#include "MujocoContext.h"
-#include "Pose.h"
-
-#define MAX_MSG_SIZE 1048576 // 1MB
-namespace spqr {
-
-struct Team; // Forward declaration
-
-class Robot {
- public:
- Robot(const std::string& name, const std::string& type, uint8_t number,
- const Eigen::Vector3d& initPosition, const Eigen::Vector3d& initOrientation,
- const std::shared_ptr& team)
- : name(name),
- type(type),
- number(number),
- initPosition(initPosition),
- initOrientation(initOrientation),
- team(team) {}
- virtual ~Robot() = default;
- virtual void bindMujoco(MujocoContext* mujContext) = 0;
- virtual void update() = 0;
- virtual void receiveMessage(const std::map& message) = 0;
- virtual std::map sendMessage() = 0;
-
- std::string name;
- std::string type;
- uint8_t number;
- Eigen::Vector3d initPosition;
- Eigen::Vector3d initOrientation; // Euler angles
- std::unique_ptr container;
- std::shared_ptr team;
-
- msgpack::zone buffer_zone_;
-};
-
-class T1 : public Robot {
- public:
- Pose* pose = nullptr;
- Imu* imu = nullptr;
- Joints* joints = nullptr;
- std::array cameras = {};
-
- T1(const std::string& name, const std::string& type, uint8_t number, const Eigen::Vector3d& initPosition,
- const Eigen::Vector3d& initOrientation, const std::shared_ptr& team)
- : Robot(name, type, number, initPosition, initOrientation, team),
- joint_map{{JointValue::HEAD_YAW, name + "_AAHead_yaw"},
- {JointValue::HEAD_PITCH, name + "_Head_pitch"},
- {JointValue::SHOULDER_LEFT_PITCH, name + "_Left_Shoulder_Pitch"},
- {JointValue::SHOULDER_LEFT_ROLL, name + "_Left_Shoulder_Roll"},
- {JointValue::ELBOW_LEFT_PITCH, name + "_Left_Elbow_Pitch"},
- {JointValue::ELBOW_LEFT_YAW, name + "_Left_Elbow_Yaw"},
- {JointValue::SHOULDER_RIGHT_PITCH, name + "_Right_Shoulder_Pitch"},
- {JointValue::SHOULDER_RIGHT_ROLL, name + "_Right_Shoulder_Roll"},
- {JointValue::ELBOW_RIGHT_PITCH, name + "_Right_Elbow_Pitch"},
- {JointValue::ELBOW_RIGHT_YAW, name + "_Right_Elbow_Yaw"},
- {JointValue::WAIST, name + "_Waist"},
- {JointValue::HIP_LEFT_PITCH, name + "_Left_Hip_Pitch"},
- {JointValue::HIP_LEFT_ROLL, name + "_Left_Hip_Roll"},
- {JointValue::HIP_LEFT_YAW, name + "_Left_Hip_Yaw"},
- {JointValue::KNEE_LEFT_PITCH, name + "_Left_Knee_Pitch"},
- {JointValue::ANKLE_LEFT_PITCH, name + "_Left_Ankle_Pitch"},
- {JointValue::ANKLE_LEFT_ROLL, name + "_Left_Ankle_Roll"},
- {JointValue::HIP_RIGHT_PITCH, name + "_Right_Hip_Pitch"},
- {JointValue::HIP_RIGHT_ROLL, name + "_Right_Hip_Roll"},
- {JointValue::HIP_RIGHT_YAW, name + "_Right_Hip_Yaw"},
- {JointValue::KNEE_RIGHT_PITCH, name + "_Right_Knee_Pitch"},
- {JointValue::ANKLE_RIGHT_PITCH, name + "_Right_Ankle_Pitch"},
- {JointValue::ANKLE_RIGHT_ROLL, name + "_Right_Ankle_Roll"}} {}
-
- void bindMujoco(MujocoContext* mujCtx) override {
- pose = new Pose(mujCtx->model, mujCtx->data, (name + "_position").c_str(),
- (name + "_orientation").c_str());
- imu = new Imu(mujCtx->model, mujCtx->data, (name + "_linear-acceleration").c_str(),
- (name + "_angular-velocity").c_str());
- joints = new Joints(mujCtx->model, mujCtx->data, joint_map);
- cameras[0] = new Camera(mujCtx, (name + "_left_cam").c_str());
- cameras[1] = new Camera(mujCtx, (name + "_right_cam").c_str());
- }
-
- void receiveMessage(const std::map& message) override {
- auto it = message.find("joint_torques");
- if (it == message.end()) {
- throw std::runtime_error("Error: 'joint_torques' key not found in message");
- return;
- }
-
- std::vector joint_torques = it->second.as>();
-
- if (joint_torques.size() != joint_map.size()) {
- throw std::runtime_error("Error: joint_torques size (" + std::to_string(joint_torques.size())
- + ") doesn't match number of joints (" + std::to_string(joint_map.size())
- + ")");
- }
-
- std::unordered_map torque_map;
- size_t i = 0;
- for (const auto& [joint_value, joint_name] : joint_map) {
- torque_map[joint_value] = joint_torques[i++];
- }
-
- joints->set_torque(torque_map);
- }
-
- std::map sendMessage() override {
- buffer_zone_.clear();
- std::map msg;
- msg["robot_name"] = msgpack::object(name, buffer_zone_);
- msg["pose"] = pose->serialize(buffer_zone_);
- msg["imu"] = imu->serialize(buffer_zone_);
- msg["joints"] = joints->serialize(buffer_zone_);
-
- return msg;
- }
-
- void update() override {
- pose->update();
- imu->update();
- joints->update();
- /*
- cameras[0]->update();
- cameras[1]->update();
- */
- }
-
- ~T1() = default;
-
- private:
- std::map joint_map;
-};
-
-class K1 : public Robot {
- public:
- Pose* pose = nullptr;
- Imu* imu;
- Joints* joints = nullptr;
- std::array cameras = {};
-
- K1(const std::string& name, const std::string& type, uint8_t number, const Eigen::Vector3d& initPosition,
- const Eigen::Vector3d& initOrientation, const std::shared_ptr& team)
- : Robot(name, type, number, initPosition, initOrientation, team),
- joint_map{{JointValue::HEAD_YAW, name + "_AAHead_yaw"},
- {JointValue::HEAD_PITCH, name + "_Head_pitch"},
- {JointValue::SHOULDER_LEFT_PITCH, name + "_ALeft_Shoulder_Pitch"},
- {JointValue::SHOULDER_LEFT_ROLL, name + "_Left_Shoulder_Roll"},
- {JointValue::ELBOW_LEFT_PITCH, name + "_Left_Elbow_Pitch"},
- {JointValue::ELBOW_LEFT_YAW, name + "_Left_Elbow_Yaw"},
- {JointValue::SHOULDER_RIGHT_ROLL, name + "_Right_Shoulder_Roll"},
- {JointValue::SHOULDER_RIGHT_PITCH, name + "_ARight_Shoulder_Pitch"},
- {JointValue::ELBOW_RIGHT_PITCH, name + "_Right_Elbow_Pitch"},
- {JointValue::ELBOW_RIGHT_YAW, name + "_Right_Elbow_Yaw"},
- {JointValue::HIP_LEFT_PITCH, name + "_Left_Hip_Pitch"},
- {JointValue::HIP_LEFT_ROLL, name + "_Left_Hip_Roll"},
- {JointValue::HIP_LEFT_YAW, name + "_Left_Hip_Yaw"},
- {JointValue::KNEE_LEFT_PITCH, name + "_Left_Knee_Pitch"},
- {JointValue::ANKLE_LEFT_PITCH, name + "_Left_Ankle_Pitch"},
- {JointValue::ANKLE_LEFT_ROLL, name + "_Left_Ankle_Roll"},
- {JointValue::HIP_RIGHT_PITCH, name + "_Right_Hip_Pitch"},
- {JointValue::HIP_RIGHT_ROLL, name + "_Right_Hip_Roll"},
- {JointValue::HIP_RIGHT_YAW, name + "_Right_Hip_Yaw"},
- {JointValue::KNEE_RIGHT_PITCH, name + "_Right_Knee_Pitch"},
- {JointValue::ANKLE_RIGHT_PITCH, name + "_Right_Ankle_Pitch"},
- {JointValue::ANKLE_RIGHT_ROLL, name + "_Right_Ankle_Roll"}} {}
-
- void bindMujoco(MujocoContext* mujCtx) override {
- pose = new Pose(mujCtx->model, mujCtx->data, (name + "_position").c_str(),
- (name + "_orientation").c_str());
- imu = new Imu(mujCtx->model, mujCtx->data, (name + "_linear-acceleration").c_str(),
- (name + "_angular-velocity").c_str());
- joints = new Joints(mujCtx->model, mujCtx->data, joint_map);
- cameras[0] = new Camera(mujCtx, (name + "_left_cam").c_str());
- cameras[1] = new Camera(mujCtx, (name + "_right_cam").c_str());
- }
-
- void receiveMessage(const std::map& message) override {
- std::cout << "Hi I'm " << name << " message received: {";
- bool first = true;
- for (const auto& [key, val] : message) {
- if (!first)
- std::cout << ", ";
- std::cout << key << ": " << val;
- first = false;
- }
- std::cout << "}" << std::endl;
- }
-
- std::map sendMessage() override {
- buffer_zone_.clear();
- std::map msg;
- msg["robot_name"] = msgpack::object(name, buffer_zone_);
- msg["pose"] = pose->serialize(buffer_zone_);
- msg["imu"] = imu->serialize(buffer_zone_);
- msg["joints"] = joints->serialize(buffer_zone_);
-
- return msg;
- }
-
- void update() override {
- pose->update();
- imu->update();
- joints->update();
- /*
- cameras[0]->update();
- cameras[1]->update();
- */
- }
-
- ~K1() = default;
-
- private:
- std::map joint_map;
-};
-
-class RobotManager {
- public:
- // Singleton class
- static RobotManager& instance() {
- static RobotManager mgr;
- return mgr;
- }
-
- void registerRobot(std::shared_ptr robot) {
- std::lock_guard lock(mutex_);
-
- robots_.push_back(std::move(robot));
- }
-
- std::vector> getRobots() const {
- std::lock_guard lock(mutex_);
- return robots_;
- }
-
- size_t count() const {
- std::lock_guard lock(mutex_);
- return robots_.size();
- }
-
- void update() {
- std::lock_guard lock(mutex_);
- for (std::shared_ptr r : robots_) {
- r->update();
- }
- }
-
- void clear() {
- std::lock_guard lock(mutex_);
- for (std::shared_ptr r : robots_) {
- // Drop ownership first
- r->container.reset();
- r->team.reset();
- }
- robots_.clear();
- }
-
- void bindMujoco(MujocoContext* mujContext) {
- for (std::shared_ptr r : robots_)
- r->bindMujoco(mujContext);
- }
-
- std::shared_ptr create(const std::string& name, const std::string& type, uint8_t number,
- const Eigen::Vector3d& pos, const Eigen::Vector3d& ori,
- const std::shared_ptr team) {
- auto it = robotFactory.find(type);
- if (it != robotFactory.end())
- return it->second(name, type, number, pos, ori, team);
- return nullptr;
- }
-
- void startContainers() {
- startCommunicationServer(frameworkCommunicationPort);
-
- YAML::Node configRoot;
- try {
- configRoot = YAML::LoadFile(frameworkConfigPath);
- } catch (const YAML::BadFile& e) {
- throw std::runtime_error("Failed to open YAML file: " + std::string(frameworkConfigPath));
- } catch (const YAML::ParserException& e) {
- throw std::runtime_error("Failed to parse YAML file: " + std::string(e.what()));
- }
-
- if (!configRoot["image"])
- throw std::runtime_error("Missing 'image' key in YAML file");
-
- std::string image;
- try {
- image = configRoot["image"].as();
- } catch (const YAML::Exception& e) {
- throw std::runtime_error("'image' must be a string: " + std::string(e.what()));
- }
-
- if (!configRoot["volumes"] || !configRoot["volumes"].IsSequence())
- throw std::runtime_error("'volumes' key missing or not a sequence");
-
- std::vector binds;
- for (const auto& v : configRoot["volumes"]) {
- try {
- binds.push_back(v.as());
- } catch (const YAML::Exception& e) {
- throw std::runtime_error("Volume entry must be a string: " + std::string(e.what()));
- }
- }
-
- for (std::shared_ptr r : robots_) {
- r->container = std::make_unique(r->name + "_container");
- r->container->create(r->name, image, binds);
- r->container->start();
- }
- }
-
- void startCommunicationServer(int port) {
- if (serverRunning_)
- throw std::runtime_error("Server already running");
- serverRunning_ = true;
- serverThread_ = std::thread(&RobotManager::_serverInternal, this, port);
- }
-
- void stopCommunicationServer() {
- if (!serverRunning_)
- return;
-
- serverRunning_ = false;
-
- if (serverThread_.joinable())
- serverThread_.join();
- }
-
- private:
- RobotManager() = default;
- ~RobotManager() = default;
-
- RobotManager(const RobotManager&) = delete;
- RobotManager& operator=(const RobotManager&) = delete;
-
- void _serverInternal(int port) {
- int server_fd = socket(AF_INET, SOCK_STREAM, 0);
- if (server_fd < 0)
- throw std::runtime_error("Failed to create socket");
-
- int opt = 1;
- setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
-
- sockaddr_in address{};
- address.sin_family = AF_INET;
- address.sin_addr.s_addr = INADDR_ANY;
- address.sin_port = htons(port);
-
- if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0)
- throw std::runtime_error("Socket bind failed");
- if (listen(server_fd, robots_.size()) < 0)
- throw std::runtime_error("Listen failed");
-
- std::vector fds;
- fds.push_back({server_fd, POLLIN, 0});
-
- // Using a polling server. It isn't immediately intuitive, but it is efficient for this use case.
- while (serverRunning_) {
- // the poll blocks until a new connection arrives on server_fd or data arrives in one of the
- // monitored fd or a socket closes or the timeout expires.
- int ret = poll(fds.data(), fds.size(), 100);
- if (ret <= 0)
- continue; // Timeout, skip iteration (timeout necessary to check whether serverRunning_ is
- // still true)
-
- for (size_t i = 0; i < fds.size(); ++i) {
- // An event occured for the i-th fd
- if (fds[i].revents & POLLIN) {
- if (fds[i].fd == server_fd) {
- // The only event for the server is someone knocking
- int client_fd = accept(server_fd, nullptr, nullptr);
- if (client_fd >= 0)
- fds.push_back({client_fd, POLLIN, 0});
- } else {
- // The events for other fds indicate either an incoming message or a closed connection
- // the read call disambiguates the two cases
- char buffer[MAX_MSG_SIZE];
- int n = read(fds[i].fd, buffer, sizeof(buffer) - 1);
- if (n <= 0) {
- close(fds[i].fd);
- fds.erase(fds.begin() + i);
- --i;
- continue;
- }
-
- msgpack::object_handle oh = msgpack::unpack(buffer, n);
- auto data_map = oh.get().as>();
- auto it = data_map.find("robot_name");
- if (it == data_map.end())
- continue;
-
- std::string messageRecipient = it->second.as();
-
- std::unique_lock lock(mutex_);
- for (auto& r : robots_) {
- if (r->name == messageRecipient) {
- r->receiveMessage(data_map);
- auto answ = r->sendMessage();
- msgpack::sbuffer sbuf;
- msgpack::pack(sbuf, answ);
- send(fds[i].fd, sbuf.data(), sbuf.size(), 0);
- break;
- }
- }
- }
- }
- }
- }
-
- for (auto& fd : fds)
- close(fd.fd);
- }
-
- std::atomic serverRunning_ = false;
- std::thread serverThread_;
-
- mutable std::mutex mutex_;
- std::vector> robots_;
-
- using RobotCreator = std::function(const std::string&, const std::string&, uint8_t,
- const Eigen::Vector3d&, const Eigen::Vector3d&,
- const std::shared_ptr&)>;
-
- std::unordered_map robotFactory = {
- {"Booster-K1", [](auto&& name, auto&& type, uint8_t number, auto&& pos, auto&& ori,
- auto&& team) { return std::make_shared(name, type, number, pos, ori, team); }},
- {"Booster-T1", [](auto&& name, auto&& type, uint8_t number, auto&& pos, auto&& ori, auto&& team) {
- return std::make_shared(name, type, number, pos, ori, team);
- }}};
-};
-
-} // namespace spqr
diff --git a/README.md b/README.md
index 4c3fabd..2d4d1ce 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,7 @@
# circus
-

+
**circus** is a multi-platform humanoid robot soccer simulator built on top of MuJoCo. It supports mixed teams of robots, enabling realistic and flexible RoboCup simulations. Designed for research and development, circus provides accurate physics, advanced robot models, and seamless integration across operating systems.
@@ -13,7 +13,7 @@ This project uses pixi to declare and reproduce the build/runtime dependency env
#### Overview
- pixi manages the environment and dependencies defined in [pixi.toml](pixi.toml).
- CMake is used to configure and build the native C++ targets defined in [CMakeLists.txt](CMakeLists.txt).
-- The main executable target is `main` (entrypoint: [Src/main.cpp](Src/main.cpp)) and is placed in the build directory.
+- The main executable target is `main` (entrypoint: [src/main.cpp](src/main.cpp)) and is placed in the build directory.
#### Prerequisites
- pixi installed (install following pixi project documentation).
@@ -34,4 +34,4 @@ pixi run main
### Links
- pixi configuration: [pixi.toml](pixi.toml)
- Build configuration: [CMakeLists.txt](CMakeLists.txt)
-- C++ entrypoint: [Src/main.cpp](Src/main.cpp)
+- C++ entrypoint: [src/main.cpp](src/main.cpp)
diff --git a/Assets/logo.png b/assets/logo.png
similarity index 100%
rename from Assets/logo.png
rename to assets/logo.png
diff --git a/Include/AppWindow.h b/include/AppWindow.h
similarity index 100%
rename from Include/AppWindow.h
rename to include/AppWindow.h
diff --git a/Include/CircusApplication.h b/include/CircusApplication.h
similarity index 100%
rename from Include/CircusApplication.h
rename to include/CircusApplication.h
diff --git a/Include/Constants.h b/include/Constants.h
similarity index 80%
rename from Include/Constants.h
rename to include/Constants.h
index ca70fa2..8d82b80 100644
--- a/Include/Constants.h
+++ b/include/Constants.h
@@ -4,6 +4,6 @@ namespace spqr {
constexpr const char* appName = "Circus Simulator";
constexpr unsigned initialWindowWidth = 800;
constexpr unsigned initialWindowHeight = 600;
-constexpr const char* frameworkConfigPath = "Resources/config/framework_config.yaml";
+constexpr const char* frameworkConfigPath = "resources/config/framework_config.yaml";
constexpr int frameworkCommunicationPort = 5555;
} // namespace spqr
diff --git a/Include/Container.h b/include/Container.h
similarity index 100%
rename from Include/Container.h
rename to include/Container.h
diff --git a/Include/MujocoContext.h b/include/MujocoContext.h
similarity index 100%
rename from Include/MujocoContext.h
rename to include/MujocoContext.h
diff --git a/include/RobotManager.h b/include/RobotManager.h
new file mode 100644
index 0000000..0400fc8
--- /dev/null
+++ b/include/RobotManager.h
@@ -0,0 +1,249 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "Constants.h"
+#include "MujocoContext.h"
+#include "robots/BoosterK1.h"
+#include "robots/BoosterT1.h"
+#include "robots/Robot.h"
+
+#define MAX_MSG_SIZE 1048576 // 1MB
+namespace spqr {
+
+struct Team; // Forward declaration
+
+class RobotManager {
+ public:
+ // Singleton class
+ static RobotManager& instance() {
+ static RobotManager mgr;
+ return mgr;
+ }
+
+ void registerRobot(std::shared_ptr robot) {
+ std::lock_guard lock(mutex_);
+
+ robots_.push_back(std::move(robot));
+ }
+
+ std::vector> getRobots() const {
+ std::lock_guard lock(mutex_);
+ return robots_;
+ }
+
+ size_t count() const {
+ std::lock_guard lock(mutex_);
+ return robots_.size();
+ }
+
+ void update() {
+ std::lock_guard lock(mutex_);
+ for (std::shared_ptr r : robots_) {
+ r->update();
+ }
+ }
+
+ void clear() {
+ std::lock_guard lock(mutex_);
+ for (std::shared_ptr r : robots_) {
+ // Drop ownership first
+ r->container.reset();
+ r->team.reset();
+ }
+ robots_.clear();
+ }
+
+ void bindMujoco(MujocoContext* mujContext) {
+ for (std::shared_ptr r : robots_)
+ r->bindMujoco(mujContext);
+ }
+
+ std::shared_ptr create(const std::string& name, const std::string& type, uint8_t number,
+ const Eigen::Vector3d& pos, const Eigen::Vector3d& ori,
+ const std::shared_ptr team) {
+ auto it = robotFactory.find(type);
+ if (it != robotFactory.end())
+ return it->second(name, type, number, pos, ori, team);
+ return nullptr;
+ }
+
+ void startContainers() {
+ startCommunicationServer(frameworkCommunicationPort);
+
+ YAML::Node configRoot;
+ try {
+ configRoot = YAML::LoadFile(frameworkConfigPath);
+ } catch (const YAML::BadFile& e) {
+ throw std::runtime_error("Failed to open YAML file: " + std::string(frameworkConfigPath));
+ } catch (const YAML::ParserException& e) {
+ throw std::runtime_error("Failed to parse YAML file: " + std::string(e.what()));
+ }
+
+ if (!configRoot["image"])
+ throw std::runtime_error("Missing 'image' key in YAML file");
+
+ std::string image;
+ try {
+ image = configRoot["image"].as();
+ } catch (const YAML::Exception& e) {
+ throw std::runtime_error("'image' must be a string: " + std::string(e.what()));
+ }
+
+ if (!configRoot["volumes"] || !configRoot["volumes"].IsSequence())
+ throw std::runtime_error("'volumes' key missing or not a sequence");
+
+ std::vector binds;
+ for (const auto& v : configRoot["volumes"]) {
+ try {
+ binds.push_back(v.as());
+ } catch (const YAML::Exception& e) {
+ throw std::runtime_error("Volume entry must be a string: " + std::string(e.what()));
+ }
+ }
+
+ for (std::shared_ptr r : robots_) {
+ r->container = std::make_unique(r->name + "_container");
+ r->container->create(r->name, image, binds);
+ r->container->start();
+ }
+ }
+
+ void startCommunicationServer(int port) {
+ if (serverRunning_)
+ throw std::runtime_error("Server already running");
+ serverRunning_ = true;
+ serverThread_ = std::thread(&RobotManager::_serverInternal, this, port);
+ }
+
+ void stopCommunicationServer() {
+ if (!serverRunning_)
+ return;
+
+ serverRunning_ = false;
+
+ if (serverThread_.joinable())
+ serverThread_.join();
+ }
+
+ private:
+ RobotManager() = default;
+ ~RobotManager() = default;
+
+ RobotManager(const RobotManager&) = delete;
+ RobotManager& operator=(const RobotManager&) = delete;
+
+ void _serverInternal(int port) {
+ int server_fd = socket(AF_INET, SOCK_STREAM, 0);
+ if (server_fd < 0)
+ throw std::runtime_error("Failed to create socket");
+
+ int opt = 1;
+ setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
+
+ sockaddr_in address{};
+ address.sin_family = AF_INET;
+ address.sin_addr.s_addr = INADDR_ANY;
+ address.sin_port = htons(port);
+
+ if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0)
+ throw std::runtime_error("Socket bind failed");
+ if (listen(server_fd, robots_.size()) < 0)
+ throw std::runtime_error("Listen failed");
+
+ std::vector fds;
+ fds.push_back({server_fd, POLLIN, 0});
+
+ // Using a polling server. It isn't immediately intuitive, but it is efficient for this use case.
+ while (serverRunning_) {
+ // the poll blocks until a new connection arrives on server_fd or data arrives in one of the
+ // monitored fd or a socket closes or the timeout expires.
+ int ret = poll(fds.data(), fds.size(), 100);
+ if (ret <= 0)
+ continue; // Timeout, skip iteration (timeout necessary to check whether serverRunning_ is
+ // still true)
+
+ for (size_t i = 0; i < fds.size(); ++i) {
+ // An event occured for the i-th fd
+ if (fds[i].revents & POLLIN) {
+ if (fds[i].fd == server_fd) {
+ // The only event for the server is someone knocking
+ int client_fd = accept(server_fd, nullptr, nullptr);
+ if (client_fd >= 0)
+ fds.push_back({client_fd, POLLIN, 0});
+ } else {
+ // The events for other fds indicate either an incoming message or a closed connection
+ // the read call disambiguates the two cases
+ char buffer[MAX_MSG_SIZE];
+ int n = read(fds[i].fd, buffer, sizeof(buffer) - 1);
+ if (n <= 0) {
+ close(fds[i].fd);
+ fds.erase(fds.begin() + i);
+ --i;
+ continue;
+ }
+
+ msgpack::object_handle oh = msgpack::unpack(buffer, n);
+ auto data_map = oh.get().as>();
+ auto it = data_map.find("robot_name");
+ if (it == data_map.end())
+ continue;
+
+ std::string messageRecipient = it->second.as();
+
+ std::unique_lock lock(mutex_);
+ for (auto& r : robots_) {
+ if (r->name == messageRecipient) {
+ r->receiveMessage(data_map);
+ auto answ = r->sendMessage();
+ msgpack::sbuffer sbuf;
+ msgpack::pack(sbuf, answ);
+ send(fds[i].fd, sbuf.data(), sbuf.size(), 0);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+
+ for (auto& fd : fds)
+ close(fd.fd);
+ }
+
+ std::atomic serverRunning_ = false;
+ std::thread serverThread_;
+
+ mutable std::mutex mutex_;
+ std::vector> robots_;
+
+ using RobotCreator = std::function(const std::string&, const std::string&, uint8_t,
+ const Eigen::Vector3d&, const Eigen::Vector3d&,
+ const std::shared_ptr&)>;
+
+ std::unordered_map robotFactory
+ = {{"Booster-K1",
+ [](auto&& name, auto&& type, uint8_t number, auto&& pos, auto&& ori, auto&& team) {
+ return std::make_shared(name, type, number, pos, ori, team);
+ }},
+ {"Booster-T1", [](auto&& name, auto&& type, uint8_t number, auto&& pos, auto&& ori, auto&& team) {
+ return std::make_shared(name, type, number, pos, ori, team);
+ }}};
+};
+
+} // namespace spqr
diff --git a/Include/SceneParser.h b/include/SceneParser.h
similarity index 97%
rename from Include/SceneParser.h
rename to include/SceneParser.h
index 14d2cb2..75a8b08 100644
--- a/Include/SceneParser.h
+++ b/include/SceneParser.h
@@ -8,8 +8,8 @@
#include
#include
-#include "Robot.h"
#include "Team.h"
+#include "robots/Robot.h"
using namespace pugi;
using namespace std;
diff --git a/Include/SimulationThread.h b/include/SimulationThread.h
similarity index 100%
rename from Include/SimulationThread.h
rename to include/SimulationThread.h
diff --git a/Include/SimulationViewport.h b/include/SimulationViewport.h
similarity index 100%
rename from Include/SimulationViewport.h
rename to include/SimulationViewport.h
diff --git a/Include/Team.h b/include/Team.h
similarity index 96%
rename from Include/Team.h
rename to include/Team.h
index 4743c25..d80f852 100644
--- a/Include/Team.h
+++ b/include/Team.h
@@ -3,7 +3,8 @@
#include
#include
-#include "Robot.h"
+#include "RobotManager.h"
+#include "robots/Robot.h"
namespace spqr {
diff --git a/include/robots/BoosterK1.h b/include/robots/BoosterK1.h
new file mode 100644
index 0000000..e8e0d22
--- /dev/null
+++ b/include/robots/BoosterK1.h
@@ -0,0 +1,113 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "MujocoContext.h"
+#include "robots/Robot.h"
+#include "sensors/Camera.h"
+#include "sensors/Imu.h"
+#include "sensors/Joint.h"
+#include "sensors/Pose.h"
+
+#define MAX_MSG_SIZE 1048576 // 1MB
+namespace spqr {
+
+struct Team; // Forward declaration
+
+class BoosterK1 : public Robot {
+ public:
+ Pose* pose = nullptr;
+ Imu* imu;
+ Joints* joints = nullptr;
+ std::array cameras = {};
+
+ BoosterK1(const std::string& name, const std::string& type, uint8_t number,
+ const Eigen::Vector3d& initPosition, const Eigen::Vector3d& initOrientation,
+ const std::shared_ptr& team)
+ : Robot(name, type, number, initPosition, initOrientation, team),
+ joint_map{{JointValue::HEAD_YAW, name + "_AAHead_yaw"},
+ {JointValue::HEAD_PITCH, name + "_Head_pitch"},
+ {JointValue::SHOULDER_LEFT_PITCH, name + "_ALeft_Shoulder_Pitch"},
+ {JointValue::SHOULDER_LEFT_ROLL, name + "_Left_Shoulder_Roll"},
+ {JointValue::ELBOW_LEFT_PITCH, name + "_Left_Elbow_Pitch"},
+ {JointValue::ELBOW_LEFT_YAW, name + "_Left_Elbow_Yaw"},
+ {JointValue::SHOULDER_RIGHT_ROLL, name + "_Right_Shoulder_Roll"},
+ {JointValue::SHOULDER_RIGHT_PITCH, name + "_ARight_Shoulder_Pitch"},
+ {JointValue::ELBOW_RIGHT_PITCH, name + "_Right_Elbow_Pitch"},
+ {JointValue::ELBOW_RIGHT_YAW, name + "_Right_Elbow_Yaw"},
+ {JointValue::HIP_LEFT_PITCH, name + "_Left_Hip_Pitch"},
+ {JointValue::HIP_LEFT_ROLL, name + "_Left_Hip_Roll"},
+ {JointValue::HIP_LEFT_YAW, name + "_Left_Hip_Yaw"},
+ {JointValue::KNEE_LEFT_PITCH, name + "_Left_Knee_Pitch"},
+ {JointValue::ANKLE_LEFT_PITCH, name + "_Left_Ankle_Pitch"},
+ {JointValue::ANKLE_LEFT_ROLL, name + "_Left_Ankle_Roll"},
+ {JointValue::HIP_RIGHT_PITCH, name + "_Right_Hip_Pitch"},
+ {JointValue::HIP_RIGHT_ROLL, name + "_Right_Hip_Roll"},
+ {JointValue::HIP_RIGHT_YAW, name + "_Right_Hip_Yaw"},
+ {JointValue::KNEE_RIGHT_PITCH, name + "_Right_Knee_Pitch"},
+ {JointValue::ANKLE_RIGHT_PITCH, name + "_Right_Ankle_Pitch"},
+ {JointValue::ANKLE_RIGHT_ROLL, name + "_Right_Ankle_Roll"}} {}
+
+ void bindMujoco(MujocoContext* mujCtx) override {
+ pose = new Pose(mujCtx->model, mujCtx->data, (name + "_position").c_str(),
+ (name + "_orientation").c_str());
+ imu = new Imu(mujCtx->model, mujCtx->data, (name + "_linear-acceleration").c_str(),
+ (name + "_angular-velocity").c_str());
+ joints = new Joints(mujCtx->model, mujCtx->data, joint_map);
+ cameras[0] = new Camera(mujCtx, (name + "_left_cam").c_str());
+ cameras[1] = new Camera(mujCtx, (name + "_right_cam").c_str());
+ }
+
+ void receiveMessage(const std::map& message) override {
+ std::cout << "Hi I'm " << name << " message received: {";
+ bool first = true;
+ for (const auto& [key, val] : message) {
+ if (!first)
+ std::cout << ", ";
+ std::cout << key << ": " << val;
+ first = false;
+ }
+ std::cout << "}" << std::endl;
+ }
+
+ std::map sendMessage() override {
+ buffer_zone_.clear();
+ std::map msg;
+ msg["robot_name"] = msgpack::object(name, buffer_zone_);
+ msg["pose"] = pose->serialize(buffer_zone_);
+ msg["imu"] = imu->serialize(buffer_zone_);
+ msg["joints"] = joints->serialize(buffer_zone_);
+
+ return msg;
+ }
+
+ void update() override {
+ pose->update();
+ imu->update();
+ joints->update();
+ /*
+ cameras[0]->update();
+ cameras[1]->update();
+ */
+ }
+
+ ~BoosterK1() = default;
+
+ private:
+ std::map joint_map;
+};
+
+} // namespace spqr
diff --git a/include/robots/BoosterT1.h b/include/robots/BoosterT1.h
new file mode 100644
index 0000000..dc6e706
--- /dev/null
+++ b/include/robots/BoosterT1.h
@@ -0,0 +1,126 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "MujocoContext.h"
+#include "robots/Robot.h"
+#include "sensors/Camera.h"
+#include "sensors/Imu.h"
+#include "sensors/Joint.h"
+#include "sensors/Pose.h"
+
+#define MAX_MSG_SIZE 1048576 // 1MB
+namespace spqr {
+
+struct Team; // Forward declaration
+
+class BoosterT1 : public Robot {
+ public:
+ Pose* pose = nullptr;
+ Imu* imu = nullptr;
+ Joints* joints = nullptr;
+ std::array cameras = {};
+
+ BoosterT1(const std::string& name, const std::string& type, uint8_t number,
+ const Eigen::Vector3d& initPosition, const Eigen::Vector3d& initOrientation,
+ const std::shared_ptr& team)
+ : Robot(name, type, number, initPosition, initOrientation, team),
+ joint_map{{JointValue::HEAD_YAW, name + "_AAHead_yaw"},
+ {JointValue::HEAD_PITCH, name + "_Head_pitch"},
+ {JointValue::SHOULDER_LEFT_PITCH, name + "_Left_Shoulder_Pitch"},
+ {JointValue::SHOULDER_LEFT_ROLL, name + "_Left_Shoulder_Roll"},
+ {JointValue::ELBOW_LEFT_PITCH, name + "_Left_Elbow_Pitch"},
+ {JointValue::ELBOW_LEFT_YAW, name + "_Left_Elbow_Yaw"},
+ {JointValue::SHOULDER_RIGHT_PITCH, name + "_Right_Shoulder_Pitch"},
+ {JointValue::SHOULDER_RIGHT_ROLL, name + "_Right_Shoulder_Roll"},
+ {JointValue::ELBOW_RIGHT_PITCH, name + "_Right_Elbow_Pitch"},
+ {JointValue::ELBOW_RIGHT_YAW, name + "_Right_Elbow_Yaw"},
+ {JointValue::WAIST, name + "_Waist"},
+ {JointValue::HIP_LEFT_PITCH, name + "_Left_Hip_Pitch"},
+ {JointValue::HIP_LEFT_ROLL, name + "_Left_Hip_Roll"},
+ {JointValue::HIP_LEFT_YAW, name + "_Left_Hip_Yaw"},
+ {JointValue::KNEE_LEFT_PITCH, name + "_Left_Knee_Pitch"},
+ {JointValue::ANKLE_LEFT_PITCH, name + "_Left_Ankle_Pitch"},
+ {JointValue::ANKLE_LEFT_ROLL, name + "_Left_Ankle_Roll"},
+ {JointValue::HIP_RIGHT_PITCH, name + "_Right_Hip_Pitch"},
+ {JointValue::HIP_RIGHT_ROLL, name + "_Right_Hip_Roll"},
+ {JointValue::HIP_RIGHT_YAW, name + "_Right_Hip_Yaw"},
+ {JointValue::KNEE_RIGHT_PITCH, name + "_Right_Knee_Pitch"},
+ {JointValue::ANKLE_RIGHT_PITCH, name + "_Right_Ankle_Pitch"},
+ {JointValue::ANKLE_RIGHT_ROLL, name + "_Right_Ankle_Roll"}} {}
+
+ void bindMujoco(MujocoContext* mujCtx) override {
+ pose = new Pose(mujCtx->model, mujCtx->data, (name + "_position").c_str(),
+ (name + "_orientation").c_str());
+ imu = new Imu(mujCtx->model, mujCtx->data, (name + "_linear-acceleration").c_str(),
+ (name + "_angular-velocity").c_str());
+ joints = new Joints(mujCtx->model, mujCtx->data, joint_map);
+ cameras[0] = new Camera(mujCtx, (name + "_left_cam").c_str());
+ cameras[1] = new Camera(mujCtx, (name + "_right_cam").c_str());
+ }
+
+ void receiveMessage(const std::map& message) override {
+ auto it = message.find("joint_torques");
+ if (it == message.end()) {
+ throw std::runtime_error("Error: 'joint_torques' key not found in message");
+ return;
+ }
+
+ std::vector joint_torques = it->second.as>();
+
+ if (joint_torques.size() != joint_map.size()) {
+ throw std::runtime_error("Error: joint_torques size (" + std::to_string(joint_torques.size())
+ + ") doesn't match number of joints (" + std::to_string(joint_map.size())
+ + ")");
+ }
+
+ std::unordered_map torque_map;
+ size_t i = 0;
+ for (const auto& [joint_value, joint_name] : joint_map) {
+ torque_map[joint_value] = joint_torques[i++];
+ }
+
+ joints->set_torque(torque_map);
+ }
+
+ std::map sendMessage() override {
+ buffer_zone_.clear();
+ std::map msg;
+ msg["robot_name"] = msgpack::object(name, buffer_zone_);
+ msg["pose"] = pose->serialize(buffer_zone_);
+ msg["imu"] = imu->serialize(buffer_zone_);
+ msg["joints"] = joints->serialize(buffer_zone_);
+
+ return msg;
+ }
+
+ void update() override {
+ pose->update();
+ imu->update();
+ joints->update();
+ /*
+ cameras[0]->update();
+ cameras[1]->update();
+ */
+ }
+
+ ~BoosterT1() = default;
+
+ private:
+ std::map joint_map;
+};
+
+} // namespace spqr
diff --git a/include/robots/Robot.h b/include/robots/Robot.h
new file mode 100644
index 0000000..f319591
--- /dev/null
+++ b/include/robots/Robot.h
@@ -0,0 +1,52 @@
+#pragma once
+
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+
+#include "Container.h"
+#include "MujocoContext.h"
+
+#define MAX_MSG_SIZE 1048576 // 1MB
+namespace spqr {
+
+struct Team; // Forward declaration
+
+class Robot {
+ public:
+ Robot(const std::string& name, const std::string& type, uint8_t number,
+ const Eigen::Vector3d& initPosition, const Eigen::Vector3d& initOrientation,
+ const std::shared_ptr& team)
+ : name(name),
+ type(type),
+ number(number),
+ initPosition(initPosition),
+ initOrientation(initOrientation),
+ team(team) {}
+ virtual ~Robot() = default;
+ virtual void bindMujoco(MujocoContext* mujContext) = 0;
+ virtual void update() = 0;
+ virtual void receiveMessage(const std::map& message) = 0;
+ virtual std::map sendMessage() = 0;
+
+ std::string name;
+ std::string type;
+ uint8_t number;
+ Eigen::Vector3d initPosition;
+ Eigen::Vector3d initOrientation; // Euler angles
+ std::unique_ptr container;
+ std::shared_ptr team;
+
+ msgpack::zone buffer_zone_;
+};
+
+} // namespace spqr
diff --git a/Include/Camera.h b/include/sensors/Camera.h
similarity index 97%
rename from Include/Camera.h
rename to include/sensors/Camera.h
index 9d0ae37..4e65b84 100644
--- a/Include/Camera.h
+++ b/include/sensors/Camera.h
@@ -5,7 +5,8 @@
#include
#include "MujocoContext.h"
-#include "Sensor.h"
+#include "sensors/Sensor.h"
+
namespace spqr {
class Camera : public Sensor {
diff --git a/Include/Imu.h b/include/sensors/Imu.h
similarity index 98%
rename from Include/Imu.h
rename to include/sensors/Imu.h
index e44081b..fa9c071 100644
--- a/Include/Imu.h
+++ b/include/sensors/Imu.h
@@ -4,7 +4,7 @@
#include
-#include "Sensor.h"
+#include "sensors/Sensor.h"
namespace spqr {
diff --git a/Include/Joint.h b/include/sensors/Joint.h
similarity index 99%
rename from Include/Joint.h
rename to include/sensors/Joint.h
index 8ec6153..82dd6ad 100644
--- a/Include/Joint.h
+++ b/include/sensors/Joint.h
@@ -8,7 +8,7 @@
#include
#include
-#include "Sensor.h"
+#include "sensors/Sensor.h"
namespace spqr {
diff --git a/Include/Pose.h b/include/sensors/Pose.h
similarity index 99%
rename from Include/Pose.h
rename to include/sensors/Pose.h
index 8ca7414..9f5c284 100644
--- a/Include/Pose.h
+++ b/include/sensors/Pose.h
@@ -4,7 +4,7 @@
#include
-#include "Sensor.h"
+#include "sensors/Sensor.h"
namespace spqr {
diff --git a/Include/Sensor.h b/include/sensors/Sensor.h
similarity index 99%
rename from Include/Sensor.h
rename to include/sensors/Sensor.h
index 8faabac..013dd1c 100644
--- a/Include/Sensor.h
+++ b/include/sensors/Sensor.h
@@ -3,6 +3,7 @@
#include
#include
#include
+
class Sensor {
public:
virtual ~Sensor() = default;
diff --git a/pixi.lock b/pixi.lock
index 510e401..437a9b3 100644
--- a/pixi.lock
+++ b/pixi.lock
@@ -11,7 +11,7 @@ environments:
- conda: https://prefix.dev/conda-forge/linux-64/alsa-lib-1.2.14-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/bzip2-1.0.8-hda65f42_8.conda
- conda: https://prefix.dev/conda-forge/linux-64/c-ares-1.34.5-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/dbus-1.16.2-h3c4dab8_0.conda
@@ -22,59 +22,59 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
- conda: https://prefix.dev/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda
- conda: https://prefix.dev/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/graphite2-1.3.14-hecca717_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/harfbuzz-12.1.0-h15599e2_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/harfbuzz-12.2.0-h15599e2_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.45-h1aa0949_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libboost-1.88.0-hed09d94_5.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libboost-1.88.0-hed09d94_6.conda
- conda: https://prefix.dev/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libclang-cpp21.1-21.1.3-default_h99862b1_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libclang13-21.1.3-default_h746c552_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libclang-cpp21.1-21.1.5-default_h99862b1_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libclang13-21.1.5-default_h746c552_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.16.0-h4e3cde8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/libev-4.33-hd590300_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/libexpat-2.7.1-hecca717_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libfreetype-2.14.1-ha770c72_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libfreetype6-2.14.1-h73754d4_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_5.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda
- conda: https://prefix.dev/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libglib-2.86.0-h1fed272_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libglib-2.86.1-h32235b2_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_5.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda
- conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libllvm21-21.1.4-hf7376ad_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libllvm21-21.1.5-hf7376ad_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libmujoco-3.3.2-h31df9c7_4.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libmujoco-3.3.3-h31df9c7_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libpciaccess-0.18-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libpng-1.6.50-h421ea60_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/libpq-18.0-h3675c94_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.51.0-hee844dc_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.41.1-he9a06e4_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libvulkan-loader-1.4.328.1-h5279c79_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libwebp-base-1.6.0-hd42ef1d_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda
- - conda: https://prefix.dev/conda-forge/linux-64/libxkbcommon-1.12.2-hca5e8e5_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/libxkbcommon-1.13.0-hca5e8e5_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libxml2-16-2.15.1-ha9997c6_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda
@@ -82,37 +82,37 @@ environments:
- conda: https://prefix.dev/conda-forge/linux-64/msgpack-cxx-7.0.0-h2285874_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
- conda: https://prefix.dev/conda-forge/linux-64/openldap-2.6.10-he970967_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.4-h26f9b46_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/pcre2-10.46-h1321c63_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/pixman-0.46.4-h54a6638_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda
- conda: https://prefix.dev/conda-forge/linux-64/pugixml-1.15-h3f63f65_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/python-3.12.12-hd63d673_1_cpython.conda
- conda: https://prefix.dev/conda-forge/noarch/python_abi-3.12-8_cp312.conda
- conda: https://prefix.dev/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda
- - conda: https://prefix.dev/conda-forge/linux-64/qt6-main-6.9.3-h5c1c036_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/qt6-main-6.9.3-h5c1c036_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/readline-8.2-h8c095d6_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/tinyxml2-11.0.0-h3f2d84a_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda
- conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xcb-util-cursor-0.1.5-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libsm-1.2.6-he73a12e_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libx11-1.8.12-h4f16b4b_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda
- - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda
+ - conda: https://prefix.dev/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda
@@ -121,11 +121,11 @@ environments:
- conda: https://prefix.dev/conda-forge/linux-64/yaml-cpp-0.8.0-h3f2d84a_0.conda
- conda: https://prefix.dev/conda-forge/linux-64/zstd-1.5.7-hb8e6e7a_2.conda
- conda: .
- subdir: linux-64
+ build: hb0f4dca_0
osx-arm64:
- conda: https://prefix.dev/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_8.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/c-ares-1.34.5-h5505292_0.conda
- - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda
+ - conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/cairo-1.18.4-h6a3b0d2_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/cyrus-sasl-2.1.28-ha1cbb27_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/double-conversion-3.3.1-h286801f_0.conda
@@ -135,48 +135,50 @@ environments:
- conda: https://prefix.dev/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda
- conda: https://prefix.dev/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2
- - conda: https://prefix.dev/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/freetype-2.14.1-hce30654_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/graphite2-1.3.14-hec049ff_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/harfbuzz-12.1.0-haf38c7b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/harfbuzz-12.2.0-haf38c7b_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/lerc-4.0.0-hd64df32_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libboost-1.88.0-h18cd856_6.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libccd-double-2.1-h9a09cb3_2.tar.bz2
- conda: https://prefix.dev/conda-forge/osx-arm64/libclang-cpp19.1-19.1.7-default_h73dfc95_5.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libclang13-21.1.4-default_h6e8f826_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.16.0-hdece5d2_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-21.1.4-hf598326_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libclang13-21.1.5-default_h6e8f826_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.17.0-hdece5d2_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-21.1.5-hf598326_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libexpat-2.7.1-hec049ff_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libfreetype-2.14.1-hce30654_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libfreetype6-2.14.1-h6da58f4_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libglib-2.86.1-he69a767_1.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libglib-2.86.1-he69a767_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libintl-0.25.1-h493aca8_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.1.2-hc919400_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libllvm19-19.1.7-h8e0c9ce_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libllvm21-21.1.4-h8e0c9ce_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libllvm21-21.1.5-h8e0c9ce_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/liblzma-5.8.1-h39f12f2_2.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libmujoco-3.3.2-hba1c1e0_4.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libmujoco-3.3.3-h2f9c0ae_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libnghttp2-1.67.0-hc438710_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libpng-1.6.50-h280e0eb_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libpq-18.0-h31f7a3a_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.51.0-h8adb53f_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libwebp-base-1.6.0-h07db88b_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libxml2-16-2.15.1-h0ff4647_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libxml2-2.15.1-h9329255_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/lodepng-20220109-hf86a087_0.tar.bz2
+ - conda: https://prefix.dev/conda-forge/osx-arm64/msgpack-cxx-7.0.0-h33cdd7a_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/ncurses-6.5-h5e97a16_3.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/openldap-2.6.10-hbe55e7a_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.4-h5503f6c_0.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/pcre2-10.46-h7125dd6_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/pixman-0.46.4-h81086ad_1.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/pugixml-1.15-hd3d436d_0.conda
@@ -186,12 +188,12 @@ environments:
- conda: https://prefix.dev/conda-forge/osx-arm64/qt6-main-6.9.3-hb266e41_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/readline-8.2-h1d1bf99_2.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/tinyxml2-11.0.0-ha1acc90_0.conda
- - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
+ - conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda
- conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/yaml-cpp-0.8.0-ha1acc90_0.conda
- conda: https://prefix.dev/conda-forge/osx-arm64/zstd-1.5.7-h6491c7d_2.conda
- conda: .
- subdir: osx-arm64
+ build: h60d57d3_0
packages:
- conda: https://prefix.dev/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2
sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726
@@ -260,22 +262,14 @@ packages:
license_family: MIT
size: 179696
timestamp: 1744128058734
-- conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.10.5-hbd8a1cb_0.conda
- sha256: 3b5ad78b8bb61b6cdc0978a6a99f8dfb2cc789a451378d054698441005ecbdb6
- md5: f9e5fbc24009179e8b0409624691758a
+- conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.11.12-hbd8a1cb_0.conda
+ sha256: b986ba796d42c9d3265602bc038f6f5264095702dd546c14bc684e60c385e773
+ md5: f0991f0f84902f6b6009b4d2350a83aa
depends:
- __unix
license: ISC
- size: 155907
- timestamp: 1759649036195
-- conda: https://prefix.dev/conda-forge/noarch/ca-certificates-2025.8.3-hbd8a1cb_0.conda
- sha256: 837b795a2bb39b75694ba910c13c15fa4998d4bb2a622c214a6a5174b2ae53d1
- md5: 74784ee3d225fc3dca89edb635b4e5cc
- depends:
- - __unix
- license: ISC
- size: 154402
- timestamp: 1754210968730
+ size: 152432
+ timestamp: 1762967197890
- conda: https://prefix.dev/conda-forge/linux-64/cairo-1.18.4-h3394656_0.conda
sha256: 3bd6a391ad60e471de76c0e9db34986c4b5058587fbf2efa5a7f54645e28c2c7
md5: 09262e66b19567aff4f592fb53b28760
@@ -322,38 +316,41 @@ packages:
- conda: .
name: circus
version: 0.1.0
- build: hbf21a9e_0
- subdir: linux-64
+ build: h60d57d3_0
+ subdir: osx-arm64
depends:
- - libstdcxx >=15
- - libgcc >=15
+ - libcxx >=21
+ - libcurl >=8.14.1,<9.0a0
- pugixml >=1.15,<1.16.0a0
- python_abi 3.12.* *_cp312
- yaml-cpp >=0.8.0,<0.9.0a0
- - libcurl >=8.16.0,<9.0a0
- - qt6-main >=6.9.3,<6.10.0a0
- - libmujoco >=3.3.2,<3.3.3.0a0
- - libgl >=1.7.0,<2.0a0
+ - qt6-main >=6.9.2,<6.10.0a0
+ - libmujoco >=3.3.3,<3.3.4.0a0
- msgpack-cxx >=7.0.0,<8.0a0
- libboost >=1.88.0,<1.89.0a0
input:
- hash: e5f397e18171cf3b88087aacde98fa17dc2c573f0ee2125ac60821667fbee362
+ hash: 437c06546add47ddca9e551d94285b5132628f0499d716ab173f5ff45291aa8b
globs: []
- conda: .
name: circus
version: 0.1.0
- build: hbf21a9e_0
- subdir: osx-arm64
+ build: hb0f4dca_0
+ subdir: linux-64
depends:
- - libcxx >=21
+ - libstdcxx >=15
+ - libgcc >=15
+ - libmujoco >=3.3.3,<3.3.4.0a0
+ - libcurl >=8.14.1,<9.0a0
- pugixml >=1.15,<1.16.0a0
- python_abi 3.12.* *_cp312
- yaml-cpp >=0.8.0,<0.9.0a0
- - libcurl >=8.16.0,<9.0a0
- - qt6-main >=6.9.3,<6.10.0a0
- - libmujoco >=3.3.2,<3.3.3.0a0
+ - qt6-main >=6.9.2,<6.10.0a0
+ - msgpack-cxx >=7.0.0,<8.0a0
+ - libboost >=1.88.0,<1.89.0a0
+ - libgl >=1.7.0,<2.0a0
+ - libegl >=1.7.0,<2.0a0
input:
- hash: e5f397e18171cf3b88087aacde98fa17dc2c573f0ee2125ac60821667fbee362
+ hash: 437c06546add47ddca9e551d94285b5132628f0499d716ab173f5ff45291aa8b
globs: []
- conda: https://prefix.dev/conda-forge/linux-64/cyrus-sasl-2.1.28-hd9c7081_0.conda
sha256: ee09ad7610c12c7008262d713416d0b58bf365bc38584dce48950025850bdf3f
@@ -482,18 +479,18 @@ packages:
license_family: BSD
size: 3667
timestamp: 1566974674465
-- conda: https://prefix.dev/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2
- sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38
- md5: f766549260d6815b0c52253f1fb1bb29
+- conda: https://prefix.dev/conda-forge/noarch/fonts-conda-forge-1-hc364b38_1.conda
+ sha256: 54eea8469786bc2291cc40bca5f46438d3e062a399e8f53f013b6a9f50e98333
+ md5: a7970cd949a077b7cb9696379d338681
depends:
- - font-ttf-dejavu-sans-mono
+ - font-ttf-ubuntu
- font-ttf-inconsolata
+ - font-ttf-dejavu-sans-mono
- font-ttf-source-code-pro
- - font-ttf-ubuntu
license: BSD-3-Clause
license_family: BSD
- size: 4102
- timestamp: 1566932280397
+ size: 4059
+ timestamp: 1762351264405
- conda: https://prefix.dev/conda-forge/linux-64/freetype-2.14.1-ha770c72_0.conda
sha256: bf8e4dffe46f7d25dc06f31038cacb01672c47b9f45201f065b0f4d00ab0a83e
md5: 4afc585cd97ba8a23809406cd8a9eda8
@@ -533,9 +530,9 @@ packages:
license_family: LGPL
size: 81202
timestamp: 1755102333712
-- conda: https://prefix.dev/conda-forge/linux-64/harfbuzz-12.1.0-h15599e2_0.conda
- sha256: df2a964f5b7dd652b59da018f1d2d9ae402b815c4e5d849384344df358d2a565
- md5: 7704b1edaa8316b8792424f254c1f586
+- conda: https://prefix.dev/conda-forge/linux-64/harfbuzz-12.2.0-h15599e2_0.conda
+ sha256: 6bd8b22beb7d40562b2889dc68232c589ff0d11a5ad3addd41a8570d11f039d9
+ md5: b8690f53007e9b5ee2c2178dd4ac778c
depends:
- __glibc >=2.17,<3.0.a0
- cairo >=1.18.4,<2.0a0
@@ -545,16 +542,16 @@ packages:
- libfreetype >=2.14.1
- libfreetype6 >=2.14.1
- libgcc >=14
- - libglib >=2.86.0,<3.0a0
+ - libglib >=2.86.1,<3.0a0
- libstdcxx >=14
- libzlib >=1.3.1,<2.0a0
license: MIT
license_family: MIT
- size: 2058414
- timestamp: 1759365674184
-- conda: https://prefix.dev/conda-forge/osx-arm64/harfbuzz-12.1.0-haf38c7b_0.conda
- sha256: 8f2fac3e74608af55334ab9e77e9db9112c9078858aa938d191481d873a902d3
- md5: 3fd0b257d246ddedd1f1496e5246958d
+ size: 2411408
+ timestamp: 1762372726141
+- conda: https://prefix.dev/conda-forge/osx-arm64/harfbuzz-12.2.0-haf38c7b_0.conda
+ sha256: 2f8d95fe1cb655fe3bac114062963f08cc77b31b042027ef7a04ebde3ce21594
+ md5: 1c7ff9d458dd8220ac2ee71dd4af1be5
depends:
- __osx >=11.0
- cairo >=1.18.4,<2.0a0
@@ -564,12 +561,12 @@ packages:
- libexpat >=2.7.1,<3.0a0
- libfreetype >=2.14.1
- libfreetype6 >=2.14.1
- - libglib >=2.86.0,<3.0a0
+ - libglib >=2.86.1,<3.0a0
- libzlib >=1.3.1,<2.0a0
license: MIT
license_family: MIT
- size: 1548996
- timestamp: 1759366687572
+ size: 1537764
+ timestamp: 1762373922469
- conda: https://prefix.dev/conda-forge/linux-64/icu-75.1-he02047a_0.conda
sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e
md5: 8b189310083baabfb622af68fd9d3ae3
@@ -626,17 +623,18 @@ packages:
license_family: MIT
size: 1155530
timestamp: 1719463474401
-- conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.44-h1423503_1.conda
- sha256: 1a620f27d79217c1295049ba214c2f80372062fd251b569e9873d4a953d27554
- md5: 0be7c6e070c19105f966d3758448d018
+- conda: https://prefix.dev/conda-forge/linux-64/ld_impl_linux-64-2.45-h1aa0949_0.conda
+ sha256: 32321d38b8785ef8ddcfef652ee370acee8d944681014d47797a18637ff16854
+ md5: 1450224b3e7d17dfeb985364b77a4d47
depends:
- __glibc >=2.17,<3.0.a0
+ - zstd >=1.5.7,<1.6.0a0
constrains:
- - binutils_impl_linux-64 2.44
+ - binutils_impl_linux-64 2.45
license: GPL-3.0-only
license_family: GPL
- size: 676044
- timestamp: 1752032747103
+ size: 753744
+ timestamp: 1763060439129
- conda: https://prefix.dev/conda-forge/linux-64/lerc-4.0.0-h0aef613_1.conda
sha256: 412381a43d5ff9bbed82cd52a0bbca5b90623f62e41007c9c42d3870c60945ff
md5: 9344155d33912347b37f0ae6c410a835
@@ -658,9 +656,9 @@ packages:
license_family: Apache
size: 188306
timestamp: 1745264362794
-- conda: https://prefix.dev/conda-forge/linux-64/libboost-1.88.0-hed09d94_5.conda
- sha256: b3815809af2439731caac4c373e3d7e41992ec6be5ad4627096fc438d82502dc
- md5: f0cb6133ea736a8aa0feca310894caf0
+- conda: https://prefix.dev/conda-forge/linux-64/libboost-1.88.0-hed09d94_6.conda
+ sha256: 40b334d77229fcceb51d911a153d7ab9ff4f6a6f90e938387bf29129ab956c58
+ md5: 70675d70a76e1b5539b1f464fd5f02ba
depends:
- __glibc >=2.17,<3.0.a0
- bzip2 >=1.0.8,<2.0a0
@@ -673,8 +671,24 @@ packages:
constrains:
- boost-cpp <0.0a0
license: BSL-1.0
- size: 3004589
- timestamp: 1757631816458
+ size: 2978265
+ timestamp: 1763017293494
+- conda: https://prefix.dev/conda-forge/osx-arm64/libboost-1.88.0-h18cd856_6.conda
+ sha256: 717fbfa249f14fb1c6ce564cd0f242460cbc1703b584ad4063366ee349b22325
+ md5: 605e24dba1de926ae54fc01ab557dfa8
+ depends:
+ - __osx >=11.0
+ - bzip2 >=1.0.8,<2.0a0
+ - icu >=75.1,<76.0a0
+ - libcxx >=19
+ - liblzma >=5.8.1,<6.0a0
+ - libzlib >=1.3.1,<2.0a0
+ - zstd >=1.5.7,<1.6.0a0
+ constrains:
+ - boost-cpp <0.0a0
+ license: BSL-1.0
+ size: 1954928
+ timestamp: 1763019429173
- conda: https://prefix.dev/conda-forge/linux-64/libccd-double-2.1-h59595ed_3.conda
sha256: 4695ce68eda595b4f53146bea1096a9f2e0d33290618ba83a246b5ed8871ebc9
md5: 6a3d962d34385e0a511b859d679f6ea2
@@ -709,41 +723,41 @@ packages:
license_family: Apache
size: 14064272
timestamp: 1759435091038
-- conda: https://prefix.dev/conda-forge/linux-64/libclang-cpp21.1-21.1.3-default_h99862b1_0.conda
- sha256: a882d8aed8625a3cdf9d4062a437f17aa5628cc3b3d8984a5b2ba79abe4a9404
- md5: 351153facc71be73b27482c6ec2204b4
+- conda: https://prefix.dev/conda-forge/linux-64/libclang-cpp21.1-21.1.5-default_h99862b1_1.conda
+ sha256: 23c005625fcffb36c36d13e45ccf35355b3306eff53c4f83649566f2caf05608
+ md5: 0351db6d39dd57e63309dabf6d5629c0
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- - libllvm21 >=21.1.3,<21.2.0a0
+ - libllvm21 >=21.1.5,<21.2.0a0
- libstdcxx >=14
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
- size: 21041961
- timestamp: 1760315552873
-- conda: https://prefix.dev/conda-forge/linux-64/libclang13-21.1.3-default_h746c552_0.conda
- sha256: 45a8dbd9a7a4eed4da300e692a6f87d39aecd105eec15977cf6cc78091b48be7
- md5: 8e9dbb05e5f7105e265d5775d44e6160
+ size: 21065809
+ timestamp: 1762471342921
+- conda: https://prefix.dev/conda-forge/linux-64/libclang13-21.1.5-default_h746c552_1.conda
+ sha256: 070871a19d7a1bc750284721a1f722c527ef466b1461e0de84abbdbb755f4221
+ md5: dd39147d65f5edf3b3ebb06f5a0ef43e
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
- - libllvm21 >=21.1.3,<21.2.0a0
+ - libllvm21 >=21.1.5,<21.2.0a0
- libstdcxx >=14
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
- size: 12341791
- timestamp: 1760315971541
-- conda: https://prefix.dev/conda-forge/osx-arm64/libclang13-21.1.4-default_h6e8f826_0.conda
- sha256: 7617c3092e3ee55c386e2b08b64c7ad51f9233751124bddf25f9a7244fd33283
- md5: 019a130ab0aba3a2cefa4e89c3ed7e9e
+ size: 12340532
+ timestamp: 1762471521823
+- conda: https://prefix.dev/conda-forge/osx-arm64/libclang13-21.1.5-default_h6e8f826_1.conda
+ sha256: 77f286be324935f374c173450fa0907699cf0db4ccf608dfebddfb268b2ddd66
+ md5: e2b315924582f4b949539325a34e0cc0
depends:
- __osx >=11.0
- - libcxx >=21.1.4
- - libllvm21 >=21.1.4,<21.2.0a0
+ - libcxx >=21.1.5
+ - libllvm21 >=21.1.5,<21.2.0a0
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
- size: 8513089
- timestamp: 1761210461072
+ size: 8513295
+ timestamp: 1762470070416
- conda: https://prefix.dev/conda-forge/linux-64/libcups-2.3.3-hb8b1518_5.conda
sha256: cb83980c57e311783ee831832eb2c20ecb41e7dee6e86e8b70b8cef0e43eab55
md5: d4a250da4737ee127fb1fa6452a9002e
@@ -757,9 +771,9 @@ packages:
license_family: Apache
size: 4523621
timestamp: 1749905341688
-- conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.16.0-h4e3cde8_0.conda
- sha256: f21af777602d17ced05f168898e759fb0bac5af09ba72c5ece245dd0f14e0fec
- md5: a401aa9329350320c7d3809a7a5a1640
+- conda: https://prefix.dev/conda-forge/linux-64/libcurl-8.17.0-h4e3cde8_0.conda
+ sha256: 100e29ca864c32af15a5cc354f502d07b2600218740fdf2439fa7d66b50b3529
+ md5: 01e149d4a53185622dc2e788281961f2
depends:
- __glibc >=2.17,<3.0.a0
- krb5 >=1.21.3,<1.22.0a0
@@ -771,11 +785,11 @@ packages:
- zstd >=1.5.7,<1.6.0a0
license: curl
license_family: MIT
- size: 459851
- timestamp: 1760977209182
-- conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.16.0-hdece5d2_0.conda
- sha256: f20ce8db8c62f1cdf4d7a9f92cabcc730b1212a7165f4b085e45941cc747edac
- md5: 0537c38a90d179dcb3e46727ccc5bcc1
+ size: 460366
+ timestamp: 1762333743748
+- conda: https://prefix.dev/conda-forge/osx-arm64/libcurl-8.17.0-hdece5d2_0.conda
+ sha256: 2980c5de44ac3ca2ecbd4a00756da1648ea2945d9e4a2ad9f216c7787df57f10
+ md5: 791003efe92c17ed5949b309c61a5ab1
depends:
- __osx >=11.0
- krb5 >=1.21.3,<1.22.0a0
@@ -786,36 +800,36 @@ packages:
- zstd >=1.5.7,<1.6.0a0
license: curl
license_family: MIT
- size: 394279
- timestamp: 1760977967042
-- conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-21.1.4-hf598326_2.conda
- sha256: 0a0765cc8b6000e7f7be879c12825583d046ef22ab95efc7c5f8622e4b3302d5
- md5: 4346830dcc0c0e930328fddb0b829f63
+ size: 394183
+ timestamp: 1762334288445
+- conda: https://prefix.dev/conda-forge/osx-arm64/libcxx-21.1.5-hf598326_0.conda
+ sha256: cb441b85669eec99a593f59e6bb18c1d8a46d13eebadfc6a55f0b298109bf510
+ md5: fbfdbf6e554275d2661c4541f45fed53
depends:
- __osx >=11.0
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
- size: 568742
- timestamp: 1761852287381
-- conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.24-h86f0d12_0.conda
- sha256: 8420748ea1cc5f18ecc5068b4f24c7a023cc9b20971c99c824ba10641fb95ddf
- md5: 64f0c503da58ec25ebd359e4d990afa8
+ size: 569449
+ timestamp: 1762258167196
+- conda: https://prefix.dev/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda
+ sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680
+ md5: 6c77a605a7a689d17d4819c0f8ac9a00
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
license: MIT
license_family: MIT
- size: 72573
- timestamp: 1747040452262
-- conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.24-h5773f1b_0.conda
- sha256: 417d52b19c679e1881cce3f01cad3a2d542098fa2d6df5485aac40f01aede4d1
- md5: 3baf58a5a87e7c2f4d243ce2f8f2fe5c
+ size: 73490
+ timestamp: 1761979956660
+- conda: https://prefix.dev/conda-forge/osx-arm64/libdeflate-1.25-hc11a715_0.conda
+ sha256: 5e0b6961be3304a5f027a8c00bd0967fc46ae162cffb7553ff45c70f51b8314c
+ md5: a6130c709305cd9828b4e1bd9ba0000c
depends:
- __osx >=11.0
license: MIT
license_family: MIT
- size: 54790
- timestamp: 1747040549847
+ size: 55420
+ timestamp: 1761980066242
- conda: https://prefix.dev/conda-forge/linux-64/libdrm-2.4.125-hb03c661_1.conda
sha256: c076a213bd3676cc1ef22eeff91588826273513ccc6040d9bea68bccdc849501
md5: 9314bc5a1fe7d1044dc9dfd3ef400535
@@ -898,16 +912,16 @@ packages:
license_family: MIT
size: 65971
timestamp: 1752719657566
-- conda: https://prefix.dev/conda-forge/linux-64/libffi-3.4.6-h2dba641_1.conda
- sha256: 764432d32db45466e87f10621db5b74363a9f847d2b8b1f9743746cd160f06ab
- md5: ede4673863426c0883c0063d853bbd85
+- conda: https://prefix.dev/conda-forge/linux-64/libffi-3.5.2-h9ec8514_0.conda
+ sha256: 25cbdfa65580cfab1b8d15ee90b4c9f1e0d72128f1661449c9a999d341377d54
+ md5: 35f29eec58405aaf55e01cb470d8c26a
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
license: MIT
license_family: MIT
- size: 57433
- timestamp: 1743434498161
+ size: 57821
+ timestamp: 1760295480630
- conda: https://prefix.dev/conda-forge/osx-arm64/libffi-3.5.2-he5f378a_0.conda
sha256: 9b8acdf42df61b7bfe8bdc545c016c29e61985e79748c64ad66df47dbc2e295f
md5: 411ff7cd5d1472bba0f55c0faf04453b
@@ -958,28 +972,28 @@ packages:
license: GPL-2.0-only OR FTL
size: 346703
timestamp: 1757947166116
-- conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.1.0-h767d61c_5.conda
- sha256: 0caed73aac3966bfbf5710e06c728a24c6c138605121a3dacb2e03440e8baa6a
- md5: 264fbfba7fb20acf3b29cde153e345ce
+- conda: https://prefix.dev/conda-forge/linux-64/libgcc-15.2.0-h767d61c_7.conda
+ sha256: 08f9b87578ab981c7713e4e6a7d935e40766e10691732bba376d4964562bcb45
+ md5: c0374badb3a5d4b1372db28d19462c53
depends:
- __glibc >=2.17,<3.0.a0
- _openmp_mutex >=4.5
constrains:
- - libgomp 15.1.0 h767d61c_5
- - libgcc-ng ==15.1.0=*_5
+ - libgomp 15.2.0 h767d61c_7
+ - libgcc-ng ==15.2.0=*_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
- size: 824191
- timestamp: 1757042543820
-- conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.1.0-h69a702a_5.conda
- sha256: f54bb9c3be12b24be327f4c1afccc2969712e0b091cdfbd1d763fb3e61cda03f
- md5: 069afdf8ea72504e48d23ae1171d951c
+ size: 822552
+ timestamp: 1759968052178
+- conda: https://prefix.dev/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_7.conda
+ sha256: 2045066dd8e6e58aaf5ae2b722fb6dfdbb57c862b5f34ac7bfb58c40ef39b6ad
+ md5: 280ea6eee9e2ddefde25ff799c4f0363
depends:
- - libgcc 15.1.0 h767d61c_5
+ - libgcc 15.2.0 h767d61c_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
- size: 29187
- timestamp: 1757042549554
+ size: 29313
+ timestamp: 1759968065504
- conda: https://prefix.dev/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda
sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d
md5: 928b8be80851f5d8ffb016f9c81dae7a
@@ -990,24 +1004,24 @@ packages:
license: LicenseRef-libglvnd
size: 134712
timestamp: 1731330998354
-- conda: https://prefix.dev/conda-forge/linux-64/libglib-2.86.0-h1fed272_0.conda
- sha256: 33336bd55981be938f4823db74291e1323454491623de0be61ecbe6cf3a4619c
- md5: b8e4c93f4ab70c3b6f6499299627dbdc
+- conda: https://prefix.dev/conda-forge/linux-64/libglib-2.86.1-h32235b2_2.conda
+ sha256: fc82277d0d6340743732c48dcbac3f4e9ee36902649a7d9a02622b0713ce3666
+ md5: 986dcf488a1aced411da84753d93d078
depends:
- __glibc >=2.17,<3.0.a0
- - libffi >=3.4.6,<3.5.0a0
+ - libffi >=3.5.2,<3.6.0a0
- libgcc >=14
- libiconv >=1.18,<2.0a0
- libzlib >=1.3.1,<2.0a0
- pcre2 >=10.46,<10.47.0a0
constrains:
- - glib 2.86.0 *_0
+ - glib 2.86.1 *_2
license: LGPL-2.1-or-later
- size: 3978602
- timestamp: 1757403291664
-- conda: https://prefix.dev/conda-forge/osx-arm64/libglib-2.86.1-he69a767_1.conda
- sha256: 253ac4eca90006b19571f8c4766e8ebdad0f01f44de1bfa0472d3df9be9c8ac8
- md5: acff031bb5b97602d2b7ef913a8ea076
+ size: 3933707
+ timestamp: 1762787455198
+- conda: https://prefix.dev/conda-forge/osx-arm64/libglib-2.86.1-he69a767_2.conda
+ sha256: ea49abd747b91cddf555f4ccd184cee8c1916363a78d4a7fe24b24d1163423c6
+ md5: 6d6f8c7d3a52e2c193fb2f9ba2e0ef0b
depends:
- __osx >=11.0
- libffi >=3.5.2,<3.6.0a0
@@ -1016,10 +1030,10 @@ packages:
- libzlib >=1.3.1,<2.0a0
- pcre2 >=10.46,<10.47.0a0
constrains:
- - glib 2.86.1 *_1
+ - glib 2.86.1 *_2
license: LGPL-2.1-or-later
- size: 3677659
- timestamp: 1761875607047
+ size: 3661248
+ timestamp: 1762789184977
- conda: https://prefix.dev/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda
sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850
md5: 434ca7e50e40f4918ab701e3facd59a0
@@ -1038,15 +1052,15 @@ packages:
license: LicenseRef-libglvnd
size: 75504
timestamp: 1731330988898
-- conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.1.0-h767d61c_5.conda
- sha256: 125051d51a8c04694d0830f6343af78b556dd88cc249dfec5a97703ebfb1832d
- md5: dcd5ff1940cd38f6df777cac86819d60
+- conda: https://prefix.dev/conda-forge/linux-64/libgomp-15.2.0-h767d61c_7.conda
+ sha256: e9fb1c258c8e66ee278397b5822692527c5f5786d372fe7a869b900853f3f5ca
+ md5: f7b4d76975aac7e5d9e6ad13845f92fe
depends:
- __glibc >=2.17,<3.0.a0
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
- size: 447215
- timestamp: 1757042483384
+ size: 447919
+ timestamp: 1759967942498
- conda: https://prefix.dev/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda
sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f
md5: 915f5995e94f60e9a4826e0b0920ee88
@@ -1073,27 +1087,27 @@ packages:
license: LGPL-2.1-or-later
size: 90957
timestamp: 1751558394144
-- conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.1.0-hb9d3cd8_0.conda
- sha256: 98b399287e27768bf79d48faba8a99a2289748c65cd342ca21033fab1860d4a4
- md5: 9fa334557db9f63da6c9285fd2a48638
+- conda: https://prefix.dev/conda-forge/linux-64/libjpeg-turbo-3.1.2-hb03c661_0.conda
+ sha256: cc9aba923eea0af8e30e0f94f2ad7156e2984d80d1e8e7fe6be5a1f257f0eb32
+ md5: 8397539e3a0bbd1695584fb4f927485a
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
constrains:
- jpeg <0.0.0a
license: IJG AND BSD-3-Clause AND Zlib
- size: 628947
- timestamp: 1745268527144
-- conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.1.0-h5505292_0.conda
- sha256: 78df2574fa6aa5b6f5fc367c03192f8ddf8e27dc23641468d54e031ff560b9d4
- md5: 01caa4fbcaf0e6b08b3aef1151e91745
+ size: 633710
+ timestamp: 1762094827865
+- conda: https://prefix.dev/conda-forge/osx-arm64/libjpeg-turbo-3.1.2-hc919400_0.conda
+ sha256: 6c061c56058bb10374daaef50e81b39cf43e8aee21f0037022c0c39c4f31872f
+ md5: f0695fbecf1006f27f4395d64bd0c4b8
depends:
- __osx >=11.0
constrains:
- jpeg <0.0.0a
license: IJG AND BSD-3-Clause AND Zlib
- size: 553624
- timestamp: 1745268405713
+ size: 551197
+ timestamp: 1762095054358
- conda: https://prefix.dev/conda-forge/osx-arm64/libllvm19-19.1.7-h8e0c9ce_2.conda
sha256: 46f8ff3d86438c0af1bebe0c18261ce5de9878d58b4fe399a3a125670e4f0af5
md5: d1d9b233830f6631800acc1e081a9444
@@ -1108,9 +1122,9 @@ packages:
license_family: Apache
size: 26914852
timestamp: 1757353228286
-- conda: https://prefix.dev/conda-forge/linux-64/libllvm21-21.1.4-hf7376ad_0.conda
- sha256: 5be6d2c4d931bd32aec92d27854d1f46d6fcfefa772e5ceadfa150e8ff5d4442
- md5: da21f286c4466912cc579911068034b6
+- conda: https://prefix.dev/conda-forge/linux-64/libllvm21-21.1.5-hf7376ad_0.conda
+ sha256: 180d77016c2eb5c8722f31a4750496b773e810529110d370ffc6d0cbbf6d15bb
+ md5: 9d476d7712c3c78ace006017c83d3889
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
@@ -1121,11 +1135,11 @@ packages:
- zstd >=1.5.7,<1.6.0a0
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
- size: 44344723
- timestamp: 1761083791644
-- conda: https://prefix.dev/conda-forge/osx-arm64/libllvm21-21.1.4-h8e0c9ce_0.conda
- sha256: 269fd7005a30958fccdbec91cb411e8277eb431af7b92b9005e08d28cedbd186
- md5: 8fd7e7215ff8e4f1900a8f07e08469b9
+ size: 44350262
+ timestamp: 1762289424598
+- conda: https://prefix.dev/conda-forge/osx-arm64/libllvm21-21.1.5-h8e0c9ce_0.conda
+ sha256: f8aec81419eb1d2acbddc7a328d73340b591b3ac5e40bb7f5d366eca64516328
+ md5: 75f026077311f5e37189a0de80afb6ed
depends:
- __osx >=11.0
- libcxx >=19
@@ -1135,8 +1149,8 @@ packages:
- zstd >=1.5.7,<1.6.0a0
license: Apache-2.0 WITH LLVM-exception
license_family: Apache
- size: 29394614
- timestamp: 1761078970340
+ size: 29400991
+ timestamp: 1762285527190
- conda: https://prefix.dev/conda-forge/linux-64/liblzma-5.8.1-hb9d3cd8_2.conda
sha256: f2591c0069447bbe28d4d696b7fcb0c5bd0b4ac582769b89addbcf26fb3430d8
md5: 1a580f7796c7bf6393fddb8bbbde58dc
@@ -1158,39 +1172,39 @@ packages:
license: 0BSD
size: 92286
timestamp: 1749230283517
-- conda: https://prefix.dev/conda-forge/linux-64/libmujoco-3.3.2-h31df9c7_4.conda
- sha256: bb3ff868cc74a2412ffeff4fdcb9a5e9f525d4580fa79d6088d39cd1c7b7abc1
- md5: d71adc99dac121fa7a67070f642374b5
+- conda: https://prefix.dev/conda-forge/linux-64/libmujoco-3.3.3-h31df9c7_0.conda
+ sha256: b2ce3c2362ab2cdbc73301044686ffd4ea62aefb35c582dd66425fad0ef21c17
+ md5: 91b6a83573c5e0c3a7880fd5b9615310
depends:
+ - __glibc >=2.17,<3.0.a0
- libstdcxx >=14
- libgcc >=14
- - __glibc >=2.17,<3.0.a0
- lodepng >=20220109,<20220110.0a0
- - tinyxml2 >=11.0.0,<11.1.0a0
- qhull >=2020.2,<2020.3.0a0
+ - tinyxml2 >=11.0.0,<11.1.0a0
- libccd-double >=2.1,<2.2.0a0
constrains:
- mujoco-cxx <0
license: Apache-2.0
license_family: APACHE
- size: 10995635
- timestamp: 1753454980696
-- conda: https://prefix.dev/conda-forge/osx-arm64/libmujoco-3.3.2-hba1c1e0_4.conda
- sha256: 7b88233dc1afc8c9e7f6d591a4989c0e92bfa4711694ff3e4333fefe0f6edbdd
- md5: ba88148d67de3896f255bd6d8ae0e499
+ size: 10995296
+ timestamp: 1763340000999
+- conda: https://prefix.dev/conda-forge/osx-arm64/libmujoco-3.3.3-h2f9c0ae_0.conda
+ sha256: ddfe164f32a19b04ce07953d8b5b59c64cd2aca07f01ddeac670df0ba427503f
+ md5: 0d316313cd28742cd8d8cfb7f2038889
depends:
- libcxx >=19
- __osx >=11.0
- - tinyxml2 >=11.0.0,<11.1.0a0
- lodepng >=20220109,<20220110.0a0
- - qhull >=2020.2,<2020.3.0a0
- libccd-double >=2.1,<2.2.0a0
+ - tinyxml2 >=11.0.0,<11.1.0a0
+ - qhull >=2020.2,<2020.3.0a0
constrains:
- mujoco-cxx <0
license: Apache-2.0
license_family: APACHE
- size: 10838572
- timestamp: 1753454988917
+ size: 10838380
+ timestamp: 1763340016189
- conda: https://prefix.dev/conda-forge/linux-64/libnghttp2-1.67.0-had1ee68_0.conda
sha256: a4a7dab8db4dc81c736e9a9b42bdfd97b087816e029e221380511960ac46c690
md5: b499ce4b026493a13774bcf0f4c33849
@@ -1303,26 +1317,27 @@ packages:
license: PostgreSQL
size: 2648192
timestamp: 1758821565273
-- conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.50.4-h0c1763c_0.conda
- sha256: 6d9c32fc369af5a84875725f7ddfbfc2ace795c28f246dc70055a79f9b2003da
- md5: 0b367fad34931cb79e0d6b7e5c06bb1c
+- conda: https://prefix.dev/conda-forge/linux-64/libsqlite-3.51.0-hee844dc_0.conda
+ sha256: 4c992dcd0e34b68f843e75406f7f303b1b97c248d18f3c7c330bdc0bc26ae0b3
+ md5: 729a572a3ebb8c43933b30edcc628ceb
depends:
- __glibc >=2.17,<3.0.a0
+ - icu >=75.1,<76.0a0
- libgcc >=14
- libzlib >=1.3.1,<2.0a0
license: blessing
- size: 932581
- timestamp: 1753948484112
-- conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.50.4-h4237e3c_0.conda
- sha256: 802ebe62e6bc59fc26b26276b793e0542cfff2d03c086440aeaf72fb8bbcec44
- md5: 1dcb0468f5146e38fae99aef9656034b
+ size: 945576
+ timestamp: 1762299687230
+- conda: https://prefix.dev/conda-forge/osx-arm64/libsqlite-3.51.0-h8adb53f_0.conda
+ sha256: b43d198f147f46866e5336c4a6b91668beef698bfba69d1706158460eadb2c1b
+ md5: 5fb1945dbc6380e6fe7e939a62267772
depends:
- __osx >=11.0
- icu >=75.1,<76.0a0
- libzlib >=1.3.1,<2.0a0
license: blessing
- size: 902645
- timestamp: 1753948599139
+ size: 909508
+ timestamp: 1762300078624
- conda: https://prefix.dev/conda-forge/linux-64/libssh2-1.11.1-hcf80075_0.conda
sha256: fa39bfd69228a13e553bd24601332b7cfeb30ca11a3ca50bb028108fe90a7661
md5: eecce068c7e4eddeb169591baac20ac4
@@ -1345,32 +1360,34 @@ packages:
license_family: BSD
size: 279193
timestamp: 1745608793272
-- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.1.0-h8f9b012_5.conda
- sha256: 0f5f61cab229b6043541c13538d75ce11bd96fb2db76f94ecf81997b1fde6408
- md5: 4e02a49aaa9d5190cb630fa43528fbe6
+- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-15.2.0-h8f9b012_7.conda
+ sha256: 1b981647d9775e1cdeb2fab0a4dd9cd75a6b0de2963f6c3953dbd712f78334b3
+ md5: 5b767048b1b3ee9a954b06f4084f93dc
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc 15.1.0 h767d61c_5
+ - libgcc 15.2.0 h767d61c_7
+ constrains:
+ - libstdcxx-ng ==15.2.0=*_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
- size: 3896432
- timestamp: 1757042571458
-- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.1.0-h4852527_5.conda
- sha256: 7b8cabbf0ab4fe3581ca28fe8ca319f964078578a51dd2ca3f703c1d21ba23ff
- md5: 8bba50c7f4679f08c861b597ad2bda6b
+ size: 3898269
+ timestamp: 1759968103436
+- conda: https://prefix.dev/conda-forge/linux-64/libstdcxx-ng-15.2.0-h4852527_7.conda
+ sha256: 024fd46ac3ea8032a5ec3ea7b91c4c235701a8bf0e6520fe5e6539992a6bd05f
+ md5: f627678cf829bd70bccf141a19c3ad3e
depends:
- - libstdcxx 15.1.0 h8f9b012_5
+ - libstdcxx 15.2.0 h8f9b012_7
license: GPL-3.0-only WITH GCC-exception-3.1
license_family: GPL
- size: 29233
- timestamp: 1757042603319
-- conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.1-h8261f1e_0.conda
- sha256: ddda0d7ee67e71e904a452010c73e32da416806f5cb9145fb62c322f97e717fb
- md5: 72b531694ebe4e8aa6f5745d1015c1b4
+ size: 29343
+ timestamp: 1759968157195
+- conda: https://prefix.dev/conda-forge/linux-64/libtiff-4.7.1-h9d88235_1.conda
+ sha256: e5f8c38625aa6d567809733ae04bb71c161a42e44a9fa8227abe61fa5c60ebe0
+ md5: cd5a90476766d53e901500df9215e927
depends:
- __glibc >=2.17,<3.0.a0
- lerc >=4.0.0,<5.0a0
- - libdeflate >=1.24,<1.25.0a0
+ - libdeflate >=1.25,<1.26.0a0
- libgcc >=14
- libjpeg-turbo >=3.1.0,<4.0a0
- liblzma >=5.8.1,<6.0a0
@@ -1379,34 +1396,34 @@ packages:
- libzlib >=1.3.1,<2.0a0
- zstd >=1.5.7,<1.6.0a0
license: HPND
- size: 437211
- timestamp: 1758278398952
-- conda: https://prefix.dev/conda-forge/osx-arm64/libtiff-4.7.1-h7dc4979_0.conda
- sha256: 6bc1b601f0d3ee853acd23884a007ac0a0290f3609dabb05a47fc5a0295e2b53
- md5: 2bb9e04e2da869125e2dc334d665f00d
+ size: 435273
+ timestamp: 1762022005702
+- conda: https://prefix.dev/conda-forge/osx-arm64/libtiff-4.7.1-h4030677_1.conda
+ sha256: e9248077b3fa63db94caca42c8dbc6949c6f32f94d1cafad127f9005d9b1507f
+ md5: e2a72ab2fa54ecb6abab2b26cde93500
depends:
- __osx >=11.0
- lerc >=4.0.0,<5.0a0
- libcxx >=19
- - libdeflate >=1.24,<1.25.0a0
+ - libdeflate >=1.25,<1.26.0a0
- libjpeg-turbo >=3.1.0,<4.0a0
- liblzma >=5.8.1,<6.0a0
- libwebp-base >=1.6.0,<2.0a0
- libzlib >=1.3.1,<2.0a0
- zstd >=1.5.7,<1.6.0a0
license: HPND
- size: 373640
- timestamp: 1758278641520
-- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.41.1-he9a06e4_0.conda
- sha256: 776e28735cee84b97e4d05dd5d67b95221a3e2c09b8b13e3d6dbe6494337d527
- md5: af930c65e9a79a3423d6d36e265cef65
+ size: 373892
+ timestamp: 1762022345545
+- conda: https://prefix.dev/conda-forge/linux-64/libuuid-2.41.2-he9a06e4_0.conda
+ sha256: e5ec6d2ad7eef538ddcb9ea62ad4346fde70a4736342c4ad87bd713641eb9808
+ md5: 80c07c68d2f6870250959dcc95b209d1
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
license: BSD-3-Clause
license_family: BSD
- size: 37087
- timestamp: 1757334557450
+ size: 37135
+ timestamp: 1758626800002
- conda: https://prefix.dev/conda-forge/linux-64/libvulkan-loader-1.4.328.1-h5279c79_0.conda
sha256: bbabc5c48b63ff03f440940a11d4648296f5af81bb7630d98485405cd32ac1ce
md5: 372a62464d47d9e966b630ffae3abe73
@@ -1466,9 +1483,9 @@ packages:
license: LGPL-2.1-or-later
size: 100393
timestamp: 1702724383534
-- conda: https://prefix.dev/conda-forge/linux-64/libxkbcommon-1.12.2-hca5e8e5_0.conda
- sha256: e11e8890a097c9e16a3fc40f2540d887ef2497e7f31f6e5a744aa951f82dbeea
- md5: 3c3e5ccbb2d96ac75e1b8b028586db5c
+- conda: https://prefix.dev/conda-forge/linux-64/libxkbcommon-1.13.0-hca5e8e5_0.conda
+ sha256: 576ce5378cc6a2b722ff33d2359ccb74dea1e6465daa45116e57550f1eb4ba7e
+ md5: aa65b4add9574bb1d23c76560c5efd4c
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=14
@@ -1480,8 +1497,8 @@ packages:
- xorg-libxau >=1.0.12,<2.0a0
license: MIT/X11 Derivative
license_family: MIT
- size: 830418
- timestamp: 1760990182307
+ size: 843995
+ timestamp: 1762341607312
- conda: https://prefix.dev/conda-forge/linux-64/libxml2-2.15.1-h26afc86_0.conda
sha256: ec0735ae56c3549149eebd7dc22c0bed91fd50c02eaa77ff418613ddda190aa8
md5: e512be7dc1f84966d50959e900ca121f
@@ -1594,6 +1611,17 @@ packages:
license: BSL-1.0
size: 258866
timestamp: 1756194974156
+- conda: https://prefix.dev/conda-forge/osx-arm64/msgpack-cxx-7.0.0-h33cdd7a_1.conda
+ sha256: cf8815bbeee477ea19e0bec137308633b7d77314bce91f2b53c31aed758cb01e
+ md5: 5c46c6b6d25be37714ef15acb9e21ae4
+ depends:
+ - __osx >=11.0
+ - libboost >=1.88.0,<1.89.0a0
+ - libcxx >=19
+ - libzlib >=1.3.1,<2.0a0
+ license: BSL-1.0
+ size: 259872
+ timestamp: 1753278625902
- conda: https://prefix.dev/conda-forge/linux-64/ncurses-6.5-h2d0b736_3.conda
sha256: 3fde293232fa3fca98635e1167de6b7c7fda83caf24b9d6c91ec9eefb4f4d586
md5: 47e340acb35de30501a76c7c799c41d7
@@ -1638,27 +1666,27 @@ packages:
license_family: BSD
size: 843597
timestamp: 1748010484231
-- conda: https://prefix.dev/conda-forge/linux-64/openssl-3.5.4-h26f9b46_0.conda
- sha256: e807f3bad09bdf4075dbb4168619e14b0c0360bacb2e12ef18641a834c8c5549
- md5: 14edad12b59ccbfa3910d42c72adc2a0
+- conda: https://prefix.dev/conda-forge/linux-64/openssl-3.6.0-h26f9b46_0.conda
+ sha256: a47271202f4518a484956968335b2521409c8173e123ab381e775c358c67fe6d
+ md5: 9ee58d5c534af06558933af3c845a780
depends:
- __glibc >=2.17,<3.0.a0
- ca-certificates
- libgcc >=14
license: Apache-2.0
license_family: Apache
- size: 3119624
- timestamp: 1759324353651
-- conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.5.4-h5503f6c_0.conda
- sha256: f0512629f9589392c2fb9733d11e753d0eab8fc7602f96e4d7f3bd95c783eb07
- md5: 71118318f37f717eefe55841adb172fd
+ size: 3165399
+ timestamp: 1762839186699
+- conda: https://prefix.dev/conda-forge/osx-arm64/openssl-3.6.0-h5503f6c_0.conda
+ sha256: ebe93dafcc09e099782fe3907485d4e1671296bc14f8c383cb6f3dfebb773988
+ md5: b34dc4172653c13dcf453862f251af2b
depends:
- __osx >=11.0
- ca-certificates
license: Apache-2.0
license_family: Apache
- size: 3067808
- timestamp: 1759324763146
+ size: 3108371
+ timestamp: 1762839712322
- conda: https://prefix.dev/conda-forge/linux-64/pcre2-10.46-h1321c63_0.conda
sha256: 5c7380c8fd3ad5fc0f8039069a45586aa452cf165264bc5a437ad80397b32934
md5: 7fa07cb0fb1b625a089ccc01218ee5b1
@@ -1735,32 +1763,33 @@ packages:
license_family: MIT
size: 91283
timestamp: 1736601509593
-- conda: https://prefix.dev/conda-forge/linux-64/python-3.12.11-h9e4cc4f_0_cpython.conda
- sha256: 6cca004806ceceea9585d4d655059e951152fc774a471593d4f5138e6a54c81d
- md5: 94206474a5608243a10c92cefbe0908f
+- conda: https://prefix.dev/conda-forge/linux-64/python-3.12.12-hd63d673_1_cpython.conda
+ build_number: 1
+ sha256: 39898d24769a848c057ab861052e50bdc266310a7509efa3514b840e85a2ae98
+ md5: 5c00c8cea14ee8d02941cab9121dce41
depends:
- __glibc >=2.17,<3.0.a0
- bzip2 >=1.0.8,<2.0a0
- ld_impl_linux-64 >=2.36.1
- - libexpat >=2.7.0,<3.0a0
- - libffi >=3.4.6,<3.5.0a0
- - libgcc >=13
+ - libexpat >=2.7.1,<3.0a0
+ - libffi >=3.5.2,<3.6.0a0
+ - libgcc >=14
- liblzma >=5.8.1,<6.0a0
- libnsl >=2.0.1,<2.1.0a0
- - libsqlite >=3.50.0,<4.0a0
- - libuuid >=2.38.1,<3.0a0
+ - libsqlite >=3.50.4,<4.0a0
+ - libuuid >=2.41.2,<3.0a0
- libxcrypt >=4.4.36
- libzlib >=1.3.1,<2.0a0
- ncurses >=6.5,<7.0a0
- - openssl >=3.5.0,<4.0a0
+ - openssl >=3.5.4,<4.0a0
- readline >=8.2,<9.0a0
- tk >=8.6.13,<8.7.0a0
- tzdata
constrains:
- python_abi 3.12.* *_cp312
license: Python-2.0
- size: 31445023
- timestamp: 1749050216615
+ size: 31537229
+ timestamp: 1761176876216
- conda: https://prefix.dev/conda-forge/osx-arm64/python-3.12.12-h18782d2_1_cpython.conda
build_number: 1
sha256: 626da9bb78459ce541407327d1e22ee673fd74e9103f1a0e0f4e3967ad0a23a7
@@ -1812,9 +1841,9 @@ packages:
license: LicenseRef-Qhull
size: 516376
timestamp: 1720814307311
-- conda: https://prefix.dev/conda-forge/linux-64/qt6-main-6.9.3-h5c1c036_0.conda
- sha256: 999ce4a6af5f9570373047f7c61ccc86d17bef294b402b7297b8efc25ec3b5e9
- md5: cc0bffcaf6410aba9c6581dfdc18012d
+- conda: https://prefix.dev/conda-forge/linux-64/qt6-main-6.9.3-h5c1c036_1.conda
+ sha256: 51537408ce1493d267b375b33ec02a060d77c4e00c7bef5e2e1c6724e08a23e3
+ md5: 762af6d08fdfa7a45346b1466740bacd
depends:
- __glibc >=2.17,<3.0.a0
- alsa-lib >=1.2.14,<1.3.0a0
@@ -1822,11 +1851,11 @@ packages:
- double-conversion >=3.3.1,<3.4.0a0
- fontconfig >=2.15.0,<3.0a0
- fonts-conda-ecosystem
- - harfbuzz >=12.0.0
+ - harfbuzz >=12.1.0
- icu >=75.1,<76.0a0
- krb5 >=1.21.3,<1.22.0a0
- - libclang-cpp21.1 >=21.1.2,<21.2.0a0
- - libclang13 >=21.1.2
+ - libclang-cpp21.1 >=21.1.4,<21.2.0a0
+ - libclang13 >=21.1.4
- libcups >=2.3.3,<2.4.0a0
- libdrm >=2.4.125,<2.5.0a0
- libegl >=1.7.0,<2.0a0
@@ -1836,20 +1865,20 @@ packages:
- libgl >=1.7.0,<2.0a0
- libglib >=2.86.0,<3.0a0
- libjpeg-turbo >=3.1.0,<4.0a0
- - libllvm21 >=21.1.2,<21.2.0a0
+ - libllvm21 >=21.1.4,<21.2.0a0
- libpng >=1.6.50,<1.7.0a0
- libpq >=18.0,<19.0a0
- libsqlite >=3.50.4,<4.0a0
- libstdcxx >=14
- libtiff >=4.7.1,<4.8.0a0
- - libvulkan-loader >=1.4.313.0,<2.0a0
+ - libvulkan-loader >=1.4.328.1,<2.0a0
- libwebp-base >=1.6.0,<2.0a0
- libxcb >=1.17.0,<2.0a0
- - libxkbcommon >=1.11.0,<2.0a0
+ - libxkbcommon >=1.12.2,<2.0a0
- libxml2
- libxml2-16 >=2.14.6
- libzlib >=1.3.1,<2.0a0
- - openssl >=3.5.3,<4.0a0
+ - openssl >=3.5.4,<4.0a0
- pcre2 >=10.46,<10.47.0a0
- wayland >=1.24.0,<2.0a0
- xcb-util >=0.4.1,<0.5.0a0
@@ -1873,8 +1902,8 @@ packages:
- qt 6.9.3
license: LGPL-3.0-only
license_family: LGPL
- size: 54537863
- timestamp: 1759251856141
+ size: 54785664
+ timestamp: 1761308850008
- conda: https://prefix.dev/conda-forge/osx-arm64/qt6-main-6.9.3-hb266e41_0.conda
sha256: d00722613930f7b048417dcd8335b7525d105350376976f60c734385ad11e854
md5: 9c4c7c477173f43b4239d85bcf1df658
@@ -1944,46 +1973,48 @@ packages:
license: Zlib
size: 122269
timestamp: 1742246179980
-- conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_hd72426e_102.conda
- sha256: a84ff687119e6d8752346d1d408d5cf360dee0badd487a472aa8ddedfdc219e1
- md5: a0116df4f4ed05c303811a837d5b39d8
+- conda: https://prefix.dev/conda-forge/linux-64/tk-8.6.13-noxft_ha0e22de_103.conda
+ sha256: 1544760538a40bcd8ace2b1d8ebe3eb5807ac268641f8acdc18c69c5ebfeaf64
+ md5: 86bc20552bf46075e3d92b67f089172d
depends:
- __glibc >=2.17,<3.0.a0
- libgcc >=13
- libzlib >=1.3.1,<2.0a0
+ constrains:
+ - xorg-libx11 >=1.8.12,<2.0a0
license: TCL
license_family: BSD
- size: 3285204
- timestamp: 1748387766691
-- conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_2.conda
- sha256: cb86c522576fa95c6db4c878849af0bccfd3264daf0cc40dd18e7f4a7bfced0e
- md5: 7362396c170252e7b7b0c8fb37fe9c78
+ size: 3284905
+ timestamp: 1763054914403
+- conda: https://prefix.dev/conda-forge/osx-arm64/tk-8.6.13-h892fb3f_3.conda
+ sha256: ad0c67cb03c163a109820dc9ecf77faf6ec7150e942d1e8bb13e5d39dc058ab7
+ md5: a73d54a5abba6543cb2f0af1bfbd6851
depends:
- __osx >=11.0
- libzlib >=1.3.1,<2.0a0
license: TCL
license_family: BSD
- size: 3125538
- timestamp: 1748388189063
+ size: 3125484
+ timestamp: 1763055028377
- conda: https://prefix.dev/conda-forge/noarch/tzdata-2025b-h78e105d_0.conda
sha256: 5aaa366385d716557e365f0a4e9c3fca43ba196872abbbe3d56bb610d131e192
md5: 4222072737ccff51314b5ece9c7d6f5a
license: LicenseRef-Public-Domain
size: 122968
timestamp: 1742727099393
-- conda: https://prefix.dev/conda-forge/linux-64/wayland-1.24.0-h3e06ad9_0.conda
- sha256: ba673427dcd480cfa9bbc262fd04a9b1ad2ed59a159bd8f7e750d4c52282f34c
- md5: 0f2ca7906bf166247d1d760c3422cb8a
+- conda: https://prefix.dev/conda-forge/linux-64/wayland-1.24.0-hd6090a7_1.conda
+ sha256: 3aa04ae8e9521d9b56b562376d944c3e52b69f9d2a0667f77b8953464822e125
+ md5: 035da2e4f5770f036ff704fa17aace24
depends:
- __glibc >=2.17,<3.0.a0
- - libexpat >=2.7.0,<3.0a0
- - libffi >=3.4.6,<3.5.0a0
- - libgcc >=13
- - libstdcxx >=13
+ - libexpat >=2.7.1,<3.0a0
+ - libffi >=3.5.2,<3.6.0a0
+ - libgcc >=14
+ - libstdcxx >=14
license: MIT
license_family: MIT
- size: 330474
- timestamp: 1751817998141
+ size: 329779
+ timestamp: 1761174273487
- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-0.4.1-h4f16b4b_2.conda
sha256: ad8cab7e07e2af268449c2ce855cbb51f43f4664936eff679b1f3862e6e4b01d
md5: fdc27cb255a7a2cc73b7919a968b48f0
@@ -1995,20 +2026,20 @@ packages:
license_family: MIT
size: 20772
timestamp: 1750436796633
-- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-cursor-0.1.5-hb9d3cd8_0.conda
- sha256: c7b35db96f6e32a9e5346f97adc968ef2f33948e3d7084295baebc0e33abdd5b
- md5: eb44b3b6deb1cab08d72cb61686fe64c
+- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-cursor-0.1.6-hb03c661_0.conda
+ sha256: c2be9cae786fdb2df7c2387d2db31b285cf90ab3bfabda8fa75a596c3d20fc67
+ md5: 4d1fc190b99912ed557a8236e958c559
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
- libxcb >=1.13
- - libxcb >=1.16,<2.0.0a0
+ - libxcb >=1.17.0,<2.0a0
- xcb-util-image >=0.4.0,<0.5.0a0
- xcb-util-renderutil >=0.3.10,<0.4.0a0
license: MIT
license_family: MIT
- size: 20296
- timestamp: 1726125844850
+ size: 20829
+ timestamp: 1763366954390
- conda: https://prefix.dev/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda
sha256: 94b12ff8b30260d9de4fd7a28cca12e028e572cbc504fd42aa2646ec4a5bded7
md5: a0901183f08b6c7107aab109733a3c91
@@ -2050,17 +2081,17 @@ packages:
license_family: MIT
size: 51689
timestamp: 1718844051451
-- conda: https://prefix.dev/conda-forge/linux-64/xkeyboard-config-2.45-hb9d3cd8_0.conda
- sha256: a5d4af601f71805ec67403406e147c48d6bad7aaeae92b0622b7e2396842d3fe
- md5: 397a013c2dc5145a70737871aaa87e98
+- conda: https://prefix.dev/conda-forge/linux-64/xkeyboard-config-2.46-hb03c661_0.conda
+ sha256: aa03b49f402959751ccc6e21932d69db96a65a67343765672f7862332aa32834
+ md5: 71ae752a748962161b4740eaff510258
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
- xorg-libx11 >=1.8.12,<2.0a0
license: MIT
license_family: MIT
- size: 392406
- timestamp: 1749375847832
+ size: 396975
+ timestamp: 1759543819846
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda
sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b
md5: fb901ff28063514abb6046c9ec2c4a45
@@ -2094,16 +2125,16 @@ packages:
license_family: MIT
size: 835896
timestamp: 1741901112627
-- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda
- sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038
- md5: f6ebe2cb3f82ba6c057dde5d9debe4f7
+- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxau-1.0.12-hb03c661_1.conda
+ sha256: 6bc6ab7a90a5d8ac94c7e300cc10beb0500eeba4b99822768ca2f2ef356f731b
+ md5: b2895afaf55bf96a8c8282a2e47a5de0
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
license: MIT
license_family: MIT
- size: 14780
- timestamp: 1734229004433
+ size: 15321
+ timestamp: 1762976464266
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda
sha256: 753f73e990c33366a91fd42cc17a3d19bb9444b9ca5ff983605fa9e953baf57f
md5: d3c295b50f092ab525ffe3c2aa4b7413
@@ -2142,16 +2173,16 @@ packages:
license_family: MIT
size: 13217
timestamp: 1727891438799
-- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda
- sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee
- md5: 8035c64cb77ed555e3f150b7b3972480
+- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb03c661_1.conda
+ sha256: 25d255fb2eef929d21ff660a0c687d38a6d2ccfbcbf0cc6aa738b12af6e9d142
+ md5: 1dafce8548e38671bea82e3f5c6ce22f
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
+ - libgcc >=14
license: MIT
license_family: MIT
- size: 19901
- timestamp: 1727794976192
+ size: 20591
+ timestamp: 1762976546182
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda
sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14
md5: febbab7d15033c913d53c7a2c102309d
@@ -2163,17 +2194,17 @@ packages:
license_family: MIT
size: 50060
timestamp: 1727752228921
-- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda
- sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271
- md5: 4bdb303603e9821baf5fe5fdff1dc8f8
+- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxfixes-6.0.2-hb03c661_0.conda
+ sha256: 83c4c99d60b8784a611351220452a0a85b080668188dce5dfa394b723d7b64f4
+ md5: ba231da7fccf9ea1e768caf5c7099b84
depends:
- __glibc >=2.17,<3.0.a0
- - libgcc >=13
- - xorg-libx11 >=1.8.10,<2.0a0
+ - libgcc >=14
+ - xorg-libx11 >=1.8.12,<2.0a0
license: MIT
license_family: MIT
- size: 19575
- timestamp: 1727794961233
+ size: 20071
+ timestamp: 1759282564045
- conda: https://prefix.dev/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda
sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a
md5: 17dcc85db3c7886650b8908b183d6876
diff --git a/pixi.toml b/pixi.toml
index d4953a2..2fa5ee9 100644
--- a/pixi.toml
+++ b/pixi.toml
@@ -15,7 +15,7 @@ name = "circus"
version = "0.1.0"
[package.build]
-backend = { name = "pixi-build-cmake", version = "==0.3.4" }
+backend = { name = "pixi-build-cmake", version = "==0.3.5" }
[package.build-dependencies]
cmake = ">=3.27,<4"
@@ -23,19 +23,19 @@ cmake = ">=3.27,<4"
[package.host-dependencies]
python = "3.12.*"
nanobind = "2.8.*"
-eigen = ">=3.4.0,<4"
-yaml-cpp = ">=0.8.0,<0.9"
-nlohmann_json = ">=3.12.0,<4"
-pugixml = ">=1.15,<2"
-libcurl = ">=8.14.1,<9"
-qt6-main = ">=6.9.2,<7"
-libmujoco = ">=3.3.2,<4"
+eigen = "==3.4.0"
+yaml-cpp = "==0.8.0"
+nlohmann_json = "==3.12.0"
+pugixml = "==1.15"
+libcurl = "==8.14.1"
+qt6-main = "==6.9.2"
+libmujoco = "==3.3.3"
+msgpack-cxx = "==7.0.0"
+libboost-devel = "==1.88.0"
[package.target.linux-64.host-dependencies]
-libgl-devel = ">=1.7.0,<2"
-msgpack-cxx = ">=7.0.0,<8"
-libboost-devel = ">=1.88.0,<2"
-
+libgl-devel = "==1.7.0"
+libegl-devel = "==1.7.0"
[package.target.osx-arm64.host-dependencies]
diff --git a/Resources/config/framework_config.yaml b/resources/config/framework_config.yaml
similarity index 100%
rename from Resources/config/framework_config.yaml
rename to resources/config/framework_config.yaml
diff --git a/Resources/includes/ball.xml b/resources/includes/ball.xml
similarity index 100%
rename from Resources/includes/ball.xml
rename to resources/includes/ball.xml
diff --git a/Resources/includes/fieldKidSize.xml b/resources/includes/fieldKidSize.xml
similarity index 100%
rename from Resources/includes/fieldKidSize.xml
rename to resources/includes/fieldKidSize.xml
diff --git a/Resources/includes/fieldRCAP.xml b/resources/includes/fieldRCAP.xml
similarity index 100%
rename from Resources/includes/fieldRCAP.xml
rename to resources/includes/fieldRCAP.xml
diff --git a/Resources/includes/fieldSPL.xml b/resources/includes/fieldSPL.xml
similarity index 100%
rename from Resources/includes/fieldSPL.xml
rename to resources/includes/fieldSPL.xml
diff --git a/Resources/meshes/Booster-K1/Head_1.STL b/resources/meshes/Booster-K1/Head_1.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Head_1.STL
rename to resources/meshes/Booster-K1/Head_1.STL
diff --git a/Resources/meshes/Booster-K1/Head_2.STL b/resources/meshes/Booster-K1/Head_2.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Head_2.STL
rename to resources/meshes/Booster-K1/Head_2.STL
diff --git a/Resources/meshes/Booster-K1/Head_2_ZED.STL b/resources/meshes/Booster-K1/Head_2_ZED.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Head_2_ZED.STL
rename to resources/meshes/Booster-K1/Head_2_ZED.STL
diff --git a/Resources/meshes/Booster-K1/L1_XX_Ball.STL b/resources/meshes/Booster-K1/L1_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/L1_XX_Ball.STL
rename to resources/meshes/Booster-K1/L1_XX_Ball.STL
diff --git a/Resources/meshes/Booster-K1/L1_X_Ball.STL b/resources/meshes/Booster-K1/L1_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/L1_X_Ball.STL
rename to resources/meshes/Booster-K1/L1_X_Ball.STL
diff --git a/Resources/meshes/Booster-K1/L1_Y_Ball.STL b/resources/meshes/Booster-K1/L1_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/L1_Y_Ball.STL
rename to resources/meshes/Booster-K1/L1_Y_Ball.STL
diff --git a/Resources/meshes/Booster-K1/L2_XX_Ball.STL b/resources/meshes/Booster-K1/L2_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/L2_XX_Ball.STL
rename to resources/meshes/Booster-K1/L2_XX_Ball.STL
diff --git a/Resources/meshes/Booster-K1/L2_X_Ball.STL b/resources/meshes/Booster-K1/L2_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/L2_X_Ball.STL
rename to resources/meshes/Booster-K1/L2_X_Ball.STL
diff --git a/Resources/meshes/Booster-K1/L2_Y_Ball.STL b/resources/meshes/Booster-K1/L2_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/L2_Y_Ball.STL
rename to resources/meshes/Booster-K1/L2_Y_Ball.STL
diff --git a/Resources/meshes/Booster-K1/Left_Ankle_Cross.STL b/resources/meshes/Booster-K1/Left_Ankle_Cross.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Ankle_Cross.STL
rename to resources/meshes/Booster-K1/Left_Ankle_Cross.STL
diff --git a/Resources/meshes/Booster-K1/Left_Arm_1.STL b/resources/meshes/Booster-K1/Left_Arm_1.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Arm_1.STL
rename to resources/meshes/Booster-K1/Left_Arm_1.STL
diff --git a/Resources/meshes/Booster-K1/Left_Arm_2.STL b/resources/meshes/Booster-K1/Left_Arm_2.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Arm_2.STL
rename to resources/meshes/Booster-K1/Left_Arm_2.STL
diff --git a/Resources/meshes/Booster-K1/Left_Arm_3.STL b/resources/meshes/Booster-K1/Left_Arm_3.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Arm_3.STL
rename to resources/meshes/Booster-K1/Left_Arm_3.STL
diff --git a/Resources/meshes/Booster-K1/Left_Arm_4.STL b/resources/meshes/Booster-K1/Left_Arm_4.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Arm_4.STL
rename to resources/meshes/Booster-K1/Left_Arm_4.STL
diff --git a/Resources/meshes/Booster-K1/Left_Crank_Down.STL b/resources/meshes/Booster-K1/Left_Crank_Down.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Crank_Down.STL
rename to resources/meshes/Booster-K1/Left_Crank_Down.STL
diff --git a/Resources/meshes/Booster-K1/Left_Crank_Up.STL b/resources/meshes/Booster-K1/Left_Crank_Up.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Crank_Up.STL
rename to resources/meshes/Booster-K1/Left_Crank_Up.STL
diff --git a/Resources/meshes/Booster-K1/Left_Foot.STL b/resources/meshes/Booster-K1/Left_Foot.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Foot.STL
rename to resources/meshes/Booster-K1/Left_Foot.STL
diff --git a/Resources/meshes/Booster-K1/Left_Hip_Pitch.STL b/resources/meshes/Booster-K1/Left_Hip_Pitch.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Hip_Pitch.STL
rename to resources/meshes/Booster-K1/Left_Hip_Pitch.STL
diff --git a/Resources/meshes/Booster-K1/Left_Hip_Roll.STL b/resources/meshes/Booster-K1/Left_Hip_Roll.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Hip_Roll.STL
rename to resources/meshes/Booster-K1/Left_Hip_Roll.STL
diff --git a/Resources/meshes/Booster-K1/Left_Hip_Yaw.STL b/resources/meshes/Booster-K1/Left_Hip_Yaw.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Hip_Yaw.STL
rename to resources/meshes/Booster-K1/Left_Hip_Yaw.STL
diff --git a/Resources/meshes/Booster-K1/Left_Link_Long.STL b/resources/meshes/Booster-K1/Left_Link_Long.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Link_Long.STL
rename to resources/meshes/Booster-K1/Left_Link_Long.STL
diff --git a/Resources/meshes/Booster-K1/Left_Link_Short.STL b/resources/meshes/Booster-K1/Left_Link_Short.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Link_Short.STL
rename to resources/meshes/Booster-K1/Left_Link_Short.STL
diff --git a/Resources/meshes/Booster-K1/Left_Shank.STL b/resources/meshes/Booster-K1/Left_Shank.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Left_Shank.STL
rename to resources/meshes/Booster-K1/Left_Shank.STL
diff --git a/Resources/meshes/Booster-K1/R1_XX_Ball.STL b/resources/meshes/Booster-K1/R1_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/R1_XX_Ball.STL
rename to resources/meshes/Booster-K1/R1_XX_Ball.STL
diff --git a/Resources/meshes/Booster-K1/R1_X_Ball.STL b/resources/meshes/Booster-K1/R1_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/R1_X_Ball.STL
rename to resources/meshes/Booster-K1/R1_X_Ball.STL
diff --git a/Resources/meshes/Booster-K1/R1_Y_Ball.STL b/resources/meshes/Booster-K1/R1_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/R1_Y_Ball.STL
rename to resources/meshes/Booster-K1/R1_Y_Ball.STL
diff --git a/Resources/meshes/Booster-K1/R2_XX_Ball.STL b/resources/meshes/Booster-K1/R2_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/R2_XX_Ball.STL
rename to resources/meshes/Booster-K1/R2_XX_Ball.STL
diff --git a/Resources/meshes/Booster-K1/R2_X_Ball.STL b/resources/meshes/Booster-K1/R2_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/R2_X_Ball.STL
rename to resources/meshes/Booster-K1/R2_X_Ball.STL
diff --git a/Resources/meshes/Booster-K1/R2_Y_Ball.STL b/resources/meshes/Booster-K1/R2_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/R2_Y_Ball.STL
rename to resources/meshes/Booster-K1/R2_Y_Ball.STL
diff --git a/Resources/meshes/Booster-K1/Right_Ankle_Cross.STL b/resources/meshes/Booster-K1/Right_Ankle_Cross.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Ankle_Cross.STL
rename to resources/meshes/Booster-K1/Right_Ankle_Cross.STL
diff --git a/Resources/meshes/Booster-K1/Right_Arm_1.STL b/resources/meshes/Booster-K1/Right_Arm_1.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Arm_1.STL
rename to resources/meshes/Booster-K1/Right_Arm_1.STL
diff --git a/Resources/meshes/Booster-K1/Right_Arm_2.STL b/resources/meshes/Booster-K1/Right_Arm_2.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Arm_2.STL
rename to resources/meshes/Booster-K1/Right_Arm_2.STL
diff --git a/Resources/meshes/Booster-K1/Right_Arm_3.STL b/resources/meshes/Booster-K1/Right_Arm_3.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Arm_3.STL
rename to resources/meshes/Booster-K1/Right_Arm_3.STL
diff --git a/Resources/meshes/Booster-K1/Right_Arm_4.STL b/resources/meshes/Booster-K1/Right_Arm_4.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Arm_4.STL
rename to resources/meshes/Booster-K1/Right_Arm_4.STL
diff --git a/Resources/meshes/Booster-K1/Right_Crank_Down.STL b/resources/meshes/Booster-K1/Right_Crank_Down.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Crank_Down.STL
rename to resources/meshes/Booster-K1/Right_Crank_Down.STL
diff --git a/Resources/meshes/Booster-K1/Right_Crank_Up.STL b/resources/meshes/Booster-K1/Right_Crank_Up.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Crank_Up.STL
rename to resources/meshes/Booster-K1/Right_Crank_Up.STL
diff --git a/Resources/meshes/Booster-K1/Right_Foot.STL b/resources/meshes/Booster-K1/Right_Foot.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Foot.STL
rename to resources/meshes/Booster-K1/Right_Foot.STL
diff --git a/Resources/meshes/Booster-K1/Right_Hip_Pitch.STL b/resources/meshes/Booster-K1/Right_Hip_Pitch.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Hip_Pitch.STL
rename to resources/meshes/Booster-K1/Right_Hip_Pitch.STL
diff --git a/Resources/meshes/Booster-K1/Right_Hip_Roll.STL b/resources/meshes/Booster-K1/Right_Hip_Roll.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Hip_Roll.STL
rename to resources/meshes/Booster-K1/Right_Hip_Roll.STL
diff --git a/Resources/meshes/Booster-K1/Right_Hip_Yaw.STL b/resources/meshes/Booster-K1/Right_Hip_Yaw.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Hip_Yaw.STL
rename to resources/meshes/Booster-K1/Right_Hip_Yaw.STL
diff --git a/Resources/meshes/Booster-K1/Right_Link_Long.STL b/resources/meshes/Booster-K1/Right_Link_Long.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Link_Long.STL
rename to resources/meshes/Booster-K1/Right_Link_Long.STL
diff --git a/Resources/meshes/Booster-K1/Right_Link_Short.STL b/resources/meshes/Booster-K1/Right_Link_Short.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Link_Short.STL
rename to resources/meshes/Booster-K1/Right_Link_Short.STL
diff --git a/Resources/meshes/Booster-K1/Right_Shank.STL b/resources/meshes/Booster-K1/Right_Shank.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Right_Shank.STL
rename to resources/meshes/Booster-K1/Right_Shank.STL
diff --git a/Resources/meshes/Booster-K1/Trunk.STL b/resources/meshes/Booster-K1/Trunk.STL
similarity index 100%
rename from Resources/meshes/Booster-K1/Trunk.STL
rename to resources/meshes/Booster-K1/Trunk.STL
diff --git a/Resources/meshes/Booster-T1/AL1.STL b/resources/meshes/Booster-T1/AL1.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/AL1.STL
rename to resources/meshes/Booster-T1/AL1.STL
diff --git a/Resources/meshes/Booster-T1/AL2.STL b/resources/meshes/Booster-T1/AL2.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/AL2.STL
rename to resources/meshes/Booster-T1/AL2.STL
diff --git a/Resources/meshes/Booster-T1/AL3.STL b/resources/meshes/Booster-T1/AL3.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/AL3.STL
rename to resources/meshes/Booster-T1/AL3.STL
diff --git a/Resources/meshes/Booster-T1/AR1.STL b/resources/meshes/Booster-T1/AR1.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/AR1.STL
rename to resources/meshes/Booster-T1/AR1.STL
diff --git a/Resources/meshes/Booster-T1/AR2.STL b/resources/meshes/Booster-T1/AR2.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/AR2.STL
rename to resources/meshes/Booster-T1/AR2.STL
diff --git a/Resources/meshes/Booster-T1/AR3.STL b/resources/meshes/Booster-T1/AR3.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/AR3.STL
rename to resources/meshes/Booster-T1/AR3.STL
diff --git a/Resources/meshes/Booster-T1/Ankle_Cross_Left.STL b/resources/meshes/Booster-T1/Ankle_Cross_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Ankle_Cross_Left.STL
rename to resources/meshes/Booster-T1/Ankle_Cross_Left.STL
diff --git a/Resources/meshes/Booster-T1/Ankle_Cross_Right.STL b/resources/meshes/Booster-T1/Ankle_Cross_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Ankle_Cross_Right.STL
rename to resources/meshes/Booster-T1/Ankle_Cross_Right.STL
diff --git a/Resources/meshes/Booster-T1/Crank_Down_Left.STL b/resources/meshes/Booster-T1/Crank_Down_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Crank_Down_Left.STL
rename to resources/meshes/Booster-T1/Crank_Down_Left.STL
diff --git a/Resources/meshes/Booster-T1/Crank_Down_Right.STL b/resources/meshes/Booster-T1/Crank_Down_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Crank_Down_Right.STL
rename to resources/meshes/Booster-T1/Crank_Down_Right.STL
diff --git a/Resources/meshes/Booster-T1/Crank_Up_Left.STL b/resources/meshes/Booster-T1/Crank_Up_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Crank_Up_Left.STL
rename to resources/meshes/Booster-T1/Crank_Up_Left.STL
diff --git a/Resources/meshes/Booster-T1/Crank_Up_Right.STL b/resources/meshes/Booster-T1/Crank_Up_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Crank_Up_Right.STL
rename to resources/meshes/Booster-T1/Crank_Up_Right.STL
diff --git a/Resources/meshes/Booster-T1/Down_Left_XX_Ball.STL b/resources/meshes/Booster-T1/Down_Left_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Down_Left_XX_Ball.STL
rename to resources/meshes/Booster-T1/Down_Left_XX_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Down_Left_X_Ball.STL b/resources/meshes/Booster-T1/Down_Left_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Down_Left_X_Ball.STL
rename to resources/meshes/Booster-T1/Down_Left_X_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Down_Left_Y_Ball.STL b/resources/meshes/Booster-T1/Down_Left_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Down_Left_Y_Ball.STL
rename to resources/meshes/Booster-T1/Down_Left_Y_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Down_Right_XX_Ball.STL b/resources/meshes/Booster-T1/Down_Right_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Down_Right_XX_Ball.STL
rename to resources/meshes/Booster-T1/Down_Right_XX_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Down_Right_X_Ball.STL b/resources/meshes/Booster-T1/Down_Right_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Down_Right_X_Ball.STL
rename to resources/meshes/Booster-T1/Down_Right_X_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Down_Right_Y_Ball.STL b/resources/meshes/Booster-T1/Down_Right_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Down_Right_Y_Ball.STL
rename to resources/meshes/Booster-T1/Down_Right_Y_Ball.STL
diff --git a/Resources/meshes/Booster-T1/H1.STL b/resources/meshes/Booster-T1/H1.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/H1.STL
rename to resources/meshes/Booster-T1/H1.STL
diff --git a/Resources/meshes/Booster-T1/H2.STL b/resources/meshes/Booster-T1/H2.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/H2.STL
rename to resources/meshes/Booster-T1/H2.STL
diff --git a/Resources/meshes/Booster-T1/Hip_Pitch_Left.STL b/resources/meshes/Booster-T1/Hip_Pitch_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Hip_Pitch_Left.STL
rename to resources/meshes/Booster-T1/Hip_Pitch_Left.STL
diff --git a/Resources/meshes/Booster-T1/Hip_Pitch_Right.STL b/resources/meshes/Booster-T1/Hip_Pitch_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Hip_Pitch_Right.STL
rename to resources/meshes/Booster-T1/Hip_Pitch_Right.STL
diff --git a/Resources/meshes/Booster-T1/Hip_Roll_Left.STL b/resources/meshes/Booster-T1/Hip_Roll_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Hip_Roll_Left.STL
rename to resources/meshes/Booster-T1/Hip_Roll_Left.STL
diff --git a/Resources/meshes/Booster-T1/Hip_Roll_Right.STL b/resources/meshes/Booster-T1/Hip_Roll_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Hip_Roll_Right.STL
rename to resources/meshes/Booster-T1/Hip_Roll_Right.STL
diff --git a/Resources/meshes/Booster-T1/Hip_Yaw_Left.STL b/resources/meshes/Booster-T1/Hip_Yaw_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Hip_Yaw_Left.STL
rename to resources/meshes/Booster-T1/Hip_Yaw_Left.STL
diff --git a/Resources/meshes/Booster-T1/Hip_Yaw_Right.STL b/resources/meshes/Booster-T1/Hip_Yaw_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Hip_Yaw_Right.STL
rename to resources/meshes/Booster-T1/Hip_Yaw_Right.STL
diff --git a/Resources/meshes/Booster-T1/Link_Long_Left.STL b/resources/meshes/Booster-T1/Link_Long_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Link_Long_Left.STL
rename to resources/meshes/Booster-T1/Link_Long_Left.STL
diff --git a/Resources/meshes/Booster-T1/Link_Long_Right.STL b/resources/meshes/Booster-T1/Link_Long_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Link_Long_Right.STL
rename to resources/meshes/Booster-T1/Link_Long_Right.STL
diff --git a/Resources/meshes/Booster-T1/Link_Short_Left.STL b/resources/meshes/Booster-T1/Link_Short_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Link_Short_Left.STL
rename to resources/meshes/Booster-T1/Link_Short_Left.STL
diff --git a/Resources/meshes/Booster-T1/Link_Short_Right.STL b/resources/meshes/Booster-T1/Link_Short_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Link_Short_Right.STL
rename to resources/meshes/Booster-T1/Link_Short_Right.STL
diff --git a/Resources/meshes/Booster-T1/Shank_Left.STL b/resources/meshes/Booster-T1/Shank_Left.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Shank_Left.STL
rename to resources/meshes/Booster-T1/Shank_Left.STL
diff --git a/Resources/meshes/Booster-T1/Shank_Right.STL b/resources/meshes/Booster-T1/Shank_Right.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Shank_Right.STL
rename to resources/meshes/Booster-T1/Shank_Right.STL
diff --git a/Resources/meshes/Booster-T1/Trunk.STL b/resources/meshes/Booster-T1/Trunk.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Trunk.STL
rename to resources/meshes/Booster-T1/Trunk.STL
diff --git a/Resources/meshes/Booster-T1/Up_Left_XX_Ball.STL b/resources/meshes/Booster-T1/Up_Left_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Up_Left_XX_Ball.STL
rename to resources/meshes/Booster-T1/Up_Left_XX_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Up_Left_X_Ball.STL b/resources/meshes/Booster-T1/Up_Left_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Up_Left_X_Ball.STL
rename to resources/meshes/Booster-T1/Up_Left_X_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Up_Left_Y_Ball.STL b/resources/meshes/Booster-T1/Up_Left_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Up_Left_Y_Ball.STL
rename to resources/meshes/Booster-T1/Up_Left_Y_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Up_Right_XX_Ball.STL b/resources/meshes/Booster-T1/Up_Right_XX_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Up_Right_XX_Ball.STL
rename to resources/meshes/Booster-T1/Up_Right_XX_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Up_Right_X_Ball.STL b/resources/meshes/Booster-T1/Up_Right_X_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Up_Right_X_Ball.STL
rename to resources/meshes/Booster-T1/Up_Right_X_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Up_Right_Y_Ball.STL b/resources/meshes/Booster-T1/Up_Right_Y_Ball.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Up_Right_Y_Ball.STL
rename to resources/meshes/Booster-T1/Up_Right_Y_Ball.STL
diff --git a/Resources/meshes/Booster-T1/Waist.STL b/resources/meshes/Booster-T1/Waist.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/Waist.STL
rename to resources/meshes/Booster-T1/Waist.STL
diff --git a/Resources/meshes/Booster-T1/left_foot_link.STL b/resources/meshes/Booster-T1/left_foot_link.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/left_foot_link.STL
rename to resources/meshes/Booster-T1/left_foot_link.STL
diff --git a/Resources/meshes/Booster-T1/left_hand_link.STL b/resources/meshes/Booster-T1/left_hand_link.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/left_hand_link.STL
rename to resources/meshes/Booster-T1/left_hand_link.STL
diff --git a/Resources/meshes/Booster-T1/right_foot_link.STL b/resources/meshes/Booster-T1/right_foot_link.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/right_foot_link.STL
rename to resources/meshes/Booster-T1/right_foot_link.STL
diff --git a/Resources/meshes/Booster-T1/right_hand_link.STL b/resources/meshes/Booster-T1/right_hand_link.STL
similarity index 100%
rename from Resources/meshes/Booster-T1/right_hand_link.STL
rename to resources/meshes/Booster-T1/right_hand_link.STL
diff --git a/Resources/meshes/ball/Cafusa_Bump.png b/resources/meshes/ball/Cafusa_Bump.png
similarity index 100%
rename from Resources/meshes/ball/Cafusa_Bump.png
rename to resources/meshes/ball/Cafusa_Bump.png
diff --git a/Resources/meshes/ball/Cafusa_Diffuse.png b/resources/meshes/ball/Cafusa_Diffuse.png
similarity index 100%
rename from Resources/meshes/ball/Cafusa_Diffuse.png
rename to resources/meshes/ball/Cafusa_Diffuse.png
diff --git a/Resources/meshes/ball/ball.obj b/resources/meshes/ball/ball.obj
similarity index 99%
rename from Resources/meshes/ball/ball.obj
rename to resources/meshes/ball/ball.obj
index 0a35801..adccca1 100644
--- a/Resources/meshes/ball/ball.obj
+++ b/resources/meshes/ball/ball.obj
@@ -17601,4 +17601,4 @@ f 4281/258/258 4156/3472/3265 4158/4544/4250 4282/2069/1964
f 4283/2425/2295 4160/4280/4016 4159/2765/2614 4284/2764/2613
f 4285/3084/2912 4162/3083/2911 4164/3042/2873 4286/3041/2872
f 267/2277/299 269/4365/295 2031/4368/4086 2035/2274/2153
-f 567/524/522 2460/1464/1410 2432/2175/2066 478/525/523
+f 567/524/522 2460/1464/1410 2432/2175/2066 478/525/523
\ No newline at end of file
diff --git a/Resources/robots/Booster-K1/common.xml b/resources/robots/Booster-K1/common.xml
similarity index 100%
rename from Resources/robots/Booster-K1/common.xml
rename to resources/robots/Booster-K1/common.xml
diff --git a/Resources/robots/Booster-K1/instance.xml b/resources/robots/Booster-K1/instance.xml
similarity index 100%
rename from Resources/robots/Booster-K1/instance.xml
rename to resources/robots/Booster-K1/instance.xml
diff --git a/Resources/robots/Booster-T1/common.xml b/resources/robots/Booster-T1/common.xml
similarity index 99%
rename from Resources/robots/Booster-T1/common.xml
rename to resources/robots/Booster-T1/common.xml
index 193e96d..f4615a5 100644
--- a/Resources/robots/Booster-T1/common.xml
+++ b/resources/robots/Booster-T1/common.xml
@@ -1,14 +1,14 @@
-
+
-
+
-
+
diff --git a/Resources/robots/Booster-T1/instance.xml b/resources/robots/Booster-T1/instance.xml
similarity index 99%
rename from Resources/robots/Booster-T1/instance.xml
rename to resources/robots/Booster-T1/instance.xml
index 1ed8dd3..bcb3b75 100644
--- a/Resources/robots/Booster-T1/instance.xml
+++ b/resources/robots/Booster-T1/instance.xml
@@ -89,7 +89,7 @@
@@ -100,7 +100,7 @@
-
+
@@ -127,7 +127,7 @@
-
+
@@ -147,7 +147,7 @@
-
+
diff --git a/Resources/Scenes/mixed_scene.yaml b/resources/scenes/mixed_scene.yaml
similarity index 100%
rename from Resources/Scenes/mixed_scene.yaml
rename to resources/scenes/mixed_scene.yaml
diff --git a/Resources/textures/ball.png b/resources/textures/ball.png
similarity index 100%
rename from Resources/textures/ball.png
rename to resources/textures/ball.png
diff --git a/Resources/textures/fieldRCAP.png b/resources/textures/fieldRCAP.png
similarity index 100%
rename from Resources/textures/fieldRCAP.png
rename to resources/textures/fieldRCAP.png
diff --git a/Resources/textures/net.png b/resources/textures/net.png
similarity index 100%
rename from Resources/textures/net.png
rename to resources/textures/net.png
diff --git a/Resources/textures/shadow_grad.png b/resources/textures/shadow_grad.png
similarity index 100%
rename from Resources/textures/shadow_grad.png
rename to resources/textures/shadow_grad.png
diff --git a/Resources/textures/soccer_field.png b/resources/textures/soccer_field.png
similarity index 100%
rename from Resources/textures/soccer_field.png
rename to resources/textures/soccer_field.png
diff --git a/Src/AppWindow.cpp b/src/AppWindow.cpp
similarity index 97%
rename from Src/AppWindow.cpp
rename to src/AppWindow.cpp
index df39db8..ac4a0a6 100644
--- a/Src/AppWindow.cpp
+++ b/src/AppWindow.cpp
@@ -7,8 +7,9 @@
#include "Constants.h"
#include "MujocoContext.h"
-#include "Robot.h"
+#include "RobotManager.h"
#include "SceneParser.h"
+
namespace spqr {
AppWindow::AppWindow(int& argc, char** argv) {
@@ -44,7 +45,7 @@ AppWindow::AppWindow(int& argc, char** argv) {
};
void AppWindow::openScene() {
- QString fileName = QFileDialog::getOpenFileName(this, tr("Open Scene File"), "Resources/Scenes/",
+ QString fileName = QFileDialog::getOpenFileName(this, tr("Open Scene File"), "resources/scenes/",
tr("YAML Files (*.yaml)"));
if (!fileName.isEmpty()) {
loadScene(fileName);
diff --git a/Src/Bindings.cpp b/src/Bindings.cpp
similarity index 100%
rename from Src/Bindings.cpp
rename to src/Bindings.cpp
diff --git a/Src/CircusApplication.cpp b/src/CircusApplication.cpp
similarity index 100%
rename from Src/CircusApplication.cpp
rename to src/CircusApplication.cpp
diff --git a/Src/Container.cpp b/src/Container.cpp
similarity index 100%
rename from Src/Container.cpp
rename to src/Container.cpp
diff --git a/Src/MujocoContext.cpp b/src/MujocoContext.cpp
similarity index 100%
rename from Src/MujocoContext.cpp
rename to src/MujocoContext.cpp
diff --git a/Src/SceneParser.cpp b/src/SceneParser.cpp
similarity index 96%
rename from Src/SceneParser.cpp
rename to src/SceneParser.cpp
index 486b47b..3747459 100644
--- a/Src/SceneParser.cpp
+++ b/src/SceneParser.cpp
@@ -12,8 +12,10 @@
#include
#include
-#include "Robot.h"
+#include "RobotManager.h"
#include "Team.h"
+#include "robots/Robot.h"
+
using namespace pugi;
using namespace std;
namespace spqr {
@@ -99,11 +101,11 @@ string SceneParser::buildMuJoCoXml() {
xml_node compiler = mujoco.append_child("compiler");
compiler.append_attribute("angle") = "radian";
- compiler.append_attribute("meshdir") = "Resources/meshes/";
+ compiler.append_attribute("meshdir") = "resources/meshes/";
xml_node include_node = mujoco.append_child("include");
include_node.append_attribute("file")
- = (filesystem::path(PROJECT_ROOT) / "Resources" / "includes" / (scene.field + ".xml")).c_str();
+ = (filesystem::path(PROJECT_ROOT) / "resources" / "includes" / (scene.field + ".xml")).c_str();
xml_node visual = mujoco.append_child("visual");
xml_node map = visual.append_child("quality");
@@ -111,7 +113,7 @@ string SceneParser::buildMuJoCoXml() {
include_node = mujoco.append_child("include");
include_node.append_attribute("file")
- = (filesystem::path(PROJECT_ROOT) / "Resources" / "includes" / "ball.xml").c_str();
+ = (filesystem::path(PROJECT_ROOT) / "resources" / "includes" / "ball.xml").c_str();
for (const string& robotType : robotTypes)
buildRobotCommon(robotType, mujoco);
@@ -153,7 +155,7 @@ string SceneParser::buildMuJoCoXml() {
void SceneParser::buildRobotCommon(const string& robotType, xml_node& mujoco) {
filesystem::path commonPath
- = filesystem::path(PROJECT_ROOT) / "Resources" / "robots" / robotType / "common.xml";
+ = filesystem::path(PROJECT_ROOT) / "resources" / "robots" / robotType / "common.xml";
if (!filesystem::exists(commonPath)) {
throw runtime_error("Robot common file does not exist: " + commonPath.string());
}
@@ -192,7 +194,7 @@ void SceneParser::prefixSubtree(xml_node& root, const string& robotName) {
void SceneParser::buildRobotInstance(const shared_ptr& robotSpec, xml_node& worldbody,
xml_node& actuator, xml_node& sensor) {
filesystem::path instancePath
- = filesystem::path(PROJECT_ROOT) / "Resources" / "robots" / robotSpec->type / "instance.xml";
+ = filesystem::path(PROJECT_ROOT) / "resources" / "robots" / robotSpec->type / "instance.xml";
if (!filesystem::exists(instancePath)) {
throw runtime_error("Robot instance file does not exist: " + instancePath.string());
diff --git a/Src/SimulationThread.cpp b/src/SimulationThread.cpp
similarity index 97%
rename from Src/SimulationThread.cpp
rename to src/SimulationThread.cpp
index 2667a87..1459d80 100644
--- a/Src/SimulationThread.cpp
+++ b/src/SimulationThread.cpp
@@ -2,7 +2,7 @@
#include
-#include "Robot.h"
+#include "RobotManager.h"
namespace spqr {
diff --git a/Src/SimulationViewport.cpp b/src/SimulationViewport.cpp
similarity index 100%
rename from Src/SimulationViewport.cpp
rename to src/SimulationViewport.cpp
diff --git a/Src/main.cpp b/src/main.cpp
similarity index 100%
rename from Src/main.cpp
rename to src/main.cpp